libvo-aacenc: Only produce extradata if the global header flag is set
authorMartin Storsjö <martin@martin.st>
Tue, 12 Apr 2011 07:35:23 +0000 (10:35 +0300)
committerMartin Storsjö <martin@martin.st>
Wed, 13 Apr 2011 12:43:46 +0000 (15:43 +0300)
Signed-off-by: Martin Storsjö <martin@martin.st>
libavcodec/libvo-aacenc.c

index 205c00e..7006d78 100644 (file)
@@ -62,12 +62,6 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
         return AVERROR_UNKNOWN;
     }
 
-    avctx->extradata_size = 2;
-    avctx->extradata      = av_mallocz(avctx->extradata_size +
-                                       FF_INPUT_BUFFER_PADDING_SIZE);
-    if (!avctx->extradata)
-        return AVERROR(ENOMEM);
-
     for (index = 0; index < 16; index++)
         if (avctx->sample_rate == ff_mpeg4audio_sample_rates[index])
             break;
@@ -76,8 +70,16 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
                                     avctx->sample_rate);
         return AVERROR_NOTSUPP;
     }
-    avctx->extradata[0] = 0x02 << 3 | index >> 1;
-    avctx->extradata[1] = (index & 0x01) << 7 | avctx->channels << 3;
+    if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER) {
+        avctx->extradata_size = 2;
+        avctx->extradata      = av_mallocz(avctx->extradata_size +
+                                           FF_INPUT_BUFFER_PADDING_SIZE);
+        if (!avctx->extradata)
+            return AVERROR(ENOMEM);
+
+        avctx->extradata[0] = 0x02 << 3 | index >> 1;
+        avctx->extradata[1] = (index & 0x01) << 7 | avctx->channels << 3;
+    }
     return 0;
 }