[FFmpeg-devel] [PATCH 012/218] avfilter/af_aderivative: Use formats list instead of query function

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Thu Sep 30 16:39:13 EEST 2021


In this case switching to .formats.samples even allows to avoid
the runtime check for which filter is currently used.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
 libavfilter/af_aderivative.c | 28 +++-------------------------
 1 file changed, 3 insertions(+), 25 deletions(-)

diff --git a/libavfilter/af_aderivative.c b/libavfilter/af_aderivative.c
index e37f978df6..baa272d609 100644
--- a/libavfilter/af_aderivative.c
+++ b/libavfilter/af_aderivative.c
@@ -27,29 +27,6 @@ typedef struct ADerivativeContext {
                    int nb_samples, int channels);
 } ADerivativeContext;
 
-static int query_formats(AVFilterContext *ctx)
-{
-    static const enum AVSampleFormat derivative_sample_fmts[] = {
-        AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_FLTP,
-        AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_DBLP,
-        AV_SAMPLE_FMT_NONE
-    };
-    static const enum AVSampleFormat integral_sample_fmts[] = {
-        AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_DBLP,
-        AV_SAMPLE_FMT_NONE
-    };
-    int ret = ff_set_common_formats_from_list(ctx, strcmp(ctx->filter->name, "aintegral") ?
-                                              derivative_sample_fmts : integral_sample_fmts);
-    if (ret < 0)
-        return ret;
-
-    ret = ff_set_common_all_channel_counts(ctx);
-    if (ret < 0)
-        return ret;
-
-    return ff_set_common_all_samplerates(ctx);
-}
-
 #define DERIVATIVE(name, type)                                          \
 static void aderivative_## name ##p(void **d, void **p, const void **s, \
                                     int nb_samples, int channels)       \
@@ -179,7 +156,8 @@ const AVFilter ff_af_aderivative = {
     .uninit        = uninit,
     FILTER_INPUTS(aderivative_inputs),
     FILTER_OUTPUTS(aderivative_outputs),
-    FILTER_QUERY_FUNC(query_formats),
+    FILTER_SAMPLEFMTS(AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_FLTP,
+                      AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_DBLP),
 };
 
 const AVFilter ff_af_aintegral = {
@@ -189,5 +167,5 @@ const AVFilter ff_af_aintegral = {
     .uninit        = uninit,
     FILTER_INPUTS(aderivative_inputs),
     FILTER_OUTPUTS(aderivative_outputs),
-    FILTER_QUERY_FUNC(query_formats),
+    FILTER_SAMPLEFMTS(AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_DBLP),
 };
-- 
2.30.2



More information about the ffmpeg-devel mailing list