From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 9084F44204 for ; Fri, 5 May 2023 08:31:59 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9683768BE25; Fri, 5 May 2023 11:31:56 +0300 (EEST) Received: from out162-62-58-216.mail.qq.com (out162-62-58-216.mail.qq.com [162.62.58.216]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E014C68B5DA for ; Fri, 5 May 2023 11:31:49 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1683275505; bh=FSkq9nBqufiWkf6kj9Nb2xiZpOdqiVpc/P0AvGQa5bg=; h=From:To:Cc:Subject:Date; b=oWW4aR5eWz4OW/I+VkkB8V14wSslH3TphIH04Qtojj8cJq4F8sbbnkIieHknBRaHM MGi+RI3w23w3owg5MXrKTgpS5EPgQC+7Ju4aSNdQFeOJNzeG7kusdlxp4Y2+qt5gKG FfHRCr7yUcEGlD+b8GJOvsrp80RBsL+t2cIiGWos= Received: from localhost.localdomain ([113.65.129.59]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 7EC044A5; Fri, 05 May 2023 16:31:44 +0800 X-QQ-mid: xmsmtpt1683275504tkbk4anom Message-ID: X-QQ-XMAILINFO: M7r/zttrUmlkRwFuL1WsO/5zfKp6kwzRLh3RTUILYLLUMiAoD+vwDtLbnZ5CLq Zflnua4t7HduQJut27OewQdscRmIOACvCdllFQvBBFqThGuqx6JMM5lTnc9S7LPixTlNtPKMsWLz 0WtSBEc0i/XWA1Ue3S1J9EVYAvbNXEO8unBVM3XiyOG0s5or2jCpcIl2CCnhIkf93k9k0cfwJsZX RYvgR44af7BgnuRcNgClh9R/sxiCJTVHzbT7rBU3g169VGEC4vdnR4fu7brYS+4UPeHytBvtzCcE mkba+PlqI8+1t34dOHD9vFMqlvRlJFBfWirqgE8RpSdP4YoroBBnTAyaB+N0pTn0dNR5xzx9hGPS XoubdUp1JenGGNsm29gx5Mk8scTDXT4+ApYX3XbLEoDTTcOkFaEbTKRd1aviffWQOhLCbBCv5FmH zSfZXU86e1Rt+GY7CV6hw/1WwDy5iuxuBHeao/OB01E1ylwSKDlbrbas0USqx/T8jk9kv31Kli9l 7ZzfoU/yEhkP+nL9Kd+oNBtd70wPlamRLGD0VUJc5S2TI1TL/uWT349Z5uSTOhv3BaYsDXZWTYPj fkIKf7f8K38JbpdRXKRzt2Oc1DtwLnqSKYkOhmp8Yz9n/i32uzXCnCOVZ58KSdC3XtcqL/SPfPfs RPdY524ic56xpjzZZt1I1ptUwyPP4HbDutKd/z+A4ci6MxS/wHO5OeEmUUTIihcLK9kvSPE0jGIt 8ZKjCNMBNs/lyyDq4L4eFXUiDLCtGHyEuslvrKn8E7YwDeSE40riEPnX5OprZuYHNys31nEllL8z XdLnAltdmfqNXEUVjvkyv8mHAdG+u78uJccLJujWuKaTeOCzIWO4u4AJcbzH1/J0FqtwD5wNR6+K jNCyuWVs85Eojn5aBwR1yS7pJzhGizWKj9pGX2Jni+g4bVMNRFE+rPVdwINT85yJvglgc7P9AL4i YvWssL4uwK2C3GHF1PbNiGF0/11BWBEKOH8fYWAnMbQsyYBm+i6g== From: xufuji456 <839789740@qq.com> To: ffmpeg-devel@ffmpeg.org Date: Fri, 5 May 2023 16:31:41 +0800 X-OQ-MSGID: <20230505083141.91561-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 copying 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> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: It makes sense when copying 4K/8K video frame, got 2.7% speed up. When the condition is no padding and src_linesize equals to dst, we could copy plane instead of line by line. before after rate 4K video: 9145 8998 1.6% 9804 9465 3.4% 9645 9394 2.6% 8K video: 28411 27718 2.4% 31288 30056 3.9% 32336 31571 2.4% Signed-off-by: xufuji456 <839789740@qq.com> --- libavutil/imgutils.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/libavutil/imgutils.c b/libavutil/imgutils.c index 9ab5757cf6..f5898756ba 100644 --- a/libavutil/imgutils.c +++ b/libavutil/imgutils.c @@ -525,10 +525,18 @@ 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]; + // When src's linesize equals to dst, we could copy plane directly + if (src_linesize[i] == linesize[i] && FFALIGN(linesize[i], align) == linesize[i]) { + int len = linesize[i] * h; + memcpy(dst, src, len); + dst += len; + src += len; + } else { + for (j = 0; j < h; j++) { + memcpy(dst, src, linesize[i]); + dst += FFALIGN(linesize[i], align); + src += src_linesize[i]; + } } } -- 2.32.0 (Apple Git-132) _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".