summaryrefslogtreecommitdiff
path: root/libavcodec/utils.c
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2015-07-05 19:02:03 +0200
committerMichael Niedermayer <michaelni@gmx.at>2015-07-06 00:39:29 +0200
commit9476c4c67e68f573e37cb3e2d8f045d87e169205 (patch)
treebe73fb0388374b7a555d3e425f44cba2fc7f72d8 /libavcodec/utils.c
parent10b6a83fb3ad5311f7b4929cb49696ace234d83a (diff)
lavc/utils: call add_metadata_from_side_data in ff_init_buffer_info
This should ensure that each frame get its metadata from its proper packet regardless of frame delays caused by reordering or threading. Signed-off-by: Marton Balint <cus@passwd.hu> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/utils.c')
-rw-r--r--libavcodec/utils.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 08fad3ecd5..e1870f5460 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -739,6 +739,8 @@ FF_ENABLE_DEPRECATION_WARNINGS
}
}
+static int add_metadata_from_side_data(AVPacket *avpkt, AVFrame *frame);
+
int ff_init_buffer_info(AVCodecContext *avctx, AVFrame *frame)
{
AVPacket *pkt = avctx->internal->pkt;
@@ -772,6 +774,7 @@ int ff_init_buffer_info(AVCodecContext *avctx, AVFrame *frame)
memcpy(frame_sd->data, packet_sd, size);
}
}
+ add_metadata_from_side_data(pkt, frame);
} else {
frame->pkt_pts = AV_NOPTS_VALUE;
av_frame_set_pkt_pos (frame, -1);
@@ -2406,7 +2409,6 @@ int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi
if (picture->format == AV_PIX_FMT_NONE) picture->format = avctx->pix_fmt;
}
}
- add_metadata_from_side_data(avctx->internal->pkt, picture);
fail:
emms_c(); //needed to avoid an emms_c() call before every return;
@@ -2548,7 +2550,6 @@ int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx,
frame->pkt_dts = avpkt->dts;
}
if (ret >= 0 && *got_frame_ptr) {
- add_metadata_from_side_data(avctx->internal->pkt, frame);
avctx->frame_number++;
av_frame_set_best_effort_timestamp(frame,
guess_correct_pts(avctx,