# HG changeset patch # User reimar # Date 1401218529 0 # Node ID a4c2668dadb6e9c37914d90228cd6a1cd8a0df17 # Parent f5b5c724643938408812b9153d97ffe6f9cd80a6 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. diff -r f5b5c7246439 -r a4c2668dadb6 libmpdemux/demuxer.c --- a/libmpdemux/demuxer.c Tue May 27 19:22:07 2014 +0000 +++ b/libmpdemux/demuxer.c Tue May 27 19:22:09 2014 +0000 @@ -1495,7 +1495,8 @@ 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) { + (demuxer, DEMUXER_CTRL_GET_TIME_LENGTH, (void *) &get_time_ans) <= 0 && + stream_control(demuxer->stream, STREAM_CTRL_GET_TIME_LENGTH, (void *)&get_time_ans) != STREAM_OK) { 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 +