summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2012-02-23 11:56:15 +0200
committerMartin Storsjö <martin@martin.st>2012-02-23 21:32:52 +0200
commitba605cef7961ee699c893d1a3b5c9730f0a37b6c (patch)
treea9e4414c8c6afb4290d572b2447ba38a8bd00870
parentf553462041096d5d2afd9a8841a7af50df5c2540 (diff)
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@martin.st>
-rw-r--r--libavformat/rtpenc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libavformat/rtpenc.c b/libavformat/rtpenc.c
index bdbe411192..e4ef0fc92b 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);