Do not use RTP_MAX_PACKET_LENGTH in the RTP muxer
authorLuca Abeni <lucabe72@email.it>
Fri, 6 Feb 2009 20:41:15 +0000 (20:41 +0000)
committerLuca Abeni <lucabe72@email.it>
Fri, 6 Feb 2009 20:41:15 +0000 (20:41 +0000)
Originally committed as revision 17022 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/rtpenc.c
libavformat/rtpenc.h

index dbb931a..0e129ac 100644 (file)
@@ -65,6 +65,10 @@ static int rtp_write_header(AVFormatContext *s1)
     max_packet_size = url_fget_max_packet_size(s1->pb);
     if (max_packet_size <= 12)
         return AVERROR(EIO);
+    s->buf = av_malloc(max_packet_size);
+    if (s->buf == NULL) {
+        return AVERROR(ENOMEM);
+    }
     s->max_payload_size = max_packet_size - 12;
 
     s->max_frames_per_packet = 0;
@@ -344,6 +348,15 @@ static int rtp_write_packet(AVFormatContext *s1, AVPacket *pkt)
     return 0;
 }
 
+static int rtp_write_trailer(AVFormatContext *s1)
+{
+    RTPMuxContext *s = s1->priv_data;
+
+    av_freep(&s->buf);
+
+    return 0;
+}
+
 AVOutputFormat rtp_muxer = {
     "rtp",
     NULL_IF_CONFIG_SMALL("RTP output format"),
@@ -354,4 +367,5 @@ AVOutputFormat rtp_muxer = {
     CODEC_ID_NONE,
     rtp_write_header,
     rtp_write_packet,
+    rtp_write_trailer,
 };
index c38180c..3cec82c 100644 (file)
@@ -46,7 +46,7 @@ struct RTPMuxContext {
     unsigned int last_octet_count; // TODO: move into statistics (outgoing)
     int first_packet;
     /* buffer for output */
-    uint8_t buf[RTP_MAX_PACKET_LENGTH];
+    uint8_t *buf;
     uint8_t *buf_ptr;
 
     int max_frames_per_packet;