Browse code

avfilter: handle error in query_formats() of a bunch of random video filters

Clément Bœsch authored on 2015/03/15 22:20:34
Showing 27 changed files
... ...
@@ -416,11 +416,18 @@ static int query_formats(AVFilterContext *ctx)
416 416
     if (!select->do_scene_detect) {
417 417
         return ff_default_query_formats(ctx);
418 418
     } else {
419
+        int ret;
419 420
         static const enum AVPixelFormat pix_fmts[] = {
420 421
             AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
421 422
             AV_PIX_FMT_NONE
422 423
         };
423
-        ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
424
+        AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
425
+
426
+        if (!fmts_list)
427
+            return AVERROR(ENOMEM);
428
+        ret = ff_set_common_formats(ctx, fmts_list);
429
+        if (ret < 0)
430
+            return ret;
424 431
     }
425 432
     return 0;
426 433
 }
... ...
@@ -62,8 +62,10 @@ static int query_formats(AVFilterContext *ctx)
62 62
     // TODO: we can probably add way more pixel formats without any other
63 63
     // changes; anything with 8-bit luma in first plane should be working
64 64
     static const enum AVPixelFormat pix_fmts[] = {AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE};
65
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
66
-    return 0;
65
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
66
+    if (!fmts_list)
67
+        return AVERROR(ENOMEM);
68
+    return ff_set_common_formats(ctx, fmts_list);
67 69
 }
68 70
 
69 71
 static int clip_line(int *sx, int *sy, int *ex, int *ey, int maxx)
... ...
@@ -76,9 +76,10 @@ static int query_formats(AVFilterContext *ctx)
76 76
         AV_PIX_FMT_RGB0,  AV_PIX_FMT_BGR0,
77 77
         AV_PIX_FMT_NONE
78 78
     };
79
-
80
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
81
-    return 0;
79
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
80
+    if (!fmts_list)
81
+        return AVERROR(ENOMEM);
82
+    return ff_set_common_formats(ctx, fmts_list);
82 83
 }
83 84
 
84 85
 static int config_output(AVFilterLink *outlink)
... ...
@@ -353,10 +353,10 @@ static int query_formats(AVFilterContext *ctx)
353 353
         AV_PIX_FMT_UYVY422,
354 354
         AV_PIX_FMT_NONE
355 355
     };
356
-
357
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
358
-
359
-    return 0;
356
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
357
+    if (!fmts_list)
358
+        return AVERROR(ENOMEM);
359
+    return ff_set_common_formats(ctx, fmts_list);
360 360
 }
361 361
 
362 362
 static int filter_frame(AVFilterLink *link, AVFrame *in)
... ...
@@ -464,8 +464,10 @@ static int query_formats(AVFilterContext *ctx)
464 464
         AV_PIX_FMT_RGB0,   AV_PIX_FMT_BGR0,
465 465
         AV_PIX_FMT_NONE
466 466
     };
467
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
468
-    return 0;
467
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
468
+    if (!fmts_list)
469
+        return AVERROR(ENOMEM);
470
+    return ff_set_common_formats(ctx, fmts_list);
469 471
 }
470 472
 
471 473
 static int config_input(AVFilterLink *inlink)
... ...
@@ -600,8 +600,10 @@ static int query_formats(AVFilterContext *ctx)
600 600
         AV_PIX_FMT_BGR24, AV_PIX_FMT_RGB24,
601 601
         AV_PIX_FMT_NONE
602 602
     };
603
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
604
-    return 0;
603
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
604
+    if (!fmts_list)
605
+        return AVERROR(ENOMEM);
606
+    return ff_set_common_formats(ctx, fmts_list);
605 607
 }
606 608
 
607 609
 typedef struct ThreadData {
... ...
@@ -350,8 +350,10 @@ static int query_formats(AVFilterContext *ctx)
350 350
         AV_PIX_FMT_GRAY8, AV_PIX_FMT_GRAY16,
351 351
         AV_PIX_FMT_NONE
352 352
     };
353
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
354
-    return 0;
353
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
354
+    if (!fmts_list)
355
+        return AVERROR(ENOMEM);
356
+    return ff_set_common_formats(ctx, fmts_list);
355 357
 }
356 358
 
357 359
 static int config_output(AVFilterLink *outlink)
... ...
@@ -177,9 +177,10 @@ static int query_formats(AVFilterContext *ctx)
177 177
         AV_PIX_FMT_YUVA420P, AV_PIX_FMT_GRAY8,
178 178
         AV_PIX_FMT_NONE
179 179
     };
180
-
181
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
182
-    return 0;
180
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
181
+    if (!fmts_list)
182
+        return AVERROR(ENOMEM);
183
+    return ff_set_common_formats(ctx, fmts_list);
183 184
 }
184 185
 
185 186
 static av_cold int init(AVFilterContext *ctx)
... ...
@@ -396,10 +396,10 @@ static int query_formats(AVFilterContext *ctx)
396 396
         AV_PIX_FMT_YUV411P,  AV_PIX_FMT_YUV440P,  AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P,
397 397
         AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ440P, AV_PIX_FMT_NONE
398 398
     };
399
-
400
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
401
-
402
-    return 0;
399
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
400
+    if (!fmts_list)
401
+        return AVERROR(ENOMEM);
402
+    return ff_set_common_formats(ctx, fmts_list);
403 403
 }
404 404
 
405 405
 static int config_props(AVFilterLink *link)
... ...
@@ -112,9 +112,10 @@ static int query_formats(AVFilterContext *ctx)
112 112
         AV_PIX_FMT_YUV440P,  AV_PIX_FMT_YUVJ440P,
113 113
         AV_PIX_FMT_NONE
114 114
     };
115
-
116
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
117
-    return 0;
115
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
116
+    if (!fmts_list)
117
+        return AVERROR(ENOMEM);
118
+    return ff_set_common_formats(ctx, fmts_list);
118 119
 }
119 120
 
120 121
 static int config_input(AVFilterLink *inlink)
... ...
@@ -78,17 +78,22 @@ static av_cold int init(AVFilterContext *ctx)
78 78
 static int query_formats(AVFilterContext *ctx)
79 79
 {
80 80
     const EdgeDetectContext *edgedetect = ctx->priv;
81
+    static const enum AVPixelFormat wires_pix_fmts[] = {AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE};
82
+    static const enum AVPixelFormat colormix_pix_fmts[] = {AV_PIX_FMT_GBRP, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE};
83
+    AVFilterFormats *fmts_list;
84
+    const enum AVPixelFormat *pix_fmts = NULL;
81 85
 
82 86
     if (edgedetect->mode == MODE_WIRES) {
83
-        static const enum AVPixelFormat pix_fmts[] = {AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE};
84
-        ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
87
+        pix_fmts = wires_pix_fmts;
85 88
     } else if (edgedetect->mode == MODE_COLORMIX) {
86
-        static const enum AVPixelFormat pix_fmts[] = {AV_PIX_FMT_GBRP, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE};
87
-        ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
89
+        pix_fmts = colormix_pix_fmts;
88 90
     } else {
89 91
         av_assert0(0);
90 92
     }
91
-    return 0;
93
+    fmts_list = ff_make_format_list(pix_fmts);
94
+    if (!fmts_list)
95
+        return AVERROR(ENOMEM);
96
+    return ff_set_common_formats(ctx, fmts_list);
92 97
 }
93 98
 
94 99
 static int config_props(AVFilterLink *inlink)
... ...
@@ -80,10 +80,10 @@ static int query_formats(AVFilterContext *ctx)
80 80
         AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
81 81
         AV_PIX_FMT_NONE
82 82
     };
83
-
84
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
85
-
86
-    return 0;
83
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
84
+    if (!fmts_list)
85
+        return AVERROR(ENOMEM);
86
+    return ff_set_common_formats(ctx, fmts_list);
87 87
 }
88 88
 
89 89
 #define NB_COMPONENTS 3
... ...
@@ -233,10 +233,10 @@ static int query_formats(AVFilterContext *ctx)
233 233
         AV_PIX_FMT_YUV444P,
234 234
         AV_PIX_FMT_NONE
235 235
     };
236
-
237
-    ff_set_common_formats(ctx, ff_make_format_list(pixel_fmts_eq));
238
-
239
-    return 0;
236
+    AVFilterFormats *fmts_list = ff_make_format_list(pixel_fmts_eq);
237
+    if (!fmts_list)
238
+        return AVERROR(ENOMEM);
239
+    return ff_set_common_formats(ctx, fmts_list);
240 240
 }
241 241
 
242 242
 static int filter_frame(AVFilterLink *inlink, AVFrame *in)
... ...
@@ -855,8 +855,10 @@ static int query_formats(AVFilterContext *ctx)
855 855
         AV_PIX_FMT_YUV411P,  AV_PIX_FMT_YUV410P,
856 856
         AV_PIX_FMT_NONE
857 857
     };
858
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
859
-    return 0;
858
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
859
+    if (!fmts_list)
860
+        return AVERROR(ENOMEM);
861
+    return ff_set_common_formats(ctx, fmts_list);
860 862
 }
861 863
 
862 864
 static int config_input(AVFilterLink *inlink)
... ...
@@ -155,10 +155,10 @@ static int query_formats(AVFilterContext *ctx)
155 155
         AV_PIX_FMT_GBRP,
156 156
         AV_PIX_FMT_NONE
157 157
     };
158
-
159
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
160
-
161
-    return 0;
158
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
159
+    if (!fmts_list)
160
+        return AVERROR(ENOMEM);
161
+    return ff_set_common_formats(ctx, fmts_list);
162 162
 }
163 163
 
164 164
 static int config_input(AVFilterLink *inlink)
... ...
@@ -99,9 +99,10 @@ static int query_formats(AVFilterContext *ctx)
99 99
         AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
100 100
         AV_PIX_FMT_NONE
101 101
     };
102
-
103
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
104
-    return 0;
102
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
103
+    if (!fmts_list)
104
+        return AVERROR(ENOMEM);
105
+    return ff_set_common_formats(ctx, fmts_list);
105 106
 }
106 107
 
107 108
 static int config_input(AVFilterLink *inlink)
... ...
@@ -253,10 +253,10 @@ static int query_formats(AVFilterContext *ctx)
253 253
         AV_PIX_FMT_YUV444P16,
254 254
         AV_PIX_FMT_NONE
255 255
     };
256
-
257
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
258
-
259
-    return 0;
256
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
257
+    if (!fmts_list)
258
+        return AVERROR(ENOMEM);
259
+    return ff_set_common_formats(ctx, fmts_list);
260 260
 }
261 261
 
262 262
 static int config_input(AVFilterLink *inlink)
... ...
@@ -462,8 +462,10 @@ HQX_FUNC(4)
462 462
 static int query_formats(AVFilterContext *ctx)
463 463
 {
464 464
     static const enum AVPixelFormat pix_fmts[] = {AV_PIX_FMT_RGB32, AV_PIX_FMT_NONE};
465
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
466
-    return 0;
465
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
466
+    if (!fmts_list)
467
+        return AVERROR(ENOMEM);
468
+    return ff_set_common_formats(ctx, fmts_list);
467 469
 }
468 470
 
469 471
 static int config_output(AVFilterLink *outlink)
... ...
@@ -233,10 +233,10 @@ static int query_formats(AVFilterContext *ctx)
233 233
         AV_PIX_FMT_YUVA420P,
234 234
         AV_PIX_FMT_NONE
235 235
     };
236
-
237
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
238
-
239
-    return 0;
236
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
237
+    if (!fmts_list)
238
+        return AVERROR(ENOMEM);
239
+    return ff_set_common_formats(ctx, fmts_list);
240 240
 }
241 241
 
242 242
 static int config_props(AVFilterLink *inlink)
... ...
@@ -399,10 +399,10 @@ static int query_formats(AVFilterContext *ctx)
399 399
         AV_PIX_FMT_YUVA420P,
400 400
         AV_PIX_FMT_NONE
401 401
     };
402
-
403
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
404
-
405
-    return 0;
402
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
403
+    if (!fmts_list)
404
+        return AVERROR(ENOMEM);
405
+    return ff_set_common_formats(ctx, fmts_list);
406 406
 }
407 407
 
408 408
 static int config_output(AVFilterLink *outlink)
... ...
@@ -107,9 +107,10 @@ static int query_formats(AVFilterContext *ctx)
107 107
         AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP,
108 108
         AV_PIX_FMT_NONE
109 109
     };
110
-
111
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
112
-    return 0;
110
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
111
+    if (!fmts_list)
112
+        return AVERROR(ENOMEM);
113
+    return ff_set_common_formats(ctx, fmts_list);
113 114
 }
114 115
 
115 116
 static av_cold void uninit(AVFilterContext *ctx)
... ...
@@ -63,9 +63,10 @@ static int query_formats(AVFilterContext *ctx)
63 63
     static const enum AVPixelFormat pix_fmts[] = {
64 64
         AV_PIX_FMT_BGR24, AV_PIX_FMT_BGRA, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE
65 65
     };
66
-
67
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
68
-    return 0;
66
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
67
+    if (!fmts_list)
68
+        return AVERROR(ENOMEM);
69
+    return ff_set_common_formats(ctx, fmts_list);
69 70
 }
70 71
 
71 72
 typedef struct OCVContext {
... ...
@@ -130,9 +130,10 @@ static int query_formats(AVFilterContext *ctx)
130 130
     const enum AVPixelFormat *pix_fmts = s->is_rgb ? rgb_pix_fmts :
131 131
                                                      s->is_yuv ? yuv_pix_fmts :
132 132
                                                                  all_pix_fmts;
133
-
134
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
135
-    return 0;
133
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
134
+    if (!fmts_list)
135
+        return AVERROR(ENOMEM);
136
+    return ff_set_common_formats(ctx, fmts_list);
136 137
 }
137 138
 
138 139
 /**
... ...
@@ -471,8 +471,10 @@ static int query_formats(AVFilterContext *ctx)
471 471
         AV_PIX_FMT_RGBA64, AV_PIX_FMT_BGRA64,
472 472
         AV_PIX_FMT_NONE
473 473
     };
474
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
475
-    return 0;
474
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
475
+    if (!fmts_list)
476
+        return AVERROR(ENOMEM);
477
+    return ff_set_common_formats(ctx, fmts_list);
476 478
 }
477 479
 
478 480
 static int config_input(AVFilterLink *inlink)
... ...
@@ -163,10 +163,10 @@ static int query_formats(AVFilterContext *ctx)
163 163
     static const enum PixelFormat pix_fmts[] = {
164 164
         AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE
165 165
     };
166
-
167
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
168
-
169
-    return 0;
166
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
167
+    if (!fmts_list)
168
+        return AVERROR(ENOMEM);
169
+    return ff_set_common_formats(ctx, fmts_list);
170 170
 }
171 171
 
172 172
 static int filter_frame(AVFilterLink *inlink, AVFrame *inpic)
... ...
@@ -158,10 +158,10 @@ static int query_formats(AVFilterContext *ctx)
158 158
         AV_PIX_FMT_YUVA420P,
159 159
         AV_PIX_FMT_NONE
160 160
     };
161
-
162
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
163
-
164
-    return 0;
161
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
162
+    if (!fmts_list)
163
+        return AVERROR(ENOMEM);
164
+    return ff_set_common_formats(ctx, fmts_list);
165 165
 }
166 166
 
167 167
 static int config_input(AVFilterLink *inlink)
... ...
@@ -267,8 +267,10 @@ static int query_formats(AVFilterContext *ctx)
267 267
         AV_PIX_FMT_YUVA420P,
268 268
         AV_PIX_FMT_NONE
269 269
     };
270
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
271
-    return 0;
270
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
271
+    if (!fmts_list)
272
+        return AVERROR(ENOMEM);
273
+    return ff_set_common_formats(ctx, fmts_list);
272 274
 }
273 275
 
274 276
 static int config_input(AVFilterLink *inlink)