diff --git a/ffmpeg.c b/ffmpeg.c index 944fec3a2f5851969e26a89623427d004fac5662..86ea70c9d8137ca801ee0a3a9f85563969d861d4 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -1280,7 +1280,8 @@ static int output_packet(AVInputStream *ist, int ist_index, handle_eof: ist->pts= ist->next_pts; - if(avpkt.size && avpkt.size != pkt->size && verbose>0) + if(avpkt.size && avpkt.size != pkt->size && + !(ist->st->codec->codec->capabilities & CODEC_CAP_SUBFRAMES) && verbose>0) fprintf(stderr, "Multiple frames in a packet from stream %d\n", pkt->stream_index); /* decode the packet if needed */ diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index fe1e0600074fca1b64e9ddc4e777ec3cde6610e9..3909b66d7a6d46f1ed8a503d2fe063b09b59e869 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -605,6 +605,10 @@ typedef struct RcOverride{ * Codec can export data for HW decoding (VDPAU). */ #define CODEC_CAP_HWACCEL_VDPAU 0x0080 +/** + * Codec can output multiple frames per AVPacket + */ +#define CODEC_CAP_SUBFRAMES 0x0100 //The following defines may change, don't expect compatibility if you use them. #define MB_TYPE_INTRA4x4 0x0001 diff --git a/libavcodec/wavpack.c b/libavcodec/wavpack.c index 10254f08def8c9d2855f4ba8257e111b3c23a415..95f1d7123bc0274bc11a76fa21301b9f7c1ad053 100644 --- a/libavcodec/wavpack.c +++ b/libavcodec/wavpack.c @@ -964,5 +964,6 @@ AVCodec wavpack_decoder = { NULL, NULL, wavpack_decode_frame, + .capabilities = CODEC_CAP_SUBFRAMES, .long_name = NULL_IF_CONFIG_SMALL("WavPack"), }; diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c index 2a45312ec0d5e5eac7c193136e1e2b839901b06c..7e7d233b794075ea9113fcc76d7b5167d999f621 100644 --- a/libavcodec/wmaprodec.c +++ b/libavcodec/wmaprodec.c @@ -1557,6 +1557,7 @@ AVCodec wmapro_decoder = { NULL, decode_end, decode_packet, + .capabilities = CODEC_CAP_SUBFRAMES, .flush= flush, .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 9 Professional"), };