summaryrefslogtreecommitdiff
path: root/chromium/third_party/webrtc/video/video_send_stream_tests.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/webrtc/video/video_send_stream_tests.cc')
-rw-r--r--chromium/third_party/webrtc/video/video_send_stream_tests.cc78
1 files changed, 78 insertions, 0 deletions
diff --git a/chromium/third_party/webrtc/video/video_send_stream_tests.cc b/chromium/third_party/webrtc/video/video_send_stream_tests.cc
index faf47c7ffab..515085fc612 100644
--- a/chromium/third_party/webrtc/video/video_send_stream_tests.cc
+++ b/chromium/third_party/webrtc/video/video_send_stream_tests.cc
@@ -15,6 +15,7 @@
#include "call/rtp_transport_controller_send.h"
#include "common_video/include/frame_callback.h"
#include "common_video/include/video_frame.h"
+#include "modules/pacing/alr_detector.h"
#include "modules/rtp_rtcp/include/rtp_header_parser.h"
#include "modules/rtp_rtcp/include/rtp_rtcp.h"
#include "modules/rtp_rtcp/source/rtcp_sender.h"
@@ -3510,4 +3511,81 @@ TEST_F(VideoSendStreamTest, SendsKeepAlive) {
RunBaseTest(&test);
}
+TEST_F(VideoSendStreamTest, ConfiguresAlrWhenSendSideOn) {
+ const std::string kAlrProbingExperiment =
+ std::string(AlrDetector::kScreenshareProbingBweExperimentName) +
+ "/1.1,2875,85,20,-20,0/";
+ test::ScopedFieldTrials alr_experiment(kAlrProbingExperiment);
+ class PacingFactorObserver : public test::SendTest {
+ public:
+ PacingFactorObserver(bool configure_send_side, float expected_pacing_factor)
+ : test::SendTest(kDefaultTimeoutMs),
+ configure_send_side_(configure_send_side),
+ expected_pacing_factor_(expected_pacing_factor),
+ paced_sender_(nullptr) {}
+
+ void ModifyVideoConfigs(
+ VideoSendStream::Config* send_config,
+ std::vector<VideoReceiveStream::Config>* receive_configs,
+ VideoEncoderConfig* encoder_config) override {
+ // Check if send-side bwe extension is already present, and remove it if
+ // it is not desired.
+ bool has_send_side = false;
+ for (auto it = send_config->rtp.extensions.begin();
+ it != send_config->rtp.extensions.end(); ++it) {
+ if (it->uri == RtpExtension::kTransportSequenceNumberUri) {
+ if (configure_send_side_) {
+ has_send_side = true;
+ } else {
+ send_config->rtp.extensions.erase(it);
+ }
+ break;
+ }
+ }
+
+ if (configure_send_side_ && !has_send_side) {
+ // Want send side, not present by default, so add it.
+ send_config->rtp.extensions.emplace_back(
+ RtpExtension::kTransportSequenceNumberUri,
+ RtpExtension::kTransportSequenceNumberDefaultId);
+ }
+
+ // ALR only enabled for screenshare.
+ encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen;
+ }
+
+ void OnRtpTransportControllerSendCreated(
+ RtpTransportControllerSend* controller) override {
+ // Grab a reference to the pacer.
+ paced_sender_ = controller->pacer();
+ }
+
+ void OnVideoStreamsCreated(
+ VideoSendStream* send_stream,
+ const std::vector<VideoReceiveStream*>& receive_streams) override {
+ // Video streams created, check that pacer is correctly configured.
+ EXPECT_EQ(expected_pacing_factor_, paced_sender_->GetPacingFactor());
+ observation_complete_.Set();
+ }
+
+ void PerformTest() override {
+ EXPECT_TRUE(Wait()) << "Timed out while waiting for pacer config.";
+ }
+
+ private:
+ const bool configure_send_side_;
+ const float expected_pacing_factor_;
+ const PacedSender* paced_sender_;
+ };
+
+ // Send-side bwe on, use pacing factor from |kAlrProbingExperiment| above.
+ PacingFactorObserver test_with_send_side(true, 1.1f);
+ RunBaseTest(&test_with_send_side);
+
+ // Send-side bwe off, use default pacing factor.
+ PacingFactorObserver test_without_send_side(
+ false, PacedSender::kDefaultPaceMultiplier);
+ RunBaseTest(&test_without_send_side);
+}
+
} // namespace webrtc