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 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 123, "codec_name_recv", 96000, -187, 0, -103}; | 59 123, "codec_name_recv", 96000, -187, 0, -103}; |
60 const NetworkStatistics kNetworkStats = { | 60 const NetworkStatistics kNetworkStats = { |
61 123, 456, false, 0, 0, 789, 12, 345, 678, 901, -1, -1, -1, -1, -1, 0}; | 61 123, 456, false, 0, 0, 789, 12, 345, 678, 901, -1, -1, -1, -1, -1, 0}; |
62 const AudioDecodingCallStats kAudioDecodeStats = MakeAudioDecodeStatsForTest(); | 62 const AudioDecodingCallStats kAudioDecodeStats = MakeAudioDecodeStatsForTest(); |
63 | 63 |
64 struct ConfigHelper { | 64 struct ConfigHelper { |
65 ConfigHelper() | 65 ConfigHelper() |
66 : simulated_clock_(123456), | 66 : simulated_clock_(123456), |
67 congestion_controller_(&simulated_clock_, | 67 congestion_controller_(&simulated_clock_, |
68 &bitrate_observer_, | 68 &bitrate_observer_, |
69 &remote_bitrate_observer_) { | 69 &remote_bitrate_observer_, |
| 70 nullptr) { |
70 using testing::Invoke; | 71 using testing::Invoke; |
71 | 72 |
72 EXPECT_CALL(voice_engine_, | 73 EXPECT_CALL(voice_engine_, |
73 RegisterVoiceEngineObserver(_)).WillOnce(Return(0)); | 74 RegisterVoiceEngineObserver(_)).WillOnce(Return(0)); |
74 EXPECT_CALL(voice_engine_, | 75 EXPECT_CALL(voice_engine_, |
75 DeRegisterVoiceEngineObserver()).WillOnce(Return(0)); | 76 DeRegisterVoiceEngineObserver()).WillOnce(Return(0)); |
76 AudioState::Config config; | 77 AudioState::Config config; |
77 config.voice_engine = &voice_engine_; | 78 config.voice_engine = &voice_engine_; |
78 audio_state_ = AudioState::Create(config); | 79 audio_state_ = AudioState::Create(config); |
79 | 80 |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 "{rtp: {remote_ssrc: 1234, local_ssrc: 5678, extensions: [{name: " | 214 "{rtp: {remote_ssrc: 1234, local_ssrc: 5678, extensions: [{name: " |
214 "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, id: 2}], " | 215 "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, id: 2}], " |
215 "transport_cc: off}, " | 216 "transport_cc: off}, " |
216 "receive_transport: nullptr, rtcp_send_transport: nullptr, " | 217 "receive_transport: nullptr, rtcp_send_transport: nullptr, " |
217 "voe_channel_id: 2}", | 218 "voe_channel_id: 2}", |
218 config.ToString()); | 219 config.ToString()); |
219 } | 220 } |
220 | 221 |
221 TEST(AudioReceiveStreamTest, ConstructDestruct) { | 222 TEST(AudioReceiveStreamTest, ConstructDestruct) { |
222 ConfigHelper helper; | 223 ConfigHelper helper; |
223 internal::AudioReceiveStream recv_stream( | 224 internal::AudioReceiveStream recv_stream(helper.congestion_controller(), |
224 helper.congestion_controller(), helper.config(), helper.audio_state()); | 225 helper.config(), |
| 226 helper.audio_state(), nullptr); |
225 } | 227 } |
226 | 228 |
227 MATCHER_P(VerifyHeaderExtension, expected_extension, "") { | 229 MATCHER_P(VerifyHeaderExtension, expected_extension, "") { |
228 return arg.extension.hasAbsoluteSendTime == | 230 return arg.extension.hasAbsoluteSendTime == |
229 expected_extension.hasAbsoluteSendTime && | 231 expected_extension.hasAbsoluteSendTime && |
230 arg.extension.absoluteSendTime == | 232 arg.extension.absoluteSendTime == |
231 expected_extension.absoluteSendTime && | 233 expected_extension.absoluteSendTime && |
232 arg.extension.hasTransportSequenceNumber == | 234 arg.extension.hasTransportSequenceNumber == |
233 expected_extension.hasTransportSequenceNumber && | 235 expected_extension.hasTransportSequenceNumber && |
234 arg.extension.transportSequenceNumber == | 236 arg.extension.transportSequenceNumber == |
235 expected_extension.transportSequenceNumber; | 237 expected_extension.transportSequenceNumber; |
236 } | 238 } |
237 | 239 |
238 TEST(AudioReceiveStreamTest, AudioPacketUpdatesBweFeedback) { | 240 TEST(AudioReceiveStreamTest, AudioPacketUpdatesBweFeedback) { |
239 ConfigHelper helper; | 241 ConfigHelper helper; |
240 helper.config().rtp.transport_cc = true; | 242 helper.config().rtp.transport_cc = true; |
241 helper.SetupMockForBweFeedback(true); | 243 helper.SetupMockForBweFeedback(true); |
242 internal::AudioReceiveStream recv_stream( | 244 internal::AudioReceiveStream recv_stream(helper.congestion_controller(), |
243 helper.congestion_controller(), helper.config(), helper.audio_state()); | 245 helper.config(), |
| 246 helper.audio_state(), nullptr); |
244 const int kTransportSequenceNumberValue = 1234; | 247 const int kTransportSequenceNumberValue = 1234; |
245 std::vector<uint8_t> rtp_packet = CreateRtpHeaderWithOneByteExtension( | 248 std::vector<uint8_t> rtp_packet = CreateRtpHeaderWithOneByteExtension( |
246 kTransportSequenceNumberId, kTransportSequenceNumberValue, 2); | 249 kTransportSequenceNumberId, kTransportSequenceNumberValue, 2); |
247 PacketTime packet_time(5678000, 0); | 250 PacketTime packet_time(5678000, 0); |
248 const size_t kExpectedHeaderLength = 20; | 251 const size_t kExpectedHeaderLength = 20; |
249 RTPHeaderExtension expected_extension; | 252 RTPHeaderExtension expected_extension; |
250 expected_extension.hasTransportSequenceNumber = true; | 253 expected_extension.hasTransportSequenceNumber = true; |
251 expected_extension.transportSequenceNumber = kTransportSequenceNumberValue; | 254 expected_extension.transportSequenceNumber = kTransportSequenceNumberValue; |
252 EXPECT_CALL(*helper.remote_bitrate_estimator(), | 255 EXPECT_CALL(*helper.remote_bitrate_estimator(), |
253 IncomingPacket(packet_time.timestamp / 1000, | 256 IncomingPacket(packet_time.timestamp / 1000, |
254 rtp_packet.size() - kExpectedHeaderLength, | 257 rtp_packet.size() - kExpectedHeaderLength, |
255 VerifyHeaderExtension(expected_extension), false)) | 258 VerifyHeaderExtension(expected_extension), false)) |
256 .Times(1); | 259 .Times(1); |
257 EXPECT_TRUE( | 260 EXPECT_TRUE( |
258 recv_stream.DeliverRtp(&rtp_packet[0], rtp_packet.size(), packet_time)); | 261 recv_stream.DeliverRtp(&rtp_packet[0], rtp_packet.size(), packet_time)); |
259 } | 262 } |
260 | 263 |
261 TEST(AudioReceiveStreamTest, GetStats) { | 264 TEST(AudioReceiveStreamTest, GetStats) { |
262 ConfigHelper helper; | 265 ConfigHelper helper; |
263 internal::AudioReceiveStream recv_stream( | 266 internal::AudioReceiveStream recv_stream(helper.congestion_controller(), |
264 helper.congestion_controller(), helper.config(), helper.audio_state()); | 267 helper.config(), |
| 268 helper.audio_state(), nullptr); |
265 helper.SetupMockForGetStats(); | 269 helper.SetupMockForGetStats(); |
266 AudioReceiveStream::Stats stats = recv_stream.GetStats(); | 270 AudioReceiveStream::Stats stats = recv_stream.GetStats(); |
267 EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc); | 271 EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc); |
268 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd); | 272 EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd); |
269 EXPECT_EQ(static_cast<uint32_t>(kCallStats.packetsReceived), | 273 EXPECT_EQ(static_cast<uint32_t>(kCallStats.packetsReceived), |
270 stats.packets_rcvd); | 274 stats.packets_rcvd); |
271 EXPECT_EQ(kCallStats.cumulativeLost, stats.packets_lost); | 275 EXPECT_EQ(kCallStats.cumulativeLost, stats.packets_lost); |
272 EXPECT_EQ(Q8ToFloat(kCallStats.fractionLost), stats.fraction_lost); | 276 EXPECT_EQ(Q8ToFloat(kCallStats.fractionLost), stats.fraction_lost); |
273 EXPECT_EQ(std::string(kCodecInst.plname), stats.codec_name); | 277 EXPECT_EQ(std::string(kCodecInst.plname), stats.codec_name); |
274 EXPECT_EQ(kCallStats.extendedMax, stats.ext_seqnum); | 278 EXPECT_EQ(kCallStats.extendedMax, stats.ext_seqnum); |
(...skipping 19 matching lines...) Expand all Loading... |
294 EXPECT_EQ(kAudioDecodeStats.calls_to_neteq, stats.decoding_calls_to_neteq); | 298 EXPECT_EQ(kAudioDecodeStats.calls_to_neteq, stats.decoding_calls_to_neteq); |
295 EXPECT_EQ(kAudioDecodeStats.decoded_normal, stats.decoding_normal); | 299 EXPECT_EQ(kAudioDecodeStats.decoded_normal, stats.decoding_normal); |
296 EXPECT_EQ(kAudioDecodeStats.decoded_plc, stats.decoding_plc); | 300 EXPECT_EQ(kAudioDecodeStats.decoded_plc, stats.decoding_plc); |
297 EXPECT_EQ(kAudioDecodeStats.decoded_cng, stats.decoding_cng); | 301 EXPECT_EQ(kAudioDecodeStats.decoded_cng, stats.decoding_cng); |
298 EXPECT_EQ(kAudioDecodeStats.decoded_plc_cng, stats.decoding_plc_cng); | 302 EXPECT_EQ(kAudioDecodeStats.decoded_plc_cng, stats.decoding_plc_cng); |
299 EXPECT_EQ(kCallStats.capture_start_ntp_time_ms_, | 303 EXPECT_EQ(kCallStats.capture_start_ntp_time_ms_, |
300 stats.capture_start_ntp_time_ms); | 304 stats.capture_start_ntp_time_ms); |
301 } | 305 } |
302 } // namespace test | 306 } // namespace test |
303 } // namespace webrtc | 307 } // namespace webrtc |
OLD | NEW |