From patchwork Tue Mar 1 14:23:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 34567 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:d078:0:0:0:0 with SMTP id x24csp3719371nkx; Tue, 1 Mar 2022 06:23:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJzpVBrzOaALceMvzPggtbm9Cl412ARaZemm7HsHJOfsqE4oxbSY7LebpUKvpN3ZF2uM8/l1 X-Received: by 2002:a17:907:3f95:b0:6d3:feb2:ef88 with SMTP id hr21-20020a1709073f9500b006d3feb2ef88mr19105784ejc.480.1646144637142; Tue, 01 Mar 2022 06:23:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646144637; cv=none; d=google.com; s=arc-20160816; b=xDEho0+sW587pEgj9b0cuVxdB4uoaB27RlHNGH0dO+duOs8wViYfAwXImv5IRvYV12 SvqJk8E1NcSjvmgArGwjHdNmH5P6Uv+5jLJJ9ihXnBHRBUKi02Jhv1riLmStNkngV70n p9Pw4WjW7ALtVApmqll18Kg7RoxhOkXAxapYGBEXkYsRpOSCxw1UhPefaQvUwy81WJqO Bg78CcZMpY72XOllVNLSC1i48NiT6ATVh3dcTFtwZYl/GdTbwj37Jz4yhRlufkzz+BHK ok29GWzUHkMCFOGwMvD3yJH6YrfkV1z4vfDU9rbinI3pjKjwLTWfnOty8qyNeEWhWMd9 /1zA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=GV/p7ElILX8pZ9o+1oTqtRfqK0ZqNyhADsiIsxMOBns=; b=uAMx7cMuXTnGcDTbIW8RnPkXHjZTt847iFWcMN4wfPPFRj5TQPdVOSJqJtQIcRAJNK J3vN/K12NfLsb7QkZpMiUxW8gpSo9RocWb7E4TSMP+2jIxT2oW/hNFVNYANaH6UkvyhO 0ecoI7IfpJ8jA2HnqcZMOmFvK3QkFp4dIE8V3ASsgmzw3CJXhEguia3/vT55TtvjMZrf a0pPQCHaglt/weqPux+1RJOVTwOwITg6AdAB0L9BfLaZ3Tneee3/PDfM0/CUL5mk/Iy8 lIB4saAB7Nu/oC4xQ7pxazTQKRf29jyqguAU3vKdTuZAKIX69tzGelY35HTXdJAmqBML G9jg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=bxHneRk5; 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 a9-20020a509b49000000b004109214dd68si8627006edj.257.2022.03.01.06.23.56; Tue, 01 Mar 2022 06:23:57 -0800 (PST) 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=bxHneRk5; 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 E42CC68B22F; Tue, 1 Mar 2022 16:23:52 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f175.google.com (mail-oi1-f175.google.com [209.85.167.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 36FD268B19C for ; Tue, 1 Mar 2022 16:23:46 +0200 (EET) Received: by mail-oi1-f175.google.com with SMTP id ay7so16333107oib.8 for ; Tue, 01 Mar 2022 06:23:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=dSg7ogfWS1QfRvUyCab2w7L5HmAK36fEiqTCAM91Bgk=; b=bxHneRk5OJkP6DaRmKpScdatjJkI24xxPG0TLGH0u/qiutd9Dv47d7FBpMzviA7m9Q /DULgxbaa2A/z933b/bX6UyJWsKyqL0X3h9MKiZ32BqEpGCPbTxWtiph9s78ValMq/pI QuVoQKR5i4IMwCFrOBPDs+wyzzOliSnZ9Hks09vqKstltH6woxIfTOoajgizNut/+fKn auzM11TATwa05nUKbKOfz48PfgYmqxQcWc4p2HGrugYaRj2uOrKPYOdXLNm621SJ9M5X an/BCIU2w632KRjLu1IiI0cZGSCDDFsSJ+ZtK11peBSU36677FRWAkX/g7QEQT1zUrqA 4Lsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=dSg7ogfWS1QfRvUyCab2w7L5HmAK36fEiqTCAM91Bgk=; b=MlRNW/aoN7iTs+nGOqWUCeXn97d/tZVVcys3KlVazD3tAf4YYnhIHkkK5kRT6e+SJ9 lJIg9Xluy7AT4DUKcBu92TFLw4z9eubb0SG8Z1FQCH2KFPJOTouCFgvsLBGeUtXdE14Y M8o9yQ7OQma1uR/9AeGGgv3HXqMUGnxzGJPdhBydYo88Z8N/fhhK00KtTxsQji37Eu7z mVQ1kbrSUx7kUvCfo6ODSxVQiXmSHZUbSYG+7/9bbJRba0gdHRISbQyIVu2rylS79Plm XYH0XIDN3A3pGqU7hP6Mf8JTN8Tgt78+A7+q/b0FdVRSvxx77b2jXoK1/GO8eWeW+dls udvg== X-Gm-Message-State: AOAM531c29IEsCT2/lLnxJ7uQXiX/+m0/9WzK3KkbtxBEJVW2xMPHXJY fzK583VpWNTNq2GG3sNd0IOGn4AkBkjDSA== X-Received: by 2002:a05:6808:2020:b0:2d4:df44:17cb with SMTP id q32-20020a056808202000b002d4df4417cbmr12968496oiw.69.1646144623661; Tue, 01 Mar 2022 06:23:43 -0800 (PST) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id q12-20020a05683033cc00b005a0962673c5sm6580637ott.43.2022.03.01.06.23.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Mar 2022 06:23:42 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Mar 2022 11:23:10 -0300 Message-Id: <20220301142310.16367-1-jamrial@gmail.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avfilter/framepool: use av_image_fill_plane_sizes() to calculate pool sizes 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: g9qBNKYAl9/t Signed-off-by: James Almer --- libavfilter/framepool.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/libavfilter/framepool.c b/libavfilter/framepool.c index 5b510c9af9..cf6a1d0ea0 100644 --- a/libavfilter/framepool.c +++ b/libavfilter/framepool.c @@ -57,6 +57,8 @@ FFFramePool *ff_frame_pool_video_init(AVBufferRef* (*alloc)(size_t size), int i, ret; FFFramePool *pool; const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(format); + ptrdiff_t linesizes[4]; + size_t sizes[4]; if (!desc) return NULL; @@ -89,13 +91,19 @@ FFFramePool *ff_frame_pool_video_init(AVBufferRef* (*alloc)(size_t size), } } - for (i = 0; i < 4 && pool->linesize[i]; i++) { - int h = pool->height; - if (i == 1 || i == 2) - h = AV_CEIL_RSHIFT(h, desc->log2_chroma_h); + for (i = 0; i < 4; i++) + linesizes[i] = pool->linesize[i]; - pool->pools[i] = av_buffer_pool_init(pool->linesize[i] * h + align, - alloc); + if (av_image_fill_plane_sizes(sizes, pool->format, + FFALIGN(pool->height, align), + linesizes) < 0) { + goto fail; + } + + for (i = 0; i < 4 && sizes[i]; i++) { + if (sizes[i] > SIZE_MAX - align) + goto fail; + pool->pools[i] = av_buffer_pool_init(sizes[i] + align, alloc); if (!pool->pools[i]) goto fail; }