summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demuxer.c
diff options
context:
space:
mode:
authorzuxy <zuxy@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-17 13:28:52 +0000
committerzuxy <zuxy@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-17 13:28:52 +0000
commit276394a20517c1e909b4bc509fc7ee63e34926ec (patch)
tree7da7488b58e03f0af808ed8d14c943ee81192d6d /libmpdemux/demuxer.c
parent6e6d3acfa9b3a9d6d9bc9a9697202af62e3c9f92 (diff)
downloadmpv-276394a20517c1e909b4bc509fc7ee63e34926ec.tar.bz2
mpv-276394a20517c1e909b4bc509fc7ee63e34926ec.tar.xz
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
Diffstat (limited to 'libmpdemux/demuxer.c')
-rw-r--r--libmpdemux/demuxer.c4
1 files changed, 3 insertions, 1 deletions
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;