Do not leak extradata when encoding avui.
authorCarl Eugen Hoyos <cehoyos@ag.or.at>
Wed, 23 May 2012 14:48:40 +0000 (16:48 +0200)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Wed, 23 May 2012 14:48:40 +0000 (16:48 +0200)
libavcodec/avuienc.c

index 53688a9..5165073 100644 (file)
@@ -35,6 +35,16 @@ static av_cold int avui_encode_init(AVCodecContext *avctx)
         av_log(avctx, AV_LOG_ERROR, "Could not allocate frame.\n");
         return AVERROR(ENOMEM);
     }
+    if (!(avctx->extradata = av_mallocz(24 + FF_INPUT_BUFFER_PADDING_SIZE)))
+        return AVERROR(ENOMEM);
+    avctx->extradata_size = 24;
+    memcpy(avctx->extradata, "\0\0\0\x18""APRGAPRG0001", 16);
+    if (avctx->field_order > AV_FIELD_PROGRESSIVE) {
+        avctx->extradata[19] = 2;
+    } else {
+        avctx->extradata[19] = 1;
+    }
+
 
     return 0;
 }
@@ -56,14 +66,7 @@ static int avui_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
     if ((ret = ff_alloc_packet2(avctx, pkt, size)) < 0)
         return ret;
     dst = pkt->data;
-    if (!(avctx->extradata = av_mallocz(24 + FF_INPUT_BUFFER_PADDING_SIZE)))
-        return AVERROR(ENOMEM);
-    avctx->extradata_size = 24;
-    memcpy(avctx->extradata, "\0\0\0\x18""APRGAPRG0001", 16);
-    if (interlaced) {
-        avctx->extradata[19] = 2;
-    } else {
-        avctx->extradata[19] = 1;
+    if (!interlaced) {
         dst += avctx->width * skip;
     }