[FFmpeg-devel] [PATCH v3] avfilter/vf_delogo: add auto set the area inside of the frame
Steven Liu
lq at chinaffmpeg.org
Wed Sep 4 18:53:05 EEST 2019
when the area outside of the frame, then use expr should
give user warning message and auto set to the area inside of the frame.
Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
---
libavfilter/vf_delogo.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/libavfilter/vf_delogo.c b/libavfilter/vf_delogo.c
index 814575a36c..e217b5d3a5 100644
--- a/libavfilter/vf_delogo.c
+++ b/libavfilter/vf_delogo.c
@@ -327,6 +327,21 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
s->w = av_expr_eval(s->w_pexpr, s->var_values, s);
s->h = av_expr_eval(s->h_pexpr, s->var_values, s);
+ if (s->x + (s->band - 1) <= 0 || s->x + s->w - (s->band*2 - 2) > inlink->w ||
+ s->y + (s->band - 1) <= 0 || s->y + s->h - (s->band*2 - 2) > inlink->h) {
+ av_log(s, AV_LOG_WARNING, "Logo area is outside of the frame,"
+ " auto set the area inside of the frame\n");
+ }
+
+ if (s->x + (s->band - 1) <= 0)
+ s->x = 1 + s->band;
+ if (s->y + (s->band - 1) <= 0)
+ s->y = 1 + s->band;
+ if (s->x + s->w - (s->band*2 - 2) > inlink->w)
+ s->w = inlink->w - s->x - (s->band*2 - 2);
+ if (s->y + s->h - (s->band*2 - 2) > inlink->h)
+ s->h = inlink->h - s->y - (s->band*2 - 2);
+
ret = config_input(inlink);
if (ret < 0) {
av_frame_free(&in);
--
2.15.1
More information about the ffmpeg-devel
mailing list