From patchwork Wed Jul 3 03:23:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: hwren X-Patchwork-Id: 13803 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 76A7C449A0C for ; Wed, 3 Jul 2019 06:24:06 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 47D3A68A9A0; Wed, 3 Jul 2019 06:24:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-m965.mail.126.com (mail-m965.mail.126.com [123.126.96.5]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1722E68A9A0 for ; Wed, 3 Jul 2019 06:23:58 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=wpPVPArC+zsd2fmizc h4YnAINnbLQ+nMMBkU6jT5QhU=; b=Kl1z7TXb45NcyetZwpgHuNy2/xVAB1X72V QCONIHSI0hy8lPhBbKTxsygb1Q9nm4Z8PXQzF5y/U6hx4LvQ3mDfc2FFU7P2aFsv 0wpDv1dqTIE9PmYrfMzTm1nRrA6Wkyo2QQEK6FqKN6U/iw94BgGohriFJoOFHgXW cnunSPico= Received: from localhost.localdomain (unknown [210.22.22.132]) by smtp10 (Coremail) with SMTP id NuRpCgDn0EXJHxxdC5yQEA--.23220S3; Wed, 03 Jul 2019 11:23:55 +0800 (CST) From: hwrenx To: ffmpeg-devel@ffmpeg.org Date: Wed, 3 Jul 2019 11:23:51 +0800 Message-Id: <1562124231-18586-1-git-send-email-hwrenx@126.com> X-Mailer: git-send-email 2.7.4 X-CM-TRANSID: NuRpCgDn0EXJHxxdC5yQEA--.23220S3 X-Coremail-Antispam: 1Uf129KBjvJXoW7Kw13WF4rtrWfurykuF1xKrg_yoW8WF4Up3 WfX398t3WUJrs7A34kArsYvF43WrZ5WFyxCrs8Jry093WYgFyqqryIyry7Wa12q3yku34a ka1kKFn8Zw1kKF7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07UCoGLUUUUU= X-Originating-IP: [210.22.22.132] X-CM-SenderInfo: pkzuv0b06rjloofrz/1tbiYAXm6VpD8ml29wABso Subject: [FFmpeg-devel] [PATCH v1] lavc/libdavs2.c: optimize frame copy 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: hwrenx --- libavcodec/libdavs2.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libavcodec/libdavs2.c b/libavcodec/libdavs2.c index 218f3ec..15ed3a1 100644 --- a/libavcodec/libdavs2.c +++ b/libavcodec/libdavs2.c @@ -62,7 +62,7 @@ static int davs2_dump_frames(AVCodecContext *avctx, davs2_picture_t *pic, int *g davs2_seq_info_t *headerset, int ret_type, AVFrame *frame) { DAVS2Context *cad = avctx->priv_data; - int bytes_per_sample = pic->bytes_per_sample; + int bytes_per_sample = pic->bytes_per_sample == 8 ? 1 : 2; int plane = 0; int line = 0; @@ -104,6 +104,7 @@ static int davs2_dump_frames(AVCodecContext *avctx, davs2_picture_t *pic, int *g for (plane = 0; plane < 3; ++plane) { int size_line = pic->widths[plane] * bytes_per_sample; + void *dst, *src; frame->buf[plane] = av_buffer_alloc(size_line * pic->lines[plane]); if (!frame->buf[plane]){ @@ -114,10 +115,14 @@ static int davs2_dump_frames(AVCodecContext *avctx, davs2_picture_t *pic, int *g frame->data[plane] = frame->buf[plane]->data; frame->linesize[plane] = size_line; - for (line = 0; line < pic->lines[plane]; ++line) - memcpy(frame->data[plane] + line * size_line, - pic->planes[plane] + line * pic->strides[plane], - pic->widths[plane] * bytes_per_sample); + dst = frame->data[plane]; + src = pic->planes[plane]; + + for (line = 0; line < pic->lines[plane]; ++line) { + memcpy(dst, src, size_line); + dst += size_line; + src += pic->strides[plane]; + } } frame->width = cad->headerset.width;