Remove getting max payload length from default module.
Moving functionality to get max payload length from default RTP module
to the payload router.
I'll make a follow up CL changing asserts to DCHECK in rtp_rtcp_impl.cc.
BUG=769
TEST=New unittest and existing sender mtu test
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/36119004
Cr-Commit-Position: refs/heads/master@{#8345}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8345 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/video_engine/payload_router.cc b/webrtc/video_engine/payload_router.cc
index f815d13..00c64ad 100644
--- a/webrtc/video_engine/payload_router.cc
+++ b/webrtc/video_engine/payload_router.cc
@@ -12,6 +12,7 @@
#include "webrtc/base/checks.h"
#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h"
+#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp_defines.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
namespace webrtc {
@@ -22,6 +23,11 @@
PayloadRouter::~PayloadRouter() {}
+size_t PayloadRouter::DefaultMaxPayloadLength() {
+ const size_t kIpUdpSrtpLength = 44;
+ return IP_PACKET_SIZE - kIpUdpSrtpLength;
+}
+
void PayloadRouter::SetSendingRtpModules(
const std::list<RtpRtcp*>& rtp_modules) {
CriticalSectionScoped cs(crit_.get());
@@ -47,7 +53,7 @@
uint32_t time_stamp,
int64_t capture_time_ms,
const uint8_t* payload_data,
- size_t payload_size,
+ size_t payload_length,
const RTPFragmentationHeader* fragmentation,
const RTPVideoHeader* rtp_video_hdr) {
CriticalSectionScoped cs(crit_.get());
@@ -62,7 +68,18 @@
stream_idx = rtp_video_hdr->simulcastIdx;
return rtp_modules_[stream_idx]->SendOutgoingData(
frame_type, payload_type, time_stamp, capture_time_ms, payload_data,
- payload_size, fragmentation, rtp_video_hdr) == 0 ? true : false;
+ payload_length, fragmentation, rtp_video_hdr) == 0 ? true : false;
+}
+
+size_t PayloadRouter::MaxPayloadLength() const {
+ size_t min_payload_length = DefaultMaxPayloadLength();
+ CriticalSectionScoped cs(crit_.get());
+ for (auto* rtp_module : rtp_modules_) {
+ size_t module_payload_length = rtp_module->MaxDataPayloadLength();
+ if (module_payload_length < min_payload_length)
+ min_payload_length = module_payload_length;
+ }
+ return min_payload_length;
}
} // namespace webrtc