History

avfilter/tests/filtfmts: Replace macro by ordinary function

This is possible now that AVFilterFormatsConfig exists.

Andreas Rheinhardt committed 5 years ago

Commit 2b72e691 parent b4d665b1 file · +42 −35Browse files

Unified · Split

libavfilter/tests/filtfmts.c+42−35
@@ -32,43 +32,50 @@ · 31 unmodified lines
3232 #include "libavfilter/formats.h"
3333 #include "libavfilter/internal.h"
3434
35+static void print_formats_internal(AVFilterLink **links, const AVFilterPad *pads,
36+ unsigned nb, size_t fmts_cfg_offset,
37+ const char *inout_string)
38+{
39+ for (unsigned i = 0; i < nb; i++) {
40+ const AVFilterLink *const link = links[i];
41+ const AVFilterFormatsConfig *const cfg = (AVFilterFormatsConfig*)((const char*)link + fmts_cfg_offset);
42+ const char *pad_name = avfilter_pad_get_name(pads, i);
43+
44+ if (link->type == AVMEDIA_TYPE_VIDEO) {
45+ const AVFilterFormats *const fmts = cfg->formats;
46+ for (unsigned j = 0; j < fmts->nb_formats; j++) {
47+ printf("%s[%u] %s: fmt:%s\n",
48+ inout_string, i, pad_name,
49+ av_get_pix_fmt_name(fmts->formats[j]));
50+ }
51+ } else if (link->type == AVMEDIA_TYPE_AUDIO) {
52+ const AVFilterFormats *const fmts = cfg->formats;
53+ const AVFilterChannelLayouts *const layouts = cfg->channel_layouts;
54+
55+ for (unsigned j = 0; j < fmts->nb_formats; j++)
56+ printf("%s[%u] %s: fmt:%s\n",
57+ inout_string, i, pad_name,
58+ av_get_sample_fmt_name(fmts->formats[j]));
59+
60+ for (unsigned j = 0; j < layouts->nb_channel_layouts; j++) {
61+ char buf[256];
62+ av_get_channel_layout_string(buf, sizeof(buf), -1,
63+ layouts->channel_layouts[j]);
64+ printf("%s[%u] %s: chlayout:%s\n",
65+ inout_string, i, pad_name, buf);
66+ }
67+ }
68+ }
69+}
70+
3571 static void print_formats(AVFilterContext *filter_ctx)
3672 {
37− int i, j;
38−
39−#define PRINT_FMTS(inout, outin, INOUT) \
40− for (i = 0; i < filter_ctx->nb_##inout##puts; i++) { \
41− if (filter_ctx->inout##puts[i]->type == AVMEDIA_TYPE_VIDEO) { \
42− AVFilterFormats *fmts = \
43− filter_ctx->inout##puts[i]->outin##cfg.formats; \
44− for (j = 0; j < fmts->nb_formats; j++) \
45− if(av_get_pix_fmt_name(fmts->formats[j])) \
46− printf(#INOUT "PUT[%d] %s: fmt:%s\n", \
47− i, avfilter_pad_get_name(filter_ctx->inout##put_pads, i), \
48− av_get_pix_fmt_name(fmts->formats[j])); \
49− } else if (filter_ctx->inout##puts[i]->type == AVMEDIA_TYPE_AUDIO) { \
50− AVFilterFormats *fmts; \
51− AVFilterChannelLayouts *layouts; \
52− \
53− fmts = filter_ctx->inout##puts[i]->outin##cfg.formats; \
54− for (j = 0; j < fmts->nb_formats; j++) \
55− printf(#INOUT "PUT[%d] %s: fmt:%s\n", \
56− i, avfilter_pad_get_name(filter_ctx->inout##put_pads, i), \
57− av_get_sample_fmt_name(fmts->formats[j])); \
58− \
59− layouts = filter_ctx->inout##puts[i]->outin##cfg.channel_layouts; \
60− for (j = 0; j < layouts->nb_channel_layouts; j++) { \
61− char buf[256]; \
62− av_get_channel_layout_string(buf, sizeof(buf), -1, \
63− layouts->channel_layouts[j]); \
64− printf(#INOUT "PUT[%d] %s: chlayout:%s\n", \
65− i, avfilter_pad_get_name(filter_ctx->inout##put_pads, i), buf); \
66− } \
67− } \
68− } \
69−
70− PRINT_FMTS(in, out, IN);
71− PRINT_FMTS(out, in, OUT);
73+ print_formats_internal(filter_ctx->inputs, filter_ctx->input_pads,
74+ filter_ctx->nb_inputs,
75+ offsetof(AVFilterLink, outcfg), "INPUT");
76+ print_formats_internal(filter_ctx->outputs, filter_ctx->output_pads,
77+ filter_ctx->nb_outputs,
78+ offsetof(AVFilterLink, incfg), "OUTPUT");
7279 }
7380
7481 int main(int argc, char **argv)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t