| Index: webrtc/audio/audio_send_stream_unittest.cc
|
| diff --git a/webrtc/audio/audio_send_stream_unittest.cc b/webrtc/audio/audio_send_stream_unittest.cc
|
| index 4b7415a738969e8805de751444f4c50c1e85bd3e..9ae0a879990db1e859426b389783691ac67fa0e0 100644
|
| --- a/webrtc/audio/audio_send_stream_unittest.cc
|
| +++ b/webrtc/audio/audio_send_stream_unittest.cc
|
| @@ -32,6 +32,8 @@ namespace test {
|
| namespace {
|
|
|
| using testing::_;
|
| +using testing::Eq;
|
| +using testing::Ne;
|
| using testing::Return;
|
|
|
| const int kChannelId = 1;
|
| @@ -62,7 +64,7 @@ class MockLimitObserver : public BitrateAllocator::LimitObserver {
|
| };
|
|
|
| struct ConfigHelper {
|
| - ConfigHelper()
|
| + explicit ConfigHelper(bool audio_bwe_enabled)
|
| : simulated_clock_(123456),
|
| stream_config_(nullptr),
|
| congestion_controller_(&simulated_clock_,
|
| @@ -87,7 +89,7 @@ struct ConfigHelper {
|
| config.audio_mixer = AudioMixerImpl::Create();
|
| audio_state_ = AudioState::Create(config);
|
|
|
| - SetupDefaultChannelProxy();
|
| + SetupDefaultChannelProxy(audio_bwe_enabled);
|
|
|
| EXPECT_CALL(voice_engine_, ChannelProxyFactory(kChannelId))
|
| .WillOnce(Invoke([this](int channel_id) {
|
| @@ -102,8 +104,12 @@ struct ConfigHelper {
|
| stream_config_.rtp.c_name = kCName;
|
| stream_config_.rtp.extensions.push_back(
|
| RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId));
|
| - stream_config_.rtp.extensions.push_back(RtpExtension(
|
| - RtpExtension::kTransportSequenceNumberUri, kTransportSequenceNumberId));
|
| + if (audio_bwe_enabled) {
|
| + stream_config_.rtp.extensions.push_back(
|
| + RtpExtension(RtpExtension::kTransportSequenceNumberUri,
|
| + kTransportSequenceNumberId));
|
| + stream_config_.send_codec_spec.transport_cc_enabled = true;
|
| + }
|
| // Use ISAC as default codec so as to prevent unnecessary |voice_engine_|
|
| // calls from the default ctor behavior.
|
| stream_config_.send_codec_spec.codec_inst = kIsacCodec;
|
| @@ -123,7 +129,7 @@ struct ConfigHelper {
|
| RtcEventLog* event_log() { return &event_log_; }
|
| MockVoiceEngine* voice_engine() { return &voice_engine_; }
|
|
|
| - void SetupDefaultChannelProxy() {
|
| + void SetupDefaultChannelProxy(bool audio_bwe_enabled) {
|
| using testing::StrEq;
|
| channel_proxy_ = new testing::StrictMock<MockVoEChannelProxy>();
|
| EXPECT_CALL(*channel_proxy_, SetRTCPStatus(true)).Times(1);
|
| @@ -133,15 +139,25 @@ struct ConfigHelper {
|
| EXPECT_CALL(*channel_proxy_,
|
| SetSendAudioLevelIndicationStatus(true, kAudioLevelId))
|
| .Times(1);
|
| - EXPECT_CALL(*channel_proxy_,
|
| - EnableSendTransportSequenceNumber(kTransportSequenceNumberId))
|
| - .Times(1);
|
| - EXPECT_CALL(*channel_proxy_,
|
| - RegisterSenderCongestionControlObjects(
|
| - congestion_controller_.pacer(),
|
| - congestion_controller_.GetTransportFeedbackObserver(),
|
| - packet_router()))
|
| - .Times(1);
|
| +
|
| + if (audio_bwe_enabled) {
|
| + EXPECT_CALL(*channel_proxy_,
|
| + EnableSendTransportSequenceNumber(kTransportSequenceNumberId))
|
| + .Times(1);
|
| + EXPECT_CALL(*channel_proxy_,
|
| + RegisterSenderCongestionControlObjects(
|
| + congestion_controller_.pacer(),
|
| + congestion_controller_.GetTransportFeedbackObserver(),
|
| + packet_router(), Ne(nullptr)))
|
| + .Times(1);
|
| + } else {
|
| + EXPECT_CALL(*channel_proxy_,
|
| + RegisterSenderCongestionControlObjects(
|
| + congestion_controller_.pacer(),
|
| + congestion_controller_.GetTransportFeedbackObserver(),
|
| + packet_router(), Eq(nullptr)))
|
| + .Times(1);
|
| + }
|
| EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects()).Times(1);
|
| EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr)).Times(1);
|
| EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport()).Times(1);
|
| @@ -271,7 +287,7 @@ TEST(AudioSendStreamTest, ConfigToString) {
|
| }
|
|
|
| TEST(AudioSendStreamTest, ConstructDestruct) {
|
| - ConfigHelper helper;
|
| + ConfigHelper helper(false);
|
| internal::AudioSendStream send_stream(
|
| helper.config(), helper.audio_state(), helper.worker_queue(),
|
| helper.packet_router(), helper.congestion_controller(),
|
| @@ -279,7 +295,7 @@ TEST(AudioSendStreamTest, ConstructDestruct) {
|
| }
|
|
|
| TEST(AudioSendStreamTest, SendTelephoneEvent) {
|
| - ConfigHelper helper;
|
| + ConfigHelper helper(false);
|
| internal::AudioSendStream send_stream(
|
| helper.config(), helper.audio_state(), helper.worker_queue(),
|
| helper.packet_router(), helper.congestion_controller(),
|
| @@ -291,7 +307,7 @@ TEST(AudioSendStreamTest, SendTelephoneEvent) {
|
| }
|
|
|
| TEST(AudioSendStreamTest, SetMuted) {
|
| - ConfigHelper helper;
|
| + ConfigHelper helper(false);
|
| internal::AudioSendStream send_stream(
|
| helper.config(), helper.audio_state(), helper.worker_queue(),
|
| helper.packet_router(), helper.congestion_controller(),
|
| @@ -300,8 +316,24 @@ TEST(AudioSendStreamTest, SetMuted) {
|
| send_stream.SetMuted(true);
|
| }
|
|
|
| +TEST(AudioSendStreamTest, AudioBweCorrectObjectsOnChannelProxy) {
|
| + ConfigHelper helper(true);
|
| + internal::AudioSendStream send_stream(
|
| + helper.config(), helper.audio_state(), helper.worker_queue(),
|
| + helper.packet_router(), helper.congestion_controller(),
|
| + helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
|
| +}
|
| +
|
| +TEST(AudioSendStreamTest, NoAudioBweCorrectObjectsOnChannelProxy) {
|
| + ConfigHelper helper(false);
|
| + internal::AudioSendStream send_stream(
|
| + helper.config(), helper.audio_state(), helper.worker_queue(),
|
| + helper.packet_router(), helper.congestion_controller(),
|
| + helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats());
|
| +}
|
| +
|
| TEST(AudioSendStreamTest, GetStats) {
|
| - ConfigHelper helper;
|
| + ConfigHelper helper(false);
|
| internal::AudioSendStream send_stream(
|
| helper.config(), helper.audio_state(), helper.worker_queue(),
|
| helper.packet_router(), helper.congestion_controller(),
|
| @@ -332,7 +364,7 @@ TEST(AudioSendStreamTest, GetStats) {
|
| }
|
|
|
| TEST(AudioSendStreamTest, GetStatsTypingNoiseDetected) {
|
| - ConfigHelper helper;
|
| + ConfigHelper helper(false);
|
| internal::AudioSendStream send_stream(
|
| helper.config(), helper.audio_state(), helper.worker_queue(),
|
| helper.packet_router(), helper.congestion_controller(),
|
| @@ -351,7 +383,7 @@ TEST(AudioSendStreamTest, GetStatsTypingNoiseDetected) {
|
| }
|
|
|
| TEST(AudioSendStreamTest, SendCodecAppliesConfigParams) {
|
| - ConfigHelper helper;
|
| + ConfigHelper helper(false);
|
| auto stream_config = helper.config();
|
| const CodecInst kOpusCodec = {111, "opus", 48000, 960, 2, 64000};
|
| stream_config.send_codec_spec.codec_inst = kOpusCodec;
|
| @@ -396,7 +428,7 @@ TEST(AudioSendStreamTest, SendCodecAppliesConfigParams) {
|
| // VAD is applied when codec is mono and the CNG frequency matches the codec
|
| // sample rate.
|
| TEST(AudioSendStreamTest, SendCodecCanApplyVad) {
|
| - ConfigHelper helper;
|
| + ConfigHelper helper(false);
|
| auto stream_config = helper.config();
|
| const CodecInst kG722Codec = {9, "g722", 8000, 160, 1, 16000};
|
| stream_config.send_codec_spec.codec_inst = kG722Codec;
|
| @@ -411,7 +443,7 @@ TEST(AudioSendStreamTest, SendCodecCanApplyVad) {
|
| }
|
|
|
| TEST(AudioSendStreamTest, DoesNotPassHigherBitrateThanMaxBitrate) {
|
| - ConfigHelper helper;
|
| + ConfigHelper helper(false);
|
| internal::AudioSendStream send_stream(
|
| helper.config(), helper.audio_state(), helper.worker_queue(),
|
| helper.packet_router(), helper.congestion_controller(),
|
| @@ -423,7 +455,7 @@ TEST(AudioSendStreamTest, DoesNotPassHigherBitrateThanMaxBitrate) {
|
| }
|
|
|
| TEST(AudioSendStreamTest, ProbingIntervalOnBitrateUpdated) {
|
| - ConfigHelper helper;
|
| + ConfigHelper helper(false);
|
| internal::AudioSendStream send_stream(
|
| helper.config(), helper.audio_state(), helper.worker_queue(),
|
| helper.packet_router(), helper.congestion_controller(),
|
|
|