|  | @@ -71,9 +71,9 @@ static int process_frame(FFFrameSync *fs) | 
														
													
														
															
																|  |  | AVFrame *out, *base, *overlay, *mask; |  |  | AVFrame *out, *base, *overlay, *mask; | 
														
													
														
															
																|  |  | int ret; |  |  | int ret; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | if ((ret = ff_framesync_get_frame(&s->fs, 0, &base,    0)) < 0 || |  |  |  | 
														
													
														
															
																|  |  | (ret = ff_framesync_get_frame(&s->fs, 1, &overlay, 0)) < 0 || |  |  |  | 
														
													
														
															
																|  |  | (ret = ff_framesync_get_frame(&s->fs, 2, &mask,    0)) < 0) |  |  |  | 
														
													
														
															
																|  |  |  |  |  | if ((ret = ff_framesync2_get_frame(&s->fs, 0, &base,    0)) < 0 || | 
														
													
														
															
																|  |  |  |  |  | (ret = ff_framesync2_get_frame(&s->fs, 1, &overlay, 0)) < 0 || | 
														
													
														
															
																|  |  |  |  |  | (ret = ff_framesync2_get_frame(&s->fs, 2, &mask,    0)) < 0) | 
														
													
														
															
																|  |  | return ret; |  |  | return ret; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | if (ctx->is_disabled) { |  |  | if (ctx->is_disabled) { | 
														
													
												
													
														
															
																|  | @@ -232,7 +232,7 @@ static int config_output(AVFilterLink *outlink) | 
														
													
														
															
																|  |  | if ((ret = av_image_fill_linesizes(s->linesize, outlink->format, outlink->w)) < 0) |  |  | if ((ret = av_image_fill_linesizes(s->linesize, outlink->format, outlink->w)) < 0) | 
														
													
														
															
																|  |  | return ret; |  |  | return ret; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | if ((ret = ff_framesync_init(&s->fs, ctx, 3)) < 0) |  |  |  | 
														
													
														
															
																|  |  |  |  |  | if ((ret = ff_framesync2_init(&s->fs, ctx, 3)) < 0) | 
														
													
														
															
																|  |  | return ret; |  |  | return ret; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | in = s->fs.in; |  |  | in = s->fs.in; | 
														
													
												
													
														
															
																|  | @@ -251,44 +251,35 @@ static int config_output(AVFilterLink *outlink) | 
														
													
														
															
																|  |  | s->fs.opaque   = s; |  |  | s->fs.opaque   = s; | 
														
													
														
															
																|  |  | s->fs.on_event = process_frame; |  |  | s->fs.on_event = process_frame; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | return ff_framesync_configure(&s->fs); |  |  |  | 
														
													
														
															
																|  |  |  |  |  | return ff_framesync2_configure(&s->fs); | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | static int filter_frame(AVFilterLink *inlink, AVFrame *buf) |  |  |  | 
														
													
														
															
																|  |  |  |  |  | static int activate(AVFilterContext *ctx) | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | MaskedMergeContext *s = inlink->dst->priv; |  |  |  | 
														
													
														
															
																|  |  | return ff_framesync_filter_frame(&s->fs, inlink, buf); |  |  |  | 
														
													
														
															
																|  |  | } |  |  |  | 
														
													
														
															
																|  |  | 
 |  |  |  | 
														
													
														
															
																|  |  | static int request_frame(AVFilterLink *outlink) |  |  |  | 
														
													
														
															
																|  |  | { |  |  |  | 
														
													
														
															
																|  |  | MaskedMergeContext *s = outlink->src->priv; |  |  |  | 
														
													
														
															
																|  |  | return ff_framesync_request_frame(&s->fs, outlink); |  |  |  | 
														
													
														
															
																|  |  |  |  |  | MaskedMergeContext *s = ctx->priv; | 
														
													
														
															
																|  |  |  |  |  | return ff_framesync2_activate(&s->fs); | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | static av_cold void uninit(AVFilterContext *ctx) |  |  | static av_cold void uninit(AVFilterContext *ctx) | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | MaskedMergeContext *s = ctx->priv; |  |  | MaskedMergeContext *s = ctx->priv; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | ff_framesync_uninit(&s->fs); |  |  |  | 
														
													
														
															
																|  |  |  |  |  | ff_framesync2_uninit(&s->fs); | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | static const AVFilterPad maskedmerge_inputs[] = { |  |  | static const AVFilterPad maskedmerge_inputs[] = { | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | .name         = "base", |  |  | .name         = "base", | 
														
													
														
															
																|  |  | .type         = AVMEDIA_TYPE_VIDEO, |  |  | .type         = AVMEDIA_TYPE_VIDEO, | 
														
													
														
															
																|  |  | .filter_frame = filter_frame, |  |  |  | 
														
													
														
															
																|  |  | .config_props = config_input, |  |  | .config_props = config_input, | 
														
													
														
															
																|  |  | }, |  |  | }, | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | .name         = "overlay", |  |  | .name         = "overlay", | 
														
													
														
															
																|  |  | .type         = AVMEDIA_TYPE_VIDEO, |  |  | .type         = AVMEDIA_TYPE_VIDEO, | 
														
													
														
															
																|  |  | .filter_frame = filter_frame, |  |  |  | 
														
													
														
															
																|  |  | }, |  |  | }, | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | .name         = "mask", |  |  | .name         = "mask", | 
														
													
														
															
																|  |  | .type         = AVMEDIA_TYPE_VIDEO, |  |  | .type         = AVMEDIA_TYPE_VIDEO, | 
														
													
														
															
																|  |  | .filter_frame = filter_frame, |  |  |  | 
														
													
														
															
																|  |  | }, |  |  | }, | 
														
													
														
															
																|  |  | { NULL } |  |  | { NULL } | 
														
													
														
															
																|  |  | }; |  |  | }; | 
														
													
												
													
														
															
																|  | @@ -298,7 +289,6 @@ static const AVFilterPad maskedmerge_outputs[] = { | 
														
													
														
															
																|  |  | .name          = "default", |  |  | .name          = "default", | 
														
													
														
															
																|  |  | .type          = AVMEDIA_TYPE_VIDEO, |  |  | .type          = AVMEDIA_TYPE_VIDEO, | 
														
													
														
															
																|  |  | .config_props  = config_output, |  |  | .config_props  = config_output, | 
														
													
														
															
																|  |  | .request_frame = request_frame, |  |  |  | 
														
													
														
															
																|  |  | }, |  |  | }, | 
														
													
														
															
																|  |  | { NULL } |  |  | { NULL } | 
														
													
														
															
																|  |  | }; |  |  | }; | 
														
													
												
													
														
															
																|  | @@ -309,6 +299,7 @@ AVFilter ff_vf_maskedmerge = { | 
														
													
														
															
																|  |  | .priv_size     = sizeof(MaskedMergeContext), |  |  | .priv_size     = sizeof(MaskedMergeContext), | 
														
													
														
															
																|  |  | .uninit        = uninit, |  |  | .uninit        = uninit, | 
														
													
														
															
																|  |  | .query_formats = query_formats, |  |  | .query_formats = query_formats, | 
														
													
														
															
																|  |  |  |  |  | .activate      = activate, | 
														
													
														
															
																|  |  | .inputs        = maskedmerge_inputs, |  |  | .inputs        = maskedmerge_inputs, | 
														
													
														
															
																|  |  | .outputs       = maskedmerge_outputs, |  |  | .outputs       = maskedmerge_outputs, | 
														
													
														
															
																|  |  | .priv_class    = &maskedmerge_class, |  |  | .priv_class    = &maskedmerge_class, | 
														
													
												
													
														
															
																|  | 
 |