summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/options.rst3
-rw-r--r--player/misc.c5
2 files changed, 6 insertions, 2 deletions
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst
index 7cfd1f9e3c..2807cad44d 100644
--- a/DOCS/man/options.rst
+++ b/DOCS/man/options.rst
@@ -133,6 +133,9 @@ Playback Control
Stop after a given time relative to the start time.
See ``--start`` for valid option values and examples.
+ If both ``--end`` and ``--length`` are provided, playback will stop when it
+ reaches either of the two endpoints.
+
``--rebase-start-time=<yes|no>``
Whether to move the file start time to ``00:00:00`` (default: yes). This
is less awkward for files which start at a random timestamp, such as
diff --git a/player/misc.c b/player/misc.c
index d68ca22138..0284479f49 100644
--- a/player/misc.c
+++ b/player/misc.c
@@ -91,12 +91,13 @@ double get_play_end_pts(struct MPContext *mpctx)
double end = MP_NOPTS_VALUE;
if (opts->play_end.type) {
end = rel_time_to_abs(mpctx, opts->play_end);
- } else if (opts->play_length.type) {
+ }
+ if (opts->play_length.type) {
double start = get_play_start_pts(mpctx);
if (start == MP_NOPTS_VALUE)
start = 0;
double length = rel_time_to_abs(mpctx, opts->play_length);
- if (length != MP_NOPTS_VALUE)
+ if (length != MP_NOPTS_VALUE && (end == MP_NOPTS_VALUE || start + length < end))
end = start + length;
}
if (opts->chapterrange[1] > 0) {