From patchwork Wed Sep 4 15:53:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liu Steven X-Patchwork-Id: 14900 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id A1C87449BE6 for ; Wed, 4 Sep 2019 18:53:34 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 785CF687FB3; Wed, 4 Sep 2019 18:53:34 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8D6AC687FB3 for ; Wed, 4 Sep 2019 18:53:27 +0300 (EEST) X-QQ-mid: bizesmtp20t1567612391tnpdsw4f Received: from localhost (unknown [47.90.47.25]) by esmtp6.qq.com (ESMTP) with id ; Wed, 04 Sep 2019 23:53:11 +0800 (CST) X-QQ-SSF: 01100000008000K0ZQF1B00A0000000 X-QQ-FEAT: 4I5p1PuRj8a0AkB9iycEHmzgVuW/2G3Q7vIzeCexcMFcWcbRXAUEF3bmZCHlG Gt3A/qTv3XCQ1Rnpm/a8pwVU3ZE5EVnhUI4KOK0g5xOzTGTvn0e1ROLcORKb9FS2VMzLETb jqNPBVVVNCObt4glSsh8f0KDBxlqHbPmEbQu/KELyRYdV5sEpWujSi0UuW6jXEioQmfpH/r xVzg+hypSdHE6OkSVDV76nWTDP/MSA0DQSjqSkk16yT8ijUtpAhuSVyN+qwvKu18erVfnoi I6YzKfDqZXjjPw55pnZplqLU95/oZYgZiKwVjk6UMGmFwbw5KalpKPFR1Z2K+CYi23RA== X-QQ-GoodBg: 0 From: Steven Liu To: ffmpeg-devel@ffmpeg.org Date: Wed, 4 Sep 2019 23:53:05 +0800 Message-Id: <20190904155305.13537-1-lq@chinaffmpeg.org> X-Mailer: git-send-email 2.10.1.382.ga23ca1b.dirty In-Reply-To: <20190903115426.98164-1-lq@chinaffmpeg.org> References: <20190903115426.98164-1-lq@chinaffmpeg.org> X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:chinaffmpeg.org:qybgforeign:qybgforeign1 X-QQ-Bgrelay: 1 Subject: [FFmpeg-devel] [PATCH v3] avfilter/vf_delogo: add auto set the area inside of the frame X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Steven Liu MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 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 --- 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);