diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-01-27 01:42:53 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-01-27 02:09:58 +0100 |
commit | 01fcbdf9cedcf14418b5886205261e532167f949 (patch) | |
tree | 8022d29d337142d81b3a05a0927a5ec90a67b25f /libavformat | |
parent | a8ae00b68cb9895f4a819950dbc740bc8fc7c1e1 (diff) | |
parent | 9adf25c1cf78dbf1d71bf386c49dc74cb8a60df0 (diff) | |
download | ffmpeg-b7926c5a180418a43108a007cad925e7d2f4a5ed.tar.gz |
Merge remote-tracking branch 'qatar/master'n0.11-dev
* 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>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/mxfdec.c | 15 | ||||
-rw-r--r-- | libavformat/utils.c | 17 |
2 files changed, 22 insertions, 10 deletions
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index cb38e5caaf..c8baf189f8 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -471,15 +471,18 @@ static int mxf_read_partition_pack(void *arg, AVIOContext *pb, int tag, int size /* some files don'thave FooterPartition set in every partition */ if (footer_partition) { if (mxf->footer_partition && mxf->footer_partition != footer_partition) { - av_log(mxf->fc, AV_LOG_ERROR, "inconsistent FooterPartition value: %" PRIi64 " != %" PRIi64 "\n", + av_log(mxf->fc, AV_LOG_ERROR, + "inconsistent FooterPartition value: %"PRIu64" != %"PRIu64"\n", mxf->footer_partition, footer_partition); } else { mxf->footer_partition = footer_partition; } } - av_dlog(mxf->fc, "PartitionPack: ThisPartition = 0x%" PRIx64 ", PreviousPartition = 0x%" PRIx64 ", " - "FooterPartition = 0x%" PRIx64 ", IndexSID = %i, BodySID = %i\n", + av_dlog(mxf->fc, + "PartitionPack: ThisPartition = 0x%"PRIX64 + ", PreviousPartition = 0x%"PRIX64", " + "FooterPartition = 0x%"PRIX64", IndexSID = %i, BodySID = %i\n", partition->this_partition, partition->previous_partition, footer_partition, partition->index_sid, partition->body_sid); @@ -959,7 +962,8 @@ static int mxf_absolute_bodysid_offset(MXFContext *mxf, int body_sid, int64_t of offset -= p->essence_length; } - av_log(mxf->fc, AV_LOG_ERROR, "failed to find absolute offset of %" PRIx64" in BodySID %i - partial file?\n", + av_log(mxf->fc, AV_LOG_ERROR, + "failed to find absolute offset of %"PRIX64" in BodySID %i - partial file?\n", offset_in, body_sid); return AVERROR_INVALIDDATA; @@ -1602,7 +1606,8 @@ static void mxf_compute_essence_containers(MXFContext *mxf) if (p->essence_length < 0) { /* next ThisPartition < essence_offset */ p->essence_length = 0; - av_log(mxf->fc, AV_LOG_ERROR, "partition %i: bad ThisPartition = %" PRIx64 "\n", + av_log(mxf->fc, AV_LOG_ERROR, + "partition %i: bad ThisPartition = %"PRIX64"\n", x+1, mxf->partitions[x+1].this_partition); } } diff --git a/libavformat/utils.c b/libavformat/utils.c index 005704c7f0..c1de71d29e 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -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; } |