Commit 56e11ebf authored by Rostislav Pehlivanov's avatar 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: 's avatarRostislav Pehlivanov <atomnuker@gmail.com>
parent c7d726f7
......@@ -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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment