From c6957c7b7308a90a453f2caf1523db2cf3e8f640 Mon Sep 17 00:00:00 2001 From: philipel Date: Thu, 28 Apr 2016 15:52:49 +0200 Subject: [PATCH] De-flake VideoSendStreamTest.ReconfigureBitratesSetsEncoderBitratesCorrectly BUG=webrtc:5382 R=pbos@webrtc.org, stefan@webrtc.org Review URL: https://codereview.webrtc.org/1922483002 . Cr-Commit-Position: refs/heads/master@{#12547} --- .../bitrate_controller/bitrate_controller_impl.cc | 12 ++++++++++++ .../bitrate_controller/bitrate_controller_impl.h | 6 ++++++ .../bitrate_controller/include/bitrate_controller.h | 5 +++++ .../include/mock/mock_bitrate_controller.h | 4 ++++ .../send_side_bandwidth_estimation.cc | 8 ++++++++ .../send_side_bandwidth_estimation.h | 3 +++ .../congestion_controller/congestion_controller.cc | 10 ++++++---- webrtc/video/video_send_stream_tests.cc | 13 +------------ 8 files changed, 45 insertions(+), 16 deletions(-) diff --git a/webrtc/modules/bitrate_controller/bitrate_controller_impl.cc b/webrtc/modules/bitrate_controller/bitrate_controller_impl.cc index bf608789d5..3c0d37c3b0 100644 --- a/webrtc/modules/bitrate_controller/bitrate_controller_impl.cc +++ b/webrtc/modules/bitrate_controller/bitrate_controller_impl.cc @@ -122,6 +122,18 @@ void BitrateControllerImpl::SetMinMaxBitrate(int min_bitrate_bps, MaybeTriggerOnNetworkChanged(); } +void BitrateControllerImpl::SetBitrates(int start_bitrate_bps, + int min_bitrate_bps, + int max_bitrate_bps) { + { + rtc::CritScope cs(&critsect_); + bandwidth_estimation_.SetBitrates(start_bitrate_bps, + min_bitrate_bps, + max_bitrate_bps); + } + MaybeTriggerOnNetworkChanged(); +} + void BitrateControllerImpl::SetReservedBitrate(uint32_t reserved_bitrate_bps) { { rtc::CritScope cs(&critsect_); diff --git a/webrtc/modules/bitrate_controller/bitrate_controller_impl.h b/webrtc/modules/bitrate_controller/bitrate_controller_impl.h index 14e8fd795a..a9661212d1 100644 --- a/webrtc/modules/bitrate_controller/bitrate_controller_impl.h +++ b/webrtc/modules/bitrate_controller/bitrate_controller_impl.h @@ -35,9 +35,15 @@ class BitrateControllerImpl : public BitrateController { RtcpBandwidthObserver* CreateRtcpBandwidthObserver() override; + // Deprecated void SetStartBitrate(int start_bitrate_bps) override; + // Deprecated void SetMinMaxBitrate(int min_bitrate_bps, int max_bitrate_bps) override; + void SetBitrates(int start_bitrate_bps, + int min_bitrate_bps, + int max_bitrate_bps) override; + void UpdateDelayBasedEstimate(uint32_t bitrate_bps) override; void SetReservedBitrate(uint32_t reserved_bitrate_bps) override; diff --git a/webrtc/modules/bitrate_controller/include/bitrate_controller.h b/webrtc/modules/bitrate_controller/include/bitrate_controller.h index a9c247acf1..d6cbc02d18 100644 --- a/webrtc/modules/bitrate_controller/include/bitrate_controller.h +++ b/webrtc/modules/bitrate_controller/include/bitrate_controller.h @@ -54,8 +54,13 @@ class BitrateController : public Module { virtual RtcpBandwidthObserver* CreateRtcpBandwidthObserver() = 0; + // Deprecated virtual void SetStartBitrate(int start_bitrate_bps) = 0; + // Deprecated virtual void SetMinMaxBitrate(int min_bitrate_bps, int max_bitrate_bps) = 0; + virtual void SetBitrates(int start_bitrate_bps, + int min_bitrate_bps, + int max_bitrate_bps) = 0; virtual void UpdateDelayBasedEstimate(uint32_t bitrate_bps) = 0; diff --git a/webrtc/modules/bitrate_controller/include/mock/mock_bitrate_controller.h b/webrtc/modules/bitrate_controller/include/mock/mock_bitrate_controller.h index 45b596a868..5290b01106 100644 --- a/webrtc/modules/bitrate_controller/include/mock/mock_bitrate_controller.h +++ b/webrtc/modules/bitrate_controller/include/mock/mock_bitrate_controller.h @@ -31,6 +31,10 @@ class MockBitrateController : public BitrateController { MOCK_METHOD1(SetStartBitrate, void(int start_bitrate_bps)); MOCK_METHOD2(SetMinMaxBitrate, void(int min_bitrate_bps, int max_bitrate_bps)); + MOCK_METHOD3(SetBitrates, + void(int start_bitrate_bps, + int min_bitrate_bps, + int max_bitrate_bps)); MOCK_METHOD1(UpdateDelayBasedEstimate, void(uint32_t bitrate_bps)); MOCK_METHOD1(SetEventLog, void(RtcEventLog* event_log)); MOCK_CONST_METHOD1(AvailableBandwidth, bool(uint32_t* bandwidth)); diff --git a/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc b/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc index 785267d8c9..a1b78a257c 100644 --- a/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc +++ b/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.cc @@ -67,6 +67,14 @@ SendSideBandwidthEstimation::SendSideBandwidthEstimation() SendSideBandwidthEstimation::~SendSideBandwidthEstimation() {} +void SendSideBandwidthEstimation::SetBitrates(int send_bitrate, + int min_bitrate, + int max_bitrate) { + if (send_bitrate > 0) + SetSendBitrate(send_bitrate); + SetMinMaxBitrate(min_bitrate, max_bitrate); +} + void SendSideBandwidthEstimation::SetSendBitrate(int bitrate) { RTC_DCHECK_GT(bitrate, 0); bitrate_ = bitrate; diff --git a/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.h b/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.h index 15894f9395..402d22a6bf 100644 --- a/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.h +++ b/webrtc/modules/bitrate_controller/send_side_bandwidth_estimation.h @@ -46,6 +46,9 @@ class SendSideBandwidthEstimation { int number_of_packets, int64_t now_ms); + void SetBitrates(int send_bitrate, + int min_bitrate, + int max_bitrate); void SetSendBitrate(int bitrate); void SetMinMaxBitrate(int min_bitrate, int max_bitrate); int GetMinBitrate() const; diff --git a/webrtc/modules/congestion_controller/congestion_controller.cc b/webrtc/modules/congestion_controller/congestion_controller.cc index 4517fc44f7..6985e67a23 100644 --- a/webrtc/modules/congestion_controller/congestion_controller.cc +++ b/webrtc/modules/congestion_controller/congestion_controller.cc @@ -177,11 +177,13 @@ void CongestionController::SetBweBitrates(int min_bitrate_bps, min_bitrate_bps = kMinBitrateBps; if (max_bitrate_bps > 0) max_bitrate_bps = std::max(min_bitrate_bps, max_bitrate_bps); - if (start_bitrate_bps > 0) { + if (start_bitrate_bps > 0) start_bitrate_bps = std::max(min_bitrate_bps, start_bitrate_bps); - bitrate_controller_->SetStartBitrate(start_bitrate_bps); - } - bitrate_controller_->SetMinMaxBitrate(min_bitrate_bps, max_bitrate_bps); + + bitrate_controller_->SetBitrates(start_bitrate_bps, + min_bitrate_bps, + max_bitrate_bps); + if (remote_bitrate_estimator_) remote_bitrate_estimator_->SetMinBitrate(min_bitrate_bps); min_bitrate_bps_ = min_bitrate_bps; diff --git a/webrtc/video/video_send_stream_tests.cc b/webrtc/video/video_send_stream_tests.cc index 6c4b06ce3a..5df2425e5c 100644 --- a/webrtc/video/video_send_stream_tests.cc +++ b/webrtc/video/video_send_stream_tests.cc @@ -1690,18 +1690,7 @@ TEST_F(VideoSendStreamTest, TranslatesTwoLayerScreencastToTargetBitrate) { RunBaseTest(&test); } -// Disabled on LinuxAsan: -// https://bugs.chromium.org/p/webrtc/issues/detail?id=5382 -#if defined(ADDRESS_SANITIZER) && defined(WEBRTC_LINUX) -#define MAYBE_ReconfigureBitratesSetsEncoderBitratesCorrectly \ - DISABLED_ReconfigureBitratesSetsEncoderBitratesCorrectly -#else -#define MAYBE_ReconfigureBitratesSetsEncoderBitratesCorrectly \ - ReconfigureBitratesSetsEncoderBitratesCorrectly -#endif - -TEST_F(VideoSendStreamTest, - MAYBE_ReconfigureBitratesSetsEncoderBitratesCorrectly) { +TEST_F(VideoSendStreamTest, ReconfigureBitratesSetsEncoderBitratesCorrectly) { // These are chosen to be "kind of odd" to not be accidentally checked against // default values. static const int kMinBitrateKbps = 137;