From patchwork Thu May 4 07:54:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?5b6Q56aP6ZqG?= <839789740@qq.com> X-Patchwork-Id: 41460 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:dca6:b0:f3:34fa:f187 with SMTP id ky38csp179094pzb; Thu, 4 May 2023 01:01:00 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4ELBFJ7BWn0nyQmcRpbd/g3f+2qtYfA/1XJi9SFZrx2fTFwcJGI2ThtX80/BePwIYQIU3G X-Received: by 2002:a17:906:4fc8:b0:94d:8b66:46cb with SMTP id i8-20020a1709064fc800b0094d8b6646cbmr5742504ejw.3.1683187260485; Thu, 04 May 2023 01:01:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683187260; cv=none; d=google.com; s=arc-20160816; b=CqMtEkokr1hQodZSPGdYwkucL9sPhZHtg8xoTGpMuJ6JW7DFafu6s7kuouMLy4sros pcZD69Fc6uhyA5QIv4LTbqxyHzq/26uBYS7Qi/+waAUXnKw25XXisIZT/mu/wC7ljIpF 1aKiTpY2vAIWYXOJY4uvbIyuD8u+wL1OAtdqtf/XF5VGS1ad3+WX8BJaECH3Fkw2RDuF HBvAgjdm7EmsJvKH5777ynl3AtCoCf4hFK9QFSYqO9b52PChYGbYlQecoRGfG9/V5Xox fQ8RSoMaW+Ot6NnaCQSf0MNHpZPJm/nTFQbbNryKOYW3yG7upKeMR+6q3BBWPQfijnAZ DcpA== 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:date:to:from:message-id :dkim-signature:delivered-to; bh=1vPg3TYP1+WNKK7lkfIV/553NLO3muXbQ39DZZEB40Q=; b=fFBtzEYwbA0iWwYS9OQgWbaWikMedS/utVGDLZINCuydzHvFl7z9waFBbgQH1t+CEC +z4/KveZxvTZSBxGjCzJ1i6gEAlMjcPLV0idLi1cELPx9YTMxlMxyig1EhKtnoH3Dc8Y C4LJ8qxtDIAVVLywYkv+nQ4nH5K7YC43025noj19DGKo/g6xFnAnhoZkQT05j/jK+0Uc +TH+gp37kag3kMyTxyedh4tcmrMq9NPzEw9JWRUS1JE2Pz3e+Z48w6SjuiVtP155QAfx cuhaI3xBVOwYYKlFJ5cbNfHAmb6QmvT5TgX9s5ZAtOMtNPJZn5L+ZMonpN3luFFKCHLO THtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@qq.com header.s=s201512 header.b=gBfQJedL; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=qq.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id dt23-20020a170906b79700b0094f23c636cesi22614223ejb.233.2023.05.04.01.00.59; Thu, 04 May 2023 01:01:00 -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=@qq.com header.s=s201512 header.b=gBfQJedL; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=qq.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 89490689C13; Thu, 4 May 2023 11:00:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-60.mail.qq.com (out203-205-251-60.mail.qq.com [203.205.251.60]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B7BF9689C13 for ; Thu, 4 May 2023 11:00:46 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1683187241; bh=m3brc3RjSUA6P6TGW4e7UBhBEUwZMKhG8A7gRtHgHYI=; h=From:To:Cc:Subject:Date; b=gBfQJedLkObkYYKMHO7P8f19MpFpGcN4LGv4oHr7fcQes1Beh5mMNbtDH4GBPURwF DJjj4OohCdjvi02QxGvNVKwQJ7aA3XIssmeMsWOFyrQrTEUhuCCXTFNZvp7CUueaVv Jel6y+0ehBsFvZCvSeT5ikGJaGMH5WjKG7Xy/Trc= Received: from localhost.localdomain ([59.41.118.37]) by newxmesmtplogicsvrszc5-0.qq.com (NewEsmtp) with SMTP id 278AA9A; Thu, 04 May 2023 16:00:39 +0800 X-QQ-mid: xmsmtpt1683187239t1rm7xjkd Message-ID: X-QQ-XMAILINFO: MyIXMys/8kCtwIJlyWGglhh+vdDCNjzJymynbncg3HaaEocvbjMap9L/vbjeIr /XuUHN9rkmwI6zX6orfyjTpTOoI4MKyWvh9/DkhogXv0VryH3yPYcdKdyKjLzqzurxHev4eYNIdi GA+HcQy4naJ5AesxrOx7YF9YaWzvafAQU7pmS1JisGbb5/pBwvJB7s5cly66JmmC8eGHHEjMhkGG BeY0vBghSJ9ksGb+tpFxF+3UUS0llw7vNX/vo2PSH4YoCRWoeZj8bHr09Ff/sDNaULFDvgWOIF2t B0uE2EaTmXbFluzPnSlLzO1D9voHa1NR/Vzs1Zxi8GyXqToIMsuCaRU1FF84vz7nFBBWJpw6UbY4 AaNe/5gYILNbL1AxBIi08OEBsMuEUKumRpjg/drycGHChe25RZZZ5rS3WJboBIYTAGDX2v/jrWCe N9Ykxrr/qTs3iepi6rdGvi6V2R8KJ0PYdFCQpv++pc2VxkpfN50xw75h4Q8YOc38/UXPNAhvd+e2 YIjYk/cHMgvtJsv4Mm+1KhZm6GO+D1Fv4zMtF002nMUoCL0ZAyZY6f93NTITi2F9Ch5kKwTlmmtr fdctrIxkPiD5zWXP29NDGfh7mLR+i0ccD15T8BUvqCkmAcH110/kEXd+gCEOIyxEPK/g+P1uaPQ3 fhiE/x68fFck8bhpihHsiFUGczq6Eib61iybFQ98kGbBCfjJAQc6DxhktkEKd0wSirBKqMl9Olbv 3a7n6yTdr0/lNp03eLp7I/V2aSfPQeceNM1kaSZ0jXzlp3LZMs+88UExDgTXGRQsgX+cyWH4SydG UjctX8qBXrE4qa2b12Tg5v8GuLxICsRHZuwGHyabAb3DTly9u164OUn5DLnNs2XOorK+tLknCC9M VARw+OaUIU9PPAcCYrCiBSguloakQdUgQ47803GbZLxX9+yEHAZLrataJQGJMukeoLk+9TTIcbGf ANJ0/9q1+xMO3vUv95N0qukqE+mxs8vRbbR/8frFQ= From: xufuji456 <839789740@qq.com> To: ffmpeg-devel@ffmpeg.org Date: Thu, 4 May 2023 15:54:35 +0800 X-OQ-MSGID: <20230504075435.12637-1-839789740@qq.com> X-Mailer: git-send-email 2.32.0 (Apple Git-132) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avutil/imgutils: optimize image copy efficiency 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: xufuji456 <839789740@qq.com> Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: KU1fQ7s0LY08 It makes sense when copying 4K/8K video, if linesize equals to aligned linesize. Signed-off-by: xufuji456 <839789740@qq.com> --- libavutil/imgutils.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/libavutil/imgutils.c b/libavutil/imgutils.c index 9ab5757cf6..1d432e7a57 100644 --- a/libavutil/imgutils.c +++ b/libavutil/imgutils.c @@ -525,10 +525,17 @@ int av_image_copy_to_buffer(uint8_t *dst, int dst_size, const uint8_t *src = src_data[i]; h = (height + (1 << shift) - 1) >> shift; - for (j = 0; j < h; j++) { - memcpy(dst, src, linesize[i]); - dst += FFALIGN(linesize[i], align); - src += src_linesize[i]; + if (FFALIGN(linesize[i], align) == linesize[i] && src_linesize[i] == linesize[i]) { + int size = linesize[i] * h; + memcpy(dst, src, size); + dst += size; + src += size; + } else { + for (j = 0; j < h; j++) { + memcpy(dst, src, linesize[i]); + dst += FFALIGN(linesize[i], align); + src += src_linesize[i]; + } } }