diff --git a/libavcodec/wma.c b/libavcodec/wma.c index 03e310bc94..ab7bcf53a8 100644 --- a/libavcodec/wma.c +++ b/libavcodec/wma.c @@ -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; } diff --git a/libavcodec/wma.h b/libavcodec/wma.h index 9312ec5dd7..ced3a8f87f 100644 --- a/libavcodec/wma.h +++ b/libavcodec/wma.h @@ -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) diff --git a/libavcodec/wmaenc.c b/libavcodec/wmaenc.c index bf8c2674b9..f110f89465 100644 --- a/libavcodec/wmaenc.c +++ b/libavcodec/wmaenc.c @@ -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; }