[FFmpeg-cvslog] rtpenc: Expose the max packet size via an avoption

Martin Storsjö git at videolan.org
Fri Feb 24 04:35:03 CET 2012


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Thu Feb 23 11:56:15 2012 +0200| [ba605cef7961ee699c893d1a3b5c9730f0a37b6c] | committer: Martin Storsjö

rtpenc: Expose the max packet size via an avoption

This allows opting for a lower MTU than what the AVIOContext
indicated, and allows writing into outputs that don't indicate
an MTU at all (such as plain files, which is useful for testing).

This also allows querying for the MTU via the avoption.

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ba605cef7961ee699c893d1a3b5c9730f0a37b6c
---

 libavformat/rtpenc.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/libavformat/rtpenc.c b/libavformat/rtpenc.c
index bdbe411..e4ef0fc 100644
--- a/libavformat/rtpenc.c
+++ b/libavformat/rtpenc.c
@@ -33,6 +33,7 @@
 static const AVOption options[] = {
     FF_RTP_FLAG_OPTS(RTPMuxContext, flags)
     { "payload_type", "Specify RTP payload type", offsetof(RTPMuxContext, payload_type), AV_OPT_TYPE_INT, {.dbl = -1 }, -1, 127, AV_OPT_FLAG_ENCODING_PARAM },
+    { "max_packet_size", "Max packet size", offsetof(RTPMuxContext, max_packet_size), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
     { NULL },
 };
 
@@ -109,7 +110,12 @@ static int rtp_write_header(AVFormatContext *s1)
         s->first_rtcp_ntp_time = (s1->start_time_realtime / 1000) * 1000 +
                                  NTP_OFFSET_US;
 
-    s->max_packet_size = s1->pb->max_packet_size;
+    if (s->max_packet_size) {
+        if (s1->pb->max_packet_size)
+            s->max_packet_size = FFMIN(s->max_payload_size,
+                                       s1->pb->max_packet_size);
+    } else
+        s->max_packet_size = s1->pb->max_packet_size;
     if (s->max_packet_size <= 12) {
         av_log(s1, AV_LOG_ERROR, "Max packet size %d too low\n", s->max_packet_size);
         return AVERROR(EIO);



More information about the ffmpeg-cvslog mailing list