Add CODEC_CAP_SUBFRAMES for codecs that output multiple subframes
authorSascha Sommer <saschasommer@freenet.de>
Wed, 16 Sep 2009 15:08:26 +0000 (15:08 +0000)
committerSascha Sommer <saschasommer@freenet.de>
Wed, 16 Sep 2009 15:08:26 +0000 (15:08 +0000)
per AVPacket
No longer print "Multiple frames in a packet" error message
when CODEC_CAP_SUBFRAMES is set (wmapro, wavpack)

Originally committed as revision 19881 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffmpeg.c
libavcodec/avcodec.h
libavcodec/wavpack.c
libavcodec/wmaprodec.c

index 944fec3a2f5851969e26a89623427d004fac5662..86ea70c9d8137ca801ee0a3a9f85563969d861d4 100644 (file)
--- 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 */
index fe1e0600074fca1b64e9ddc4e777ec3cde6610e9..3909b66d7a6d46f1ed8a503d2fe063b09b59e869 100644 (file)
@@ -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
index 10254f08def8c9d2855f4ba8257e111b3c23a415..95f1d7123bc0274bc11a76fa21301b9f7c1ad053 100644 (file)
@@ -964,5 +964,6 @@ AVCodec wavpack_decoder = {
     NULL,
     NULL,
     wavpack_decode_frame,
+    .capabilities = CODEC_CAP_SUBFRAMES,
     .long_name = NULL_IF_CONFIG_SMALL("WavPack"),
 };
index 2a45312ec0d5e5eac7c193136e1e2b839901b06c..7e7d233b794075ea9113fcc76d7b5167d999f621 100644 (file)
@@ -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"),
 };