@@ -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)
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 <jamrial@gmail.com> --- libavcodec/avpacket.c | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-)