[FFmpeg-cvslog] avfilter/vf_delogo: add auto set the area inside of the frame
Steven Liu
git at videolan.org
Thu Oct 10 05:27:21 EEST 2019
ffmpeg | branch: master | Steven Liu <lq at chinaffmpeg.org> | Wed Sep 4 23:53:05 2019 +0800| [aea82dfe225ef195f558df0350b20175a82be901] | committer: Steven Liu
avfilter/vf_delogo: add auto set the area inside of the frame
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>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=aea82dfe225ef195f558df0350b20175a82be901
---
libavfilter/vf_delogo.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/libavfilter/vf_delogo.c b/libavfilter/vf_delogo.c
index 376c5e850f..9c58418e11 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);
More information about the ffmpeg-cvslog
mailing list