[FFmpeg-cvslog] avcodec/audiotoolboxdec: add FF_CODEC_CAP_INIT_CLEANUP to the decoder capabilities

James Almer git at videolan.org
Wed Sep 6 19:05:23 EEST 2017


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Thu May 25 11:07:42 2017 -0300| [e49338a9c062df7f3167433d81a1528a978fd547] | committer: James Almer

avcodec/audiotoolboxdec: add FF_CODEC_CAP_INIT_CLEANUP to the decoder capabilities

Extradata may be allocated and the AudioConverterRef may be created during init(),
which in case of a failure would not be freed as close() isn't called afterwards.

Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e49338a9c062df7f3167433d81a1528a978fd547
---

 libavcodec/audiotoolboxdec.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavcodec/audiotoolboxdec.c b/libavcodec/audiotoolboxdec.c
index d499a0afc8..c30817778f 100644
--- a/libavcodec/audiotoolboxdec.c
+++ b/libavcodec/audiotoolboxdec.c
@@ -599,7 +599,8 @@ static av_cold void ffat_decode_flush(AVCodecContext *avctx)
 static av_cold int ffat_close_decoder(AVCodecContext *avctx)
 {
     ATDecodeContext *at = avctx->priv_data;
-    AudioConverterDispose(at->converter);
+    if (at->converter)
+        AudioConverterDispose(at->converter);
     av_bsf_free(&at->bsf);
     av_packet_unref(&at->new_in_pkt);
     av_packet_unref(&at->in_pkt);
@@ -628,7 +629,7 @@ static av_cold int ffat_close_decoder(AVCodecContext *avctx)
         .flush          = ffat_decode_flush, \
         .priv_class     = &ffat_##NAME##_dec_class, \
         .capabilities   = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, \
-        .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE, \
+        .caps_internal  = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, \
     };
 
 FFAT_DEC(aac,          AV_CODEC_ID_AAC)



More information about the ffmpeg-cvslog mailing list