Variable audio bitrate.
This is a first CL wiring up AudioSendStream to BitrateAllocator. This
is still experimental and there is a test added for the audio only case,
combined audio video variable bitrate test cases will be added as a
follow up.
BUG=5079
Review-Url: https://codereview.webrtc.org/2165743003
Cr-Original-Commit-Position: refs/heads/master@{#13527}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 86cc6ffc7ca14c79d760695e89ab9698ed251873
diff --git a/audio/audio_send_stream_unittest.cc b/audio/audio_send_stream_unittest.cc
index ea70d30..7f940fc 100644
--- a/audio/audio_send_stream_unittest.cc
+++ b/audio/audio_send_stream_unittest.cc
@@ -50,6 +50,13 @@
const int kTelephoneEventCode = 45;
const int kTelephoneEventDuration = 6789;
+class MockLimitObserver : public BitrateAllocator::LimitObserver {
+ public:
+ MOCK_METHOD2(OnAllocationLimitsChanged,
+ void(uint32_t min_send_bitrate_bps,
+ uint32_t max_padding_bitrate_bps));
+};
+
struct ConfigHelper {
ConfigHelper()
: simulated_clock_(123456),
@@ -57,7 +64,8 @@
congestion_controller_(&simulated_clock_,
&bitrate_observer_,
&remote_bitrate_observer_,
- &event_log_) {
+ &event_log_),
+ bitrate_allocator_(&limit_observer_) {
using testing::Invoke;
using testing::StrEq;
@@ -116,6 +124,7 @@
CongestionController* congestion_controller() {
return &congestion_controller_;
}
+ BitrateAllocator* bitrate_allocator() { return &bitrate_allocator_; }
void SetupMockForSendTelephoneEvent() {
EXPECT_TRUE(channel_proxy_);
@@ -170,6 +179,8 @@
testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_;
CongestionController congestion_controller_;
MockRtcEventLog event_log_;
+ testing::NiceMock<MockLimitObserver> limit_observer_;
+ BitrateAllocator bitrate_allocator_;
};
} // namespace
@@ -192,13 +203,15 @@
TEST(AudioSendStreamTest, ConstructDestruct) {
ConfigHelper helper;
internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
- helper.congestion_controller());
+ helper.congestion_controller(),
+ helper.bitrate_allocator());
}
TEST(AudioSendStreamTest, SendTelephoneEvent) {
ConfigHelper helper;
internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
- helper.congestion_controller());
+ helper.congestion_controller(),
+ helper.bitrate_allocator());
helper.SetupMockForSendTelephoneEvent();
EXPECT_TRUE(send_stream.SendTelephoneEvent(kTelephoneEventPayloadType,
kTelephoneEventCode, kTelephoneEventDuration));
@@ -207,7 +220,8 @@
TEST(AudioSendStreamTest, SetMuted) {
ConfigHelper helper;
internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
- helper.congestion_controller());
+ helper.congestion_controller(),
+ helper.bitrate_allocator());
EXPECT_CALL(*helper.channel_proxy(), SetInputMute(true));
send_stream.SetMuted(true);
}
@@ -215,7 +229,8 @@
TEST(AudioSendStreamTest, GetStats) {
ConfigHelper helper;
internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
- helper.congestion_controller());
+ helper.congestion_controller(),
+ helper.bitrate_allocator());
helper.SetupMockForGetStats();
AudioSendStream::Stats stats = send_stream.GetStats();
EXPECT_EQ(kSsrc, stats.local_ssrc);
@@ -243,7 +258,8 @@
TEST(AudioSendStreamTest, GetStatsTypingNoiseDetected) {
ConfigHelper helper;
internal::AudioSendStream send_stream(helper.config(), helper.audio_state(),
- helper.congestion_controller());
+ helper.congestion_controller(),
+ helper.bitrate_allocator());
helper.SetupMockForGetStats();
EXPECT_FALSE(send_stream.GetStats().typing_noise_detected);