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/api/test/mock_audio_mixer.h" | 14 #include "webrtc/api/test/mock_audio_mixer.h" |
15 #include "webrtc/audio/audio_receive_stream.h" | 15 #include "webrtc/audio/audio_receive_stream.h" |
16 #include "webrtc/audio/conversion.h" | 16 #include "webrtc/audio/conversion.h" |
17 #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h" | 17 #include "webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h" |
18 #include "webrtc/modules/audio_coding/codecs/mock/mock_audio_decoder_factory.h" | 18 #include "webrtc/modules/audio_coding/codecs/mock/mock_audio_decoder_factory.h" |
19 #include "webrtc/modules/bitrate_controller/include/mock/mock_bitrate_controller
.h" | 19 #include "webrtc/modules/bitrate_controller/include/mock/mock_bitrate_controller
.h" |
20 #include "webrtc/modules/congestion_controller/include/mock/mock_congestion_cont
roller.h" | |
21 #include "webrtc/modules/pacing/packet_router.h" | 20 #include "webrtc/modules/pacing/packet_router.h" |
22 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra
te_estimator.h" | 21 #include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitra
te_estimator.h" |
23 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" | 22 #include "webrtc/modules/rtp_rtcp/source/byte_io.h" |
24 #include "webrtc/system_wrappers/include/clock.h" | |
25 #include "webrtc/test/gtest.h" | 23 #include "webrtc/test/gtest.h" |
26 #include "webrtc/test/mock_voe_channel_proxy.h" | 24 #include "webrtc/test/mock_voe_channel_proxy.h" |
27 #include "webrtc/test/mock_voice_engine.h" | 25 #include "webrtc/test/mock_voice_engine.h" |
28 | 26 |
29 namespace webrtc { | 27 namespace webrtc { |
30 namespace test { | 28 namespace test { |
31 namespace { | 29 namespace { |
32 | 30 |
33 using testing::_; | 31 using testing::_; |
34 using testing::FloatEq; | 32 using testing::FloatEq; |
(...skipping 25 matching lines...) Expand all Loading... |
60 const CallStatistics kCallStats = { | 58 const CallStatistics kCallStats = { |
61 345, 678, 901, 234, -12, 3456, 7890, 567, 890, 123}; | 59 345, 678, 901, 234, -12, 3456, 7890, 567, 890, 123}; |
62 const CodecInst kCodecInst = { | 60 const CodecInst kCodecInst = { |
63 123, "codec_name_recv", 96000, -187, 0, -103}; | 61 123, "codec_name_recv", 96000, -187, 0, -103}; |
64 const NetworkStatistics kNetworkStats = { | 62 const NetworkStatistics kNetworkStats = { |
65 123, 456, false, 0, 0, 789, 12, 345, 678, 901, -1, -1, -1, -1, -1, 0}; | 63 123, 456, false, 0, 0, 789, 12, 345, 678, 901, -1, -1, -1, -1, -1, 0}; |
66 const AudioDecodingCallStats kAudioDecodeStats = MakeAudioDecodeStatsForTest(); | 64 const AudioDecodingCallStats kAudioDecodeStats = MakeAudioDecodeStatsForTest(); |
67 | 65 |
68 struct ConfigHelper { | 66 struct ConfigHelper { |
69 ConfigHelper() | 67 ConfigHelper() |
70 : simulated_clock_(123456), | 68 : decoder_factory_(new rtc::RefCountedObject<MockAudioDecoderFactory>), |
71 decoder_factory_(new rtc::RefCountedObject<MockAudioDecoderFactory>), | |
72 congestion_controller_(&simulated_clock_, | |
73 &bitrate_observer_, | |
74 &remote_bitrate_observer_, | |
75 &event_log_), | |
76 audio_mixer_(new rtc::RefCountedObject<MockAudioMixer>()) { | 69 audio_mixer_(new rtc::RefCountedObject<MockAudioMixer>()) { |
77 using testing::Invoke; | 70 using testing::Invoke; |
78 | 71 |
79 EXPECT_CALL(voice_engine_, | 72 EXPECT_CALL(voice_engine_, |
80 RegisterVoiceEngineObserver(_)).WillOnce(Return(0)); | 73 RegisterVoiceEngineObserver(_)).WillOnce(Return(0)); |
81 EXPECT_CALL(voice_engine_, | 74 EXPECT_CALL(voice_engine_, |
82 DeRegisterVoiceEngineObserver()).WillOnce(Return(0)); | 75 DeRegisterVoiceEngineObserver()).WillOnce(Return(0)); |
83 EXPECT_CALL(voice_engine_, audio_processing()); | 76 EXPECT_CALL(voice_engine_, audio_processing()); |
84 EXPECT_CALL(voice_engine_, audio_device_module()); | 77 EXPECT_CALL(voice_engine_, audio_device_module()); |
85 EXPECT_CALL(voice_engine_, audio_transport()); | 78 EXPECT_CALL(voice_engine_, audio_transport()); |
(...skipping 11 matching lines...) Expand all Loading... |
97 EXPECT_CALL(*channel_proxy_, SetNACKStatus(true, 15)).Times(1); | 90 EXPECT_CALL(*channel_proxy_, SetNACKStatus(true, 15)).Times(1); |
98 EXPECT_CALL(*channel_proxy_, | 91 EXPECT_CALL(*channel_proxy_, |
99 SetReceiveAudioLevelIndicationStatus(true, kAudioLevelId)) | 92 SetReceiveAudioLevelIndicationStatus(true, kAudioLevelId)) |
100 .Times(1); | 93 .Times(1); |
101 EXPECT_CALL(*channel_proxy_, | 94 EXPECT_CALL(*channel_proxy_, |
102 EnableReceiveTransportSequenceNumber(kTransportSequenceNumberId)) | 95 EnableReceiveTransportSequenceNumber(kTransportSequenceNumberId)) |
103 .Times(1); | 96 .Times(1); |
104 EXPECT_CALL(*channel_proxy_, | 97 EXPECT_CALL(*channel_proxy_, |
105 RegisterReceiverCongestionControlObjects(&packet_router_)) | 98 RegisterReceiverCongestionControlObjects(&packet_router_)) |
106 .Times(1); | 99 .Times(1); |
107 EXPECT_CALL(congestion_controller_, packet_router()) | |
108 .WillOnce(Return(&packet_router_)); | |
109 EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects()) | 100 EXPECT_CALL(*channel_proxy_, ResetCongestionControlObjects()) |
110 .Times(1); | 101 .Times(1); |
111 EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr)) | 102 EXPECT_CALL(*channel_proxy_, RegisterExternalTransport(nullptr)) |
112 .Times(1); | 103 .Times(1); |
113 EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport()) | 104 EXPECT_CALL(*channel_proxy_, DeRegisterExternalTransport()) |
114 .Times(1); | 105 .Times(1); |
115 EXPECT_CALL(*channel_proxy_, GetAudioDecoderFactory()) | 106 EXPECT_CALL(*channel_proxy_, GetAudioDecoderFactory()) |
116 .WillOnce(ReturnRef(decoder_factory_)); | 107 .WillOnce(ReturnRef(decoder_factory_)); |
117 testing::Expectation expect_set = | 108 testing::Expectation expect_set = |
118 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(&event_log_)) | 109 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(&event_log_)) |
119 .Times(1); | 110 .Times(1); |
120 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::IsNull())) | 111 EXPECT_CALL(*channel_proxy_, SetRtcEventLog(testing::IsNull())) |
121 .Times(1) | 112 .Times(1) |
122 .After(expect_set); | 113 .After(expect_set); |
123 EXPECT_CALL(*channel_proxy_, DisassociateSendChannel()).Times(1); | 114 EXPECT_CALL(*channel_proxy_, DisassociateSendChannel()).Times(1); |
124 return channel_proxy_; | 115 return channel_proxy_; |
125 })); | 116 })); |
126 stream_config_.voe_channel_id = kChannelId; | 117 stream_config_.voe_channel_id = kChannelId; |
127 stream_config_.rtp.local_ssrc = kLocalSsrc; | 118 stream_config_.rtp.local_ssrc = kLocalSsrc; |
128 stream_config_.rtp.remote_ssrc = kRemoteSsrc; | 119 stream_config_.rtp.remote_ssrc = kRemoteSsrc; |
129 stream_config_.rtp.nack.rtp_history_ms = 300; | 120 stream_config_.rtp.nack.rtp_history_ms = 300; |
130 stream_config_.rtp.extensions.push_back( | 121 stream_config_.rtp.extensions.push_back( |
131 RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId)); | 122 RtpExtension(RtpExtension::kAudioLevelUri, kAudioLevelId)); |
132 stream_config_.rtp.extensions.push_back(RtpExtension( | 123 stream_config_.rtp.extensions.push_back(RtpExtension( |
133 RtpExtension::kTransportSequenceNumberUri, kTransportSequenceNumberId)); | 124 RtpExtension::kTransportSequenceNumberUri, kTransportSequenceNumberId)); |
134 stream_config_.decoder_factory = decoder_factory_; | 125 stream_config_.decoder_factory = decoder_factory_; |
135 } | 126 } |
136 | 127 |
137 MockCongestionController* congestion_controller() { | 128 PacketRouter* packet_router() { return &packet_router_; } |
138 return &congestion_controller_; | |
139 } | |
140 MockRemoteBitrateEstimator* remote_bitrate_estimator() { | 129 MockRemoteBitrateEstimator* remote_bitrate_estimator() { |
141 return &remote_bitrate_estimator_; | 130 return &remote_bitrate_estimator_; |
142 } | 131 } |
143 MockRtcEventLog* event_log() { return &event_log_; } | 132 MockRtcEventLog* event_log() { return &event_log_; } |
144 AudioReceiveStream::Config& config() { return stream_config_; } | 133 AudioReceiveStream::Config& config() { return stream_config_; } |
145 rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; } | 134 rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; } |
146 rtc::scoped_refptr<MockAudioMixer> audio_mixer() { return audio_mixer_; } | 135 rtc::scoped_refptr<MockAudioMixer> audio_mixer() { return audio_mixer_; } |
147 MockVoiceEngine& voice_engine() { return voice_engine_; } | 136 MockVoiceEngine& voice_engine() { return voice_engine_; } |
148 MockVoEChannelProxy* channel_proxy() { return channel_proxy_; } | 137 MockVoEChannelProxy* channel_proxy() { return channel_proxy_; } |
149 | 138 |
150 void SetupMockForBweFeedback(bool send_side_bwe) { | 139 void SetupMockForBweFeedback(bool send_side_bwe) { |
151 EXPECT_CALL(congestion_controller_, | |
152 GetRemoteBitrateEstimator(send_side_bwe)) | |
153 .WillOnce(Return(&remote_bitrate_estimator_)); | |
154 EXPECT_CALL(remote_bitrate_estimator_, | 140 EXPECT_CALL(remote_bitrate_estimator_, |
155 RemoveStream(stream_config_.rtp.remote_ssrc)); | 141 RemoveStream(stream_config_.rtp.remote_ssrc)); |
156 } | 142 } |
157 | 143 |
158 void SetupMockForGetStats() { | 144 void SetupMockForGetStats() { |
159 using testing::DoAll; | 145 using testing::DoAll; |
160 using testing::SetArgReferee; | 146 using testing::SetArgReferee; |
161 | 147 |
162 ASSERT_TRUE(channel_proxy_); | 148 ASSERT_TRUE(channel_proxy_); |
163 EXPECT_CALL(*channel_proxy_, GetRTCPStatistics()) | 149 EXPECT_CALL(*channel_proxy_, GetRTCPStatistics()) |
164 .WillOnce(Return(kCallStats)); | 150 .WillOnce(Return(kCallStats)); |
165 EXPECT_CALL(*channel_proxy_, GetDelayEstimate()) | 151 EXPECT_CALL(*channel_proxy_, GetDelayEstimate()) |
166 .WillOnce(Return(kJitterBufferDelay + kPlayoutBufferDelay)); | 152 .WillOnce(Return(kJitterBufferDelay + kPlayoutBufferDelay)); |
167 EXPECT_CALL(*channel_proxy_, GetSpeechOutputLevelFullRange()) | 153 EXPECT_CALL(*channel_proxy_, GetSpeechOutputLevelFullRange()) |
168 .WillOnce(Return(kSpeechOutputLevel)); | 154 .WillOnce(Return(kSpeechOutputLevel)); |
169 EXPECT_CALL(*channel_proxy_, GetNetworkStatistics()) | 155 EXPECT_CALL(*channel_proxy_, GetNetworkStatistics()) |
170 .WillOnce(Return(kNetworkStats)); | 156 .WillOnce(Return(kNetworkStats)); |
171 EXPECT_CALL(*channel_proxy_, GetDecodingCallStatistics()) | 157 EXPECT_CALL(*channel_proxy_, GetDecodingCallStatistics()) |
172 .WillOnce(Return(kAudioDecodeStats)); | 158 .WillOnce(Return(kAudioDecodeStats)); |
173 | 159 |
174 EXPECT_CALL(voice_engine_, GetRecCodec(kChannelId, _)) | 160 EXPECT_CALL(voice_engine_, GetRecCodec(kChannelId, _)) |
175 .WillOnce(DoAll(SetArgReferee<1>(kCodecInst), Return(0))); | 161 .WillOnce(DoAll(SetArgReferee<1>(kCodecInst), Return(0))); |
176 } | 162 } |
177 | 163 |
178 private: | 164 private: |
179 SimulatedClock simulated_clock_; | |
180 PacketRouter packet_router_; | 165 PacketRouter packet_router_; |
181 testing::NiceMock<MockCongestionObserver> bitrate_observer_; | |
182 testing::NiceMock<MockRemoteBitrateObserver> remote_bitrate_observer_; | |
183 rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_; | 166 rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_; |
184 MockCongestionController congestion_controller_; | |
185 MockRemoteBitrateEstimator remote_bitrate_estimator_; | 167 MockRemoteBitrateEstimator remote_bitrate_estimator_; |
186 MockRtcEventLog event_log_; | 168 MockRtcEventLog event_log_; |
187 testing::StrictMock<MockVoiceEngine> voice_engine_; | 169 testing::StrictMock<MockVoiceEngine> voice_engine_; |
188 rtc::scoped_refptr<AudioState> audio_state_; | 170 rtc::scoped_refptr<AudioState> audio_state_; |
189 rtc::scoped_refptr<MockAudioMixer> audio_mixer_; | 171 rtc::scoped_refptr<MockAudioMixer> audio_mixer_; |
190 AudioReceiveStream::Config stream_config_; | 172 AudioReceiveStream::Config stream_config_; |
191 testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr; | 173 testing::StrictMock<MockVoEChannelProxy>* channel_proxy_ = nullptr; |
192 }; | 174 }; |
193 | 175 |
194 void BuildOneByteExtension(std::vector<uint8_t>::iterator it, | 176 void BuildOneByteExtension(std::vector<uint8_t>::iterator it, |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 "{rtp: {remote_ssrc: 1234, local_ssrc: 5678, transport_cc: off, nack: " | 236 "{rtp: {remote_ssrc: 1234, local_ssrc: 5678, transport_cc: off, nack: " |
255 "{rtp_history_ms: 0}, extensions: [{uri: " | 237 "{rtp_history_ms: 0}, extensions: [{uri: " |
256 "urn:ietf:params:rtp-hdrext:ssrc-audio-level, id: 3}]}, " | 238 "urn:ietf:params:rtp-hdrext:ssrc-audio-level, id: 3}]}, " |
257 "rtcp_send_transport: nullptr, voe_channel_id: 2}", | 239 "rtcp_send_transport: nullptr, voe_channel_id: 2}", |
258 config.ToString()); | 240 config.ToString()); |
259 } | 241 } |
260 | 242 |
261 TEST(AudioReceiveStreamTest, ConstructDestruct) { | 243 TEST(AudioReceiveStreamTest, ConstructDestruct) { |
262 ConfigHelper helper; | 244 ConfigHelper helper; |
263 internal::AudioReceiveStream recv_stream( | 245 internal::AudioReceiveStream recv_stream( |
264 helper.congestion_controller(), helper.config(), helper.audio_state(), | 246 helper.packet_router(), |
265 helper.event_log()); | 247 helper.remote_bitrate_estimator(), |
| 248 helper.config(), helper.audio_state(), helper.event_log()); |
266 } | 249 } |
267 | 250 |
268 MATCHER_P(VerifyHeaderExtension, expected_extension, "") { | 251 MATCHER_P(VerifyHeaderExtension, expected_extension, "") { |
269 return arg.extension.hasTransportSequenceNumber == | 252 return arg.extension.hasTransportSequenceNumber == |
270 expected_extension.hasTransportSequenceNumber && | 253 expected_extension.hasTransportSequenceNumber && |
271 arg.extension.transportSequenceNumber == | 254 arg.extension.transportSequenceNumber == |
272 expected_extension.transportSequenceNumber; | 255 expected_extension.transportSequenceNumber; |
273 } | 256 } |
274 | 257 |
275 TEST(AudioReceiveStreamTest, ReceiveRtpPacket) { | 258 TEST(AudioReceiveStreamTest, ReceiveRtpPacket) { |
276 ConfigHelper helper; | 259 ConfigHelper helper; |
277 helper.config().rtp.transport_cc = true; | 260 helper.config().rtp.transport_cc = true; |
278 helper.SetupMockForBweFeedback(true); | 261 helper.SetupMockForBweFeedback(true); |
279 internal::AudioReceiveStream recv_stream( | 262 internal::AudioReceiveStream recv_stream( |
280 helper.congestion_controller(), helper.config(), helper.audio_state(), | 263 helper.packet_router(), |
281 helper.event_log()); | 264 helper.remote_bitrate_estimator(), |
| 265 helper.config(), helper.audio_state(), helper.event_log()); |
282 const int kTransportSequenceNumberValue = 1234; | 266 const int kTransportSequenceNumberValue = 1234; |
283 std::vector<uint8_t> rtp_packet = CreateRtpHeaderWithOneByteExtension( | 267 std::vector<uint8_t> rtp_packet = CreateRtpHeaderWithOneByteExtension( |
284 kTransportSequenceNumberId, kTransportSequenceNumberValue, 2); | 268 kTransportSequenceNumberId, kTransportSequenceNumberValue, 2); |
285 PacketTime packet_time(5678000, 0); | 269 PacketTime packet_time(5678000, 0); |
286 const size_t kExpectedHeaderLength = 20; | 270 const size_t kExpectedHeaderLength = 20; |
287 RTPHeaderExtension expected_extension; | 271 RTPHeaderExtension expected_extension; |
288 expected_extension.hasTransportSequenceNumber = true; | 272 expected_extension.hasTransportSequenceNumber = true; |
289 expected_extension.transportSequenceNumber = kTransportSequenceNumberValue; | 273 expected_extension.transportSequenceNumber = kTransportSequenceNumberValue; |
290 EXPECT_CALL(*helper.remote_bitrate_estimator(), | 274 EXPECT_CALL(*helper.remote_bitrate_estimator(), |
291 IncomingPacket(packet_time.timestamp / 1000, | 275 IncomingPacket(packet_time.timestamp / 1000, |
292 rtp_packet.size() - kExpectedHeaderLength, | 276 rtp_packet.size() - kExpectedHeaderLength, |
293 VerifyHeaderExtension(expected_extension))) | 277 VerifyHeaderExtension(expected_extension))) |
294 .Times(1); | 278 .Times(1); |
295 EXPECT_CALL(*helper.channel_proxy(), | 279 EXPECT_CALL(*helper.channel_proxy(), |
296 ReceivedRTPPacket(&rtp_packet[0], | 280 ReceivedRTPPacket(&rtp_packet[0], |
297 rtp_packet.size(), | 281 rtp_packet.size(), |
298 _)) | 282 _)) |
299 .WillOnce(Return(true)); | 283 .WillOnce(Return(true)); |
300 EXPECT_TRUE( | 284 EXPECT_TRUE( |
301 recv_stream.DeliverRtp(&rtp_packet[0], rtp_packet.size(), packet_time)); | 285 recv_stream.DeliverRtp(&rtp_packet[0], rtp_packet.size(), packet_time)); |
302 } | 286 } |
303 | 287 |
304 TEST(AudioReceiveStreamTest, ReceiveRtcpPacket) { | 288 TEST(AudioReceiveStreamTest, ReceiveRtcpPacket) { |
305 ConfigHelper helper; | 289 ConfigHelper helper; |
306 helper.config().rtp.transport_cc = true; | 290 helper.config().rtp.transport_cc = true; |
307 helper.SetupMockForBweFeedback(true); | 291 helper.SetupMockForBweFeedback(true); |
308 internal::AudioReceiveStream recv_stream( | 292 internal::AudioReceiveStream recv_stream( |
309 helper.congestion_controller(), helper.config(), helper.audio_state(), | 293 helper.packet_router(), |
310 helper.event_log()); | 294 helper.remote_bitrate_estimator(), |
| 295 helper.config(), helper.audio_state(), helper.event_log()); |
311 | 296 |
312 std::vector<uint8_t> rtcp_packet = CreateRtcpSenderReport(); | 297 std::vector<uint8_t> rtcp_packet = CreateRtcpSenderReport(); |
313 EXPECT_CALL(*helper.channel_proxy(), | 298 EXPECT_CALL(*helper.channel_proxy(), |
314 ReceivedRTCPPacket(&rtcp_packet[0], rtcp_packet.size())) | 299 ReceivedRTCPPacket(&rtcp_packet[0], rtcp_packet.size())) |
315 .WillOnce(Return(true)); | 300 .WillOnce(Return(true)); |
316 EXPECT_TRUE(recv_stream.DeliverRtcp(&rtcp_packet[0], rtcp_packet.size())); | 301 EXPECT_TRUE(recv_stream.DeliverRtcp(&rtcp_packet[0], rtcp_packet.size())); |
317 } | 302 } |
318 | 303 |
319 TEST(AudioReceiveStreamTest, GetStats) { | 304 TEST(AudioReceiveStreamTest, GetStats) { |
320 ConfigHelper helper; | 305 ConfigHelper helper; |
321 internal::AudioReceiveStream recv_stream( | 306 internal::AudioReceiveStream recv_stream( |
322 helper.congestion_controller(), helper.config(), helper.audio_state(), | 307 helper.packet_router(), |
323 helper.event_log()); | 308 helper.remote_bitrate_estimator(), |
| 309 helper.config(), helper.audio_state(), helper.event_log()); |
324 helper.SetupMockForGetStats(); | 310 helper.SetupMockForGetStats(); |
325 AudioReceiveStream::Stats stats = recv_stream.GetStats(); | 311 AudioReceiveStream::Stats stats = recv_stream.GetStats(); |
326 EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc); | 312 EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc); |
327 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd); | 313 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd); |
328 EXPECT_EQ(static_cast<uint32_t>(kCallStats.packetsReceived), | 314 EXPECT_EQ(static_cast<uint32_t>(kCallStats.packetsReceived), |
329 stats.packets_rcvd); | 315 stats.packets_rcvd); |
330 EXPECT_EQ(kCallStats.cumulativeLost, stats.packets_lost); | 316 EXPECT_EQ(kCallStats.cumulativeLost, stats.packets_lost); |
331 EXPECT_EQ(Q8ToFloat(kCallStats.fractionLost), stats.fraction_lost); | 317 EXPECT_EQ(Q8ToFloat(kCallStats.fractionLost), stats.fraction_lost); |
332 EXPECT_EQ(std::string(kCodecInst.plname), stats.codec_name); | 318 EXPECT_EQ(std::string(kCodecInst.plname), stats.codec_name); |
333 EXPECT_EQ(kCallStats.extendedMax, stats.ext_seqnum); | 319 EXPECT_EQ(kCallStats.extendedMax, stats.ext_seqnum); |
(...skipping 23 matching lines...) Expand all Loading... |
357 EXPECT_EQ(kAudioDecodeStats.decoded_plc_cng, stats.decoding_plc_cng); | 343 EXPECT_EQ(kAudioDecodeStats.decoded_plc_cng, stats.decoding_plc_cng); |
358 EXPECT_EQ(kAudioDecodeStats.decoded_muted_output, | 344 EXPECT_EQ(kAudioDecodeStats.decoded_muted_output, |
359 stats.decoding_muted_output); | 345 stats.decoding_muted_output); |
360 EXPECT_EQ(kCallStats.capture_start_ntp_time_ms_, | 346 EXPECT_EQ(kCallStats.capture_start_ntp_time_ms_, |
361 stats.capture_start_ntp_time_ms); | 347 stats.capture_start_ntp_time_ms); |
362 } | 348 } |
363 | 349 |
364 TEST(AudioReceiveStreamTest, SetGain) { | 350 TEST(AudioReceiveStreamTest, SetGain) { |
365 ConfigHelper helper; | 351 ConfigHelper helper; |
366 internal::AudioReceiveStream recv_stream( | 352 internal::AudioReceiveStream recv_stream( |
367 helper.congestion_controller(), helper.config(), helper.audio_state(), | 353 helper.packet_router(), |
368 helper.event_log()); | 354 helper.remote_bitrate_estimator(), |
| 355 helper.config(), helper.audio_state(), helper.event_log()); |
369 EXPECT_CALL(*helper.channel_proxy(), | 356 EXPECT_CALL(*helper.channel_proxy(), |
370 SetChannelOutputVolumeScaling(FloatEq(0.765f))); | 357 SetChannelOutputVolumeScaling(FloatEq(0.765f))); |
371 recv_stream.SetGain(0.765f); | 358 recv_stream.SetGain(0.765f); |
372 } | 359 } |
373 | 360 |
374 TEST(AudioReceiveStreamTest, StreamShouldNotBeAddedToMixerWhenVoEReturnsError) { | 361 TEST(AudioReceiveStreamTest, StreamShouldNotBeAddedToMixerWhenVoEReturnsError) { |
375 ConfigHelper helper; | 362 ConfigHelper helper; |
376 internal::AudioReceiveStream recv_stream( | 363 internal::AudioReceiveStream recv_stream( |
377 helper.congestion_controller(), helper.config(), helper.audio_state(), | 364 helper.packet_router(), |
378 helper.event_log()); | 365 helper.remote_bitrate_estimator(), |
| 366 helper.config(), helper.audio_state(), helper.event_log()); |
379 | 367 |
380 EXPECT_CALL(helper.voice_engine(), StartPlayout(_)).WillOnce(Return(-1)); | 368 EXPECT_CALL(helper.voice_engine(), StartPlayout(_)).WillOnce(Return(-1)); |
381 EXPECT_CALL(*helper.audio_mixer(), AddSource(_)).Times(0); | 369 EXPECT_CALL(*helper.audio_mixer(), AddSource(_)).Times(0); |
382 | 370 |
383 recv_stream.Start(); | 371 recv_stream.Start(); |
384 } | 372 } |
385 | 373 |
386 TEST(AudioReceiveStreamTest, StreamShouldBeAddedToMixerOnStart) { | 374 TEST(AudioReceiveStreamTest, StreamShouldBeAddedToMixerOnStart) { |
387 ConfigHelper helper; | 375 ConfigHelper helper; |
388 internal::AudioReceiveStream recv_stream( | 376 internal::AudioReceiveStream recv_stream( |
389 helper.congestion_controller(), helper.config(), helper.audio_state(), | 377 helper.packet_router(), |
390 helper.event_log()); | 378 helper.remote_bitrate_estimator(), |
| 379 helper.config(), helper.audio_state(), helper.event_log()); |
391 | 380 |
392 EXPECT_CALL(helper.voice_engine(), StartPlayout(_)).WillOnce(Return(0)); | 381 EXPECT_CALL(helper.voice_engine(), StartPlayout(_)).WillOnce(Return(0)); |
393 EXPECT_CALL(helper.voice_engine(), StopPlayout(_)); | 382 EXPECT_CALL(helper.voice_engine(), StopPlayout(_)); |
394 EXPECT_CALL(*helper.audio_mixer(), AddSource(&recv_stream)) | 383 EXPECT_CALL(*helper.audio_mixer(), AddSource(&recv_stream)) |
395 .WillOnce(Return(true)); | 384 .WillOnce(Return(true)); |
396 | 385 |
397 recv_stream.Start(); | 386 recv_stream.Start(); |
398 } | 387 } |
399 } // namespace test | 388 } // namespace test |
400 } // namespace webrtc | 389 } // namespace webrtc |
OLD | NEW |