Mercurial > mplayer.hg
comparison libmpdemux/demuxer.c @ 37114:a4c2668dadb6
demuxer: Fall back to asking the stream layer for length.
The bitrate-based estimate seem to be easily 2x off for some
blurays for example.
author | reimar |
---|---|
date | Tue, 27 May 2014 19:22:09 +0000 |
parents | aadf2020f6f0 |
children | 3721d8f98dfe |
comparison
equal
deleted
inserted
replaced
37113:f5b5c7246439 | 37114:a4c2668dadb6 |
---|---|
1493 double get_time_ans; | 1493 double get_time_ans; |
1494 sh_video_t *sh_video = demuxer->video->sh; | 1494 sh_video_t *sh_video = demuxer->video->sh; |
1495 sh_audio_t *sh_audio = demuxer->audio->sh; | 1495 sh_audio_t *sh_audio = demuxer->audio->sh; |
1496 // <= 0 means DEMUXER_CTRL_NOTIMPL or DEMUXER_CTRL_DONTKNOW | 1496 // <= 0 means DEMUXER_CTRL_NOTIMPL or DEMUXER_CTRL_DONTKNOW |
1497 if (demux_control | 1497 if (demux_control |
1498 (demuxer, DEMUXER_CTRL_GET_TIME_LENGTH, (void *) &get_time_ans) <= 0) { | 1498 (demuxer, DEMUXER_CTRL_GET_TIME_LENGTH, (void *) &get_time_ans) <= 0 && |
1499 stream_control(demuxer->stream, STREAM_CTRL_GET_TIME_LENGTH, (void *)&get_time_ans) != STREAM_OK) { | |
1499 if (sh_video && sh_video->i_bps && sh_audio && sh_audio->i_bps) | 1500 if (sh_video && sh_video->i_bps && sh_audio && sh_audio->i_bps) |
1500 get_time_ans = (double) (demuxer->movi_end - | 1501 get_time_ans = (double) (demuxer->movi_end - |
1501 demuxer->movi_start) / (sh_video->i_bps + | 1502 demuxer->movi_start) / (sh_video->i_bps + |
1502 sh_audio->i_bps); | 1503 sh_audio->i_bps); |
1503 else if (sh_video && sh_video->i_bps) | 1504 else if (sh_video && sh_video->i_bps) |