diff options
author | Leo Izen <leo.izen@gmail.com> | 2017-12-04 12:30:22 -0500 |
---|---|---|
committer | Leo Izen <leo.izen@gmail.com> | 2017-12-04 12:34:02 -0500 |
commit | fdc311625ec016a685143097c3dc5e352c08b5d9 (patch) | |
tree | ffe9f14f3a3a2dfc6b30a19c42721528caccc85c | |
parent | 9abb710afb8e369eeb3104156c731bd3564abfcd (diff) | |
download | mpv-fdc311625ec016a685143097c3dc5e352c08b5d9.tar.bz2 mpv-fdc311625ec016a685143097c3dc5e352c08b5d9.tar.xz |
player/misc.c: allow both --length and --end to control play endpoint
Most options that change the playback endpoint coexist and playback
stops when it reaches any of them. (e.g. --ab-loop-b, --end, or
--chapter). This patch extends that behavior to --length so it isn't
automatically trumped by --end if both are present. These two will
interact now as the other options do.
This change is also documented in DOCS/man/options.rst.
-rw-r--r-- | DOCS/man/options.rst | 3 | ||||
-rw-r--r-- | player/misc.c | 5 |
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) { |