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 f20c191c1..063ecedd3 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -359,7 +359,7 @@ fail: int av_packet_copy_props(AVPacket *dst, const AVPacket *src) { - int i; + int ret; dst->pts = src->pts; dst->dts = src->dts; @@ -373,20 +373,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 _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel