diff -urN a/libavfilter/af_aformat.c b/libavfilter/af_aformat.c --- a/libavfilter/af_aformat.c 2019-12-02 08:48:03.060361273 -0700 +++ b/libavfilter/af_aformat.c 2019-12-02 08:52:25.619248884 -0700 @@ -109,6 +109,16 @@ 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; @@ -146,6 +156,7 @@ .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,