From patchwork Sun May 1 09:10:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 35529 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp1242123pzb; Sun, 1 May 2022 02:12:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzUkQ1r0TPv3HwQdOR80+YXX5sXzzKJZgYlyzEnNIQnl4VRkEXyxnQLlfntERka/hxVbpLy X-Received: by 2002:a17:907:608f:b0:6f3:671d:d2f9 with SMTP id ht15-20020a170907608f00b006f3671dd2f9mr6522996ejc.675.1651396341122; Sun, 01 May 2022 02:12:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651396341; cv=none; d=google.com; s=arc-20160816; b=Z094CA+FXHhqDyJ4YjOAT8UwXDT8xIXd5i10sLkFaoIv2VxUZSbHmokqQbMwbVhEiG RNefiyWQMem3mwk5PgvCq5IbkNP9EQj4PFd35h00Xe25IBnhUwK1GoM8dFs1zqz0xKJY /0CS/enDN14xgWfOLjplUtpH6sllPKBhOviriUjVFDld8W9jbeE4KuDsc1HmdH7r27cc 046T+PHWOH51hbQybcgRAL23h7m64XRfW4PthASUbfMeAOiX6/XOMOUSzZiXkqx15V65 bvihoA562RmBwjDHzBSaFY0jLi1HTAn9tLI4HUpoF1MXEtL5xX8cDXaYZinnwOz1DFIA J5SQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=BVX17iCzrFbVahzcJyAxrfMCk1+pEg0dZOU6aY5iSzY=; b=Uj0uUtS/VanxMRjQNzEkyTZsPN2GpqBkf1UjCNcixqxRTYtCMgXnQmLZKYKefxPs5J 2O+A1unSyBSqcmYJPnTRGmSZEkn2tDDKc9uT+dYwnHyKvruR8w7Zxquoj/z2lE8ODtBw AxK16sjbN1uZ/1KOpj81bHpq76jxnJ8s9StdphDMZ9r+S+CLtBfXWIapBiHVIwhKdeNv BYLZ3AwoeQOuZamrZnkDFQXaOPQH/8KotWTtUuZEGTrWva6o+e/+O/lXebUDjKXllJSz 56ls7vxsypp65cSqdgNucKtEsKdeY2E4+DkhVTbNi0NSJzO/3TzHwXhAOFzL/xg+XAFa 0wXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=VJrFmIU7; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o12-20020a50fd8c000000b00425e1e540b3si9181123edt.358.2022.05.01.02.12.20; Sun, 01 May 2022 02:12:21 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=VJrFmIU7; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7B54568A841; Sun, 1 May 2022 12:12:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4393568A841 for ; Sun, 1 May 2022 12:12:09 +0300 (EEST) Received: by mail-pl1-f181.google.com with SMTP id i1so4302690plg.7 for ; Sun, 01 May 2022 02:12:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=cPfrQGDTwzGU2A/22Tqfwg3JESWOHmCKn9xVCuAP/tQ=; b=VJrFmIU7UBTq7kVsrzGYVTwqZCF79VJg72TuX6ddr/rYQKF+iKBM9XzmGUqjwK4kd0 vEwDa4uBLtzaz38PHHwXa8znMmZ8wU5GFQ/AFHf/sYAfLWLcfB2jsbx8LhZcH+08tgJh 7AsBzGJh++Nob78oxMOhvl4mZAvBjhJO6elEZE8B1EVa+3xg8cpNXAEsqnya8WO3N88l xZXEXpmz1+GYn4/oJNrsFTg+c2+K80cDXZ2sQU4DjgoXoGyCbG+TEdI7lai5PU+ut0St pXOtFpA1NnnlFvwS74ghCHfa5s1hVP4WqlkVCZivNnfJyzS8HePPkuAFjwMfjb7N5PWi s1Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=cPfrQGDTwzGU2A/22Tqfwg3JESWOHmCKn9xVCuAP/tQ=; b=wwgeWucoDF51dEThnwKBtiV0ZLdXAP3UjaLa4EcgPobqOTSyLBF9S4mmEaT7azdUTq LWpKOKXEZ/izsdm5+wp0Kc9crLg9WKmCa/NDDS224MurKkHjg9V3wRVXmVrERkDwxoVg PcnmDa32O3Ou/kDpVbG9hLJar+LQ231b6ViKuG8EfjZBBga5jK+yOpkRIH2dvrOcNQI6 G3fwuB33AJtsgzXOKhp8eLe5h5PdpdXj4OvbOwgUq/UUUQwTY+07axfQ9WWKMpbjDFvf KsksFNo+QEbhFp94S+PxqbAw+2+Tjz/sT9kkU3IcsQF6xQQ+pnmHWGk3rv2qwohq32XD mC2g== X-Gm-Message-State: AOAM5317RqYB//YfepCnfIsjD5Ll/I3DgRJ7I7KaymdhFoitBV4EKl/Q PZdSvhNZbBUbOytZLqvTLVPQWpwQN76Y2w== X-Received: by 2002:a17:902:7d93:b0:14d:d401:f59b with SMTP id a19-20020a1709027d9300b0014dd401f59bmr7144804plm.14.1651396327319; Sun, 01 May 2022 02:12:07 -0700 (PDT) Received: from localhost.localdomain ([223.167.244.38]) by smtp.gmail.com with ESMTPSA id l22-20020a17090a071600b001d9781de67fsm13349029pjl.31.2022.05.01.02.12.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 May 2022 02:12:07 -0700 (PDT) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Sun, 1 May 2022 17:10:35 +0800 Message-Id: <20220501091035.68362-1-linjie.justin.fu@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavfilter/vf_pad: Try round up w/h for odd resolution to avoid failure X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: q8UsrS5zetBU Try round_up output w/h for the clips with odd resolution to avoid failure if no padding is required(e.g. iw/ih+0+0). $ffmpeg -i input.mp4 -vf "scale=1241x1234,pad=iw+0+0:ih+3+3:0:3" -f null - Before: Round down to 1240x1234 and failed since s->w < inlink->w (e.g. 1240 < 1241) [Parsed_pad_1 @ 0x7f849090f840] Padded dimensions cannot be smaller than input dimensions. [Parsed_pad_1 @ 0x7f849090f840] Failed to configure input pad on Parsed_pad_1 Error reinitializing filters! Failed to inject frame into filter network: Invalid argument Error while processing the decoded data for stream #0:0 Conversion failed! After: Try to Round up for odd resolution (1241x1234 -> 1242x1240) Stream #0:0(und): Video: wrapped_avframe, yuv420p(tv, progressive), 1242x1240 Signed-off-by: Linjie Fu --- libavfilter/vf_pad.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavfilter/vf_pad.c b/libavfilter/vf_pad.c index e52f7284d4..c9a0a75630 100644 --- a/libavfilter/vf_pad.c +++ b/libavfilter/vf_pad.c @@ -107,6 +107,7 @@ static int config_input(AVFilterLink *inlink) AVFilterContext *ctx = inlink->dst; PadContext *s = ctx->priv; AVRational adjusted_aspect = s->aspect; + int round_w, round_h; int ret; double var_values[VARS_NB], res; char *expr; @@ -178,9 +179,13 @@ static int config_input(AVFilterLink *inlink) if (s->y < 0 || s->y + inlink->h > s->h) s->y = var_values[VAR_Y] = (s->h - inlink->h) / 2; - s->w = ff_draw_round_to_sub(&s->draw, 0, -1, s->w); - s->h = ff_draw_round_to_sub(&s->draw, 1, -1, s->h); - /* sanity check params */ + round_w = ff_draw_round_to_sub(&s->draw, 0, -1, s->w); + round_h = ff_draw_round_to_sub(&s->draw, 1, -1, s->h); + + s->w = round_w < inlink->w ? ff_draw_round_to_sub(&s->draw, 0, 1, s->w) : round_w; + s->h = round_h < inlink->h ? ff_draw_round_to_sub(&s->draw, 0, 1, s->h) : round_h; + + /* sanity check params */ if (s->w < inlink->w || s->h < inlink->h) { av_log(ctx, AV_LOG_ERROR, "Padded dimensions cannot be smaller than input dimensions.\n"); return AVERROR(EINVAL);