wmaenc: alloc/free coded_frame instead of keeping it in the WMACodecContext
authorJustin Ruggles <justin.ruggles@gmail.com>
Mon, 24 Dec 2012 01:26:15 +0000 (20:26 -0500)
committerJustin Ruggles <justin.ruggles@gmail.com>
Tue, 12 Feb 2013 17:22:40 +0000 (12:22 -0500)
libavcodec/wma.c
libavcodec/wma.h
libavcodec/wmaenc.c

index 03e310b..ab7bcf5 100644 (file)
@@ -386,6 +386,11 @@ int ff_wma_end(AVCodecContext *avctx)
         av_free(s->int_table[i]);
     }
 
+#if FF_API_OLD_ENCODE_AUDIO
+    if (av_codec_is_encoder(avctx->codec))
+        av_freep(&avctx->coded_frame);
+#endif
+
     return 0;
 }
 
index 9312ec5..ced3a8f 100644 (file)
@@ -66,7 +66,6 @@ typedef struct CoefVLCTable {
 
 typedef struct WMACodecContext {
     AVCodecContext* avctx;
-    AVFrame frame;
     GetBitContext gb;
     PutBitContext pb;
     int version;                            ///< 1 = 0x160 (WMAV1), 2 = 0x161 (WMAV2)
index bf8c267..f110f89 100644 (file)
@@ -52,6 +52,11 @@ static int encode_init(AVCodecContext * avctx){
         return AVERROR(EINVAL);
     }
 
+#if FF_API_OLD_ENCODE_AUDIO
+    if (!(avctx->coded_frame = avcodec_alloc_frame()))
+        return AVERROR(ENOMEM);
+#endif
+
     /* extract flag infos */
     flags1 = 0;
     flags2 = 1;
@@ -88,11 +93,6 @@ static int encode_init(AVCodecContext * avctx){
                          s->frame_len;
     avctx->frame_size = avctx->delay = s->frame_len;
 
-#if FF_API_OLD_ENCODE_AUDIO
-    avctx->coded_frame = &s->frame;
-    avcodec_get_frame_defaults(avctx->coded_frame);
-#endif
-
     return 0;
 }