diff libmpdemux/demuxer.c @ 23552:ba9e664dbbaa

More accurate seeking for demuxers lacking DEMUXER_CTRL_GET_TIME_LENGTH control
author zuxy
date Sun, 17 Jun 2007 13:28:52 +0000
parents a124f3abc1ec
children 76bed8202233
line wrap: on
line diff
--- a/libmpdemux/demuxer.c	Sun Jun 17 12:18:13 2007 +0000
+++ b/libmpdemux/demuxer.c	Sun Jun 17 13:28:52 2007 +0000
@@ -1038,7 +1038,9 @@
     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;