| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #include <string> | 11 #include <string> |
| 12 #include <vector> | 12 #include <vector> |
| 13 | 13 |
| 14 #include "webrtc/audio/audio_send_stream.h" | 14 #include "webrtc/audio/audio_send_stream.h" |
| 15 #include "webrtc/audio/audio_state.h" | 15 #include "webrtc/audio/audio_state.h" |
| 16 #include "webrtc/audio/conversion.h" | 16 #include "webrtc/audio/conversion.h" |
| 17 #include "webrtc/base/task_queue.h" | 17 #include "webrtc/base/task_queue.h" |
| 18 #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h" | 18 #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h" |
| 19 #include "webrtc/modules/audio_mixer/audio_mixer_impl.h" | 19 #include "webrtc/modules/audio_mixer/audio_mixer_impl.h" |
| 20 #include "webrtc/modules/audio_processing/include/mock_audio_processing.h" | 20 #include "webrtc/modules/audio_processing/include/mock_audio_processing.h" |
| 21 #include "webrtc/modules/congestion_controller/include/congestion_controller.h" | 21 #include "webrtc/modules/congestion_controller/include/congestion_controller.h" |
| 22 #include "webrtc/modules/congestion_controller/include/mock/mock_congestion_cont
roller.h" | 22 #include "webrtc/modules/congestion_controller/include/mock/mock_congestion_cont
roller.h" |
| 23 #include "webrtc/modules/pacing/paced_sender.h" | 23 #include "webrtc/modules/pacing/paced_sender.h" |
| 24 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra
te_estimator.h" | 24 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra
te_estimator.h" |
| 25 #include "webrtc/modules/rtp_rtcp/mocks/mock_rtcp_rtt_stats.h" |
| 25 #include "webrtc/test/gtest.h" | 26 #include "webrtc/test/gtest.h" |
| 26 #include "webrtc/test/mock_voe_channel_proxy.h" | 27 #include "webrtc/test/mock_voe_channel_proxy.h" |
| 27 #include "webrtc/test/mock_voice_engine.h" | 28 #include "webrtc/test/mock_voice_engine.h" |
| 28 | 29 |
| 29 namespace webrtc { | 30 namespace webrtc { |
| 30 namespace test { | 31 namespace test { |
| 31 namespace { | 32 namespace { |
| 32 | 33 |
| 33 using testing::_; | 34 using testing::_; |
| 34 using testing::Return; | 35 using testing::Return; |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 congestion_controller_.pacer(), | 141 congestion_controller_.pacer(), |
| 141 congestion_controller_.GetTransportFeedbackObserver(), | 142 congestion_controller_.GetTransportFeedbackObserver(), |
| 142 packet_router())) | 143 packet_router())) |
| 143 .Times(1); | 144 .Times(1); |
| 144 EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects()).Times(1); | 145 EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects()).Times(1); |
| 145 EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr)).Times(1); | 146 EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr)).Times(1); |
| 146 EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport()).Times(1); | 147 EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport()).Times(1); |
| 147 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::NotNull())).Times(1); | 148 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::NotNull())).Times(1); |
| 148 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::IsNull())) | 149 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::IsNull())) |
| 149 .Times(1); // Destructor resets the event log | 150 .Times(1); // Destructor resets the event log |
| 151 EXPECT_CALL(*channel_proxy_, SetRtcpRttStats(&rtcp_rtt_stats_)).Times(1); |
| 152 EXPECT_CALL(*channel_proxy_, SetRtcpRttStats(testing::IsNull())) |
| 153 .Times(1); // Destructor resets the rtt stats. |
| 150 } | 154 } |
| 151 | 155 |
| 152 void SetupMockForSetupSendCodec() { | 156 void SetupMockForSetupSendCodec() { |
| 153 EXPECT_CALL(voice_engine_, SetVADStatus(kChannelId, false, _, _)) | 157 EXPECT_CALL(voice_engine_, SetVADStatus(kChannelId, false, _, _)) |
| 154 .WillOnce(Return(0)); | 158 .WillOnce(Return(0)); |
| 155 EXPECT_CALL(voice_engine_, SetFECStatus(kChannelId, false)) | 159 EXPECT_CALL(voice_engine_, SetFECStatus(kChannelId, false)) |
| 156 .WillOnce(Return(0)); | 160 .WillOnce(Return(0)); |
| 157 EXPECT_CALL(*channel_proxy_, DisableAudioNetworkAdaptor()); | 161 EXPECT_CALL(*channel_proxy_, DisableAudioNetworkAdaptor()); |
| 158 // Let |GetSendCodec| return -1 for the first time to indicate that no send | 162 // Let |GetSendCodec| return -1 for the first time to indicate that no send |
| 159 // codec has been set. | 163 // codec has been set. |
| 160 EXPECT_CALL(voice_engine_, GetSendCodec(kChannelId, _)) | 164 EXPECT_CALL(voice_engine_, GetSendCodec(kChannelId, _)) |
| 161 .WillOnce(Return(-1)); | 165 .WillOnce(Return(-1)); |
| 162 EXPECT_CALL(voice_engine_, SetSendCodec(kChannelId, _)).WillOnce(Return(0)); | 166 EXPECT_CALL(voice_engine_, SetSendCodec(kChannelId, _)).WillOnce(Return(0)); |
| 163 } | 167 } |
| 168 RtcpRttStats* rtcp_rtt_stats() { return &rtcp_rtt_stats_; } |
| 164 | 169 |
| 165 void SetupMockForSendTelephoneEvent() { | 170 void SetupMockForSendTelephoneEvent() { |
| 166 EXPECT_TRUE(channel_proxy_); | 171 EXPECT_TRUE(channel_proxy_); |
| 167 EXPECT_CALL(*channel_proxy_, | 172 EXPECT_CALL(*channel_proxy_, |
| 168 SetSendTelephoneEventPayloadType(kTelephoneEventPayloadType, | 173 SetSendTelephoneEventPayloadType(kTelephoneEventPayloadType, |
| 169 kTelephoneEventPayloadFrequency)) | 174 kTelephoneEventPayloadFrequency)) |
| 170 .WillOnce(Return(true)); | 175 .WillOnce(Return(true)); |
| 171 EXPECT_CALL(*channel_proxy_, | 176 EXPECT_CALL(*channel_proxy_, |
| 172 SendTelephoneEventOutband(kTelephoneEventCode, kTelephoneEventDuration)) | 177 SendTelephoneEventOutband(kTelephoneEventCode, kTelephoneEventDuration)) |
| 173 .WillOnce(Return(true)); | 178 .WillOnce(Return(true)); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 rtc::scoped_refptr<AudioState> audio_state_; | 223 rtc::scoped_refptr<AudioState> audio_state_; |
| 219 AudioSendStream::Config stream_config_; | 224 AudioSendStream::Config stream_config_; |
| 220 testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr; | 225 testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr; |
| 221 testing::NiceMock<MockCongestionObserver> bitrate_observer_; | 226 testing::NiceMock<MockCongestionObserver> bitrate_observer_; |
| 222 testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_; | 227 testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_; |
| 223 MockAudioProcessing audio_processing_; | 228 MockAudioProcessing audio_processing_; |
| 224 AudioProcessing::AudioProcessingStatistics audio_processing_stats_; | 229 AudioProcessing::AudioProcessingStatistics audio_processing_stats_; |
| 225 PacketRouter packet_router_; | 230 PacketRouter packet_router_; |
| 226 CongestionController congestion_controller_; | 231 CongestionController congestion_controller_; |
| 227 MockRtcEventLog event_log_; | 232 MockRtcEventLog event_log_; |
| 233 MockRtcpRttStats rtcp_rtt_stats_; |
| 228 testing::NiceMock<MockLimitObserver> limit_observer_; | 234 testing::NiceMock<MockLimitObserver> limit_observer_; |
| 229 BitrateAllocator bitrate_allocator_; | 235 BitrateAllocator bitrate_allocator_; |
| 230 // |worker_queue| is defined last to ensure all pending tasks are cancelled | 236 // |worker_queue| is defined last to ensure all pending tasks are cancelled |
| 231 // and deleted before any other members. | 237 // and deleted before any other members. |
| 232 rtc::TaskQueue worker_queue_; | 238 rtc::TaskQueue worker_queue_; |
| 233 }; | 239 }; |
| 234 } // namespace | 240 } // namespace |
| 235 | 241 |
| 236 TEST(AudioSendStreamTest, ConfigToString) { | 242 TEST(AudioSendStreamTest, ConfigToString) { |
| 237 AudioSendStream::Config config(nullptr); | 243 AudioSendStream::Config config(nullptr); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 263 "60, codec_inst: {pltype: 103, plname: \"isac\", plfreq: 16000, pacsize: " | 269 "60, codec_inst: {pltype: 103, plname: \"isac\", plfreq: 16000, pacsize: " |
| 264 "320, channels: 1, rate: 32000}}}", | 270 "320, channels: 1, rate: 32000}}}", |
| 265 config.ToString()); | 271 config.ToString()); |
| 266 } | 272 } |
| 267 | 273 |
| 268 TEST(AudioSendStreamTest, ConstructDestruct) { | 274 TEST(AudioSendStreamTest, ConstructDestruct) { |
| 269 ConfigHelper helper; | 275 ConfigHelper helper; |
| 270 internal::AudioSendStream send_stream( | 276 internal::AudioSendStream send_stream( |
| 271 helper.config(), helper.audio_state(), helper.worker_queue(), | 277 helper.config(), helper.audio_state(), helper.worker_queue(), |
| 272 helper.packet_router(), helper.congestion_controller(), | 278 helper.packet_router(), helper.congestion_controller(), |
| 273 helper.bitrate_allocator(), helper.event_log()); | 279 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); |
| 274 } | 280 } |
| 275 | 281 |
| 276 TEST(AudioSendStreamTest, SendTelephoneEvent) { | 282 TEST(AudioSendStreamTest, SendTelephoneEvent) { |
| 277 ConfigHelper helper; | 283 ConfigHelper helper; |
| 278 internal::AudioSendStream send_stream( | 284 internal::AudioSendStream send_stream( |
| 279 helper.config(), helper.audio_state(), helper.worker_queue(), | 285 helper.config(), helper.audio_state(), helper.worker_queue(), |
| 280 helper.packet_router(), helper.congestion_controller(), | 286 helper.packet_router(), helper.congestion_controller(), |
| 281 helper.bitrate_allocator(), helper.event_log()); | 287 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); |
| 282 helper.SetupMockForSendTelephoneEvent(); | 288 helper.SetupMockForSendTelephoneEvent(); |
| 283 EXPECT_TRUE(send_stream.SendTelephoneEvent(kTelephoneEventPayloadType, | 289 EXPECT_TRUE(send_stream.SendTelephoneEvent(kTelephoneEventPayloadType, |
| 284 kTelephoneEventPayloadFrequency, kTelephoneEventCode, | 290 kTelephoneEventPayloadFrequency, kTelephoneEventCode, |
| 285 kTelephoneEventDuration)); | 291 kTelephoneEventDuration)); |
| 286 } | 292 } |
| 287 | 293 |
| 288 TEST(AudioSendStreamTest, SetMuted) { | 294 TEST(AudioSendStreamTest, SetMuted) { |
| 289 ConfigHelper helper; | 295 ConfigHelper helper; |
| 290 internal::AudioSendStream send_stream( | 296 internal::AudioSendStream send_stream( |
| 291 helper.config(), helper.audio_state(), helper.worker_queue(), | 297 helper.config(), helper.audio_state(), helper.worker_queue(), |
| 292 helper.packet_router(), helper.congestion_controller(), | 298 helper.packet_router(), helper.congestion_controller(), |
| 293 helper.bitrate_allocator(), helper.event_log()); | 299 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); |
| 294 EXPECT_CALL(*helper.channel_proxy(), SetInputMute(true)); | 300 EXPECT_CALL(*helper.channel_proxy(), SetInputMute(true)); |
| 295 send_stream.SetMuted(true); | 301 send_stream.SetMuted(true); |
| 296 } | 302 } |
| 297 | 303 |
| 298 TEST(AudioSendStreamTest, GetStats) { | 304 TEST(AudioSendStreamTest, GetStats) { |
| 299 ConfigHelper helper; | 305 ConfigHelper helper; |
| 300 internal::AudioSendStream send_stream( | 306 internal::AudioSendStream send_stream( |
| 301 helper.config(), helper.audio_state(), helper.worker_queue(), | 307 helper.config(), helper.audio_state(), helper.worker_queue(), |
| 302 helper.packet_router(), helper.congestion_controller(), | 308 helper.packet_router(), helper.congestion_controller(), |
| 303 helper.bitrate_allocator(), helper.event_log()); | 309 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); |
| 304 helper.SetupMockForGetStats(); | 310 helper.SetupMockForGetStats(); |
| 305 AudioSendStream::Stats stats = send_stream.GetStats(); | 311 AudioSendStream::Stats stats = send_stream.GetStats(); |
| 306 EXPECT_EQ(kSsrc, stats.local_ssrc); | 312 EXPECT_EQ(kSsrc, stats.local_ssrc); |
| 307 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesSent), stats.bytes_sent); | 313 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesSent), stats.bytes_sent); |
| 308 EXPECT_EQ(kCallStats.packetsSent, stats.packets_sent); | 314 EXPECT_EQ(kCallStats.packetsSent, stats.packets_sent); |
| 309 EXPECT_EQ(static_cast<int32_t>(kReportBlock.cumulative_num_packets_lost), | 315 EXPECT_EQ(static_cast<int32_t>(kReportBlock.cumulative_num_packets_lost), |
| 310 stats.packets_lost); | 316 stats.packets_lost); |
| 311 EXPECT_EQ(Q8ToFloat(kReportBlock.fraction_lost), stats.fraction_lost); | 317 EXPECT_EQ(Q8ToFloat(kReportBlock.fraction_lost), stats.fraction_lost); |
| 312 EXPECT_EQ(std::string(kIsacCodec.plname), stats.codec_name); | 318 EXPECT_EQ(std::string(kIsacCodec.plname), stats.codec_name); |
| 313 EXPECT_EQ(static_cast<int32_t>(kReportBlock.extended_highest_sequence_number), | 319 EXPECT_EQ(static_cast<int32_t>(kReportBlock.extended_highest_sequence_number), |
| (...skipping 10 matching lines...) Expand all Loading... |
| 324 EXPECT_EQ(kEchoReturnLossEnhancement, stats.echo_return_loss_enhancement); | 330 EXPECT_EQ(kEchoReturnLossEnhancement, stats.echo_return_loss_enhancement); |
| 325 EXPECT_EQ(kResidualEchoLikelihood, stats.residual_echo_likelihood); | 331 EXPECT_EQ(kResidualEchoLikelihood, stats.residual_echo_likelihood); |
| 326 EXPECT_FALSE(stats.typing_noise_detected); | 332 EXPECT_FALSE(stats.typing_noise_detected); |
| 327 } | 333 } |
| 328 | 334 |
| 329 TEST(AudioSendStreamTest, GetStatsTypingNoiseDetected) { | 335 TEST(AudioSendStreamTest, GetStatsTypingNoiseDetected) { |
| 330 ConfigHelper helper; | 336 ConfigHelper helper; |
| 331 internal::AudioSendStream send_stream( | 337 internal::AudioSendStream send_stream( |
| 332 helper.config(), helper.audio_state(), helper.worker_queue(), | 338 helper.config(), helper.audio_state(), helper.worker_queue(), |
| 333 helper.packet_router(), helper.congestion_controller(), | 339 helper.packet_router(), helper.congestion_controller(), |
| 334 helper.bitrate_allocator(), helper.event_log()); | 340 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); |
| 335 helper.SetupMockForGetStats(); | 341 helper.SetupMockForGetStats(); |
| 336 EXPECT_FALSE(send_stream.GetStats().typing_noise_detected); | 342 EXPECT_FALSE(send_stream.GetStats().typing_noise_detected); |
| 337 | 343 |
| 338 internal::AudioState* internal_audio_state = | 344 internal::AudioState* internal_audio_state = |
| 339 static_cast<internal::AudioState*>(helper.audio_state().get()); | 345 static_cast<internal::AudioState*>(helper.audio_state().get()); |
| 340 VoiceEngineObserver* voe_observer = | 346 VoiceEngineObserver* voe_observer = |
| 341 static_cast<VoiceEngineObserver*>(internal_audio_state); | 347 static_cast<VoiceEngineObserver*>(internal_audio_state); |
| 342 voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_WARNING); | 348 voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_WARNING); |
| 343 EXPECT_TRUE(send_stream.GetStats().typing_noise_detected); | 349 EXPECT_TRUE(send_stream.GetStats().typing_noise_detected); |
| 344 voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_OFF_WARNING); | 350 voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_OFF_WARNING); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 EXPECT_CALL( | 384 EXPECT_CALL( |
| 379 *helper.channel_proxy(), | 385 *helper.channel_proxy(), |
| 380 SetReceiverFrameLengthRange(stream_config.send_codec_spec.min_ptime_ms, | 386 SetReceiverFrameLengthRange(stream_config.send_codec_spec.min_ptime_ms, |
| 381 stream_config.send_codec_spec.max_ptime_ms)); | 387 stream_config.send_codec_spec.max_ptime_ms)); |
| 382 EXPECT_CALL( | 388 EXPECT_CALL( |
| 383 *helper.channel_proxy(), | 389 *helper.channel_proxy(), |
| 384 EnableAudioNetworkAdaptor(*stream_config.audio_network_adaptor_config)); | 390 EnableAudioNetworkAdaptor(*stream_config.audio_network_adaptor_config)); |
| 385 internal::AudioSendStream send_stream( | 391 internal::AudioSendStream send_stream( |
| 386 stream_config, helper.audio_state(), helper.worker_queue(), | 392 stream_config, helper.audio_state(), helper.worker_queue(), |
| 387 helper.packet_router(), helper.congestion_controller(), | 393 helper.packet_router(), helper.congestion_controller(), |
| 388 helper.bitrate_allocator(), helper.event_log()); | 394 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); |
| 389 } | 395 } |
| 390 | 396 |
| 391 // VAD is applied when codec is mono and the CNG frequency matches the codec | 397 // VAD is applied when codec is mono and the CNG frequency matches the codec |
| 392 // sample rate. | 398 // sample rate. |
| 393 TEST(AudioSendStreamTest, SendCodecCanApplyVad) { | 399 TEST(AudioSendStreamTest, SendCodecCanApplyVad) { |
| 394 ConfigHelper helper; | 400 ConfigHelper helper; |
| 395 auto stream_config = helper.config(); | 401 auto stream_config = helper.config(); |
| 396 const CodecInst kG722Codec = {9, "g722", 8000, 160, 1, 16000}; | 402 const CodecInst kG722Codec = {9, "g722", 8000, 160, 1, 16000}; |
| 397 stream_config.send_codec_spec.codec_inst = kG722Codec; | 403 stream_config.send_codec_spec.codec_inst = kG722Codec; |
| 398 stream_config.send_codec_spec.cng_plfreq = 8000; | 404 stream_config.send_codec_spec.cng_plfreq = 8000; |
| 399 stream_config.send_codec_spec.cng_payload_type = 105; | 405 stream_config.send_codec_spec.cng_payload_type = 105; |
| 400 EXPECT_CALL(*helper.voice_engine(), SetVADStatus(kChannelId, true, _, _)) | 406 EXPECT_CALL(*helper.voice_engine(), SetVADStatus(kChannelId, true, _, _)) |
| 401 .WillOnce(Return(0)); | 407 .WillOnce(Return(0)); |
| 402 internal::AudioSendStream send_stream( | 408 internal::AudioSendStream send_stream( |
| 403 stream_config, helper.audio_state(), helper.worker_queue(), | 409 stream_config, helper.audio_state(), helper.worker_queue(), |
| 404 helper.packet_router(), helper.congestion_controller(), | 410 helper.packet_router(), helper.congestion_controller(), |
| 405 helper.bitrate_allocator(), helper.event_log()); | 411 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); |
| 406 } | 412 } |
| 407 | 413 |
| 408 TEST(AudioSendStreamTest, DoesNotPassHigherBitrateThanMaxBitrate) { | 414 TEST(AudioSendStreamTest, DoesNotPassHigherBitrateThanMaxBitrate) { |
| 409 ConfigHelper helper; | 415 ConfigHelper helper; |
| 410 internal::AudioSendStream send_stream( | 416 internal::AudioSendStream send_stream( |
| 411 helper.config(), helper.audio_state(), helper.worker_queue(), | 417 helper.config(), helper.audio_state(), helper.worker_queue(), |
| 412 helper.packet_router(), helper.congestion_controller(), | 418 helper.packet_router(), helper.congestion_controller(), |
| 413 helper.bitrate_allocator(), helper.event_log()); | 419 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); |
| 414 EXPECT_CALL(*helper.channel_proxy(), | 420 EXPECT_CALL(*helper.channel_proxy(), |
| 415 SetBitrate(helper.config().max_bitrate_bps, _)); | 421 SetBitrate(helper.config().max_bitrate_bps, _)); |
| 416 send_stream.OnBitrateUpdated(helper.config().max_bitrate_bps + 5000, 0.0, 50, | 422 send_stream.OnBitrateUpdated(helper.config().max_bitrate_bps + 5000, 0.0, 50, |
| 417 6000); | 423 6000); |
| 418 } | 424 } |
| 419 | 425 |
| 420 TEST(AudioSendStreamTest, ProbingIntervalOnBitrateUpdated) { | 426 TEST(AudioSendStreamTest, ProbingIntervalOnBitrateUpdated) { |
| 421 ConfigHelper helper; | 427 ConfigHelper helper; |
| 422 internal::AudioSendStream send_stream( | 428 internal::AudioSendStream send_stream( |
| 423 helper.config(), helper.audio_state(), helper.worker_queue(), | 429 helper.config(), helper.audio_state(), helper.worker_queue(), |
| 424 helper.packet_router(), helper.congestion_controller(), | 430 helper.packet_router(), helper.congestion_controller(), |
| 425 helper.bitrate_allocator(), helper.event_log()); | 431 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); |
| 426 EXPECT_CALL(*helper.channel_proxy(), SetBitrate(_, 5000)); | 432 EXPECT_CALL(*helper.channel_proxy(), SetBitrate(_, 5000)); |
| 427 send_stream.OnBitrateUpdated(50000, 0.0, 50, 5000); | 433 send_stream.OnBitrateUpdated(50000, 0.0, 50, 5000); |
| 428 } | 434 } |
| 429 | 435 |
| 430 } // namespace test | 436 } // namespace test |
| 431 } // namespace webrtc | 437 } // namespace webrtc |
| OLD | NEW |