}
}
-static void start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
+static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
{
AVFilterLink *outlink = inlink->dst->outputs[0];
AVFilterBufferRef *outpicref;
- if (inpicref->perms & AV_PERM_PRESERVE) {
- outpicref = ff_get_video_buffer(outlink, AV_PERM_WRITE,
- outlink->w, outlink->h);
- avfilter_copy_buffer_ref_props(outpicref, inpicref);
- outpicref->video->w = outlink->w;
- outpicref->video->h = outlink->h;
- } else
- outpicref = inpicref;
+ outpicref = inpicref;
outlink->out_buf = outpicref;
- ff_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0));
+ return ff_start_frame(outlink, avfilter_ref_buffer(outpicref, ~0));
}
-static void end_frame(AVFilterLink *inlink)
+static int end_frame(AVFilterLink *inlink)
{
RemovelogoContext *removelogo = inlink->dst->priv;
AVFilterLink *outlink = inlink->dst->outputs[0];
inlink->w/2, inlink->h/2, direct, &removelogo->half_mask_bbox);
ff_draw_slice(outlink, 0, inlink->h, 1);
- ff_end_frame(outlink);
+ return ff_end_frame(outlink);
}
static void uninit(AVFilterContext *ctx)
}
}
-static void null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { }
+static int null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { return 0; }
AVFilter avfilter_vf_removelogo = {
.name = "removelogo",
.draw_slice = null_draw_slice,
.start_frame = start_frame,
.end_frame = end_frame,
- .min_perms = AV_PERM_WRITE | AV_PERM_READ,
- .rej_perms = AV_PERM_PRESERVE },
+ .min_perms = AV_PERM_WRITE | AV_PERM_READ },
{ .name = NULL }
},
.outputs = (const AVFilterPad[]) {