summaryrefslogtreecommitdiffstats
path: root/player/loadfile.c
diff options
context:
space:
mode:
authorLeo Izen <leo.izen@gmail.com>2017-12-03 20:26:42 -0500
committerLeo Izen <leo.izen@gmail.com>2017-12-03 21:57:34 -0500
commita6ca1677941b817cce401eb4d75f9c049b789b55 (patch)
treea7859885e247f693508df5eae12a7fcf1d50fe84 /player/loadfile.c
parente92d1b72a79c53369fdfd03b2d1499aa410324db (diff)
downloadmpv-a6ca1677941b817cce401eb4d75f9c049b789b55.tar.bz2
mpv-a6ca1677941b817cce401eb4d75f9c049b789b55.tar.xz
player: add get_play_start_pts
Added a get_play_start_pts function to coincide with the already-existing get_play_end_pts. This prevents code duplication and also serves to make it so code that probes the start time (such as get_current_pos_ratio) will work correctly with chapters. Included is a bug fix for misc.c/rel_time_to_abs that makes it work correctly with chapters when --rebase-start-time=no is set.
Diffstat (limited to 'player/loadfile.c')
-rw-r--r--player/loadfile.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/player/loadfile.c b/player/loadfile.c
index b5c7cae6cb..46f5d4e4f3 100644
--- a/player/loadfile.c
+++ b/player/loadfile.c
@@ -1330,17 +1330,16 @@ reopen_file:
goto terminate_playback;
}
- double startpos = rel_time_to_abs(mpctx, opts->play_start);
- if (startpos == MP_NOPTS_VALUE && opts->chapterrange[0] > 0) {
- double start = chapter_start_time(mpctx, opts->chapterrange[0] - 1);
- if (start != MP_NOPTS_VALUE)
- startpos = start;
- }
- if (startpos != MP_NOPTS_VALUE) {
- if (!opts->rebase_start_time) {
- startpos += mpctx->demuxer->start_time;
+ double play_start_pts = get_play_start_pts(mpctx);
+ if (play_start_pts != MP_NOPTS_VALUE) {
+ /*
+ * get_play_start_pts returns rebased values, but
+ * we want an un rebased value to feed to seeker.
+ */
+ if (!opts->rebase_start_time){
+ play_start_pts += mpctx->demuxer->start_time;
}
- queue_seek(mpctx, MPSEEK_ABSOLUTE, startpos, MPSEEK_DEFAULT, 0);
+ queue_seek(mpctx, MPSEEK_ABSOLUTE, play_start_pts, MPSEEK_DEFAULT, 0);
execute_queued_seek(mpctx);
}