History

avfilter/formats: Make ff_formats_pixdesc_filter return AVFilterFormats*

Up until now, it has returned the AVFilterFormats list via an AVFilterFormats** parameter; the actual return value was an int that was always AVERROR(ENOMEM) on error. The AVFilterFormats** argument was a pure output parameter which was only documented by naming the parameter rfmts. Yet nevertheless all callers initialized the underlying AVFilterFormats* to NULL. This commit changes this to return a pointer to AVFilterFormats directly. This is more in line with the API in general, as it allows to avoid checks for intermediate values.

Andreas Rheinhardt committed 5 years ago

Commit 99feb591 parent aff855114 files · +46 −106Browse files

Unified · Split

14 files
  1. libavfilter/formats.c +4 −5
  2. libavfilter/formats.h +1 −1
  3. libavfilter/vf_copy.c +1 −8
  4. libavfilter/vf_crop.c +2 −6
  5. libavfilter/vf_detelecine.c +4 −9
  6. libavfilter/vf_fieldhint.c +4 −9
  7. libavfilter/vf_hwdownload.c +4 −5
  8. libavfilter/vf_il.c +2 −8
  9. libavfilter/vf_mix.c +4 −9
  10. libavfilter/vf_stack.c +4 −9
  11. libavfilter/vf_swaprect.c +4 −9
  12. libavfilter/vf_telecine.c +5 −10
  13. libavfilter/vf_untile.c +5 −10
  14. libavfilter/vf_weave.c +2 −8
libavfilter/formats.c+4−5
@@ -452,7 +452,7 @@ AVFilterFormats *ff_all_formats(enum AVMediaType type) · 451 unmodified lines
452452 return ret;
453453 }
454454
455−int ff_formats_pixdesc_filter(AVFilterFormats **rfmts, unsigned want, unsigned rej)
455+AVFilterFormats *ff_formats_pixdesc_filter(unsigned want, unsigned rej)
456456 {
457457 unsigned nb_formats, fmt, flags;
458458 AVFilterFormats *formats = NULL;
@@ -476,18 +476,17 @@ int ff_formats_pixdesc_filter(AVFilterFormats **rfmts, unsigned want, unsigned r · 17 unmodified lines
476476 }
477477 if (formats) {
478478 av_assert0(formats->nb_formats == nb_formats);
479− *rfmts = formats;
480− return 0;
479+ return formats;
481480 }
482481 formats = av_mallocz(sizeof(*formats));
483482 if (!formats)
484− return AVERROR(ENOMEM);
483+ return NULL;
485484 formats->nb_formats = nb_formats;
486485 if (nb_formats) {
487486 formats->formats = av_malloc_array(nb_formats, sizeof(*formats->formats));
488487 if (!formats->formats) {
489488 av_freep(&formats);
490− return AVERROR(ENOMEM);
489+ return NULL;
491490 }
492491 }
493492 }
libavfilter/formats.h+1−1
@@ -230,7 +230,7 @@ AVFilterFormats *ff_all_formats(enum AVMediaType type); · 229 unmodified lines
230230 * properties
231231 */
232232 av_warn_unused_result
233−int ff_formats_pixdesc_filter(AVFilterFormats **rfmts, unsigned want, unsigned rej);
233+AVFilterFormats *ff_formats_pixdesc_filter(unsigned want, unsigned rej);
234234
235235 //* format is software, non-planar with sub-sampling
236236 #define FF_PIX_FMT_FLAG_SW_FLAT_SUB (1 << 24)
libavfilter/vf_copy.c+1−8
@@ -29,14 +29,7 @@ · 28 unmodified lines
2929
3030 static int query_formats(AVFilterContext *ctx)
3131 {
32− AVFilterFormats *formats = NULL;
33− int ret;
34−
35− ret = ff_formats_pixdesc_filter(&formats, 0,
36− AV_PIX_FMT_FLAG_HWACCEL);
37− if (ret < 0)
38− return ret;
39− return ff_set_common_formats(ctx, formats);
32+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, AV_PIX_FMT_FLAG_HWACCEL));
4033 }
4134
4235 static int filter_frame(AVFilterLink *inlink, AVFrame *in)
libavfilter/vf_crop.c+2−6
@@ -93,13 +93,9 @@ typedef struct CropContext { · 92 unmodified lines
9393
9494 static int query_formats(AVFilterContext *ctx)
9595 {
96− AVFilterFormats *formats = NULL;
97− int ret;
96+ int reject_flags = AV_PIX_FMT_FLAG_BITSTREAM | FF_PIX_FMT_FLAG_SW_FLAT_SUB;
9897
99− ret = ff_formats_pixdesc_filter(&formats, 0, AV_PIX_FMT_FLAG_BITSTREAM | FF_PIX_FMT_FLAG_SW_FLAT_SUB);
100− if (ret < 0)
101− return ret;
102− return ff_set_common_formats(ctx, formats);
98+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, reject_flags));
10399 }
104100
105101 static av_cold void uninit(AVFilterContext *ctx)
libavfilter/vf_detelecine.c+4−9
@@ -124,16 +124,11 @@ static av_cold int init(AVFilterContext *ctx) · 123 unmodified lines
124124
125125 static int query_formats(AVFilterContext *ctx)
126126 {
127− AVFilterFormats *formats = NULL;
128− int ret;
127+ int reject_flags = AV_PIX_FMT_FLAG_BITSTREAM |
128+ AV_PIX_FMT_FLAG_PAL |
129+ AV_PIX_FMT_FLAG_HWACCEL;
129130
130− ret = ff_formats_pixdesc_filter(&formats, 0,
131− AV_PIX_FMT_FLAG_BITSTREAM |
132− AV_PIX_FMT_FLAG_PAL |
133− AV_PIX_FMT_FLAG_HWACCEL);
134− if (ret < 0)
135− return ret;
136− return ff_set_common_formats(ctx, formats);
131+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, reject_flags));
137132 }
138133
139134 static int config_input(AVFilterLink *inlink)
libavfilter/vf_fieldhint.c+4−9
@@ -77,16 +77,11 @@ static av_cold int init(AVFilterContext *ctx) · 76 unmodified lines
7777
7878 static int query_formats(AVFilterContext *ctx)
7979 {
80− AVFilterFormats *formats = NULL;
81− int ret;
80+ int reject_flags = AV_PIX_FMT_FLAG_BITSTREAM |
81+ AV_PIX_FMT_FLAG_HWACCEL |
82+ AV_PIX_FMT_FLAG_PAL;
8283
83− ret = ff_formats_pixdesc_filter(&formats, 0,
84− AV_PIX_FMT_FLAG_HWACCEL |
85− AV_PIX_FMT_FLAG_BITSTREAM |
86− AV_PIX_FMT_FLAG_PAL);
87− if (ret < 0)
88− return ret;
89− return ff_set_common_formats(ctx, formats);
84+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, reject_flags));
9085 }
9186
9287 static int config_input(AVFilterLink *inlink)
libavfilter/vf_hwdownload.c+4−5
@@ -37,13 +37,12 @@ typedef struct HWDownloadContext { · 36 unmodified lines
3737
3838 static int hwdownload_query_formats(AVFilterContext *avctx)
3939 {
40− AVFilterFormats *fmts;
4140 int err;
4241
43− if ((err = ff_formats_pixdesc_filter(&fmts, AV_PIX_FMT_FLAG_HWACCEL, 0)) ||
44− (err = ff_formats_ref(fmts, &avctx->inputs[0]->outcfg.formats)) ||
45− (err = ff_formats_pixdesc_filter(&fmts, 0, AV_PIX_FMT_FLAG_HWACCEL)) ||
46− (err = ff_formats_ref(fmts, &avctx->outputs[0]->incfg.formats)))
42+ if ((err = ff_formats_ref(ff_formats_pixdesc_filter(AV_PIX_FMT_FLAG_HWACCEL, 0),
43+ &avctx->inputs[0]->outcfg.formats)) ||
44+ (err = ff_formats_ref(ff_formats_pixdesc_filter(0, AV_PIX_FMT_FLAG_HWACCEL),
45+ &avctx->outputs[0]->incfg.formats)))
4746 return err;
4847
4948 return 0;
libavfilter/vf_il.c+2−8
@@ -83,15 +83,9 @@ AVFILTER_DEFINE_CLASS(il); · 82 unmodified lines
8383
8484 static int query_formats(AVFilterContext *ctx)
8585 {
86− AVFilterFormats *formats = NULL;
87− int ret;
86+ int reject_flags = AV_PIX_FMT_FLAG_PAL | AV_PIX_FMT_FLAG_HWACCEL;
8887
89− ret = ff_formats_pixdesc_filter(&formats, 0,
90− AV_PIX_FMT_FLAG_PAL |
91− AV_PIX_FMT_FLAG_HWACCEL);
92− if (ret < 0)
93− return ret;
94− return ff_set_common_formats(ctx, formats);
88+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, reject_flags));
9589 }
9690
9791 static int config_input(AVFilterLink *inlink)
libavfilter/vf_mix.c+4−9
@@ -55,16 +55,11 @@ typedef struct MixContext { · 54 unmodified lines
5555
5656 static int query_formats(AVFilterContext *ctx)
5757 {
58− AVFilterFormats *formats = NULL;
59− int ret;
58+ int reject_flags = AV_PIX_FMT_FLAG_BITSTREAM |
59+ AV_PIX_FMT_FLAG_HWACCEL |
60+ AV_PIX_FMT_FLAG_PAL;
6061
61− ret = ff_formats_pixdesc_filter(&formats, 0,
62− AV_PIX_FMT_FLAG_BITSTREAM |
63− AV_PIX_FMT_FLAG_PAL |
64− AV_PIX_FMT_FLAG_HWACCEL);
65− if (ret < 0)
66− return ret;
67− return ff_set_common_formats(ctx, formats);
62+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, reject_flags));
6863 }
6964
7065 static int parse_weights(AVFilterContext *ctx)
libavfilter/vf_stack.c+4−9
@@ -60,21 +60,16 @@ typedef struct StackContext { · 59 unmodified lines
6060
6161 static int query_formats(AVFilterContext *ctx)
6262 {
63− AVFilterFormats *formats = NULL;
6463 StackContext *s = ctx->priv;
65− int ret;
64+ int reject_flags = AV_PIX_FMT_FLAG_BITSTREAM |
65+ AV_PIX_FMT_FLAG_HWACCEL |
66+ AV_PIX_FMT_FLAG_PAL;
6667
6768 if (s->fillcolor_enable) {
6869 return ff_set_common_formats(ctx, ff_draw_supported_pixel_formats(0));
6970 }
7071
71− ret = ff_formats_pixdesc_filter(&formats, 0,
72− AV_PIX_FMT_FLAG_HWACCEL |
73− AV_PIX_FMT_FLAG_BITSTREAM |
74− AV_PIX_FMT_FLAG_PAL);
75− if (ret < 0)
76− return ret;
77− return ff_set_common_formats(ctx, formats);
72+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, reject_flags));
7873 }
7974
8075 static av_cold int init(AVFilterContext *ctx)
libavfilter/vf_swaprect.c+4−9
@@ -57,16 +57,11 @@ AVFILTER_DEFINE_CLASS(swaprect); · 56 unmodified lines
5757
5858 static int query_formats(AVFilterContext *ctx)
5959 {
60− AVFilterFormats *pix_fmts = NULL;
61− int ret;
60+ int reject_flags = AV_PIX_FMT_FLAG_PAL |
61+ AV_PIX_FMT_FLAG_HWACCEL |
62+ AV_PIX_FMT_FLAG_BITSTREAM;
6263
63− ret = ff_formats_pixdesc_filter(&pix_fmts, 0, AV_PIX_FMT_FLAG_PAL |
64− AV_PIX_FMT_FLAG_HWACCEL |
65− AV_PIX_FMT_FLAG_BITSTREAM);
66− if (ret < 0)
67− return ret;
68−
69− return ff_set_common_formats(ctx, pix_fmts);
64+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, reject_flags));
7065 }
7166
7267 static const char *const var_names[] = { "w", "h", "a", "n", "t", "pos", "sar", "dar", NULL };
libavfilter/vf_telecine.c+5−10
@@ -101,16 +101,11 @@ static av_cold int init(AVFilterContext *ctx) · 100 unmodified lines
101101
102102 static int query_formats(AVFilterContext *ctx)
103103 {
104− AVFilterFormats *formats = NULL;
105− int ret;
106−
107− ret = ff_formats_pixdesc_filter(&formats, 0,
108− AV_PIX_FMT_FLAG_BITSTREAM |
109− AV_PIX_FMT_FLAG_PAL |
110− AV_PIX_FMT_FLAG_HWACCEL);
111− if (ret < 0)
112− return ret;
113− return ff_set_common_formats(ctx, formats);
104+ int reject_flags = AV_PIX_FMT_FLAG_BITSTREAM |
105+ AV_PIX_FMT_FLAG_HWACCEL |
106+ AV_PIX_FMT_FLAG_PAL;
107+
108+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, reject_flags));
114109 }
115110
116111 static int config_input(AVFilterLink *inlink)
libavfilter/vf_untile.c+5−10
@@ -62,16 +62,11 @@ static av_cold int init(AVFilterContext *ctx) · 61 unmodified lines
6262
6363 static int query_formats(AVFilterContext *ctx)
6464 {
65− AVFilterFormats *formats = NULL;
66− int ret;
67−
68− ret = ff_formats_pixdesc_filter(&formats, 0,
69− AV_PIX_FMT_FLAG_HWACCEL |
70− AV_PIX_FMT_FLAG_BITSTREAM |
71− FF_PIX_FMT_FLAG_SW_FLAT_SUB);
72− if (ret < 0)
73− return ret;
74− return ff_set_common_formats(ctx, formats);
65+ int reject_flags = AV_PIX_FMT_FLAG_HWACCEL |
66+ AV_PIX_FMT_FLAG_BITSTREAM |
67+ FF_PIX_FMT_FLAG_SW_FLAT_SUB;
68+
69+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, reject_flags));
7570 }
7671
7772 static int config_output(AVFilterLink *outlink)
libavfilter/vf_weave.c+2−8
@@ -51,15 +51,9 @@ AVFILTER_DEFINE_CLASS_EXT(weave, "(double)weave", weave_options); · 50 unmodified lines
5151
5252 static int query_formats(AVFilterContext *ctx)
5353 {
54− AVFilterFormats *formats = NULL;
55− int ret;
54+ int reject_flags = AV_PIX_FMT_FLAG_PAL | AV_PIX_FMT_FLAG_HWACCEL;
5655
57− ret = ff_formats_pixdesc_filter(&formats, 0,
58− AV_PIX_FMT_FLAG_PAL |
59− AV_PIX_FMT_FLAG_HWACCEL);
60− if (ret < 0)
61− return ret;
62− return ff_set_common_formats(ctx, formats);
56+ return ff_set_common_formats(ctx, ff_formats_pixdesc_filter(0, reject_flags));
6357 }
6458
6559 static int config_props_output(AVFilterLink *outlink)

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