Mercurial > mplayer.hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
23551:63d9b7032bf3 | 23552:ba9e664dbbaa |
---|---|
1036 double get_time_ans; | 1036 double get_time_ans; |
1037 sh_video_t *sh_video = demuxer->video->sh; | 1037 sh_video_t *sh_video = demuxer->video->sh; |
1038 sh_audio_t *sh_audio = demuxer->audio->sh; | 1038 sh_audio_t *sh_audio = demuxer->audio->sh; |
1039 // <= 0 means DEMUXER_CTRL_NOTIMPL or DEMUXER_CTRL_DONTKNOW | 1039 // <= 0 means DEMUXER_CTRL_NOTIMPL or DEMUXER_CTRL_DONTKNOW |
1040 if (demux_control(demuxer, DEMUXER_CTRL_GET_TIME_LENGTH,(void *)&get_time_ans)<=0) { | 1040 if (demux_control(demuxer, DEMUXER_CTRL_GET_TIME_LENGTH,(void *)&get_time_ans)<=0) { |
1041 if (sh_video && sh_video->i_bps) | 1041 if (sh_video && sh_video->i_bps && sh_audio && sh_audio->i_bps) |
1042 get_time_ans = (double)(demuxer->movi_end-demuxer->movi_start)/(sh_video->i_bps+sh_audio->i_bps); | |
1043 else if (sh_video && sh_video->i_bps) | |
1042 get_time_ans = (double)(demuxer->movi_end-demuxer->movi_start)/sh_video->i_bps; | 1044 get_time_ans = (double)(demuxer->movi_end-demuxer->movi_start)/sh_video->i_bps; |
1043 else if (sh_audio && sh_audio->i_bps) | 1045 else if (sh_audio && sh_audio->i_bps) |
1044 get_time_ans = (double)(demuxer->movi_end-demuxer->movi_start)/sh_audio->i_bps; | 1046 get_time_ans = (double)(demuxer->movi_end-demuxer->movi_start)/sh_audio->i_bps; |
1045 else | 1047 else |
1046 get_time_ans=0; | 1048 get_time_ans=0; |