summaryrefslogtreecommitdiff
path: root/libavfilter
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-08-07 16:08:42 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-02-27 07:20:57 +0100
commit662ef103671e943c8c02badb1f94c760fb23dbe6 (patch)
tree9a9f3631f01071e41fee31398c2dd5c169d3f9f2 /libavfilter
parent4a95c96eb76b7580e7e3b2440c33afc4cfdf4c97 (diff)
downloadffmpeg-662ef103671e943c8c02badb1f94c760fb23dbe6.tar.gz
avfilter/af_amix: Don't needlessly reallocate table
Replace using ff_add_format() repeatedly by a single call to ff_make_format_list(). (Right now this also fixes a memleak: If the first ff_add_format() succeeds and a subsequent call fails, the list leaks.) Reviewed-by: Paul B Mahol <onemda@gmail.com> Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> (cherry picked from commit 27f35fd121e38b28daafb4f1ad47cf55b5e5ab71)
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/af_amix.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/libavfilter/af_amix.c b/libavfilter/af_amix.c
index 0826fc118c..6a4ef8d944 100644
--- a/libavfilter/af_amix.c
+++ b/libavfilter/af_amix.c
@@ -588,7 +588,11 @@ static av_cold void uninit(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
- AVFilterFormats *formats = NULL;
+ static const enum AVSampleFormat sample_fmts[] = {
+ AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLTP,
+ AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_DBLP,
+ AV_SAMPLE_FMT_NONE
+ };
AVFilterChannelLayouts *layouts;
int ret;
@@ -598,11 +602,7 @@ static int query_formats(AVFilterContext *ctx)
goto fail;
}
- if ((ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLT )) < 0 ||
- (ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLTP)) < 0 ||
- (ret = ff_add_format(&formats, AV_SAMPLE_FMT_DBL )) < 0 ||
- (ret = ff_add_format(&formats, AV_SAMPLE_FMT_DBLP)) < 0 ||
- (ret = ff_set_common_formats (ctx, formats)) < 0 ||
+ if ((ret = ff_set_common_formats(ctx, ff_make_format_list(sample_fmts))) < 0 ||
(ret = ff_set_common_channel_layouts(ctx, layouts)) < 0 ||
(ret = ff_set_common_samplerates(ctx, ff_all_samplerates())) < 0)
goto fail;