AV_PIX_FMT_NONE
};
- AVFilterFormats *main_formats = NULL;
- AVFilterFormats *overlay_formats = NULL;
+ const enum AVPixelFormat *main_formats, *overlay_formats;
+ AVFilterFormats *formats;
int ret;
switch (s->format) {
case OVERLAY_FORMAT_YUV420:
- if (!(main_formats = ff_make_format_list(main_pix_fmts_yuv420)) ||
- !(overlay_formats = ff_make_format_list(overlay_pix_fmts_yuv420))) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
+ main_formats = main_pix_fmts_yuv420;
+ overlay_formats = overlay_pix_fmts_yuv420;
break;
case OVERLAY_FORMAT_YUV420P10:
- if (!(main_formats = ff_make_format_list(main_pix_fmts_yuv420p10)) ||
- !(overlay_formats = ff_make_format_list(overlay_pix_fmts_yuv420p10))) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
+ main_formats = main_pix_fmts_yuv420p10;
+ overlay_formats = overlay_pix_fmts_yuv420p10;
break;
case OVERLAY_FORMAT_YUV422:
- if (!(main_formats = ff_make_format_list(main_pix_fmts_yuv422)) ||
- !(overlay_formats = ff_make_format_list(overlay_pix_fmts_yuv422))) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
+ main_formats = main_pix_fmts_yuv422;
+ overlay_formats = overlay_pix_fmts_yuv422;
break;
case OVERLAY_FORMAT_YUV422P10:
- if (!(main_formats = ff_make_format_list(main_pix_fmts_yuv422p10)) ||
- !(overlay_formats = ff_make_format_list(overlay_pix_fmts_yuv422p10))) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
+ main_formats = main_pix_fmts_yuv422p10;
+ overlay_formats = overlay_pix_fmts_yuv422p10;
break;
case OVERLAY_FORMAT_YUV444:
- if (!(main_formats = ff_make_format_list(main_pix_fmts_yuv444)) ||
- !(overlay_formats = ff_make_format_list(overlay_pix_fmts_yuv444))) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
+ main_formats = main_pix_fmts_yuv444;
+ overlay_formats = overlay_pix_fmts_yuv444;
break;
case OVERLAY_FORMAT_RGB:
- if (!(main_formats = ff_make_format_list(main_pix_fmts_rgb)) ||
- !(overlay_formats = ff_make_format_list(overlay_pix_fmts_rgb))) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
+ main_formats = main_pix_fmts_rgb;
+ overlay_formats = overlay_pix_fmts_rgb;
break;
case OVERLAY_FORMAT_GBRP:
- if (!(main_formats = ff_make_format_list(main_pix_fmts_gbrp)) ||
- !(overlay_formats = ff_make_format_list(overlay_pix_fmts_gbrp))) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
+ main_formats = main_pix_fmts_gbrp;
+ overlay_formats = overlay_pix_fmts_gbrp;
break;
case OVERLAY_FORMAT_AUTO:
- if (!(main_formats = ff_make_format_list(alpha_pix_fmts))) {
- ret = AVERROR(ENOMEM);
- goto fail;
- }
- break;
+ return ff_set_common_formats(ctx, ff_make_format_list(alpha_pix_fmts));
default:
av_assert0(0);
}
- if (s->format == OVERLAY_FORMAT_AUTO) {
- ret = ff_set_common_formats(ctx, main_formats);
- if (ret < 0)
- goto fail;
- } else {
- if ((ret = ff_formats_ref(main_formats , &ctx->inputs[MAIN]->out_formats )) < 0 ||
- (ret = ff_formats_ref(overlay_formats, &ctx->inputs[OVERLAY]->out_formats)) < 0 ||
- (ret = ff_formats_ref(main_formats , &ctx->outputs[MAIN]->in_formats )) < 0)
- goto fail;
- }
+ formats = ff_make_format_list(main_formats);
+ if ((ret = ff_formats_ref(formats, &ctx->inputs[MAIN]->outcfg.formats)) < 0 ||
+ (ret = ff_formats_ref(formats, &ctx->outputs[MAIN]->incfg.formats)) < 0)
+ return ret;
- return 0;
-fail:
- if (main_formats)
- av_freep(&main_formats->formats);
- av_freep(&main_formats);
- if (overlay_formats)
- av_freep(&overlay_formats->formats);
- av_freep(&overlay_formats);
- return ret;
+ return ff_formats_ref(ff_make_format_list(overlay_formats),
+ &ctx->inputs[OVERLAY]->outcfg.formats);
}
static int config_input_overlay(AVFilterLink *inlink)
dap += (1 << vsub) * dst->linesize[3] / bytes; \
} \
}
-DEFINE_BLEND_PLANE(8, 8);
-DEFINE_BLEND_PLANE(16, 10);
+DEFINE_BLEND_PLANE(8, 8)
+DEFINE_BLEND_PLANE(16, 10)
#define DEFINE_ALPHA_COMPOSITE(depth, nbits) \
static inline void alpha_composite_##depth##_##nbits##bits(const AVFrame *src, const AVFrame *dst, \
sa += src->linesize[3] / bytes; \
} \
}
-DEFINE_ALPHA_COMPOSITE(8, 8);
-DEFINE_ALPHA_COMPOSITE(16, 10);
+DEFINE_ALPHA_COMPOSITE(8, 8)
+DEFINE_ALPHA_COMPOSITE(16, 10)
#define DEFINE_BLEND_SLICE_YUV(depth, nbits) \
static av_always_inline void blend_slice_yuv_##depth##_##nbits##bits(AVFilterContext *ctx, \
alpha_composite_##depth##_##nbits##bits(src, dst, src_w, src_h, dst_w, dst_h, x, y, \
jobnr, nb_jobs); \
}
-DEFINE_BLEND_SLICE_YUV(8, 8);
-DEFINE_BLEND_SLICE_YUV(16, 10);
+DEFINE_BLEND_SLICE_YUV(8, 8)
+DEFINE_BLEND_SLICE_YUV(16, 10)
static av_always_inline void blend_slice_planar_rgb(AVFilterContext *ctx,
AVFrame *dst, const AVFrame *src,
{ NULL }
};
-AVFilter ff_vf_overlay = {
+const AVFilter ff_vf_overlay = {
.name = "overlay",
.description = NULL_IF_CONFIG_SMALL("Overlay a video source on top of the input."),
.preinit = overlay_framesync_preinit,