Merge remote-tracking branch 'qatar/master'
* qatar/master: smacker: Sanity check huffman tables found in the headers. smacker: remove dead store qdm2: Check data block size for bytes to bits overflow. mxfdec: Fix files with essence containers larger than 2 GiB. mxfdec: Employ correct printf conversion specifiers for POSIX int types. vc1: always read the bfraction element for interlaced fields fate: add XWD image regression test lavf: prevent infinite loops while flushing in avformat_find_stream_info matroskadec: Pad AAC extradata. ismindex: Fix build on mingw Conflicts: libavformat/mxfdec.c libavformat/utils.c tests/lavf-regression.sh Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -2236,6 +2236,7 @@ static int has_decode_delay_been_guessed(AVStream *st)
|
||||
st->info->nb_decoded_frames >= 6;
|
||||
}
|
||||
|
||||
/* returns 1 or 0 if or if not decoded data was returned, or a negative error */
|
||||
static int try_decode_frame(AVStream *st, AVPacket *avpkt, AVDictionary **options)
|
||||
{
|
||||
AVCodec *codec;
|
||||
@@ -2283,6 +2284,7 @@ static int try_decode_frame(AVStream *st, AVPacket *avpkt, AVDictionary **option
|
||||
st->info->nb_decoded_frames++;
|
||||
pkt.data += ret;
|
||||
pkt.size -= ret;
|
||||
ret = got_picture;
|
||||
}
|
||||
}
|
||||
if(!pkt.data && !got_picture)
|
||||
@@ -2589,16 +2591,21 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
|
||||
st = ic->streams[i];
|
||||
|
||||
/* flush the decoders */
|
||||
while ((err = try_decode_frame(st, &empty_pkt,
|
||||
do {
|
||||
err = try_decode_frame(st, &empty_pkt,
|
||||
(options && i < orig_nb_streams) ?
|
||||
&options[i] : NULL)) >= 0)
|
||||
if (has_codec_parameters(st->codec))
|
||||
break;
|
||||
&options[i] : NULL);
|
||||
} while (err > 0 && !has_codec_parameters(st->codec));
|
||||
|
||||
if (err < 0) {
|
||||
av_log(ic, AV_LOG_INFO,
|
||||
"decoding for stream %d failed\n", st->index);
|
||||
}
|
||||
if (!has_codec_parameters(st->codec)){
|
||||
char buf[256];
|
||||
avcodec_string(buf, sizeof(buf), st->codec, 0);
|
||||
av_log(ic, AV_LOG_WARNING, "Could not find codec parameters (%s)\n", buf);
|
||||
av_log(ic, AV_LOG_WARNING,
|
||||
"Could not find codec parameters (%s)\n", buf);
|
||||
} else {
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user