# HG changeset patch # User mstorsjo # Date 1279565000 0 # Node ID eec2da7289449753605ab213b6a8d06999a406fc # Parent 111c9026932e52b8617f938eccd315eeb19a66ce rtpdec_xiph: Avoid extra memcpy in Xiph RTP depacketizer Patch by Josh Allmann, joshua dot allmann at gmail diff -r 111c9026932e -r eec2da728944 rtpdec_xiph.c --- a/rtpdec_xiph.c Mon Jul 19 14:58:37 2010 +0000 +++ b/rtpdec_xiph.c Mon Jul 19 18:43:20 2010 +0000 @@ -178,24 +178,18 @@ 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); - } + pkt->stream_index = st->index; + pkt->destruct = av_destruct_packet; - memcpy(pkt->data, xiph_data, frame_size); - pkt->stream_index = st->index; - - av_free(xiph_data); data->fragment = NULL; return 0;