diff options
author | James Almer <jamrial@gmail.com> | 2021-08-08 18:17:24 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2021-08-10 15:11:42 -0300 |
commit | ab448a7f9bca0f92fe2ebd147d39d19e47b9128e (patch) | |
tree | 08d856afd48d2f9d7ab0f1d58a9055e3ab2976b3 | |
parent | ce4a31cd1ff0348d279af74d49556d0315171e94 (diff) | |
download | ffmpeg-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.c | 57 |
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: |