summaryrefslogtreecommitdiff
path: root/libavfilter/af_amix.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavfilter/af_amix.c')
-rw-r--r--libavfilter/af_amix.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/libavfilter/af_amix.c b/libavfilter/af_amix.c
index 223328bfff..e64e289108 100644
--- a/libavfilter/af_amix.c
+++ b/libavfilter/af_amix.c
@@ -519,20 +519,23 @@ static int query_formats(AVFilterContext *ctx)
int ret;
layouts = ff_all_channel_layouts();
- if (!layouts)
- return AVERROR(ENOMEM);
+ if (!layouts) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
- if ((ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLT)) < 0)
- return ret;
- if ((ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLTP)) < 0)
- return ret;
- ret = ff_set_common_formats(ctx, formats);
- if (ret < 0)
- return ret;
- ret = ff_set_common_channel_layouts(ctx, layouts);
- if (ret < 0)
- return ret;
- return ff_set_common_samplerates(ctx, ff_all_samplerates());
+ if ((ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLT )) < 0 ||
+ (ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLTP)) < 0 ||
+ (ret = ff_set_common_formats (ctx, formats)) < 0 ||
+ (ret = ff_set_common_channel_layouts(ctx, layouts)) < 0 ||
+ (ret = ff_set_common_samplerates(ctx, ff_all_samplerates())) < 0)
+ goto fail;
+ return 0;
+fail:
+ if (layouts)
+ av_freep(&layouts->channel_layouts);
+ av_freep(&layouts);
+ return ret;
}
static const AVFilterPad avfilter_af_amix_outputs[] = {