X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_alphamerge.c;h=85b6d9b61a336c95a01a42a94658604880fd9b8d;hb=c53f9f436440be4e180aa3895920ef21019c076f;hp=eb5a4d6e78e44efd8db3153b10cf6e5464bbbd7b;hpb=5868e7f562fc49ebe8067392325b10a815e653fb;p=ffmpeg diff --git a/libavfilter/vf_alphamerge.c b/libavfilter/vf_alphamerge.c index eb5a4d6e78e..85b6d9b61a3 100644 --- a/libavfilter/vf_alphamerge.c +++ b/libavfilter/vf_alphamerge.c @@ -26,6 +26,7 @@ #include #include "libavutil/imgutils.h" +#include "libavutil/opt.h" #include "libavutil/pixfmt.h" #include "avfilter.h" #include "drawutils.h" @@ -37,6 +38,8 @@ enum { Y, U, V, A }; typedef struct AlphaMergeContext { + const AVClass *class; + int is_packed_rgb; uint8_t rgba_map[4]; AVFrame *main_frame; @@ -154,7 +157,8 @@ static int activate(AVFilterContext *ctx) } if (s->main_frame && s->alpha_frame) { - draw_frame(ctx, s->main_frame, s->alpha_frame); + if (!ctx->is_disabled) + draw_frame(ctx, s->main_frame, s->alpha_frame); ret = ff_filter_frame(outlink, s->main_frame); av_frame_free(&s->alpha_frame); s->main_frame = NULL; @@ -203,13 +207,21 @@ static const AVFilterPad alphamerge_outputs[] = { { NULL } }; +static const AVOption alphamerge_options[] = { + { NULL } +}; + +AVFILTER_DEFINE_CLASS(alphamerge); + AVFilter ff_vf_alphamerge = { .name = "alphamerge", .description = NULL_IF_CONFIG_SMALL("Copy the luma value of the second " "input into the alpha channel of the first input."), .priv_size = sizeof(AlphaMergeContext), + .priv_class = &alphamerge_class, .query_formats = query_formats, .inputs = alphamerge_inputs, .outputs = alphamerge_outputs, .activate = activate, + .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, };