[SCM] libav/experimental: rtpdec_xiph: Avoid extra memcpy in Xiph RTP depacketizer

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:11:48 UTC 2013


The following commit has been merged in the experimental branch:
commit 7d894aeb60d767852ba9d5a4a2480abac17846ee
Author: Josh Allmann <joshua.allmann at gmail.com>
Date:   Mon Jul 19 18:43:20 2010 +0000

    rtpdec_xiph: Avoid extra memcpy in Xiph RTP depacketizer
    
    Patch by Josh Allmann, joshua dot allmann at gmail
    
    Originally committed as revision 24334 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/rtpdec_xiph.c b/libavformat/rtpdec_xiph.c
index 9973efc..4c9cad2 100644
--- a/libavformat/rtpdec_xiph.c
+++ b/libavformat/rtpdec_xiph.c
@@ -178,24 +178,18 @@ static int xiph_handle_packet(AVFormatContext * ctx,
 
         if (fragmented == 3) {
             // end of xiph data packet
-            uint8_t* xiph_data;
-            int frame_size = url_close_dyn_buf(data->fragment, &xiph_data);
+            av_init_packet(pkt);
+            pkt->size = url_close_dyn_buf(data->fragment, &pkt->data);
 
-            if (frame_size < 0) {
+            if (pkt->size < 0) {
                 av_log(ctx, AV_LOG_ERROR,
                        "Error occurred when getting fragment buffer.");
-                return frame_size;
+                return pkt->size;
             }
 
-            if (av_new_packet(pkt, frame_size)) {
-                av_log(ctx, AV_LOG_ERROR, "Out of memory.\n");
-                return AVERROR(ENOMEM);
-            }
-
-            memcpy(pkt->data, xiph_data, frame_size);
             pkt->stream_index = st->index;
+            pkt->destruct = av_destruct_packet;
 
-            av_free(xiph_data);
             data->fragment = NULL;
 
             return 0;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list