Signed-off-by: James Almer <jamr...@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); } +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: -- 2.32.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".