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);
|
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 ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
|
||||||
{
|
{
|
||||||
int ret, i;
|
int ret, i;
|
||||||
@ -83,9 +115,6 @@ int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
|
|||||||
ret = AVERROR(ENOMEM);
|
ret = AVERROR(ENOMEM);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
dst->qscale_table = src->qscale_table;
|
|
||||||
dst->mb_type = src->mb_type;
|
|
||||||
dst->pps = src->pps;
|
|
||||||
|
|
||||||
for (i = 0; i < 2; i++) {
|
for (i = 0; i < 2; i++) {
|
||||||
dst->motion_val_buf[i] = av_buffer_ref(src->motion_val_buf[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);
|
ret = AVERROR(ENOMEM);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
dst->motion_val[i] = src->motion_val[i];
|
|
||||||
dst->ref_index[i] = src->ref_index[i];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src->hwaccel_picture_private) {
|
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;
|
dst->hwaccel_picture_private = dst->hwaccel_priv_buf->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
h264_copy_picture_params(dst, src);
|
||||||
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;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
fail:
|
fail:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user