From patchwork Tue Dec 3 02:41:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: hwren X-Patchwork-Id: 16547 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 DF64744AF07 for ; Tue, 3 Dec 2019 04:41:45 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CC08668AFFE; Tue, 3 Dec 2019 04:41:45 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-m964.mail.126.com (mail-m964.mail.126.com [123.126.96.4]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E0FF768AF4C for ; Tue, 3 Dec 2019 04:41:35 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=pmnBqMfCYuUGpjGclN oBL6Hjhx8UfTP3I+rHrXsXTOI=; b=ZvxsY1fbNkJLEVQaz2pigIQBkHF+Juu0Ye PfKQIJ/3EWhBix8LckCOnDxI8+pFl7B0tLAAz6ofbnjM+lmqMvDOStrKFaqv5upi sO1zJjks8R0Xm0PmMYWxPC2C5GfV3PU0BERAg3W8q9akGigvVmuybRxqwMWqBYtp H+WLibLo4= Received: from localhost.localdomain (unknown [27.38.17.122]) by smtp9 (Coremail) with SMTP id NeRpCgB3CspYy+VdkJ8vAA--.302S4; Tue, 03 Dec 2019 10:41:30 +0800 (CST) From: hwren To: ffmpeg-devel@ffmpeg.org Date: Tue, 3 Dec 2019 10:41:23 +0800 Message-Id: <1575340886-29065-2-git-send-email-hwrenx@126.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1575340886-29065-1-git-send-email-hwrenx@126.com> References: <20191202125032.GA9290@sunshine.barsnick.net> <1575340886-29065-1-git-send-email-hwrenx@126.com> X-CM-TRANSID: NeRpCgB3CspYy+VdkJ8vAA--.302S4 X-Coremail-Antispam: 1Uf129KBjvJXoW7Ar47tw4UGF1UKF13ury8Xwb_yoW8Zw4fp3 WrCrsxtw15WF1SkrZ3Ar1Svr43WFZ5W3W8CrsrJr4vvFyYqFyUXFy7CFWxuayjgrsrG34j kFWkK3Z8GF1kAaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07j8AwxUUUUU= X-Originating-IP: [27.38.17.122] X-CM-SenderInfo: pkzuv0b06rjloofrz/1tbiJBqA6VpD+RMfpAAAsf Subject: [FFmpeg-devel] [PATCH v2 2/5] lavc/libxavs2.c: avoid recomputations of pointers in xavs2_copy_frame* functions 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: hwren --- libavcodec/libxavs2.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/libavcodec/libxavs2.c b/libavcodec/libxavs2.c index 3896f3b..0e525ee 100644 --- a/libavcodec/libxavs2.c +++ b/libavcodec/libxavs2.c @@ -132,28 +132,42 @@ static av_cold int xavs2_init(AVCodecContext *avctx) static void xavs2_copy_frame_with_shift(xavs2_picture_t *pic, const AVFrame *frame, const int shift_in) { - int plane, hIdx, wIdx; + uint16_t *p_plane; + uint8_t *p_buffer; + int plane; + int hIdx; + int wIdx; + for (plane = 0; plane < 3; plane++) { - int i_stride = pic->img.i_stride[plane]; + p_plane = (uint16_t *)pic->img.img_planes[plane]; + p_buffer = frame->data[plane]; for (hIdx = 0; hIdx < pic->img.i_lines[plane]; hIdx++) { - uint16_t *p_plane = (uint16_t *)&pic->img.img_planes[plane][hIdx * i_stride]; - uint8_t *p_buffer = frame->data[plane] + frame->linesize[plane] * hIdx; - memset(p_plane, 0, i_stride); + memset(p_plane, 0, pic->img.i_stride[plane]); for (wIdx = 0; wIdx < pic->img.i_width[plane]; wIdx++) { p_plane[wIdx] = p_buffer[wIdx] << shift_in; } + p_plane += pic->img.i_stride[plane]; + p_buffer += frame->linesize[plane]; } } } static void xavs2_copy_frame(xavs2_picture_t *pic, const AVFrame *frame) { - int plane, hIdx; + uint8_t *p_plane; + uint8_t *p_buffer; + int plane; + int hIdx; + int stride; + for (plane = 0; plane < 3; plane++) { + p_plane = pic->img.img_planes[plane]; + p_buffer = frame->data[plane]; + stride = pic->img.i_width[plane] * pic->img.in_sample_size; for (hIdx = 0; hIdx < pic->img.i_lines[plane]; hIdx++) { - memcpy( pic->img.img_planes[plane] + pic->img.i_stride[plane] * hIdx, - frame->data[plane]+frame->linesize[plane] * hIdx, - pic->img.i_width[plane] * pic->img.in_sample_size); + memcpy(p_plane, p_buffer, stride); + p_plane += pic->img.i_stride[plane]; + p_buffer += frame->linesize[plane]; } } }