diff mbox

[FFmpeg-devel,v2,2/5] lavc/libxavs2.c: avoid recomputations of pointers in xavs2_copy_frame* functions

Message ID 1575340886-29065-2-git-send-email-hwrenx@126.com
State Accepted
Commit 6721cd942ad642f373e0f7ed1e191008bfeafdb7
Headers show

Commit Message

hwren Dec. 3, 2019, 2:41 a.m. UTC
Signed-off-by: hwren <hwrenx@126.com>
---
 libavcodec/libxavs2.c | 32 +++++++++++++++++++++++---------
 1 file changed, 23 insertions(+), 9 deletions(-)

Comments

Michael Niedermayer Dec. 4, 2019, 7:32 p.m. UTC | #1
On Tue, Dec 03, 2019 at 10:41:23AM +0800, hwren wrote:
> Signed-off-by: hwren <hwrenx@126.com>
> ---
>  libavcodec/libxavs2.c | 32 +++++++++++++++++++++++---------
>  1 file changed, 23 insertions(+), 9 deletions(-)

will apply

thx

[...]
diff mbox

Patch

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];
         }
     }
 }