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@gmail.com>
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;
}
.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,