[FFmpeg-devel] [PATCH 1/8] avfilter/tests/filtfmts: Replace macro by ordinary function
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Sat Oct 9 15:53:46 EEST 2021
Andreas Rheinhardt:
> This is possible now that AVFilterFormatsConfig exists.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---
> libavfilter/tests/filtfmts.c | 77 ++++++++++++++++++++----------------
> 1 file changed, 42 insertions(+), 35 deletions(-)
>
> diff --git a/libavfilter/tests/filtfmts.c b/libavfilter/tests/filtfmts.c
> index 55bb64abc5..07e387b92e 100644
> --- a/libavfilter/tests/filtfmts.c
> +++ b/libavfilter/tests/filtfmts.c
> @@ -32,43 +32,50 @@
> #include "libavfilter/formats.h"
> #include "libavfilter/internal.h"
>
> +static void print_formats_internal(AVFilterLink **links, const AVFilterPad *pads,
> + unsigned nb, size_t fmts_cfg_offset,
> + const char *inout_string)
> +{
> + for (unsigned i = 0; i < nb; i++) {
> + const AVFilterLink *const link = links[i];
> + const AVFilterFormatsConfig *const cfg = (AVFilterFormatsConfig*)((const char*)link + fmts_cfg_offset);
> + const char *pad_name = avfilter_pad_get_name(pads, i);
> +
> + if (link->type == AVMEDIA_TYPE_VIDEO) {
> + const AVFilterFormats *const fmts = cfg->formats;
> + for (unsigned j = 0; j < fmts->nb_formats; j++) {
> + printf("%s[%u] %s: fmt:%s\n",
> + inout_string, i, pad_name,
> + av_get_pix_fmt_name(fmts->formats[j]));
> + }
> + } else if (link->type == AVMEDIA_TYPE_AUDIO) {
> + const AVFilterFormats *const fmts = cfg->formats;
> + const AVFilterChannelLayouts *const layouts = cfg->channel_layouts;
> +
> + for (unsigned j = 0; j < fmts->nb_formats; j++)
> + printf("%s[%u] %s: fmt:%s\n",
> + inout_string, i, pad_name,
> + av_get_sample_fmt_name(fmts->formats[j]));
> +
> + for (unsigned j = 0; j < layouts->nb_channel_layouts; j++) {
> + char buf[256];
> + av_get_channel_layout_string(buf, sizeof(buf), -1,
> + layouts->channel_layouts[j]);
> + printf("%s[%u] %s: chlayout:%s\n",
> + inout_string, i, pad_name, buf);
> + }
> + }
> + }
> +}
> +
> static void print_formats(AVFilterContext *filter_ctx)
> {
> - int i, j;
> -
> -#define PRINT_FMTS(inout, outin, INOUT) \
> - for (i = 0; i < filter_ctx->nb_##inout##puts; i++) { \
> - if (filter_ctx->inout##puts[i]->type == AVMEDIA_TYPE_VIDEO) { \
> - AVFilterFormats *fmts = \
> - filter_ctx->inout##puts[i]->outin##cfg.formats; \
> - for (j = 0; j < fmts->nb_formats; j++) \
> - if(av_get_pix_fmt_name(fmts->formats[j])) \
> - printf(#INOUT "PUT[%d] %s: fmt:%s\n", \
> - i, avfilter_pad_get_name(filter_ctx->inout##put_pads, i), \
> - av_get_pix_fmt_name(fmts->formats[j])); \
> - } else if (filter_ctx->inout##puts[i]->type == AVMEDIA_TYPE_AUDIO) { \
> - AVFilterFormats *fmts; \
> - AVFilterChannelLayouts *layouts; \
> - \
> - fmts = filter_ctx->inout##puts[i]->outin##cfg.formats; \
> - for (j = 0; j < fmts->nb_formats; j++) \
> - printf(#INOUT "PUT[%d] %s: fmt:%s\n", \
> - i, avfilter_pad_get_name(filter_ctx->inout##put_pads, i), \
> - 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++) { \
> - char buf[256]; \
> - av_get_channel_layout_string(buf, sizeof(buf), -1, \
> - layouts->channel_layouts[j]); \
> - printf(#INOUT "PUT[%d] %s: chlayout:%s\n", \
> - i, avfilter_pad_get_name(filter_ctx->inout##put_pads, i), buf); \
> - } \
> - } \
> - } \
> -
> - PRINT_FMTS(in, out, IN);
> - PRINT_FMTS(out, in, OUT);
> + print_formats_internal(filter_ctx->inputs, filter_ctx->input_pads,
> + filter_ctx->nb_inputs,
> + offsetof(AVFilterLink, outcfg), "INPUT");
> + print_formats_internal(filter_ctx->outputs, filter_ctx->output_pads,
> + filter_ctx->nb_outputs,
> + offsetof(AVFilterLink, incfg), "OUTPUT");
> }
>
> int main(int argc, char **argv)
>
Will apply this patchset tonight unless there are objections.
- Andreas
More information about the ffmpeg-devel
mailing list