From 642ce15ef770dd5dbea7c7ee16cbf45f6e86feae Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Sat, 13 Nov 2010 15:48:26 +0200 Subject: core: give pts as parameter to demuxer_get_current_chapter() demuxer_get_current_chapter() accessed sh_video/sh_audio pts fields to determine playback position. demux layer shouldn't access those and the values used weren't quite correct anyway. Give the playback position as a parameter to the demux layer function instead. Also change the top-level get_current_chapter() to use get_current_time() in the timeline case where it didn't refer to demux layer. --- libmpdemux/demuxer.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'libmpdemux/demuxer.c') diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 4d8e64e7c8..fe4dc18d23 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -1462,7 +1462,7 @@ int demuxer_seek_chapter(demuxer_t *demuxer, int chapter, double *seek_pts, } } -int demuxer_get_current_chapter(demuxer_t *demuxer) +int demuxer_get_current_chapter(demuxer_t *demuxer, double time_now) { int chapter = -2; if (!demuxer->num_chapters || !demuxer->chapters) { @@ -1470,11 +1470,7 @@ int demuxer_get_current_chapter(demuxer_t *demuxer) &chapter) == STREAM_UNSUPPORTED) chapter = -2; } else { - sh_video_t *sh_video = demuxer->video->sh; - sh_audio_t *sh_audio = demuxer->audio->sh; - uint64_t now; - now = (sh_video ? sh_video->pts : (sh_audio ? sh_audio->pts : 0)) - * 1000 + 0.5; + uint64_t now = time_now * 1000 + 0.5; for (chapter = demuxer->num_chapters - 1; chapter >= 0; --chapter) { if (demuxer->chapters[chapter].start <= now) break; -- cgit v1.2.3