]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/avpacket.c
Merge commit 'f36d7831d96aeb072db5a2b78892a534d96e288e'
[ffmpeg] / libavcodec / avpacket.c
index 92f4fdfbe306a8416f21ff960bfced218922209b..198365e3a708cab0fc967f9e7f87c1de68509103 100644 (file)
@@ -199,13 +199,24 @@ static int copy_packet_data(AVPacket *pkt, AVPacket *src, int dup)
     if (pkt->side_data_elems && dup)
         pkt->side_data = src->side_data;
     if (pkt->side_data_elems && !dup) {
-        int i;
+        return av_copy_packet_side_data(pkt, src);
+    }
+    return 0;
+
+failed_alloc:
+    av_destruct_packet(pkt);
+    return AVERROR(ENOMEM);
+}
 
+int av_copy_packet_side_data(AVPacket *pkt, AVPacket *src)
+{
+    if (src->side_data_elems) {
+        int i;
         DUP_DATA(pkt->side_data, src->side_data,
-                pkt->side_data_elems * sizeof(*pkt->side_data), 0, ALLOC_MALLOC);
+                src->side_data_elems * sizeof(*src->side_data), 0, ALLOC_MALLOC);
         memset(pkt->side_data, 0,
-                pkt->side_data_elems * sizeof(*pkt->side_data));
-        for (i = 0; i < pkt->side_data_elems; i++) {
+                src->side_data_elems * sizeof(*src->side_data));
+        for (i = 0; i < src->side_data_elems; i++) {
             DUP_DATA(pkt->side_data[i].data, src->side_data[i].data,
                     src->side_data[i].size, 1, ALLOC_MALLOC);
             pkt->side_data[i].size = src->side_data[i].size;