[FFmpeg-devel] [PATCH] lavfi: merge AVFilterChannelLayouts into AVFilterFormats.
Nicolas George
george at nsup.org
Fri Aug 20 12:09:06 EEST 2021
Make AVFilterFormats.formats uint64_t.
They are short-lived lists and usually quite short too.
Signed-off-by: Nicolas George <george at nsup.org>
---
I think the simplification in formats.c is well worth the cost in
memory: most of the lines removed are hard-to-maintain macro code.
Furthermore, it will make easier to attach a score to the formats to
replace the logic in swap_*() and pick_formats() without adding yet more
macro code.
This patch has the risk of causing many conflicts, I would like to avoir
keeping it in the air too long. Please comment without taking too much
time.
libavfilter/aeval.c | 6 +-
libavfilter/af_afir.c | 10 +-
libavfilter/af_aformat.c | 4 +-
libavfilter/af_agate.c | 10 +-
libavfilter/af_amerge.c | 12 +--
libavfilter/af_anequalizer.c | 6 +-
libavfilter/af_apulsator.c | 2 +-
libavfilter/af_aresample.c | 6 +-
libavfilter/af_asr.c | 2 +-
libavfilter/af_bs2b.c | 2 +-
libavfilter/af_channelmap.c | 10 +-
libavfilter/af_channelsplit.c | 8 +-
libavfilter/af_crossfeed.c | 2 +-
libavfilter/af_earwax.c | 2 +-
libavfilter/af_extrastereo.c | 2 +-
libavfilter/af_haas.c | 2 +-
libavfilter/af_hdcd.c | 2 +-
libavfilter/af_headphone.c | 14 +--
libavfilter/af_join.c | 6 +-
libavfilter/af_ladspa.c | 8 +-
libavfilter/af_lv2.c | 8 +-
libavfilter/af_pan.c | 6 +-
libavfilter/af_replaygain.c | 2 +-
libavfilter/af_sidechaincompress.c | 10 +-
libavfilter/af_silencedetect.c | 2 +-
libavfilter/af_sofalizer.c | 6 +-
libavfilter/af_stereotools.c | 2 +-
libavfilter/af_stereowiden.c | 2 +-
libavfilter/af_surround.c | 6 +-
libavfilter/asrc_flite.c | 2 +-
libavfilter/avf_abitscope.c | 4 +-
libavfilter/avf_ahistogram.c | 4 +-
libavfilter/avf_aphasemeter.c | 6 +-
libavfilter/avf_avectorscope.c | 4 +-
libavfilter/avf_concat.c | 6 +-
libavfilter/avf_showcqt.c | 4 +-
libavfilter/avf_showfreqs.c | 4 +-
libavfilter/avf_showspatial.c | 4 +-
libavfilter/avf_showspectrum.c | 4 +-
libavfilter/avf_showvolume.c | 4 +-
libavfilter/avf_showwaves.c | 4 +-
libavfilter/avfilter.c | 8 +-
libavfilter/avfilter.h | 4 +-
libavfilter/avfiltergraph.c | 44 ++++-----
libavfilter/buffersink.c | 2 +-
libavfilter/buffersrc.c | 2 +-
libavfilter/f_ebur128.c | 6 +-
libavfilter/formats.c | 152 ++++++++++++-----------------
libavfilter/formats.h | 56 +++--------
libavfilter/src_movie.c | 2 +-
libavfilter/tests/filtfmts.c | 6 +-
libavfilter/vaf_spectrumsynth.c | 4 +-
52 files changed, 221 insertions(+), 275 deletions(-)
diff --git a/libavfilter/aeval.c b/libavfilter/aeval.c
index 7c891c5ad0..9e2abfff60 100644
--- a/libavfilter/aeval.c
+++ b/libavfilter/aeval.c
@@ -338,7 +338,7 @@ AVFILTER_DEFINE_CLASS(aeval);
static int aeval_query_formats(AVFilterContext *ctx)
{
- AVFilterChannelLayouts *layouts;
+ AVFilterFormats *layouts;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
EvalContext *eval = ctx->priv;
@@ -349,7 +349,7 @@ static int aeval_query_formats(AVFilterContext *ctx)
// inlink supports any channel layout
layouts = ff_all_channel_counts();
- if ((ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
return ret;
if (eval->same_chlayout) {
@@ -362,7 +362,7 @@ static int aeval_query_formats(AVFilterContext *ctx)
eval->out_channel_layout ? eval->out_channel_layout :
FF_COUNT2LAYOUT(eval->nb_channels))) < 0)
return ret;
- if ((ret = ff_channel_layouts_ref(layouts, &outlink->incfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &outlink->incfg.channel_layouts)) < 0)
return ret;
}
diff --git a/libavfilter/af_afir.c b/libavfilter/af_afir.c
index d3868a7f2e..3086f91f47 100644
--- a/libavfilter/af_afir.c
+++ b/libavfilter/af_afir.c
@@ -737,19 +737,19 @@ static int query_formats(AVFilterContext *ctx)
if (ret < 0)
return ret;
} else {
- AVFilterChannelLayouts *mono = NULL;
- AVFilterChannelLayouts *layouts = ff_all_channel_counts();
+ AVFilterFormats *mono = NULL;
+ AVFilterFormats *layouts = ff_all_channel_counts();
- if ((ret = ff_channel_layouts_ref(layouts, &ctx->inputs[0]->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &ctx->inputs[0]->outcfg.channel_layouts)) < 0)
return ret;
- if ((ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
return ret;
ret = ff_add_channel_layout(&mono, AV_CH_LAYOUT_MONO);
if (ret)
return ret;
for (int i = 1; i < ctx->nb_inputs; i++) {
- if ((ret = ff_channel_layouts_ref(mono, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(mono, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
return ret;
}
}
diff --git a/libavfilter/af_aformat.c b/libavfilter/af_aformat.c
index e9cc4738fd..d6c563671b 100644
--- a/libavfilter/af_aformat.c
+++ b/libavfilter/af_aformat.c
@@ -38,7 +38,7 @@ typedef struct AFormatContext {
AVFilterFormats *formats;
AVFilterFormats *sample_rates;
- AVFilterChannelLayouts *channel_layouts;
+ AVFilterFormats *channel_layouts;
char *formats_str;
char *sample_rates_str;
@@ -117,7 +117,7 @@ static av_cold void uninit(AVFilterContext *ctx)
ff_formats_unref(&s->formats);
ff_formats_unref(&s->sample_rates);
- ff_channel_layouts_unref(&s->channel_layouts);
+ ff_formats_unref(&s->channel_layouts);
}
static int query_formats(AVFilterContext *ctx)
diff --git a/libavfilter/af_agate.c b/libavfilter/af_agate.c
index eb77dfbcc5..6d9c480fea 100644
--- a/libavfilter/af_agate.c
+++ b/libavfilter/af_agate.c
@@ -338,7 +338,7 @@ static int activate(AVFilterContext *ctx)
static int scquery_formats(AVFilterContext *ctx)
{
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
static const enum AVSampleFormat sample_fmts[] = {
AV_SAMPLE_FMT_DBL,
AV_SAMPLE_FMT_NONE
@@ -346,19 +346,19 @@ static int scquery_formats(AVFilterContext *ctx)
int ret, i;
if (!ctx->inputs[0]->incfg.channel_layouts ||
- !ctx->inputs[0]->incfg.channel_layouts->nb_channel_layouts) {
+ !ctx->inputs[0]->incfg.channel_layouts->nb_formats) {
av_log(ctx, AV_LOG_WARNING,
"No channel layout for input 1\n");
return AVERROR(EAGAIN);
}
- if ((ret = ff_add_channel_layout(&layouts, ctx->inputs[0]->incfg.channel_layouts->channel_layouts[0])) < 0 ||
- (ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
+ if ((ret = ff_add_channel_layout(&layouts, ctx->inputs[0]->incfg.channel_layouts->formats[0])) < 0 ||
+ (ret = ff_formats_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
return ret;
for (i = 0; i < 2; i++) {
layouts = ff_all_channel_counts();
- if ((ret = ff_channel_layouts_ref(layouts, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
return ret;
}
diff --git a/libavfilter/af_amerge.c b/libavfilter/af_amerge.c
index 37fb359c84..140deffbce 100644
--- a/libavfilter/af_amerge.c
+++ b/libavfilter/af_amerge.c
@@ -76,18 +76,18 @@ static int query_formats(AVFilterContext *ctx)
};
AMergeContext *s = ctx->priv;
int64_t inlayout[SWR_CH_MAX], outlayout = 0;
- AVFilterChannelLayouts *layouts;
+ AVFilterFormats *layouts;
int i, ret, overlap = 0, nb_ch = 0;
for (i = 0; i < s->nb_inputs; i++) {
if (!ctx->inputs[i]->incfg.channel_layouts ||
- !ctx->inputs[i]->incfg.channel_layouts->nb_channel_layouts) {
+ !ctx->inputs[i]->incfg.channel_layouts->nb_formats) {
av_log(ctx, AV_LOG_WARNING,
"No channel layout for input %d\n", i + 1);
return AVERROR(EAGAIN);
}
- inlayout[i] = ctx->inputs[i]->incfg.channel_layouts->channel_layouts[0];
- if (ctx->inputs[i]->incfg.channel_layouts->nb_channel_layouts > 1) {
+ inlayout[i] = ctx->inputs[i]->incfg.channel_layouts->formats[0];
+ if (ctx->inputs[i]->incfg.channel_layouts->nb_formats > 1) {
char buf[256];
av_get_channel_layout_string(buf, sizeof(buf), 0, inlayout[i]);
av_log(ctx, AV_LOG_INFO, "Using \"%s\" for input %d\n", buf, i + 1);
@@ -134,13 +134,13 @@ static int query_formats(AVFilterContext *ctx)
layouts = NULL;
if ((ret = ff_add_channel_layout(&layouts, inlayout[i])) < 0)
return ret;
- if ((ret = ff_channel_layouts_ref(layouts, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
return ret;
}
layouts = NULL;
if ((ret = ff_add_channel_layout(&layouts, outlayout)) < 0)
return ret;
- if ((ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
return ret;
return ff_set_common_all_samplerates(ctx);
diff --git a/libavfilter/af_anequalizer.c b/libavfilter/af_anequalizer.c
index 229e978278..4d1add3ff6 100644
--- a/libavfilter/af_anequalizer.c
+++ b/libavfilter/af_anequalizer.c
@@ -220,7 +220,7 @@ static int query_formats(AVFilterContext *ctx)
AVFilterLink *outlink = ctx->outputs[0];
AudioNEqualizerContext *s = ctx->priv;
AVFilterFormats *formats;
- AVFilterChannelLayouts *layouts;
+ AVFilterFormats *layouts;
static const enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_RGBA, AV_PIX_FMT_NONE };
static const enum AVSampleFormat sample_fmts[] = {
AV_SAMPLE_FMT_DBLP,
@@ -241,8 +241,8 @@ static int query_formats(AVFilterContext *ctx)
return ret;
layouts = ff_all_channel_counts();
- if ((ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts)) < 0 ||
- (ret = ff_channel_layouts_ref(layouts, &outlink->incfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts)) < 0 ||
+ (ret = ff_formats_ref(layouts, &outlink->incfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/af_apulsator.c b/libavfilter/af_apulsator.c
index cef49d891f..6f42123408 100644
--- a/libavfilter/af_apulsator.c
+++ b/libavfilter/af_apulsator.c
@@ -186,7 +186,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
static int query_formats(AVFilterContext *ctx)
{
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
AVFilterFormats *formats = NULL;
int ret;
diff --git a/libavfilter/af_aresample.c b/libavfilter/af_aresample.c
index 1127ad2718..815469c4dc 100644
--- a/libavfilter/af_aresample.c
+++ b/libavfilter/af_aresample.c
@@ -87,7 +87,7 @@ static int query_formats(AVFilterContext *ctx)
AVFilterFormats *in_formats, *out_formats;
AVFilterFormats *in_samplerates, *out_samplerates;
- AVFilterChannelLayouts *in_layouts, *out_layouts;
+ AVFilterFormats *in_layouts, *out_layouts;
int ret;
av_opt_get_sample_fmt(aresample->swr, "osf", 0, &out_format);
@@ -103,7 +103,7 @@ static int query_formats(AVFilterContext *ctx)
return ret;
in_layouts = ff_all_channel_counts();
- if ((ret = ff_channel_layouts_ref(in_layouts, &inlink->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(in_layouts, &inlink->outcfg.channel_layouts)) < 0)
return ret;
if(out_rate > 0) {
@@ -130,7 +130,7 @@ static int query_formats(AVFilterContext *ctx)
} else
out_layouts = ff_all_channel_counts();
- return ff_channel_layouts_ref(out_layouts, &outlink->incfg.channel_layouts);
+ return ff_formats_ref(out_layouts, &outlink->incfg.channel_layouts);
}
diff --git a/libavfilter/af_asr.c b/libavfilter/af_asr.c
index 8dbe67fa5b..22d001e26c 100644
--- a/libavfilter/af_asr.c
+++ b/libavfilter/af_asr.c
@@ -127,7 +127,7 @@ static int query_formats(AVFilterContext *ctx)
int ret;
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
if ((ret = ff_add_format (&formats, AV_SAMPLE_FMT_S16 )) < 0 ||
(ret = ff_set_common_formats (ctx , formats )) < 0 ||
diff --git a/libavfilter/af_bs2b.c b/libavfilter/af_bs2b.c
index beb1d0f341..b9d2de2dd2 100644
--- a/libavfilter/af_bs2b.c
+++ b/libavfilter/af_bs2b.c
@@ -92,7 +92,7 @@ static av_cold void uninit(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
static const enum AVSampleFormat sample_fmts[] = {
AV_SAMPLE_FMT_U8,
diff --git a/libavfilter/af_channelmap.c b/libavfilter/af_channelmap.c
index 82df3ace15..45c757156b 100644
--- a/libavfilter/af_channelmap.c
+++ b/libavfilter/af_channelmap.c
@@ -280,18 +280,18 @@ static av_cold int channelmap_init(AVFilterContext *ctx)
static int channelmap_query_formats(AVFilterContext *ctx)
{
ChannelMapContext *s = ctx->priv;
- AVFilterChannelLayouts *channel_layouts = NULL;
+ AVFilterFormats *channel_layouts = NULL;
int ret;
if ((ret = ff_set_common_formats (ctx, ff_planar_sample_fmts())) < 0 ||
(ret = ff_set_common_all_samplerates(ctx )) < 0 ||
(ret = ff_add_channel_layout(&channel_layouts, s->output_layout)) < 0 ||
- (ret = ff_channel_layouts_ref(channel_layouts,
- &ctx->outputs[0]->incfg.channel_layouts)) < 0)
+ (ret = ff_formats_ref(channel_layouts,
+ &ctx->outputs[0]->incfg.channel_layouts)) < 0)
return ret;
- return ff_channel_layouts_ref(ff_all_channel_counts(),
- &ctx->inputs[0]->outcfg.channel_layouts);
+ return ff_formats_ref(ff_all_channel_counts(),
+ &ctx->inputs[0]->outcfg.channel_layouts);
}
static int channelmap_filter_frame(AVFilterLink *inlink, AVFrame *buf)
diff --git a/libavfilter/af_channelsplit.c b/libavfilter/af_channelsplit.c
index 7857ce0343..2d138ca37d 100644
--- a/libavfilter/af_channelsplit.c
+++ b/libavfilter/af_channelsplit.c
@@ -108,7 +108,7 @@ fail:
static int query_formats(AVFilterContext *ctx)
{
ChannelSplitContext *s = ctx->priv;
- AVFilterChannelLayouts *in_layouts = NULL;
+ AVFilterFormats *in_layouts = NULL;
int i, ret;
if ((ret = ff_set_common_formats(ctx, ff_planar_sample_fmts())) < 0 ||
@@ -116,15 +116,15 @@ static int query_formats(AVFilterContext *ctx)
return ret;
if ((ret = ff_add_channel_layout(&in_layouts, s->channel_layout)) < 0 ||
- (ret = ff_channel_layouts_ref(in_layouts, &ctx->inputs[0]->outcfg.channel_layouts)) < 0)
+ (ret = ff_formats_ref(in_layouts, &ctx->inputs[0]->outcfg.channel_layouts)) < 0)
return ret;
for (i = 0; i < ctx->nb_outputs; i++) {
- AVFilterChannelLayouts *out_layouts = NULL;
+ AVFilterFormats *out_layouts = NULL;
uint64_t channel = av_channel_layout_extract_channel(s->channel_layout, s->map[i]);
if ((ret = ff_add_channel_layout(&out_layouts, channel)) < 0 ||
- (ret = ff_channel_layouts_ref(out_layouts, &ctx->outputs[i]->incfg.channel_layouts)) < 0)
+ (ret = ff_formats_ref(out_layouts, &ctx->outputs[i]->incfg.channel_layouts)) < 0)
return ret;
}
diff --git a/libavfilter/af_crossfeed.c b/libavfilter/af_crossfeed.c
index 1d0f8a8149..70114b12d3 100644
--- a/libavfilter/af_crossfeed.c
+++ b/libavfilter/af_crossfeed.c
@@ -41,7 +41,7 @@ typedef struct CrossfeedContext {
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
int ret;
if ((ret = ff_add_format (&formats, AV_SAMPLE_FMT_DBL )) < 0 ||
diff --git a/libavfilter/af_earwax.c b/libavfilter/af_earwax.c
index ddb85705ee..41ea07b507 100644
--- a/libavfilter/af_earwax.c
+++ b/libavfilter/af_earwax.c
@@ -84,7 +84,7 @@ static int query_formats(AVFilterContext *ctx)
int ret;
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
if ((ret = ff_add_format (&formats, AV_SAMPLE_FMT_S16P )) < 0 ||
(ret = ff_set_common_formats (ctx , formats )) < 0 ||
diff --git a/libavfilter/af_extrastereo.c b/libavfilter/af_extrastereo.c
index 6d4f307384..3b2f21e475 100644
--- a/libavfilter/af_extrastereo.c
+++ b/libavfilter/af_extrastereo.c
@@ -44,7 +44,7 @@ AVFILTER_DEFINE_CLASS(extrastereo);
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
int ret;
if ((ret = ff_add_format (&formats, AV_SAMPLE_FMT_FLT )) < 0 ||
diff --git a/libavfilter/af_haas.c b/libavfilter/af_haas.c
index b180d4c5b0..578801c319 100644
--- a/libavfilter/af_haas.c
+++ b/libavfilter/af_haas.c
@@ -82,7 +82,7 @@ AVFILTER_DEFINE_CLASS(haas);
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
int ret;
if ((ret = ff_add_format (&formats, AV_SAMPLE_FMT_DBL )) < 0 ||
diff --git a/libavfilter/af_hdcd.c b/libavfilter/af_hdcd.c
index 3d180bbbda..1848a30f36 100644
--- a/libavfilter/af_hdcd.c
+++ b/libavfilter/af_hdcd.c
@@ -1610,7 +1610,7 @@ static int query_formats(AVFilterContext *ctx)
};
AVFilterFormats *in_formats;
AVFilterFormats *out_formats;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
diff --git a/libavfilter/af_headphone.c b/libavfilter/af_headphone.c
index d5b0d84052..447d366fe7 100644
--- a/libavfilter/af_headphone.c
+++ b/libavfilter/af_headphone.c
@@ -582,9 +582,9 @@ static int query_formats(AVFilterContext *ctx)
{
struct HeadphoneContext *s = ctx->priv;
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layouts = NULL;
- AVFilterChannelLayouts *stereo_layout = NULL;
- AVFilterChannelLayouts *hrir_layouts = NULL;
+ AVFilterFormats *layouts = NULL;
+ AVFilterFormats *stereo_layout = NULL;
+ AVFilterFormats *hrir_layouts = NULL;
int ret, i;
ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLT);
@@ -598,14 +598,14 @@ static int query_formats(AVFilterContext *ctx)
if (!layouts)
return AVERROR(ENOMEM);
- ret = ff_channel_layouts_ref(layouts, &ctx->inputs[0]->outcfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &ctx->inputs[0]->outcfg.channel_layouts);
if (ret)
return ret;
ret = ff_add_channel_layout(&stereo_layout, AV_CH_LAYOUT_STEREO);
if (ret)
return ret;
- ret = ff_channel_layouts_ref(stereo_layout, &ctx->outputs[0]->incfg.channel_layouts);
+ ret = ff_formats_ref(stereo_layout, &ctx->outputs[0]->incfg.channel_layouts);
if (ret)
return ret;
@@ -613,12 +613,12 @@ static int query_formats(AVFilterContext *ctx)
hrir_layouts = ff_all_channel_counts();
if (!hrir_layouts)
return AVERROR(ENOMEM);
- ret = ff_channel_layouts_ref(hrir_layouts, &ctx->inputs[1]->outcfg.channel_layouts);
+ ret = ff_formats_ref(hrir_layouts, &ctx->inputs[1]->outcfg.channel_layouts);
if (ret)
return ret;
} else {
for (i = 1; i <= s->nb_hrir_inputs; i++) {
- ret = ff_channel_layouts_ref(stereo_layout, &ctx->inputs[i]->outcfg.channel_layouts);
+ ret = ff_formats_ref(stereo_layout, &ctx->inputs[i]->outcfg.channel_layouts);
if (ret)
return ret;
}
diff --git a/libavfilter/af_join.c b/libavfilter/af_join.c
index 939edc4fa6..05c57ea442 100644
--- a/libavfilter/af_join.c
+++ b/libavfilter/af_join.c
@@ -224,16 +224,16 @@ static av_cold void join_uninit(AVFilterContext *ctx)
static int join_query_formats(AVFilterContext *ctx)
{
JoinContext *s = ctx->priv;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
int i, ret;
if ((ret = ff_add_channel_layout(&layouts, s->channel_layout)) < 0 ||
- (ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
+ (ret = ff_formats_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
return ret;
for (i = 0; i < ctx->nb_inputs; i++) {
layouts = ff_all_channel_layouts();
- if ((ret = ff_channel_layouts_ref(layouts, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
return ret;
}
diff --git a/libavfilter/af_ladspa.c b/libavfilter/af_ladspa.c
index 3cf5f9f22b..15dd0f21cf 100644
--- a/libavfilter/af_ladspa.c
+++ b/libavfilter/af_ladspa.c
@@ -657,7 +657,7 @@ static av_cold int init(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
LADSPAContext *s = ctx->priv;
- AVFilterChannelLayouts *layouts;
+ AVFilterFormats *layouts;
static const enum AVSampleFormat sample_fmts[] = {
AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE };
int ret = ff_set_common_formats_from_list(ctx, sample_fmts);
@@ -700,12 +700,12 @@ static int query_formats(AVFilterContext *ctx)
ret = ff_add_channel_layout(&layouts, inlayout);
if (ret < 0)
return ret;
- ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts);
if (ret < 0)
return ret;
if (!s->nb_outputs) {
- ret = ff_channel_layouts_ref(layouts, &outlink->incfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &outlink->incfg.channel_layouts);
if (ret < 0)
return ret;
}
@@ -718,7 +718,7 @@ static int query_formats(AVFilterContext *ctx)
ret = ff_add_channel_layout(&layouts, outlayout);
if (ret < 0)
return ret;
- ret = ff_channel_layouts_ref(layouts, &outlink->incfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &outlink->incfg.channel_layouts);
if (ret < 0)
return ret;
}
diff --git a/libavfilter/af_lv2.c b/libavfilter/af_lv2.c
index a7f069206d..ed443fe046 100644
--- a/libavfilter/af_lv2.c
+++ b/libavfilter/af_lv2.c
@@ -476,7 +476,7 @@ static av_cold int init(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
LV2Context *s = ctx->priv;
- AVFilterChannelLayouts *layouts;
+ AVFilterFormats *layouts;
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = {
AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE };
@@ -513,12 +513,12 @@ static int query_formats(AVFilterContext *ctx)
ret = ff_add_channel_layout(&layouts, inlayout);
if (ret < 0)
return ret;
- ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts);
if (ret < 0)
return ret;
if (!s->nb_outputs) {
- ret = ff_channel_layouts_ref(layouts, &outlink->incfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &outlink->incfg.channel_layouts);
if (ret < 0)
return ret;
}
@@ -531,7 +531,7 @@ static int query_formats(AVFilterContext *ctx)
ret = ff_add_channel_layout(&layouts, outlayout);
if (ret < 0)
return ret;
- ret = ff_channel_layouts_ref(layouts, &outlink->incfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &outlink->incfg.channel_layouts);
if (ret < 0)
return ret;
}
diff --git a/libavfilter/af_pan.c b/libavfilter/af_pan.c
index b699faf75b..fb2f253eaf 100644
--- a/libavfilter/af_pan.c
+++ b/libavfilter/af_pan.c
@@ -251,7 +251,7 @@ static int query_formats(AVFilterContext *ctx)
PanContext *pan = ctx->priv;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
- AVFilterChannelLayouts *layouts;
+ AVFilterFormats *layouts;
int ret;
pan->pure_gains = are_gains_pure(pan);
@@ -264,7 +264,7 @@ static int query_formats(AVFilterContext *ctx)
// inlink supports any channel layout
layouts = ff_all_channel_counts();
- if ((ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
return ret;
// outlink supports only requested output channel layout
@@ -273,7 +273,7 @@ static int query_formats(AVFilterContext *ctx)
pan->out_channel_layout ? pan->out_channel_layout :
FF_COUNT2LAYOUT(pan->nb_output_channels))) < 0)
return ret;
- return ff_channel_layouts_ref(layouts, &outlink->incfg.channel_layouts);
+ return ff_formats_ref(layouts, &outlink->incfg.channel_layouts);
}
static int config_props(AVFilterLink *link)
diff --git a/libavfilter/af_replaygain.c b/libavfilter/af_replaygain.c
index fd642297f8..0445ced798 100644
--- a/libavfilter/af_replaygain.c
+++ b/libavfilter/af_replaygain.c
@@ -322,7 +322,7 @@ typedef struct ReplayGainContext {
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
int i, ret;
if ((ret = ff_add_format (&formats, AV_SAMPLE_FMT_FLT )) < 0 ||
diff --git a/libavfilter/af_sidechaincompress.c b/libavfilter/af_sidechaincompress.c
index 8e8547c3a4..80302bc491 100644
--- a/libavfilter/af_sidechaincompress.c
+++ b/libavfilter/af_sidechaincompress.c
@@ -297,7 +297,7 @@ static int activate(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
static const enum AVSampleFormat sample_fmts[] = {
AV_SAMPLE_FMT_DBL,
AV_SAMPLE_FMT_NONE
@@ -305,19 +305,19 @@ static int query_formats(AVFilterContext *ctx)
int ret, i;
if (!ctx->inputs[0]->incfg.channel_layouts ||
- !ctx->inputs[0]->incfg.channel_layouts->nb_channel_layouts) {
+ !ctx->inputs[0]->incfg.channel_layouts->nb_formats) {
av_log(ctx, AV_LOG_WARNING,
"No channel layout for input 1\n");
return AVERROR(EAGAIN);
}
- if ((ret = ff_add_channel_layout(&layouts, ctx->inputs[0]->incfg.channel_layouts->channel_layouts[0])) < 0 ||
- (ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
+ if ((ret = ff_add_channel_layout(&layouts, ctx->inputs[0]->incfg.channel_layouts->formats[0])) < 0 ||
+ (ret = ff_formats_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts)) < 0)
return ret;
for (i = 0; i < 2; i++) {
layouts = ff_all_channel_counts();
- if ((ret = ff_channel_layouts_ref(layouts, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &ctx->inputs[i]->outcfg.channel_layouts)) < 0)
return ret;
}
diff --git a/libavfilter/af_silencedetect.c b/libavfilter/af_silencedetect.c
index 4342793216..3aaebcc7d6 100644
--- a/libavfilter/af_silencedetect.c
+++ b/libavfilter/af_silencedetect.c
@@ -197,7 +197,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples)
static int query_formats(AVFilterContext *ctx)
{
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
static const enum AVSampleFormat sample_fmts[] = {
AV_SAMPLE_FMT_DBL,
AV_SAMPLE_FMT_FLT,
diff --git a/libavfilter/af_sofalizer.c b/libavfilter/af_sofalizer.c
index 9708aab634..9c13ddcfc4 100644
--- a/libavfilter/af_sofalizer.c
+++ b/libavfilter/af_sofalizer.c
@@ -648,7 +648,7 @@ static int activate(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
struct SOFAlizerContext *s = ctx->priv;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
int ret, sample_rates[] = { 48000, -1 };
static const enum AVSampleFormat sample_fmts[] = {
AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_FLTP,
@@ -663,7 +663,7 @@ static int query_formats(AVFilterContext *ctx)
if (!layouts)
return AVERROR(ENOMEM);
- ret = ff_channel_layouts_ref(layouts, &ctx->inputs[0]->outcfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &ctx->inputs[0]->outcfg.channel_layouts);
if (ret)
return ret;
@@ -672,7 +672,7 @@ static int query_formats(AVFilterContext *ctx)
if (ret)
return ret;
- ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts);
if (ret)
return ret;
diff --git a/libavfilter/af_stereotools.c b/libavfilter/af_stereotools.c
index 043265f22c..4bca66c7e0 100644
--- a/libavfilter/af_stereotools.c
+++ b/libavfilter/af_stereotools.c
@@ -102,7 +102,7 @@ AVFILTER_DEFINE_CLASS(stereotools);
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
int ret;
if ((ret = ff_add_format (&formats, AV_SAMPLE_FMT_DBL )) < 0 ||
diff --git a/libavfilter/af_stereowiden.c b/libavfilter/af_stereowiden.c
index b004b24399..a7783c9fcb 100644
--- a/libavfilter/af_stereowiden.c
+++ b/libavfilter/af_stereowiden.c
@@ -55,7 +55,7 @@ AVFILTER_DEFINE_CLASS(stereowiden);
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
int ret;
if ((ret = ff_add_format (&formats, AV_SAMPLE_FMT_FLT )) < 0 ||
diff --git a/libavfilter/af_surround.c b/libavfilter/af_surround.c
index 06e181c7ad..603c53c9b4 100644
--- a/libavfilter/af_surround.c
+++ b/libavfilter/af_surround.c
@@ -160,7 +160,7 @@ static int query_formats(AVFilterContext *ctx)
{
AudioSurroundContext *s = ctx->priv;
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
int ret;
ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLTP);
@@ -175,7 +175,7 @@ static int query_formats(AVFilterContext *ctx)
if (ret)
return ret;
- ret = ff_channel_layouts_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &ctx->outputs[0]->incfg.channel_layouts);
if (ret)
return ret;
@@ -184,7 +184,7 @@ static int query_formats(AVFilterContext *ctx)
if (ret)
return ret;
- ret = ff_channel_layouts_ref(layouts, &ctx->inputs[0]->outcfg.channel_layouts);
+ ret = ff_formats_ref(layouts, &ctx->inputs[0]->outcfg.channel_layouts);
if (ret)
return ret;
diff --git a/libavfilter/asrc_flite.c b/libavfilter/asrc_flite.c
index 1478cc07fa..cd24b39b5c 100644
--- a/libavfilter/asrc_flite.c
+++ b/libavfilter/asrc_flite.c
@@ -209,7 +209,7 @@ static int query_formats(AVFilterContext *ctx)
FliteContext *flite = ctx->priv;
int ret;
- AVFilterChannelLayouts *chlayouts = NULL;
+ AVFilterFormats *chlayouts = NULL;
int64_t chlayout = av_get_default_channel_layout(flite->wave->num_channels);
AVFilterFormats *sample_formats = NULL;
AVFilterFormats *sample_rates = NULL;
diff --git a/libavfilter/avf_abitscope.c b/libavfilter/avf_abitscope.c
index 481a218e6e..c1c7685717 100644
--- a/libavfilter/avf_abitscope.c
+++ b/libavfilter/avf_abitscope.c
@@ -60,7 +60,7 @@ AVFILTER_DEFINE_CLASS(abitscope);
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layouts;
+ AVFilterFormats *layouts;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_NONE };
@@ -74,7 +74,7 @@ static int query_formats(AVFilterContext *ctx)
layouts = ff_all_channel_counts();
if (!layouts)
return AVERROR(ENOMEM);
- if ((ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/avf_ahistogram.c b/libavfilter/avf_ahistogram.c
index 864c061c2f..92a3ca26e0 100644
--- a/libavfilter/avf_ahistogram.c
+++ b/libavfilter/avf_ahistogram.c
@@ -91,7 +91,7 @@ AVFILTER_DEFINE_CLASS(ahistogram);
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE };
@@ -101,7 +101,7 @@ static int query_formats(AVFilterContext *ctx)
formats = ff_make_format_list(sample_fmts);
if ((ret = ff_formats_ref (formats, &inlink->outcfg.formats )) < 0 ||
(layouts = ff_all_channel_counts()) == NULL ||
- (ret = ff_channel_layouts_ref (layouts, &inlink->outcfg.channel_layouts)) < 0)
+ (ret = ff_formats_ref (layouts, &inlink->outcfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/avf_aphasemeter.c b/libavfilter/avf_aphasemeter.c
index bd3ad1ac61..9b5aab7fa3 100644
--- a/libavfilter/avf_aphasemeter.c
+++ b/libavfilter/avf_aphasemeter.c
@@ -91,7 +91,7 @@ static int query_formats(AVFilterContext *ctx)
{
AudioPhaseMeterContext *s = ctx->priv;
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_NONE };
@@ -102,8 +102,8 @@ static int query_formats(AVFilterContext *ctx)
if ((ret = ff_formats_ref (formats, &inlink->outcfg.formats )) < 0 ||
(ret = ff_formats_ref (formats, &outlink->incfg.formats )) < 0 ||
(ret = ff_add_channel_layout (&layout, AV_CH_LAYOUT_STEREO )) < 0 ||
- (ret = ff_channel_layouts_ref (layout , &inlink->outcfg.channel_layouts)) < 0 ||
- (ret = ff_channel_layouts_ref (layout , &outlink->incfg.channel_layouts)) < 0)
+ (ret = ff_formats_ref (layout , &inlink->outcfg.channel_layouts)) < 0 ||
+ (ret = ff_formats_ref (layout , &outlink->incfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/avf_avectorscope.c b/libavfilter/avf_avectorscope.c
index a0011fe33b..fc37f44af0 100644
--- a/libavfilter/avf_avectorscope.c
+++ b/libavfilter/avf_avectorscope.c
@@ -182,7 +182,7 @@ static void fade(AudioVectorScopeContext *s)
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_NONE };
@@ -192,7 +192,7 @@ static int query_formats(AVFilterContext *ctx)
formats = ff_make_format_list(sample_fmts);
if ((ret = ff_formats_ref (formats, &inlink->outcfg.formats )) < 0 ||
(ret = ff_add_channel_layout (&layout, AV_CH_LAYOUT_STEREO )) < 0 ||
- (ret = ff_channel_layouts_ref (layout , &inlink->outcfg.channel_layouts)) < 0)
+ (ret = ff_formats_ref (layout , &inlink->outcfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/avf_concat.c b/libavfilter/avf_concat.c
index 10f21cecb7..ad5301ea59 100644
--- a/libavfilter/avf_concat.c
+++ b/libavfilter/avf_concat.c
@@ -76,7 +76,7 @@ static int query_formats(AVFilterContext *ctx)
ConcatContext *cat = ctx->priv;
unsigned type, nb_str, idx0 = 0, idx, str, seg;
AVFilterFormats *formats, *rates = NULL;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
int ret;
for (type = 0; type < TYPE_ALL; type++) {
@@ -94,7 +94,7 @@ static int query_formats(AVFilterContext *ctx)
if ((ret = ff_formats_ref(rates, &ctx->outputs[idx]->incfg.samplerates)) < 0)
return ret;
layouts = ff_all_channel_layouts();
- if ((ret = ff_channel_layouts_ref(layouts, &ctx->outputs[idx]->incfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &ctx->outputs[idx]->incfg.channel_layouts)) < 0)
return ret;
}
@@ -104,7 +104,7 @@ static int query_formats(AVFilterContext *ctx)
return ret;
if (type == AVMEDIA_TYPE_AUDIO) {
if ((ret = ff_formats_ref(rates, &ctx->inputs[idx]->outcfg.samplerates)) < 0 ||
- (ret = ff_channel_layouts_ref(layouts, &ctx->inputs[idx]->outcfg.channel_layouts)) < 0)
+ (ret = ff_formats_ref(layouts, &ctx->inputs[idx]->outcfg.channel_layouts)) < 0)
return ret;
}
idx += ctx->nb_outputs;
diff --git a/libavfilter/avf_showcqt.c b/libavfilter/avf_showcqt.c
index aa9900ebe0..9db70d95e2 100644
--- a/libavfilter/avf_showcqt.c
+++ b/libavfilter/avf_showcqt.c
@@ -1317,7 +1317,7 @@ static av_cold void uninit(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_NONE };
@@ -1334,7 +1334,7 @@ static int query_formats(AVFilterContext *ctx)
return ret;
layouts = ff_make_format64_list(channel_layouts);
- if ((ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/avf_showfreqs.c b/libavfilter/avf_showfreqs.c
index 5dee3445a8..a39c195232 100644
--- a/libavfilter/avf_showfreqs.c
+++ b/libavfilter/avf_showfreqs.c
@@ -130,7 +130,7 @@ AVFILTER_DEFINE_CLASS(showfreqs);
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE };
@@ -143,7 +143,7 @@ static int query_formats(AVFilterContext *ctx)
return ret;
layouts = ff_all_channel_layouts();
- if ((ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/avf_showspatial.c b/libavfilter/avf_showspatial.c
index 3e1d4bd70e..12bfa94395 100644
--- a/libavfilter/avf_showspatial.c
+++ b/libavfilter/avf_showspatial.c
@@ -106,7 +106,7 @@ static av_cold void uninit(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE };
@@ -116,7 +116,7 @@ static int query_formats(AVFilterContext *ctx)
formats = ff_make_format_list(sample_fmts);
if ((ret = ff_formats_ref (formats, &inlink->outcfg.formats )) < 0 ||
(ret = ff_add_channel_layout (&layout, AV_CH_LAYOUT_STEREO )) < 0 ||
- (ret = ff_channel_layouts_ref (layout , &inlink->outcfg.channel_layouts)) < 0)
+ (ret = ff_formats_ref (layout , &inlink->outcfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/avf_showspectrum.c b/libavfilter/avf_showspectrum.c
index 6ae4c89d77..cccb0eb06d 100644
--- a/libavfilter/avf_showspectrum.c
+++ b/libavfilter/avf_showspectrum.c
@@ -362,7 +362,7 @@ static av_cold void uninit(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE };
@@ -375,7 +375,7 @@ static int query_formats(AVFilterContext *ctx)
return ret;
layouts = ff_all_channel_layouts();
- if ((ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/avf_showvolume.c b/libavfilter/avf_showvolume.c
index d4b8c48297..576fca3b2f 100644
--- a/libavfilter/avf_showvolume.c
+++ b/libavfilter/avf_showvolume.c
@@ -117,7 +117,7 @@ static av_cold int init(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_NONE };
@@ -129,7 +129,7 @@ static int query_formats(AVFilterContext *ctx)
return ret;
layouts = ff_all_channel_counts();
- if ((ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/avf_showwaves.c b/libavfilter/avf_showwaves.c
index b3639f46a5..43cade4d69 100644
--- a/libavfilter/avf_showwaves.c
+++ b/libavfilter/avf_showwaves.c
@@ -152,7 +152,7 @@ static av_cold void uninit(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE };
@@ -165,7 +165,7 @@ static int query_formats(AVFilterContext *ctx)
return ret;
layouts = ff_all_channel_layouts();
- if ((ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index ea22b247de..059439826e 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -249,8 +249,8 @@ int avfilter_insert_filter(AVFilterLink *link, AVFilterContext *filt,
ff_formats_changeref(&link->outcfg.samplerates,
&filt->outputs[filt_dstpad_idx]->outcfg.samplerates);
if (link->outcfg.channel_layouts)
- ff_channel_layouts_changeref(&link->outcfg.channel_layouts,
- &filt->outputs[filt_dstpad_idx]->outcfg.channel_layouts);
+ ff_formats_changeref(&link->outcfg.channel_layouts,
+ &filt->outputs[filt_dstpad_idx]->outcfg.channel_layouts);
return 0;
}
@@ -703,8 +703,8 @@ static void free_link(AVFilterLink *link)
ff_formats_unref(&link->outcfg.formats);
ff_formats_unref(&link->incfg.samplerates);
ff_formats_unref(&link->outcfg.samplerates);
- ff_channel_layouts_unref(&link->incfg.channel_layouts);
- ff_channel_layouts_unref(&link->outcfg.channel_layouts);
+ ff_formats_unref(&link->incfg.channel_layouts);
+ ff_formats_unref(&link->outcfg.channel_layouts);
avfilter_link_free(&link);
}
diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 5a225ffc44..19d26d6561 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -68,7 +68,7 @@ typedef struct AVFilterContext AVFilterContext;
typedef struct AVFilterLink AVFilterLink;
typedef struct AVFilterPad AVFilterPad;
typedef struct AVFilterFormats AVFilterFormats;
-typedef struct AVFilterChannelLayouts AVFilterChannelLayouts;
+typedef struct AVFilterFormats AVFilterChannelLayouts;
/**
* Get the number of elements in a NULL-terminated array of AVFilterPads (e.g.
@@ -437,7 +437,7 @@ typedef struct AVFilterFormatsConfig {
/**
* Lists of supported channel layouts, only for audio.
*/
- AVFilterChannelLayouts *channel_layouts;
+ AVFilterFormats *channel_layouts;
} AVFilterFormatsConfig;
diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 8c6d43a0c7..2b8bac2a4c 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -295,11 +295,11 @@ AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, const char *nam
return NULL;
}
-static void sanitize_channel_layouts(void *log, AVFilterChannelLayouts *l)
+static void sanitize_channel_layouts(void *log, AVFilterFormats *l)
{
if (!l)
return;
- if (l->nb_channel_layouts) {
+ if (l->nb_formats) {
if (l->all_layouts || l->all_counts)
av_log(log, AV_LOG_WARNING, "All layouts set on non-empty list\n");
l->all_layouts = l->all_counts = 0;
@@ -361,7 +361,7 @@ static int filter_query_formats(AVFilterContext *ctx)
{
int ret, i;
AVFilterFormats *formats;
- AVFilterChannelLayouts *chlayouts;
+ AVFilterFormats *chlayouts;
enum AVMediaType type = ctx->inputs && ctx->inputs [0] ? ctx->inputs [0]->type :
ctx->outputs && ctx->outputs[0] ? ctx->outputs[0]->type :
AVMEDIA_TYPE_VIDEO;
@@ -681,8 +681,8 @@ static int pick_format(AVFilterLink *link, AVFilterLink *ref)
"'aformat=channel_layouts=something'.\n");
return AVERROR(EINVAL);
}
- link->incfg.channel_layouts->nb_channel_layouts = 1;
- link->channel_layout = link->incfg.channel_layouts->channel_layouts[0];
+ link->incfg.channel_layouts->nb_formats = 1;
+ link->channel_layout = link->incfg.channel_layouts->formats[0];
if ((link->channels = FF_LAYOUT2COUNT(link->channel_layout)))
link->channel_layout = 0;
else
@@ -693,8 +693,8 @@ static int pick_format(AVFilterLink *link, AVFilterLink *ref)
ff_formats_unref(&link->outcfg.formats);
ff_formats_unref(&link->incfg.samplerates);
ff_formats_unref(&link->outcfg.samplerates);
- ff_channel_layouts_unref(&link->incfg.channel_layouts);
- ff_channel_layouts_unref(&link->outcfg.channel_layouts);
+ ff_formats_unref(&link->incfg.channel_layouts);
+ ff_formats_unref(&link->outcfg.channel_layouts);
return 0;
}
@@ -751,16 +751,16 @@ static int reduce_formats_on_filter(AVFilterContext *filter)
uint64_t fmt;
if (!inlink->outcfg.channel_layouts ||
- inlink->outcfg.channel_layouts->nb_channel_layouts != 1)
+ inlink->outcfg.channel_layouts->nb_formats != 1)
continue;
- fmt = inlink->outcfg.channel_layouts->channel_layouts[0];
+ fmt = inlink->outcfg.channel_layouts->formats[0];
for (j = 0; j < filter->nb_outputs; j++) {
AVFilterLink *outlink = filter->outputs[j];
- AVFilterChannelLayouts *fmts;
+ AVFilterFormats *fmts;
fmts = outlink->incfg.channel_layouts;
- if (inlink->type != outlink->type || fmts->nb_channel_layouts == 1)
+ if (inlink->type != outlink->type || fmts->nb_formats == 1)
continue;
if (fmts->all_layouts &&
@@ -772,10 +772,10 @@ static int reduce_formats_on_filter(AVFilterContext *filter)
break;
}
- for (k = 0; k < outlink->incfg.channel_layouts->nb_channel_layouts; k++) {
- if (fmts->channel_layouts[k] == fmt) {
- fmts->channel_layouts[0] = fmt;
- fmts->nb_channel_layouts = 1;
+ for (k = 0; k < outlink->incfg.channel_layouts->nb_formats; k++) {
+ if (fmts->formats[k] == fmt) {
+ fmts->formats[0] = fmt;
+ fmts->nb_formats = 1;
ret = 1;
break;
}
@@ -895,7 +895,7 @@ static void swap_channel_layouts_on_filter(AVFilterContext *filter)
link = filter->inputs[i];
if (link->type == AVMEDIA_TYPE_AUDIO &&
- link->outcfg.channel_layouts->nb_channel_layouts == 1)
+ link->outcfg.channel_layouts->nb_formats == 1)
break;
}
if (i == filter->nb_inputs)
@@ -906,12 +906,12 @@ static void swap_channel_layouts_on_filter(AVFilterContext *filter)
int best_idx = -1, best_score = INT_MIN, best_count_diff = INT_MAX;
if (outlink->type != AVMEDIA_TYPE_AUDIO ||
- outlink->incfg.channel_layouts->nb_channel_layouts < 2)
+ outlink->incfg.channel_layouts->nb_formats < 2)
continue;
- for (j = 0; j < outlink->incfg.channel_layouts->nb_channel_layouts; j++) {
- uint64_t in_chlayout = link->outcfg.channel_layouts->channel_layouts[0];
- uint64_t out_chlayout = outlink->incfg.channel_layouts->channel_layouts[j];
+ for (j = 0; j < outlink->incfg.channel_layouts->nb_formats; j++) {
+ uint64_t in_chlayout = link->outcfg.channel_layouts->formats[0];
+ uint64_t out_chlayout = outlink->incfg.channel_layouts->formats[j];
int in_channels = av_get_channel_layout_nb_channels(in_chlayout);
int out_channels = av_get_channel_layout_nb_channels(out_chlayout);
int count_diff = out_channels - in_channels;
@@ -969,8 +969,8 @@ static void swap_channel_layouts_on_filter(AVFilterContext *filter)
}
}
av_assert0(best_idx >= 0);
- FFSWAP(uint64_t, outlink->incfg.channel_layouts->channel_layouts[0],
- outlink->incfg.channel_layouts->channel_layouts[best_idx]);
+ FFSWAP(uint64_t, outlink->incfg.channel_layouts->formats[0],
+ outlink->incfg.channel_layouts->formats[best_idx]);
}
}
diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c
index 07c4812f29..54fc9a8f34 100644
--- a/libavfilter/buffersink.c
+++ b/libavfilter/buffersink.c
@@ -256,7 +256,7 @@ static int asink_query_formats(AVFilterContext *ctx)
{
BufferSinkContext *buf = ctx->priv;
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layouts = NULL;
+ AVFilterFormats *layouts = NULL;
unsigned i;
int ret;
diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c
index 4d0bb4f91d..40db97fe2e 100644
--- a/libavfilter/buffersrc.c
+++ b/libavfilter/buffersrc.c
@@ -356,7 +356,7 @@ static av_cold void uninit(AVFilterContext *ctx)
static int query_formats(AVFilterContext *ctx)
{
BufferSourceContext *c = ctx->priv;
- AVFilterChannelLayouts *channel_layouts = NULL;
+ AVFilterFormats *channel_layouts = NULL;
AVFilterFormats *formats = NULL;
AVFilterFormats *samplerates = NULL;
int ret;
diff --git a/libavfilter/f_ebur128.c b/libavfilter/f_ebur128.c
index 938ae60848..ed756c4682 100644
--- a/libavfilter/f_ebur128.c
+++ b/libavfilter/f_ebur128.c
@@ -912,7 +912,7 @@ static int query_formats(AVFilterContext *ctx)
{
EBUR128Context *ebur128 = ctx->priv;
AVFilterFormats *formats;
- AVFilterChannelLayouts *layouts;
+ AVFilterFormats *layouts;
AVFilterLink *inlink = ctx->inputs[0];
AVFilterLink *outlink = ctx->outputs[0];
int ret;
@@ -937,8 +937,8 @@ static int query_formats(AVFilterContext *ctx)
return ret;
layouts = ff_all_channel_layouts();
- if ((ret = ff_channel_layouts_ref(layouts, &inlink->outcfg.channel_layouts)) < 0 ||
- (ret = ff_channel_layouts_ref(layouts, &outlink->incfg.channel_layouts)) < 0)
+ if ((ret = ff_formats_ref(layouts, &inlink->outcfg.channel_layouts)) < 0 ||
+ (ret = ff_formats_ref(layouts, &outlink->incfg.channel_layouts)) < 0)
return ret;
formats = ff_all_samplerates();
diff --git a/libavfilter/formats.c b/libavfilter/formats.c
index ca85b4094b..7914748421 100644
--- a/libavfilter/formats.c
+++ b/libavfilter/formats.c
@@ -212,9 +212,9 @@ static int merge_samplerates(void *a, void *b)
*/
static int merge_channel_layouts(void *va, void *vb)
{
- AVFilterChannelLayouts *a = va;
- AVFilterChannelLayouts *b = vb;
- uint64_t *channel_layouts;
+ AVFilterFormats *a = va;
+ AVFilterFormats *b = vb;
+ uint64_t *formats;
unsigned a_all = a->all_layouts + a->all_counts;
unsigned b_all = b->all_layouts + b->all_counts;
int ret_max, ret_nb = 0, i, j, round;
@@ -225,37 +225,37 @@ static int merge_channel_layouts(void *va, void *vb)
/* Put the most generic set in a, to avoid doing everything twice */
if (a_all < b_all) {
- FFSWAP(AVFilterChannelLayouts *, a, b);
+ FFSWAP(AVFilterFormats *, a, b);
FFSWAP(unsigned, a_all, b_all);
}
if (a_all) {
if (a_all == 1 && !b_all) {
/* keep only known layouts in b; works also for b_all = 1 */
- for (i = j = 0; i < b->nb_channel_layouts; i++)
- if (KNOWN(b->channel_layouts[i]))
- b->channel_layouts[j++] = b->channel_layouts[i];
+ for (i = j = 0; i < b->nb_formats; i++)
+ if (KNOWN(b->formats[i]))
+ b->formats[j++] = b->formats[i];
/* Not optimal: the unknown layouts of b may become known after
another merge. */
if (!j)
return 0;
- b->nb_channel_layouts = j;
+ b->nb_formats = j;
}
- MERGE_REF(b, a, channel_layouts, AVFilterChannelLayouts, return AVERROR(ENOMEM););
+ MERGE_REF(b, a, formats, AVFilterFormats, return AVERROR(ENOMEM););
return 1;
}
- ret_max = a->nb_channel_layouts + b->nb_channel_layouts;
- if (!(channel_layouts = av_malloc_array(ret_max, sizeof(*channel_layouts))))
+ ret_max = a->nb_formats + b->nb_formats;
+ if (!(formats = av_malloc_array(ret_max, sizeof(*formats))))
return AVERROR(ENOMEM);
/* a[known] intersect b[known] */
- for (i = 0; i < a->nb_channel_layouts; i++) {
- if (!KNOWN(a->channel_layouts[i]))
+ for (i = 0; i < a->nb_formats; i++) {
+ if (!KNOWN(a->formats[i]))
continue;
- for (j = 0; j < b->nb_channel_layouts; j++) {
- if (a->channel_layouts[i] == b->channel_layouts[j]) {
- channel_layouts[ret_nb++] = a->channel_layouts[i];
- a->channel_layouts[i] = b->channel_layouts[j] = 0;
+ for (j = 0; j < b->nb_formats; j++) {
+ if (a->formats[i] == b->formats[j]) {
+ formats[ret_nb++] = a->formats[i];
+ a->formats[i] = b->formats[j] = 0;
break;
}
}
@@ -263,40 +263,40 @@ static int merge_channel_layouts(void *va, void *vb)
/* 1st round: a[known] intersect b[generic]
2nd round: a[generic] intersect b[known] */
for (round = 0; round < 2; round++) {
- for (i = 0; i < a->nb_channel_layouts; i++) {
- uint64_t fmt = a->channel_layouts[i], bfmt;
+ for (i = 0; i < a->nb_formats; i++) {
+ uint64_t fmt = a->formats[i], bfmt;
if (!fmt || !KNOWN(fmt))
continue;
bfmt = FF_COUNT2LAYOUT(av_get_channel_layout_nb_channels(fmt));
- for (j = 0; j < b->nb_channel_layouts; j++)
- if (b->channel_layouts[j] == bfmt)
- channel_layouts[ret_nb++] = a->channel_layouts[i];
+ for (j = 0; j < b->nb_formats; j++)
+ if (b->formats[j] == bfmt)
+ formats[ret_nb++] = a->formats[i];
}
/* 1st round: swap to prepare 2nd round; 2nd round: put it back */
- FFSWAP(AVFilterChannelLayouts *, a, b);
+ FFSWAP(AVFilterFormats *, a, b);
}
/* a[generic] intersect b[generic] */
- for (i = 0; i < a->nb_channel_layouts; i++) {
- if (KNOWN(a->channel_layouts[i]))
+ for (i = 0; i < a->nb_formats; i++) {
+ if (KNOWN(a->formats[i]))
continue;
- for (j = 0; j < b->nb_channel_layouts; j++)
- if (a->channel_layouts[i] == b->channel_layouts[j])
- channel_layouts[ret_nb++] = a->channel_layouts[i];
+ for (j = 0; j < b->nb_formats; j++)
+ if (a->formats[i] == b->formats[j])
+ formats[ret_nb++] = a->formats[i];
}
if (!ret_nb) {
- av_free(channel_layouts);
+ av_free(formats);
return 0;
}
if (a->refcount > b->refcount)
- FFSWAP(AVFilterChannelLayouts *, a, b);
+ FFSWAP(AVFilterFormats *, a, b);
- MERGE_REF(b, a, channel_layouts, AVFilterChannelLayouts,
- { av_free(channel_layouts); return AVERROR(ENOMEM); });
- av_freep(&b->channel_layouts);
- b->channel_layouts = channel_layouts;
- b->nb_channel_layouts = ret_nb;
+ MERGE_REF(b, a, formats, AVFilterFormats,
+ { av_free(formats); return AVERROR(ENOMEM); });
+ av_freep(&b->formats);
+ b->formats = formats;
+ b->nb_formats = ret_nb;
return 1;
}
@@ -387,13 +387,12 @@ AVFilterFormats *ff_make_format_list(const int *fmts)
return formats;
}
-AVFilterChannelLayouts *ff_make_format64_list(const int64_t *fmts)
+AVFilterFormats *ff_make_format64_list(const int64_t *fmts)
{
- MAKE_FORMAT_LIST(AVFilterChannelLayouts,
- channel_layouts, nb_channel_layouts);
+ MAKE_FORMAT_LIST(AVFilterFormats, formats, nb_formats);
if (count)
- memcpy(formats->channel_layouts, fmts,
- sizeof(*formats->channel_layouts) * count);
+ memcpy(formats->formats, fmts,
+ sizeof(*formats->formats) * count);
return formats;
}
@@ -419,14 +418,14 @@ do { \
int ff_add_format(AVFilterFormats **avff, int64_t fmt)
{
- ADD_FORMAT(avff, fmt, ff_formats_unref, int, formats, nb_formats);
+ ADD_FORMAT(avff, fmt, ff_formats_unref, uint64_t, formats, nb_formats);
return 0;
}
-int ff_add_channel_layout(AVFilterChannelLayouts **l, uint64_t channel_layout)
+int ff_add_channel_layout(AVFilterFormats **l, uint64_t channel_layout)
{
av_assert1(!(*l && (*l)->all_layouts));
- ADD_FORMAT(l, channel_layout, ff_channel_layouts_unref, uint64_t, channel_layouts, nb_channel_layouts);
+ ADD_FORMAT(l, channel_layout, ff_formats_unref, uint64_t, formats, nb_formats);
return 0;
}
@@ -512,25 +511,26 @@ AVFilterFormats *ff_all_samplerates(void)
return ret;
}
-AVFilterChannelLayouts *ff_all_channel_layouts(void)
+AVFilterFormats *ff_all_channel_layouts(void)
{
- AVFilterChannelLayouts *ret = av_mallocz(sizeof(*ret));
+ AVFilterFormats *ret = av_mallocz(sizeof(*ret));
if (!ret)
return NULL;
ret->all_layouts = 1;
return ret;
}
-AVFilterChannelLayouts *ff_all_channel_counts(void)
+AVFilterFormats *ff_all_channel_counts(void)
{
- AVFilterChannelLayouts *ret = av_mallocz(sizeof(*ret));
+ AVFilterFormats *ret = av_mallocz(sizeof(*ret));
if (!ret)
return NULL;
ret->all_layouts = ret->all_counts = 1;
return ret;
}
-#define FORMATS_REF(f, ref, unref_fn) \
+int ff_formats_ref(AVFilterFormats *f, AVFilterFormats **ref)
+{
void *tmp; \
\
if (!f) \
@@ -538,22 +538,13 @@ AVFilterChannelLayouts *ff_all_channel_counts(void)
\
tmp = av_realloc_array(f->refs, sizeof(*f->refs), f->refcount + 1); \
if (!tmp) { \
- unref_fn(&f); \
+ ff_formats_unref(&f); \
return AVERROR(ENOMEM); \
} \
f->refs = tmp; \
f->refs[f->refcount++] = ref; \
*ref = f; \
- return 0
-
-int ff_channel_layouts_ref(AVFilterChannelLayouts *f, AVFilterChannelLayouts **ref)
-{
- FORMATS_REF(f, ref, ff_channel_layouts_unref);
-}
-
-int ff_formats_ref(AVFilterFormats *f, AVFilterFormats **ref)
-{
- FORMATS_REF(f, ref, ff_formats_unref);
+ return 0;
}
#define FIND_REF_INDEX(ref, idx) \
@@ -566,8 +557,8 @@ do { \
} \
} while (0)
-#define FORMATS_UNREF(ref, list) \
-do { \
+void ff_formats_unref(AVFilterFormats **ref)
+{
int idx = -1; \
\
if (!*ref) \
@@ -581,25 +572,15 @@ do { \
--(*ref)->refcount; \
} \
if (!(*ref)->refcount) { \
- av_free((*ref)->list); \
+ av_free((*ref)->formats); \
av_free((*ref)->refs); \
av_free(*ref); \
} \
*ref = NULL; \
-} while (0)
-
-void ff_formats_unref(AVFilterFormats **ref)
-{
- FORMATS_UNREF(ref, formats);
}
-void ff_channel_layouts_unref(AVFilterChannelLayouts **ref)
+void ff_formats_changeref(AVFilterFormats **oldref, AVFilterFormats **newref)
{
- FORMATS_UNREF(ref, channel_layouts);
-}
-
-#define FORMATS_CHANGEREF(oldref, newref) \
-do { \
int idx = -1; \
\
FIND_REF_INDEX(oldref, idx); \
@@ -609,17 +590,6 @@ do { \
*newref = *oldref; \
*oldref = NULL; \
} \
-} while (0)
-
-void ff_channel_layouts_changeref(AVFilterChannelLayouts **oldref,
- AVFilterChannelLayouts **newref)
-{
- FORMATS_CHANGEREF(oldref, newref);
-}
-
-void ff_formats_changeref(AVFilterFormats **oldref, AVFilterFormats **newref)
-{
- FORMATS_CHANGEREF(oldref, newref);
}
#define SET_COMMON_FORMATS(ctx, fmts, ref_fn, unref_fn) \
@@ -654,10 +624,10 @@ void ff_formats_changeref(AVFilterFormats **oldref, AVFilterFormats **newref)
return 0;
int ff_set_common_channel_layouts(AVFilterContext *ctx,
- AVFilterChannelLayouts *channel_layouts)
+ AVFilterFormats *channel_layouts)
{
SET_COMMON_FORMATS(ctx, channel_layouts,
- ff_channel_layouts_ref, ff_channel_layouts_unref);
+ ff_formats_ref, ff_formats_unref);
}
int ff_set_common_channel_layouts_from_list(AVFilterContext *ctx,
@@ -822,7 +792,7 @@ static int layouts_compatible(uint64_t a, uint64_t b)
(KNOWN(b) && !KNOWN(a) && av_get_channel_layout_nb_channels(b) == FF_LAYOUT2COUNT(a));
}
-int ff_formats_check_channel_layouts(void *log, const AVFilterChannelLayouts *fmts)
+int ff_formats_check_channel_layouts(void *log, const AVFilterFormats *fmts)
{
unsigned i, j;
@@ -832,13 +802,13 @@ int ff_formats_check_channel_layouts(void *log, const AVFilterChannelLayouts *fm
av_log(log, AV_LOG_ERROR, "Inconsistent generic list\n");
return AVERROR(EINVAL);
}
- if (!fmts->all_layouts && !fmts->nb_channel_layouts) {
+ if (!fmts->all_layouts && !fmts->nb_formats) {
av_log(log, AV_LOG_ERROR, "Empty channel layout list\n");
return AVERROR(EINVAL);
}
- for (i = 0; i < fmts->nb_channel_layouts; i++) {
- for (j = i + 1; j < fmts->nb_channel_layouts; j++) {
- if (layouts_compatible(fmts->channel_layouts[i], fmts->channel_layouts[j])) {
+ for (i = 0; i < fmts->nb_formats; i++) {
+ for (j = i + 1; j < fmts->nb_formats; j++) {
+ if (layouts_compatible(fmts->formats[i], fmts->formats[j])) {
av_log(log, AV_LOG_ERROR, "Duplicated or redundant channel layout\n");
return AVERROR(EINVAL);
}
diff --git a/libavfilter/formats.h b/libavfilter/formats.h
index 7c8258ed08..dafc40e915 100644
--- a/libavfilter/formats.h
+++ b/libavfilter/formats.h
@@ -60,20 +60,8 @@
* we must ensure that all links which reference either pre-merge format list
* get updated as well. Therefore, we have the format list structure store a
* pointer to each of the pointers to itself.
- */
-struct AVFilterFormats {
- unsigned nb_formats; ///< number of formats
- int *formats; ///< list of media formats
-
- unsigned refcount; ///< number of references to this list
- struct AVFilterFormats ***refs; ///< references to this list
-};
-
-/**
- * A list of supported channel layouts.
*
- * The list works the same as AVFilterFormats, except for the following
- * differences:
+ * For channel layouts:
* - A list with all_layouts = 1 means all channel layouts with a known
* disposition; nb_channel_layouts must then be 0.
* - A list with all_counts = 1 means all channel counts, with a known or
@@ -82,21 +70,21 @@ struct AVFilterFormats {
* channel count with unknown disposition with the same number of channels
* (e.g. AV_CH_LAYOUT_STEREO and FF_COUNT2LAYOUT(2).
*/
-struct AVFilterChannelLayouts {
- uint64_t *channel_layouts; ///< list of channel layouts
- int nb_channel_layouts; ///< number of channel layouts
+struct AVFilterFormats {
+ unsigned nb_formats; ///< number of formats
+ uint64_t *formats; ///< list of media formats
char all_layouts; ///< accept any known channel layout
char all_counts; ///< accept any channel layout or count
unsigned refcount; ///< number of references to this list
- struct AVFilterChannelLayouts ***refs; ///< references to this list
+ struct AVFilterFormats ***refs; ///< references to this list
};
/**
* Encode a channel count as a channel layout.
* FF_COUNT2LAYOUT(c) means any channel layout with c channels, with a known
* or unknown disposition.
- * The result is only valid inside AVFilterChannelLayouts and immediately
+ * The result is only valid inside AVFilterFormats and immediately
* related functions.
*/
#define FF_COUNT2LAYOUT(c) (0x8000000000000000ULL | (c))
@@ -109,24 +97,24 @@ struct AVFilterChannelLayouts {
(int)((l) & 0x7FFFFFFF) : 0)
/**
- * Construct an empty AVFilterChannelLayouts/AVFilterFormats struct --
+ * Construct an empty AVFilterFormats struct --
* representing any channel layout (with known disposition)/sample rate.
*/
av_warn_unused_result
-AVFilterChannelLayouts *ff_all_channel_layouts(void);
+AVFilterFormats *ff_all_channel_layouts(void);
av_warn_unused_result
AVFilterFormats *ff_all_samplerates(void);
/**
- * Construct an AVFilterChannelLayouts coding for any channel layout, with
+ * Construct an AVFilterFormats coding for any channel layout, with
* known or unknown disposition.
*/
av_warn_unused_result
-AVFilterChannelLayouts *ff_all_channel_counts(void);
+AVFilterFormats *ff_all_channel_counts(void);
av_warn_unused_result
-AVFilterChannelLayouts *ff_make_format64_list(const int64_t *fmts);
+AVFilterFormats *ff_make_format64_list(const int64_t *fmts);
/**
* A helper for query_formats() which sets all links to the same list of channel
@@ -135,7 +123,7 @@ AVFilterChannelLayouts *ff_make_format64_list(const int64_t *fmts);
*/
av_warn_unused_result
int ff_set_common_channel_layouts(AVFilterContext *ctx,
- AVFilterChannelLayouts *layouts);
+ AVFilterFormats *layouts);
/**
* Equivalent to ff_set_common_channel_layouts(ctx, ff_make_format64_list(fmts))
*/
@@ -178,22 +166,10 @@ av_warn_unused_result
int ff_set_common_formats_from_list(AVFilterContext *ctx, const int *fmts);
av_warn_unused_result
-int ff_add_channel_layout(AVFilterChannelLayouts **l, uint64_t channel_layout);
-
-/**
- * Add *ref as a new reference to f.
- */
-av_warn_unused_result
-int ff_channel_layouts_ref(AVFilterChannelLayouts *f,
- AVFilterChannelLayouts **ref);
-
-/**
- * Remove a reference to a channel layouts list.
- */
-void ff_channel_layouts_unref(AVFilterChannelLayouts **ref);
+int ff_add_channel_layout(AVFilterFormats **l, uint64_t channel_layout);
-void ff_channel_layouts_changeref(AVFilterChannelLayouts **oldref,
- AVFilterChannelLayouts **newref);
+void ff_channel_layouts_changeref(AVFilterFormats **oldref,
+ AVFilterFormats **newref);
av_warn_unused_result
int ff_default_query_formats(AVFilterContext *ctx);
@@ -313,7 +289,7 @@ int ff_formats_check_sample_rates(void *log, const AVFilterFormats *fmts);
*
* In particular, check for duplicates.
*/
-int ff_formats_check_channel_layouts(void *log, const AVFilterChannelLayouts *fmts);
+int ff_formats_check_channel_layouts(void *log, const AVFilterFormats *fmts);
typedef struct AVFilterFormatMerger {
unsigned offset;
diff --git a/libavfilter/src_movie.c b/libavfilter/src_movie.c
index ea5bb90255..541133880b 100644
--- a/libavfilter/src_movie.c
+++ b/libavfilter/src_movie.c
@@ -370,7 +370,7 @@ static int movie_query_formats(AVFilterContext *ctx)
if ((ret = ff_formats_ref(ff_make_format_list(list), &outlink->incfg.samplerates)) < 0)
return ret;
list64[0] = c->channel_layout;
- if ((ret = ff_channel_layouts_ref(ff_make_format64_list(list64),
+ if ((ret = ff_formats_ref(ff_make_format64_list(list64),
&outlink->incfg.channel_layouts)) < 0)
return ret;
break;
diff --git a/libavfilter/tests/filtfmts.c b/libavfilter/tests/filtfmts.c
index 356f467331..57ace7a6c5 100644
--- a/libavfilter/tests/filtfmts.c
+++ b/libavfilter/tests/filtfmts.c
@@ -48,7 +48,7 @@ static void print_formats(AVFilterContext *filter_ctx)
av_get_pix_fmt_name(fmts->formats[j])); \
} else if (filter_ctx->inout##puts[i]->type == AVMEDIA_TYPE_AUDIO) { \
AVFilterFormats *fmts; \
- AVFilterChannelLayouts *layouts; \
+ AVFilterFormats *layouts; \
\
fmts = filter_ctx->inout##puts[i]->outin##cfg.formats; \
for (j = 0; j < fmts->nb_formats; j++) \
@@ -57,10 +57,10 @@ static void print_formats(AVFilterContext *filter_ctx)
av_get_sample_fmt_name(fmts->formats[j])); \
\
layouts = filter_ctx->inout##puts[i]->outin##cfg.channel_layouts; \
- for (j = 0; j < layouts->nb_channel_layouts; j++) { \
+ for (j = 0; j < layouts->nb_formats; j++) { \
char buf[256]; \
av_get_channel_layout_string(buf, sizeof(buf), -1, \
- layouts->channel_layouts[j]); \
+ layouts->formats[j]); \
printf(#INOUT "PUT[%d] %s: chlayout:%s\n", \
i, avfilter_pad_get_name(filter_ctx->inout##put_pads, i), buf); \
} \
diff --git a/libavfilter/vaf_spectrumsynth.c b/libavfilter/vaf_spectrumsynth.c
index d44d01cd33..96b0d37097 100644
--- a/libavfilter/vaf_spectrumsynth.c
+++ b/libavfilter/vaf_spectrumsynth.c
@@ -106,7 +106,7 @@ static int query_formats(AVFilterContext *ctx)
{
SpectrumSynthContext *s = ctx->priv;
AVFilterFormats *formats = NULL;
- AVFilterChannelLayouts *layout = NULL;
+ AVFilterFormats *layout = NULL;
AVFilterLink *magnitude = ctx->inputs[0];
AVFilterLink *phase = ctx->inputs[1];
AVFilterLink *outlink = ctx->outputs[0];
@@ -119,7 +119,7 @@ static int query_formats(AVFilterContext *ctx)
formats = ff_make_format_list(sample_fmts);
if ((ret = ff_formats_ref (formats, &outlink->incfg.formats )) < 0 ||
(ret = ff_add_channel_layout (&layout, FF_COUNT2LAYOUT(s->channels))) < 0 ||
- (ret = ff_channel_layouts_ref (layout , &outlink->incfg.channel_layouts)) < 0)
+ (ret = ff_formats_ref (layout , &outlink->incfg.channel_layouts)) < 0)
return ret;
sample_rates[0] = s->sample_rate;
--
2.32.0
More information about the ffmpeg-devel
mailing list