diff mbox series

[FFmpeg-devel,1/3] avcodec/h264_picture: split copying some H264Picture fields into a separate function

Message ID 20210808225612.11600-1-jamrial@gmail.com
State New
Headers show
Series [FFmpeg-devel,1/3] avcodec/h264_picture: split copying some H264Picture fields into a separate function
Related show

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate success Make fate finished

Commit Message

James Almer Aug. 8, 2021, 10:56 p.m. UTC
Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/h264_picture.c | 57 ++++++++++++++++++++++-----------------
 1 file changed, 33 insertions(+), 24 deletions(-)

Comments

James Almer Aug. 10, 2021, 12:22 p.m. UTC | #1
On 8/8/2021 7:56 PM, James Almer wrote:
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>   libavcodec/h264_picture.c | 57 ++++++++++++++++++++++-----------------
>   1 file changed, 33 insertions(+), 24 deletions(-)
> 
> diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c
> index eec5e9fb9a..89aef37edd 100644
> --- a/libavcodec/h264_picture.c
> +++ b/libavcodec/h264_picture.c
> @@ -63,6 +63,38 @@ void ff_h264_unref_picture(H264Context *h, H264Picture *pic)
>       memset((uint8_t*)pic + off, 0, sizeof(*pic) - off);
>   }

Will apply set.
diff mbox series

Patch

diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c
index eec5e9fb9a..89aef37edd 100644
--- a/libavcodec/h264_picture.c
+++ b/libavcodec/h264_picture.c
@@ -63,6 +63,38 @@  void ff_h264_unref_picture(H264Context *h, H264Picture *pic)
     memset((uint8_t*)pic + off, 0, sizeof(*pic) - off);
 }
 
+static void h264_copy_picture_params(H264Picture *dst, H264Picture *src)
+{
+    dst->qscale_table = src->qscale_table;
+    dst->mb_type      = src->mb_type;
+    dst->pps          = src->pps;
+
+    for (int i = 0; i < 2; i++) {
+        dst->motion_val[i] = src->motion_val[i];
+        dst->ref_index[i]  = src->ref_index[i];
+    }
+
+    for (int i = 0; i < 2; i++)
+        dst->field_poc[i] = src->field_poc[i];
+
+    memcpy(dst->ref_poc,   src->ref_poc,   sizeof(src->ref_poc));
+    memcpy(dst->ref_count, src->ref_count, sizeof(src->ref_count));
+
+    dst->poc           = src->poc;
+    dst->frame_num     = src->frame_num;
+    dst->mmco_reset    = src->mmco_reset;
+    dst->long_ref      = src->long_ref;
+    dst->mbaff         = src->mbaff;
+    dst->field_picture = src->field_picture;
+    dst->reference     = src->reference;
+    dst->recovered     = src->recovered;
+    dst->invalid_gap   = src->invalid_gap;
+    dst->sei_recovery_frame_cnt = src->sei_recovery_frame_cnt;
+    dst->mb_width      = src->mb_width;
+    dst->mb_height     = src->mb_height;
+    dst->mb_stride     = src->mb_stride;
+}
+
 int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
 {
     int ret, i;
@@ -83,9 +115,6 @@  int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
         ret = AVERROR(ENOMEM);
         goto fail;
     }
-    dst->qscale_table = src->qscale_table;
-    dst->mb_type      = src->mb_type;
-    dst->pps          = src->pps;
 
     for (i = 0; i < 2; i++) {
         dst->motion_val_buf[i] = av_buffer_ref(src->motion_val_buf[i]);
@@ -94,8 +123,6 @@  int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
             ret = AVERROR(ENOMEM);
             goto fail;
         }
-        dst->motion_val[i] = src->motion_val[i];
-        dst->ref_index[i]  = src->ref_index[i];
     }
 
     if (src->hwaccel_picture_private) {
@@ -107,25 +134,7 @@  int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
         dst->hwaccel_picture_private = dst->hwaccel_priv_buf->data;
     }
 
-    for (i = 0; i < 2; i++)
-        dst->field_poc[i] = src->field_poc[i];
-
-    memcpy(dst->ref_poc,   src->ref_poc,   sizeof(src->ref_poc));
-    memcpy(dst->ref_count, src->ref_count, sizeof(src->ref_count));
-
-    dst->poc           = src->poc;
-    dst->frame_num     = src->frame_num;
-    dst->mmco_reset    = src->mmco_reset;
-    dst->long_ref      = src->long_ref;
-    dst->mbaff         = src->mbaff;
-    dst->field_picture = src->field_picture;
-    dst->reference     = src->reference;
-    dst->recovered     = src->recovered;
-    dst->invalid_gap   = src->invalid_gap;
-    dst->sei_recovery_frame_cnt = src->sei_recovery_frame_cnt;
-    dst->mb_width      = src->mb_width;
-    dst->mb_height     = src->mb_height;
-    dst->mb_stride     = src->mb_stride;
+    h264_copy_picture_params(dst, src);
 
     return 0;
 fail: