From 276394a20517c1e909b4bc509fc7ee63e34926ec Mon Sep 17 00:00:00 2001 From: zuxy Date: Sun, 17 Jun 2007 13:28:52 +0000 Subject: More accurate seeking for demuxers lacking DEMUXER_CTRL_GET_TIME_LENGTH control git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23572 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demuxer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 758d203299..73f073c7bc 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -1038,7 +1038,9 @@ double demuxer_get_time_length(demuxer_t *demuxer){ sh_audio_t *sh_audio = demuxer->audio->sh; // <= 0 means DEMUXER_CTRL_NOTIMPL or DEMUXER_CTRL_DONTKNOW if (demux_control(demuxer, DEMUXER_CTRL_GET_TIME_LENGTH,(void *)&get_time_ans)<=0) { - if (sh_video && sh_video->i_bps) + if (sh_video && sh_video->i_bps && sh_audio && sh_audio->i_bps) + get_time_ans = (double)(demuxer->movi_end-demuxer->movi_start)/(sh_video->i_bps+sh_audio->i_bps); + else if (sh_video && sh_video->i_bps) get_time_ans = (double)(demuxer->movi_end-demuxer->movi_start)/sh_video->i_bps; else if (sh_audio && sh_audio->i_bps) get_time_ans = (double)(demuxer->movi_end-demuxer->movi_start)/sh_audio->i_bps; -- cgit v1.2.3