The side data array in av_packet_copy_side_data() is not reallocated every time a new element is added, unlike when calling av_packet_new_side_data() in a loop.
Signed-off-by: James Almer <jamr...@gmail.com> --- libavcodec/avpacket.c | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index 33e325c9ed..01b899c79d 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -625,7 +625,7 @@ fail: int av_packet_copy_props(AVPacket *dst, const AVPacket *src) { - int i; + int ret; dst->pts = src->pts; dst->dts = src->dts; @@ -639,20 +639,11 @@ FF_ENABLE_DEPRECATION_WARNINGS dst->flags = src->flags; dst->stream_index = src->stream_index; - for (i = 0; i < src->side_data_elems; i++) { - enum AVPacketSideDataType type = src->side_data[i].type; - int size = src->side_data[i].size; - uint8_t *src_data = src->side_data[i].data; - uint8_t *dst_data = av_packet_new_side_data(dst, type, size); - - if (!dst_data) { - av_packet_free_side_data(dst); - return AVERROR(ENOMEM); - } - memcpy(dst_data, src_data, size); - } + ret = av_packet_copy_side_data(dst, src); + if (ret < 0) + av_packet_free_side_data(dst); - return 0; + return ret; } void av_packet_unref(AVPacket *pkt) -- 2.14.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel