From 9f6f4962fbfdbaaa5ae82d1cf216356ce4a64e1c Mon Sep 17 00:00:00 2001 From: Voyager1 Date: Sun, 2 Feb 2014 15:36:20 +0100 Subject: [PATCH] avformat/utils: dvd still frames read thru libdvdnav ended up in internal lavf buffer This is the solution we've been using in XBMC for over 2 years for dvd still frames. The problem is that the demuxer asks for probing of the codec in the mpeg stream. This causes lavf to read the whole menu structure into internal buffers. After which, it won't read from input stream anymore and no events triggers. Signed-off-by: Michael Niedermayer --- libavformat/utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 932b6ad9f8..c094eec674 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -659,7 +659,7 @@ no_packet: if (end || av_log2(pd->buf_size) != av_log2(pd->buf_size - pkt->size)) { int score = set_codec_from_probe_data(s, st, pd); - if ( (st->codec->codec_id != AV_CODEC_ID_NONE && score > AVPROBE_SCORE_RETRY) + if ( (st->codec->codec_id != AV_CODEC_ID_NONE && score > AVPROBE_SCORE_RETRY-1) || end) { pd->buf_size = 0; av_freep(&pd->buf);