Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1697)

Side by Side Diff: webrtc/audio/audio_send_stream_unittest.cc

Issue 2685673003: Define RtpTransportControllerSendInterface. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/call/rtp_transport_controller.h"
18 #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h" 19 #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h"
19 #include "webrtc/modules/audio_mixer/audio_mixer_impl.h" 20 #include "webrtc/modules/audio_mixer/audio_mixer_impl.h"
20 #include "webrtc/modules/audio_processing/include/mock_audio_processing.h" 21 #include "webrtc/modules/audio_processing/include/mock_audio_processing.h"
21 #include "webrtc/modules/congestion_controller/include/congestion_controller.h" 22 #include "webrtc/modules/congestion_controller/include/congestion_controller.h"
22 #include "webrtc/modules/congestion_controller/include/mock/mock_congestion_cont roller.h" 23 #include "webrtc/modules/congestion_controller/include/mock/mock_congestion_cont roller.h"
23 #include "webrtc/modules/pacing/paced_sender.h" 24 #include "webrtc/modules/pacing/paced_sender.h"
24 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra te_estimator.h" 25 #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" 26 #include "webrtc/modules/rtp_rtcp/mocks/mock_rtcp_rtt_stats.h"
26 #include "webrtc/test/gtest.h" 27 #include "webrtc/test/gtest.h"
27 #include "webrtc/test/mock_voe_channel_proxy.h" 28 #include "webrtc/test/mock_voe_channel_proxy.h"
(...skipping 27 matching lines...) Expand all
55 const CodecInst kIsacCodec = {103, "isac", 16000, 320, 1, 32000}; 56 const CodecInst kIsacCodec = {103, "isac", 16000, 320, 1, 32000};
56 57
57 class MockLimitObserver : public BitrateAllocator::LimitObserver { 58 class MockLimitObserver : public BitrateAllocator::LimitObserver {
58 public: 59 public:
59 MOCK_METHOD2(OnAllocationLimitsChanged, 60 MOCK_METHOD2(OnAllocationLimitsChanged,
60 void(uint32_t min_send_bitrate_bps, 61 void(uint32_t min_send_bitrate_bps,
61 uint32_t max_padding_bitrate_bps)); 62 uint32_t max_padding_bitrate_bps));
62 }; 63 };
63 64
64 struct ConfigHelper { 65 struct ConfigHelper {
66 class FakeRtpTransportController
67 : public RtpTransportControllerSenderInterface {
68 public:
69 explicit FakeRtpTransportController(RtcEventLog* event_log)
70 : simulated_clock_(123456),
71 congestion_controller_(&simulated_clock_,
72 &bitrate_observer_,
73 &remote_bitrate_observer_,
74 event_log,
75 &packet_router_) {}
76 CongestionController* congestion_controller() override {
77 return &congestion_controller_;
78 }
79 VieRemb* remb() override { return nullptr; }
80 PacketRouter* packet_router() override { return &packet_router_; }
81
82 private:
83 SimulatedClock simulated_clock_;
84 testing::NiceMock<MockCongestionObserver> bitrate_observer_;
85 testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_;
86 PacketRouter packet_router_;
87 CongestionController congestion_controller_;
88 };
89
65 ConfigHelper() 90 ConfigHelper()
66 : simulated_clock_(123456), 91 : stream_config_(nullptr),
67 stream_config_(nullptr), 92 fake_transport_(&event_log_),
68 congestion_controller_(&simulated_clock_,
69 &bitrate_observer_,
70 &remote_bitrate_observer_,
71 &event_log_,
72 &packet_router_),
73 bitrate_allocator_(&limit_observer_), 93 bitrate_allocator_(&limit_observer_),
74 worker_queue_("ConfigHelper_worker_queue") { 94 worker_queue_("ConfigHelper_worker_queue") {
75 using testing::Invoke; 95 using testing::Invoke;
76 96
77 EXPECT_CALL(voice_engine_, 97 EXPECT_CALL(voice_engine_,
78 RegisterVoiceEngineObserver(_)).WillOnce(Return(0)); 98 RegisterVoiceEngineObserver(_)).WillOnce(Return(0));
79 EXPECT_CALL(voice_engine_, 99 EXPECT_CALL(voice_engine_,
80 DeRegisterVoiceEngineObserver()).WillOnce(Return(0)); 100 DeRegisterVoiceEngineObserver()).WillOnce(Return(0));
81 EXPECT_CALL(voice_engine_, audio_device_module()); 101 EXPECT_CALL(voice_engine_, audio_device_module());
82 EXPECT_CALL(voice_engine_, audio_processing()); 102 EXPECT_CALL(voice_engine_, audio_processing());
(...skipping 24 matching lines...) Expand all
107 // Use ISAC as default codec so as to prevent unnecessary |voice_engine_| 127 // Use ISAC as default codec so as to prevent unnecessary |voice_engine_|
108 // calls from the default ctor behavior. 128 // calls from the default ctor behavior.
109 stream_config_.send_codec_spec.codec_inst = kIsacCodec; 129 stream_config_.send_codec_spec.codec_inst = kIsacCodec;
110 stream_config_.min_bitrate_bps = 10000; 130 stream_config_.min_bitrate_bps = 10000;
111 stream_config_.max_bitrate_bps = 65000; 131 stream_config_.max_bitrate_bps = 65000;
112 } 132 }
113 133
114 AudioSendStream::Config& config() { return stream_config_; } 134 AudioSendStream::Config& config() { return stream_config_; }
115 rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; } 135 rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; }
116 MockVoEChannelProxy* channel_proxy() { return channel_proxy_; } 136 MockVoEChannelProxy* channel_proxy() { return channel_proxy_; }
117 PacketRouter* packet_router() { return &packet_router_; } 137 RtpTransportControllerSenderInterface* transport() {
118 CongestionController* congestion_controller() { 138 return &fake_transport_;
119 return &congestion_controller_;
120 } 139 }
121 BitrateAllocator* bitrate_allocator() { return &bitrate_allocator_; } 140 BitrateAllocator* bitrate_allocator() { return &bitrate_allocator_; }
122 rtc::TaskQueue* worker_queue() { return &worker_queue_; } 141 rtc::TaskQueue* worker_queue() { return &worker_queue_; }
123 RtcEventLog* event_log() { return &event_log_; } 142 RtcEventLog* event_log() { return &event_log_; }
124 MockVoiceEngine* voice_engine() { return &voice_engine_; } 143 MockVoiceEngine* voice_engine() { return &voice_engine_; }
125 144
126 void SetupDefaultChannelProxy() { 145 void SetupDefaultChannelProxy() {
127 using testing::StrEq; 146 using testing::StrEq;
128 channel_proxy_ = new testing::StrictMock<MockVoEChannelProxy>(); 147 channel_proxy_ = new testing::StrictMock<MockVoEChannelProxy>();
129 EXPECT_CALL(*channel_proxy_, SetRTCPStatus(true)).Times(1); 148 EXPECT_CALL(*channel_proxy_, SetRTCPStatus(true)).Times(1);
130 EXPECT_CALL(*channel_proxy_, SetLocalSSRC(kSsrc)).Times(1); 149 EXPECT_CALL(*channel_proxy_, SetLocalSSRC(kSsrc)).Times(1);
131 EXPECT_CALL(*channel_proxy_, SetRTCP_CNAME(StrEq(kCName))).Times(1); 150 EXPECT_CALL(*channel_proxy_, SetRTCP_CNAME(StrEq(kCName))).Times(1);
132 EXPECT_CALL(*channel_proxy_, SetNACKStatus(true, 10)).Times(1); 151 EXPECT_CALL(*channel_proxy_, SetNACKStatus(true, 10)).Times(1);
133 EXPECT_CALL(*channel_proxy_, 152 EXPECT_CALL(*channel_proxy_,
134 SetSendAudioLevelIndicationStatus(true, kAudioLevelId)) 153 SetSendAudioLevelIndicationStatus(true, kAudioLevelId))
135 .Times(1); 154 .Times(1);
136 EXPECT_CALL(*channel_proxy_, 155 EXPECT_CALL(*channel_proxy_,
137 EnableSendTransportSequenceNumber(kTransportSequenceNumberId)) 156 EnableSendTransportSequenceNumber(kTransportSequenceNumberId))
138 .Times(1); 157 .Times(1);
139 EXPECT_CALL(*channel_proxy_, 158 EXPECT_CALL(*channel_proxy_,
140 RegisterSenderCongestionControlObjects( 159 RegisterSenderCongestionControlObjects(&fake_transport_))
141 congestion_controller_.pacer(),
142 congestion_controller_.GetTransportFeedbackObserver(),
143 packet_router()))
144 .Times(1); 160 .Times(1);
161
145 EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects()).Times(1); 162 EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects()).Times(1);
146 EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr)).Times(1); 163 EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr)).Times(1);
147 EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport()).Times(1); 164 EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport()).Times(1);
148 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::NotNull())).Times(1); 165 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::NotNull())).Times(1);
149 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::IsNull())) 166 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::IsNull()))
150 .Times(1); // Destructor resets the event log 167 .Times(1); // Destructor resets the event log
151 EXPECT_CALL(*channel_proxy_, SetRtcpRttStats(&rtcp_rtt_stats_)).Times(1); 168 EXPECT_CALL(*channel_proxy_, SetRtcpRttStats(&rtcp_rtt_stats_)).Times(1);
152 EXPECT_CALL(*channel_proxy_, SetRtcpRttStats(testing::IsNull())) 169 EXPECT_CALL(*channel_proxy_, SetRtcpRttStats(testing::IsNull()))
153 .Times(1); // Destructor resets the rtt stats. 170 .Times(1); // Destructor resets the rtt stats.
154 } 171 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 kEchoReturnLossEnhancement, kEchoReturnLossEnhancement, 227 kEchoReturnLossEnhancement, kEchoReturnLossEnhancement,
211 kEchoReturnLossEnhancement, kEchoReturnLossEnhancement); 228 kEchoReturnLossEnhancement, kEchoReturnLossEnhancement);
212 audio_processing_stats_.delay_median = kEchoDelayMedian; 229 audio_processing_stats_.delay_median = kEchoDelayMedian;
213 audio_processing_stats_.delay_standard_deviation = kEchoDelayStdDev; 230 audio_processing_stats_.delay_standard_deviation = kEchoDelayStdDev;
214 231
215 EXPECT_CALL(audio_processing_, GetStatistics()) 232 EXPECT_CALL(audio_processing_, GetStatistics())
216 .WillRepeatedly(Return(audio_processing_stats_)); 233 .WillRepeatedly(Return(audio_processing_stats_));
217 } 234 }
218 235
219 private: 236 private:
220 SimulatedClock simulated_clock_;
221 testing::StrictMock<MockVoiceEngine> voice_engine_; 237 testing::StrictMock<MockVoiceEngine> voice_engine_;
222 rtc::scoped_refptr<AudioState> audio_state_; 238 rtc::scoped_refptr<AudioState> audio_state_;
223 AudioSendStream::Config stream_config_; 239 AudioSendStream::Config stream_config_;
224 testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr; 240 testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr;
225 testing::NiceMock<MockCongestionObserver> bitrate_observer_;
226 testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_;
227 MockAudioProcessing audio_processing_; 241 MockAudioProcessing audio_processing_;
228 AudioProcessing::AudioProcessingStatistics audio_processing_stats_; 242 AudioProcessing::AudioProcessingStatistics audio_processing_stats_;
229 PacketRouter packet_router_; 243 FakeRtpTransportController fake_transport_;
230 CongestionController congestion_controller_;
231 MockRtcEventLog event_log_; 244 MockRtcEventLog event_log_;
232 MockRtcpRttStats rtcp_rtt_stats_; 245 MockRtcpRttStats rtcp_rtt_stats_;
233 testing::NiceMock<MockLimitObserver> limit_observer_; 246 testing::NiceMock<MockLimitObserver> limit_observer_;
234 BitrateAllocator bitrate_allocator_; 247 BitrateAllocator bitrate_allocator_;
235 // |worker_queue| is defined last to ensure all pending tasks are cancelled 248 // |worker_queue| is defined last to ensure all pending tasks are cancelled
236 // and deleted before any other members. 249 // and deleted before any other members.
237 rtc::TaskQueue worker_queue_; 250 rtc::TaskQueue worker_queue_;
238 }; 251 };
239 } // namespace 252 } // namespace
240 253
(...skipping 26 matching lines...) Expand all
267 "32000, cng_payload_type: 42, cng_plfreq: 56, min_ptime: 20, max_ptime: " 280 "32000, cng_payload_type: 42, cng_plfreq: 56, min_ptime: 20, max_ptime: "
268 "60, codec_inst: {pltype: 103, plname: \"isac\", plfreq: 16000, pacsize: " 281 "60, codec_inst: {pltype: 103, plname: \"isac\", plfreq: 16000, pacsize: "
269 "320, channels: 1, rate: 32000}}}", 282 "320, channels: 1, rate: 32000}}}",
270 config.ToString()); 283 config.ToString());
271 } 284 }
272 285
273 TEST(AudioSendStreamTest, ConstructDestruct) { 286 TEST(AudioSendStreamTest, ConstructDestruct) {
274 ConfigHelper helper; 287 ConfigHelper helper;
275 internal::AudioSendStream send_stream( 288 internal::AudioSendStream send_stream(
276 helper.config(), helper.audio_state(), helper.worker_queue(), 289 helper.config(), helper.audio_state(), helper.worker_queue(),
277 helper.packet_router(), helper.congestion_controller(), 290 helper.transport(), helper.bitrate_allocator(), helper.event_log(),
278 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); 291 helper.rtcp_rtt_stats());
279 } 292 }
280 293
281 TEST(AudioSendStreamTest, SendTelephoneEvent) { 294 TEST(AudioSendStreamTest, SendTelephoneEvent) {
282 ConfigHelper helper; 295 ConfigHelper helper;
283 internal::AudioSendStream send_stream( 296 internal::AudioSendStream send_stream(
284 helper.config(), helper.audio_state(), helper.worker_queue(), 297 helper.config(), helper.audio_state(), helper.worker_queue(),
285 helper.packet_router(), helper.congestion_controller(), 298 helper.transport(), helper.bitrate_allocator(), helper.event_log(),
286 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); 299 helper.rtcp_rtt_stats());
287 helper.SetupMockForSendTelephoneEvent(); 300 helper.SetupMockForSendTelephoneEvent();
288 EXPECT_TRUE(send_stream.SendTelephoneEvent(kTelephoneEventPayloadType, 301 EXPECT_TRUE(send_stream.SendTelephoneEvent(kTelephoneEventPayloadType,
289 kTelephoneEventPayloadFrequency, kTelephoneEventCode, 302 kTelephoneEventPayloadFrequency, kTelephoneEventCode,
290 kTelephoneEventDuration)); 303 kTelephoneEventDuration));
291 } 304 }
292 305
293 TEST(AudioSendStreamTest, SetMuted) { 306 TEST(AudioSendStreamTest, SetMuted) {
294 ConfigHelper helper; 307 ConfigHelper helper;
295 internal::AudioSendStream send_stream( 308 internal::AudioSendStream send_stream(
296 helper.config(), helper.audio_state(), helper.worker_queue(), 309 helper.config(), helper.audio_state(), helper.worker_queue(),
297 helper.packet_router(), helper.congestion_controller(), 310 helper.transport(), helper.bitrate_allocator(), helper.event_log(),
298 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); 311 helper.rtcp_rtt_stats());
299 EXPECT_CALL(*helper.channel_proxy(), SetInputMute(true)); 312 EXPECT_CALL(*helper.channel_proxy(), SetInputMute(true));
300 send_stream.SetMuted(true); 313 send_stream.SetMuted(true);
301 } 314 }
302 315
303 TEST(AudioSendStreamTest, GetStats) { 316 TEST(AudioSendStreamTest, GetStats) {
304 ConfigHelper helper; 317 ConfigHelper helper;
305 internal::AudioSendStream send_stream( 318 internal::AudioSendStream send_stream(
306 helper.config(), helper.audio_state(), helper.worker_queue(), 319 helper.config(), helper.audio_state(), helper.worker_queue(),
307 helper.packet_router(), helper.congestion_controller(), 320 helper.transport(), helper.bitrate_allocator(), helper.event_log(),
308 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); 321 helper.rtcp_rtt_stats());
309 helper.SetupMockForGetStats(); 322 helper.SetupMockForGetStats();
310 AudioSendStream::Stats stats = send_stream.GetStats(); 323 AudioSendStream::Stats stats = send_stream.GetStats();
311 EXPECT_EQ(kSsrc, stats.local_ssrc); 324 EXPECT_EQ(kSsrc, stats.local_ssrc);
312 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesSent), stats.bytes_sent); 325 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesSent), stats.bytes_sent);
313 EXPECT_EQ(kCallStats.packetsSent, stats.packets_sent); 326 EXPECT_EQ(kCallStats.packetsSent, stats.packets_sent);
314 EXPECT_EQ(static_cast<int32_t>(kReportBlock.cumulative_num_packets_lost), 327 EXPECT_EQ(static_cast<int32_t>(kReportBlock.cumulative_num_packets_lost),
315 stats.packets_lost); 328 stats.packets_lost);
316 EXPECT_EQ(Q8ToFloat(kReportBlock.fraction_lost), stats.fraction_lost); 329 EXPECT_EQ(Q8ToFloat(kReportBlock.fraction_lost), stats.fraction_lost);
317 EXPECT_EQ(std::string(kIsacCodec.plname), stats.codec_name); 330 EXPECT_EQ(std::string(kIsacCodec.plname), stats.codec_name);
318 EXPECT_EQ(static_cast<int32_t>(kReportBlock.extended_highest_sequence_number), 331 EXPECT_EQ(static_cast<int32_t>(kReportBlock.extended_highest_sequence_number),
319 stats.ext_seqnum); 332 stats.ext_seqnum);
320 EXPECT_EQ(static_cast<int32_t>(kReportBlock.interarrival_jitter / 333 EXPECT_EQ(static_cast<int32_t>(kReportBlock.interarrival_jitter /
321 (kIsacCodec.plfreq / 1000)), 334 (kIsacCodec.plfreq / 1000)),
322 stats.jitter_ms); 335 stats.jitter_ms);
323 EXPECT_EQ(kCallStats.rttMs, stats.rtt_ms); 336 EXPECT_EQ(kCallStats.rttMs, stats.rtt_ms);
324 EXPECT_EQ(static_cast<int32_t>(kSpeechInputLevel), stats.audio_level); 337 EXPECT_EQ(static_cast<int32_t>(kSpeechInputLevel), stats.audio_level);
325 EXPECT_EQ(-1, stats.aec_quality_min); 338 EXPECT_EQ(-1, stats.aec_quality_min);
326 EXPECT_EQ(kEchoDelayMedian, stats.echo_delay_median_ms); 339 EXPECT_EQ(kEchoDelayMedian, stats.echo_delay_median_ms);
327 EXPECT_EQ(kEchoDelayStdDev, stats.echo_delay_std_ms); 340 EXPECT_EQ(kEchoDelayStdDev, stats.echo_delay_std_ms);
328 EXPECT_EQ(kEchoReturnLoss, stats.echo_return_loss); 341 EXPECT_EQ(kEchoReturnLoss, stats.echo_return_loss);
329 EXPECT_EQ(kEchoReturnLossEnhancement, stats.echo_return_loss_enhancement); 342 EXPECT_EQ(kEchoReturnLossEnhancement, stats.echo_return_loss_enhancement);
330 EXPECT_EQ(kResidualEchoLikelihood, stats.residual_echo_likelihood); 343 EXPECT_EQ(kResidualEchoLikelihood, stats.residual_echo_likelihood);
331 EXPECT_FALSE(stats.typing_noise_detected); 344 EXPECT_FALSE(stats.typing_noise_detected);
332 } 345 }
333 346
334 TEST(AudioSendStreamTest, GetStatsTypingNoiseDetected) { 347 TEST(AudioSendStreamTest, GetStatsTypingNoiseDetected) {
335 ConfigHelper helper; 348 ConfigHelper helper;
336 internal::AudioSendStream send_stream( 349 internal::AudioSendStream send_stream(
337 helper.config(), helper.audio_state(), helper.worker_queue(), 350 helper.config(), helper.audio_state(), helper.worker_queue(),
338 helper.packet_router(), helper.congestion_controller(), 351 helper.transport(), helper.bitrate_allocator(), helper.event_log(),
339 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); 352 helper.rtcp_rtt_stats());
340 helper.SetupMockForGetStats(); 353 helper.SetupMockForGetStats();
341 EXPECT_FALSE(send_stream.GetStats().typing_noise_detected); 354 EXPECT_FALSE(send_stream.GetStats().typing_noise_detected);
342 355
343 internal::AudioState* internal_audio_state = 356 internal::AudioState* internal_audio_state =
344 static_cast<internal::AudioState*>(helper.audio_state().get()); 357 static_cast<internal::AudioState*>(helper.audio_state().get());
345 VoiceEngineObserver* voe_observer = 358 VoiceEngineObserver* voe_observer =
346 static_cast<VoiceEngineObserver*>(internal_audio_state); 359 static_cast<VoiceEngineObserver*>(internal_audio_state);
347 voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_WARNING); 360 voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_WARNING);
348 EXPECT_TRUE(send_stream.GetStats().typing_noise_detected); 361 EXPECT_TRUE(send_stream.GetStats().typing_noise_detected);
349 voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_OFF_WARNING); 362 voe_observer->CallbackOnError(-1, VE_TYPING_NOISE_OFF_WARNING);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 .WillOnce(Return(true)); 395 .WillOnce(Return(true));
383 EXPECT_CALL( 396 EXPECT_CALL(
384 *helper.channel_proxy(), 397 *helper.channel_proxy(),
385 SetReceiverFrameLengthRange(stream_config.send_codec_spec.min_ptime_ms, 398 SetReceiverFrameLengthRange(stream_config.send_codec_spec.min_ptime_ms,
386 stream_config.send_codec_spec.max_ptime_ms)); 399 stream_config.send_codec_spec.max_ptime_ms));
387 EXPECT_CALL( 400 EXPECT_CALL(
388 *helper.channel_proxy(), 401 *helper.channel_proxy(),
389 EnableAudioNetworkAdaptor(*stream_config.audio_network_adaptor_config)); 402 EnableAudioNetworkAdaptor(*stream_config.audio_network_adaptor_config));
390 internal::AudioSendStream send_stream( 403 internal::AudioSendStream send_stream(
391 stream_config, helper.audio_state(), helper.worker_queue(), 404 stream_config, helper.audio_state(), helper.worker_queue(),
392 helper.packet_router(), helper.congestion_controller(), 405 helper.transport(), helper.bitrate_allocator(), helper.event_log(),
393 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); 406 helper.rtcp_rtt_stats());
394 } 407 }
395 408
396 // VAD is applied when codec is mono and the CNG frequency matches the codec 409 // VAD is applied when codec is mono and the CNG frequency matches the codec
397 // sample rate. 410 // sample rate.
398 TEST(AudioSendStreamTest, SendCodecCanApplyVad) { 411 TEST(AudioSendStreamTest, SendCodecCanApplyVad) {
399 ConfigHelper helper; 412 ConfigHelper helper;
400 auto stream_config = helper.config(); 413 auto stream_config = helper.config();
401 const CodecInst kG722Codec = {9, "g722", 8000, 160, 1, 16000}; 414 const CodecInst kG722Codec = {9, "g722", 8000, 160, 1, 16000};
402 stream_config.send_codec_spec.codec_inst = kG722Codec; 415 stream_config.send_codec_spec.codec_inst = kG722Codec;
403 stream_config.send_codec_spec.cng_plfreq = 8000; 416 stream_config.send_codec_spec.cng_plfreq = 8000;
404 stream_config.send_codec_spec.cng_payload_type = 105; 417 stream_config.send_codec_spec.cng_payload_type = 105;
405 EXPECT_CALL(*helper.channel_proxy(), SetVADStatus(true)) 418 EXPECT_CALL(*helper.channel_proxy(), SetVADStatus(true))
406 .WillOnce(Return(true)); 419 .WillOnce(Return(true));
407 internal::AudioSendStream send_stream( 420 internal::AudioSendStream send_stream(
408 stream_config, helper.audio_state(), helper.worker_queue(), 421 stream_config, helper.audio_state(), helper.worker_queue(),
409 helper.packet_router(), helper.congestion_controller(), 422 helper.transport(), helper.bitrate_allocator(), helper.event_log(),
410 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); 423 helper.rtcp_rtt_stats());
411 } 424 }
412 425
413 TEST(AudioSendStreamTest, DoesNotPassHigherBitrateThanMaxBitrate) { 426 TEST(AudioSendStreamTest, DoesNotPassHigherBitrateThanMaxBitrate) {
414 ConfigHelper helper; 427 ConfigHelper helper;
415 internal::AudioSendStream send_stream( 428 internal::AudioSendStream send_stream(
416 helper.config(), helper.audio_state(), helper.worker_queue(), 429 helper.config(), helper.audio_state(), helper.worker_queue(),
417 helper.packet_router(), helper.congestion_controller(), 430 helper.transport(), helper.bitrate_allocator(), helper.event_log(),
418 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); 431 helper.rtcp_rtt_stats());
419 EXPECT_CALL(*helper.channel_proxy(), 432 EXPECT_CALL(*helper.channel_proxy(),
420 SetBitrate(helper.config().max_bitrate_bps, _)); 433 SetBitrate(helper.config().max_bitrate_bps, _));
421 send_stream.OnBitrateUpdated(helper.config().max_bitrate_bps + 5000, 0.0, 50, 434 send_stream.OnBitrateUpdated(helper.config().max_bitrate_bps + 5000, 0.0, 50,
422 6000); 435 6000);
423 } 436 }
424 437
425 TEST(AudioSendStreamTest, ProbingIntervalOnBitrateUpdated) { 438 TEST(AudioSendStreamTest, ProbingIntervalOnBitrateUpdated) {
426 ConfigHelper helper; 439 ConfigHelper helper;
427 internal::AudioSendStream send_stream( 440 internal::AudioSendStream send_stream(
428 helper.config(), helper.audio_state(), helper.worker_queue(), 441 helper.config(), helper.audio_state(), helper.worker_queue(),
429 helper.packet_router(), helper.congestion_controller(), 442 helper.transport(), helper.bitrate_allocator(), helper.event_log(),
430 helper.bitrate_allocator(), helper.event_log(), helper.rtcp_rtt_stats()); 443 helper.rtcp_rtt_stats());
431 EXPECT_CALL(*helper.channel_proxy(), SetBitrate(_, 5000)); 444 EXPECT_CALL(*helper.channel_proxy(), SetBitrate(_, 5000));
432 send_stream.OnBitrateUpdated(50000, 0.0, 50, 5000); 445 send_stream.OnBitrateUpdated(50000, 0.0, 50, 5000);
433 } 446 }
434 447
435 } // namespace test 448 } // namespace test
436 } // namespace webrtc 449 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/audio/audio_send_stream.cc ('k') | webrtc/call/BUILD.gn » ('j') | webrtc/call/call.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698