Index: webrtc/video/video_send_stream_tests.cc |
diff --git a/webrtc/video/video_send_stream_tests.cc b/webrtc/video/video_send_stream_tests.cc |
index ba15b17c85b229604bd7ba082e836b00ac54fc4f..74a68ff0baa2fd4c0b1f1b3b0ffca91c86cf5d70 100644 |
--- a/webrtc/video/video_send_stream_tests.cc |
+++ b/webrtc/video/video_send_stream_tests.cc |
@@ -1044,6 +1044,67 @@ TEST_F(VideoSendStreamTest, NoPaddingWhenVideoIsMuted) { |
RunBaseTest(&test); |
} |
+TEST_F(VideoSendStreamTest, PaddingIsPrimarilyRetransmissions) { |
+ class PaddingIsPrimarilyRetransmissions : public test::EndToEndTest { |
+ public: |
+ PaddingIsPrimarilyRetransmissions() |
+ : EndToEndTest(kDefaultTimeoutMs), |
+ clock_(Clock::GetRealTimeClock()), |
+ padding_length_(0), |
+ total_length_(0) {} |
+ |
+ private: |
+ Action OnSendRtp(const uint8_t* packet, size_t length) override { |
+ rtc::CritScope lock(&crit_); |
+ |
+ RTPHeader header; |
+ parser_->Parse(packet, length, &header); |
+ padding_length_ += header.paddingLength; |
+ total_length_ += length; |
+ |
+ return SEND_PACKET; |
+ } |
+ |
+ test::PacketTransport* CreateSendTransport(Call* sender_call) override { |
+ const int kNetworkDelayMs = 50; |
+ FakeNetworkPipe::Config config; |
+ config.loss_percent = 10; |
+ config.link_capacity_kbps = 10000; // 10 Mbps |
+ config.queue_delay_ms = kNetworkDelayMs; |
+ return new test::PacketTransport(sender_call, this, |
+ test::PacketTransport::kSender, config); |
+ } |
+ |
+ void ModifyVideoConfigs( |
+ VideoSendStream::Config* send_config, |
+ std::vector<VideoReceiveStream::Config>* receive_configs, |
+ VideoEncoderConfig* encoder_config) override { |
+ send_config->rtp.extensions.clear(); |
+ send_config->rtp.extensions.push_back( |
+ RtpExtension(RtpExtension::kTransportSequenceNumberUri, |
+ test::kTransportSequenceNumberExtensionId)); |
+ (*receive_configs)[0].rtp.extensions.clear(); |
+ (*receive_configs)[0].rtp.extensions.push_back( |
+ RtpExtension(RtpExtension::kTransportSequenceNumberUri, |
+ test::kTransportSequenceNumberExtensionId)); |
+ (*receive_configs)[0].rtp.transport_cc = true; |
+ } |
+ |
+ void PerformTest() override { |
+ SleepMs(5000); |
stefan-webrtc
2016/09/27 14:18:33
Should you instead run the test until Call::Stats:
|
+ // Expect padding to not dominate the data sent while probing for BW. |
+ EXPECT_LT(padding_length_, .5 * total_length_); |
+ } |
+ |
+ rtc::CriticalSection crit_; |
+ Clock* const clock_; |
+ size_t padding_length_; |
+ size_t total_length_; |
+ } test; |
+ |
+ RunBaseTest(&test); |
+} |
+ |
// This test first observes "high" bitrate use at which point it sends a REMB to |
// indicate that it should be lowered significantly. The test then observes that |
// the bitrate observed is sinking well below the min-transmit-bitrate threshold |