avcodec/mpeg12dec: respect side data preference

We only need to consider side data types that may possibly come from the
packet.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
This commit is contained in:
Niklas Haas 2024-02-17 21:52:23 +01:00 committed by Anton Khirnov
parent ed3cc8fc65
commit ffb8dc7be6

View File

@ -1306,20 +1306,20 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size)
} }
} }
pan_scan = av_frame_new_side_data(s->current_picture_ptr->f, ret = ff_frame_new_side_data(s->avctx, s->current_picture_ptr->f,
AV_FRAME_DATA_PANSCAN, AV_FRAME_DATA_PANSCAN, sizeof(s1->pan_scan),
sizeof(s1->pan_scan)); &pan_scan);
if (!pan_scan) if (ret < 0)
return AVERROR(ENOMEM); return ret;
memcpy(pan_scan->data, &s1->pan_scan, sizeof(s1->pan_scan)); if (pan_scan)
memcpy(pan_scan->data, &s1->pan_scan, sizeof(s1->pan_scan));
if (s1->a53_buf_ref) { if (s1->a53_buf_ref) {
AVFrameSideData *sd = av_frame_new_side_data_from_buf( ret = ff_frame_new_side_data_from_buf(
s->current_picture_ptr->f, AV_FRAME_DATA_A53_CC, s->avctx, s->current_picture_ptr->f, AV_FRAME_DATA_A53_CC,
s1->a53_buf_ref); &s1->a53_buf_ref, NULL);
if (!sd) if (ret < 0)
av_buffer_unref(&s1->a53_buf_ref); return ret;
s1->a53_buf_ref = NULL;
} }
if (s1->has_stereo3d) { if (s1->has_stereo3d) {
@ -1332,13 +1332,13 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size)
} }
if (s1->has_afd) { if (s1->has_afd) {
AVFrameSideData *sd = AVFrameSideData *sd;
av_frame_new_side_data(s->current_picture_ptr->f, ret = ff_frame_new_side_data(s->avctx, s->current_picture_ptr->f,
AV_FRAME_DATA_AFD, 1); AV_FRAME_DATA_AFD, 1, &sd);
if (!sd) if (ret < 0)
return AVERROR(ENOMEM); return ret;
if (sd)
*sd->data = s1->afd; *sd->data = s1->afd;
s1->has_afd = 0; s1->has_afd = 0;
} }