aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2021-08-08 18:17:24 -0300
committerJames Almer <jamrial@gmail.com>2021-08-10 15:11:42 -0300
commitab448a7f9bca0f92fe2ebd147d39d19e47b9128e (patch)
tree08d856afd48d2f9d7ab0f1d58a9055e3ab2976b3
parentce4a31cd1ff0348d279af74d49556d0315171e94 (diff)
downloadffmpeg-ab448a7f9bca0f92fe2ebd147d39d19e47b9128e.tar.gz
avcodec/h264_picture: split copying H264Picture some fields into a separate function
Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r--libavcodec/h264_picture.c57
1 files changed, 33 insertions, 24 deletions
diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c
index eec5e9fb9a..f61bdc0cbe 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, const 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: