From de1d20245706a1b32342c348110c2b4c58efdf75 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Wed, 14 Oct 2015 14:30:28 +0200 Subject: [PATCH] Made RTSP max send value runtime configurable. --- lib/rtp.cpp | 2 +- lib/rtp.h | 2 ++ src/output/output_rtsp.cpp | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/rtp.cpp b/lib/rtp.cpp index f1ae76c0..c425dd02 100644 --- a/lib/rtp.cpp +++ b/lib/rtp.cpp @@ -3,10 +3,10 @@ #include "timing.h" #include "defines.h" -#define MAX_SEND 1024*4 namespace RTP { double Packet::startRTCP = 0; + unsigned int MAX_SEND = 4*1024; unsigned int Packet::getHsize() const { return 12 + 4 * getContribCount(); diff --git a/lib/rtp.h b/lib/rtp.h index e1b78914..964446a7 100644 --- a/lib/rtp.h +++ b/lib/rtp.h @@ -18,6 +18,8 @@ /// This namespace holds all RTP-parsing and sending related functionality. namespace RTP { + extern unsigned int MAX_SEND; + /// This class is used to make RTP packets. Currently, H264, and AAC are supported. RTP mechanisms, like increasing sequence numbers and setting timestamps are all taken care of in here. class Packet { private: diff --git a/src/output/output_rtsp.cpp b/src/output/output_rtsp.cpp index c0eeb4bf..b3617c12 100644 --- a/src/output/output_rtsp.cpp +++ b/src/output/output_rtsp.cpp @@ -51,6 +51,19 @@ namespace Mist { capa["methods"][0u]["handler"] = "rtsp"; capa["methods"][0u]["type"] = "rtsp"; capa["methods"][0u]["priority"] = 2ll; + + JSON::Value maxsend_opt; + maxsend_opt["arg"] = "integer"; + maxsend_opt["default"] = (long long)RTP::MAX_SEND; + maxsend_opt["short"] = "m"; + maxsend_opt["long"] = "max-packet-size"; + maxsend_opt["help"] = "Maximum size of RTP packets in bytes"; + cfg->addOption("maxsend", maxsend_opt); + capa["optional"]["maxsend"]["name"] = "Max RTP packet size"; + capa["optional"]["maxsend"]["help"] = "Maximum size of RTP packets in bytes"; + capa["optional"]["maxsend"]["default"] = (long long)RTP::MAX_SEND; + capa["optional"]["maxsend"]["type"] = "uint"; + capa["optional"]["maxsend"]["option"] = "--max-packet-size"; cfg->addConnectorOptions(554, capa); config = cfg; @@ -122,6 +135,7 @@ namespace Mist { } void OutRTSP::onRequest(){ + RTP::MAX_SEND = config->getInteger("maxsend"); while (HTTP_R.Read(myConn)){ HTTP_S.Clean(); HTTP_S.protocol = "RTSP/1.0";