[FFmpeg-cvslog] dcaenc: cleanup on init failure and add a threadsafe init codec cap

Rostislav Pehlivanov git at videolan.org
Sat Jan 13 20:07:42 EET 2018


ffmpeg | branch: master | Rostislav Pehlivanov <atomnuker at gmail.com> | Sat Jan 13 18:03:42 2018 +0000| [56e11ebf55a5e51a8a7131d382c2020e35d34f42] | committer: Rostislav Pehlivanov

dcaenc: cleanup on init failure and add a threadsafe init codec cap

The encoder didn't clean up if a malloc failed during init.
It also doesn't need any external tables to be initialized on init.
Finally, it didn't need to check for whether avctx->priv_data exists during
uninit.

Signed-off-by: Rostislav Pehlivanov <atomnuker at gmail.com>

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

 libavcodec/dcaenc.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/libavcodec/dcaenc.c b/libavcodec/dcaenc.c
index dd601ffae0..7ba2346ef1 100644
--- a/libavcodec/dcaenc.c
+++ b/libavcodec/dcaenc.c
@@ -295,11 +295,10 @@ static int encode_init(AVCodecContext *avctx)
 
 static av_cold int encode_close(AVCodecContext *avctx)
 {
-    if (avctx->priv_data) {
-        DCAEncContext *c = avctx->priv_data;
-        subband_bufer_free(c);
-        ff_dcaadpcm_free(&c->adpcm_ctx);
-    }
+    DCAEncContext *c = avctx->priv_data;
+    subband_bufer_free(c);
+    ff_dcaadpcm_free(&c->adpcm_ctx);
+
     return 0;
 }
 
@@ -1287,6 +1286,7 @@ AVCodec ff_dca_encoder = {
     .close                 = encode_close,
     .encode2               = encode_frame,
     .capabilities          = AV_CODEC_CAP_EXPERIMENTAL,
+    .caps_internal         = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,
     .sample_fmts           = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S32,
                                                             AV_SAMPLE_FMT_NONE },
     .supported_samplerates = sample_rates,



More information about the ffmpeg-cvslog mailing list