mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-28 20:53:54 +02:00
avcodec/h264_picture: split copying H264Picture some fields into a separate function
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
ce4a31cd1f
commit
ab448a7f9b
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user