diff options
author | Josh Allmann <joshua.allmann@gmail.com> | 2010-07-19 18:43:20 +0000 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2010-07-19 18:43:20 +0000 |
commit | 7d894aeb60d767852ba9d5a4a2480abac17846ee (patch) | |
tree | ac7479821b41911a5a52902228d6ce8b56338233 | |
parent | 6d9f1b67e8e5bbce598d6c7a6d0ec8a1c3ba528b (diff) | |
download | ffmpeg-7d894aeb60d767852ba9d5a4a2480abac17846ee.tar.gz |
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
-rw-r--r-- | libavformat/rtpdec_xiph.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/libavformat/rtpdec_xiph.c b/libavformat/rtpdec_xiph.c index 9973efcd73..4c9cad2877 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; |