diff --git a/libavfilter/af_aformat.c b/libavfilter/af_aformat.c index 1a702778c3..232d629ba0 100644 --- a/libavfilter/af_aformat.c +++ b/libavfilter/af_aformat.c @@ -112,6 +112,16 @@ static av_cold int init(AVFilterContext *ctx) return 0; } +#define DEL_FIELD(p,mem,fld) if( p->mem ) { av_freep(&p->mem->fld); av_freep(&p->mem); } + +static av_cold void uninit(AVFilterContext *ctx) +{ + AFormatContext *s = ctx->priv; + DEL_FIELD(s, formats, formats); + DEL_FIELD(s, sample_rates, formats); + DEL_FIELD(s, channel_layouts, channel_layouts); +} + static int query_formats(AVFilterContext *ctx) { AFormatContext *s = ctx->priv; @@ -149,6 +159,7 @@ AVFilter ff_af_aformat = { .name = "aformat", .description = NULL_IF_CONFIG_SMALL("Convert the input audio to one of the specified formats."), .init = init, + .uninit = uninit, .query_formats = query_formats, .priv_size = sizeof(AFormatContext), .priv_class = &aformat_class,