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 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
234 ElementsAre(states.encoder->next_frame_length_ms())); | 234 ElementsAre(states.encoder->next_frame_length_ms())); |
235 states.encoder->SetReceiverFrameLengthRange(0, 12345); | 235 states.encoder->SetReceiverFrameLengthRange(0, 12345); |
236 EXPECT_THAT(states.encoder->supported_frame_lengths_ms(), | 236 EXPECT_THAT(states.encoder->supported_frame_lengths_ms(), |
237 ElementsAre(20, 60)); | 237 ElementsAre(20, 60)); |
238 states.encoder->SetReceiverFrameLengthRange(21, 60); | 238 states.encoder->SetReceiverFrameLengthRange(21, 60); |
239 EXPECT_THAT(states.encoder->supported_frame_lengths_ms(), ElementsAre(60)); | 239 EXPECT_THAT(states.encoder->supported_frame_lengths_ms(), ElementsAre(60)); |
240 states.encoder->SetReceiverFrameLengthRange(20, 59); | 240 states.encoder->SetReceiverFrameLengthRange(20, 59); |
241 EXPECT_THAT(states.encoder->supported_frame_lengths_ms(), ElementsAre(20)); | 241 EXPECT_THAT(states.encoder->supported_frame_lengths_ms(), ElementsAre(20)); |
242 } | 242 } |
243 | 243 |
244 TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnSetUplinkBandwidth) { | 244 TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedUplinkBandwidth) { |
minyue-webrtc
2016/11/24 13:31:10
changed because the name was not very good.
| |
245 auto states = CreateCodec(2); | 245 auto states = CreateCodec(2); |
246 states.encoder->EnableAudioNetworkAdaptor("", nullptr); | 246 states.encoder->EnableAudioNetworkAdaptor("", nullptr); |
247 | 247 |
248 auto config = CreateEncoderRuntimeConfig(); | 248 auto config = CreateEncoderRuntimeConfig(); |
249 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) | 249 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) |
250 .WillOnce(Return(config)); | 250 .WillOnce(Return(config)); |
251 | 251 |
252 // Since using mock audio network adaptor, any bandwidth value is fine. | 252 // Since using mock audio network adaptor, any bandwidth value is fine. |
253 constexpr int kUplinkBandwidth = 50000; | 253 constexpr int kUplinkBandwidth = 50000; |
254 EXPECT_CALL(**states.mock_audio_network_adaptor, | 254 EXPECT_CALL(**states.mock_audio_network_adaptor, |
255 SetUplinkBandwidth(kUplinkBandwidth)); | 255 SetUplinkBandwidth(kUplinkBandwidth)); |
256 states.encoder->OnReceivedUplinkBandwidth(kUplinkBandwidth); | 256 states.encoder->OnReceivedUplinkBandwidth(kUplinkBandwidth); |
257 | 257 |
258 CheckEncoderRuntimeConfig(states.encoder.get(), config); | 258 CheckEncoderRuntimeConfig(states.encoder.get(), config); |
259 } | 259 } |
260 | 260 |
261 TEST(AudioEncoderOpusTest, | 261 TEST(AudioEncoderOpusTest, |
262 InvokeAudioNetworkAdaptorOnSetUplinkPacketLossFraction) { | 262 InvokeAudioNetworkAdaptorOnReceivedUplinkPacketLossFraction) { |
263 auto states = CreateCodec(2); | 263 auto states = CreateCodec(2); |
264 states.encoder->EnableAudioNetworkAdaptor("", nullptr); | 264 states.encoder->EnableAudioNetworkAdaptor("", nullptr); |
265 | 265 |
266 auto config = CreateEncoderRuntimeConfig(); | 266 auto config = CreateEncoderRuntimeConfig(); |
267 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) | 267 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) |
268 .WillOnce(Return(config)); | 268 .WillOnce(Return(config)); |
269 | 269 |
270 // Since using mock audio network adaptor, any packet loss fraction is fine. | 270 // Since using mock audio network adaptor, any packet loss fraction is fine. |
271 constexpr float kUplinkPacketLoss = 0.1f; | 271 constexpr float kUplinkPacketLoss = 0.1f; |
272 EXPECT_CALL(**states.mock_audio_network_adaptor, | 272 EXPECT_CALL(**states.mock_audio_network_adaptor, |
273 SetUplinkPacketLossFraction(kUplinkPacketLoss)); | 273 SetUplinkPacketLossFraction(kUplinkPacketLoss)); |
274 states.encoder->OnReceivedUplinkPacketLossFraction(kUplinkPacketLoss); | 274 states.encoder->OnReceivedUplinkPacketLossFraction(kUplinkPacketLoss); |
275 | 275 |
276 CheckEncoderRuntimeConfig(states.encoder.get(), config); | 276 CheckEncoderRuntimeConfig(states.encoder.get(), config); |
277 } | 277 } |
278 | 278 |
279 TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnSetTargetAudioBitrate) { | 279 TEST(AudioEncoderOpusTest, |
280 InvokeAudioNetworkAdaptorOnReceivedTargetAudioBitrate) { | |
280 auto states = CreateCodec(2); | 281 auto states = CreateCodec(2); |
281 states.encoder->EnableAudioNetworkAdaptor("", nullptr); | 282 states.encoder->EnableAudioNetworkAdaptor("", nullptr); |
282 | 283 |
283 auto config = CreateEncoderRuntimeConfig(); | 284 auto config = CreateEncoderRuntimeConfig(); |
284 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) | 285 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) |
285 .WillOnce(Return(config)); | 286 .WillOnce(Return(config)); |
286 | 287 |
287 // Since using mock audio network adaptor, any target audio bitrate is fine. | 288 // Since using mock audio network adaptor, any target audio bitrate is fine. |
288 constexpr int kTargetAudioBitrate = 30000; | 289 constexpr int kTargetAudioBitrate = 30000; |
289 EXPECT_CALL(**states.mock_audio_network_adaptor, | 290 EXPECT_CALL(**states.mock_audio_network_adaptor, |
290 SetTargetAudioBitrate(kTargetAudioBitrate)); | 291 SetTargetAudioBitrate(kTargetAudioBitrate)); |
291 states.encoder->OnReceivedTargetAudioBitrate(kTargetAudioBitrate); | 292 states.encoder->OnReceivedTargetAudioBitrate(kTargetAudioBitrate); |
292 | 293 |
293 CheckEncoderRuntimeConfig(states.encoder.get(), config); | 294 CheckEncoderRuntimeConfig(states.encoder.get(), config); |
294 } | 295 } |
295 | 296 |
296 TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnSetRtt) { | 297 TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedRtt) { |
297 auto states = CreateCodec(2); | 298 auto states = CreateCodec(2); |
298 states.encoder->EnableAudioNetworkAdaptor("", nullptr); | 299 states.encoder->EnableAudioNetworkAdaptor("", nullptr); |
299 | 300 |
300 auto config = CreateEncoderRuntimeConfig(); | 301 auto config = CreateEncoderRuntimeConfig(); |
301 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) | 302 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) |
302 .WillOnce(Return(config)); | 303 .WillOnce(Return(config)); |
303 | 304 |
304 // Since using mock audio network adaptor, any rtt is fine. | 305 // Since using mock audio network adaptor, any rtt is fine. |
305 constexpr int kRtt = 30; | 306 constexpr int kRtt = 30; |
306 EXPECT_CALL(**states.mock_audio_network_adaptor, SetRtt(kRtt)); | 307 EXPECT_CALL(**states.mock_audio_network_adaptor, SetRtt(kRtt)); |
307 states.encoder->OnReceivedRtt(kRtt); | 308 states.encoder->OnReceivedRtt(kRtt); |
308 | 309 |
309 CheckEncoderRuntimeConfig(states.encoder.get(), config); | 310 CheckEncoderRuntimeConfig(states.encoder.get(), config); |
310 } | 311 } |
311 | 312 |
313 TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedOverhead) { | |
314 auto states = CreateCodec(2); | |
315 states.encoder->EnableAudioNetworkAdaptor("", nullptr); | |
316 | |
317 auto config = CreateEncoderRuntimeConfig(); | |
318 EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) | |
319 .WillOnce(Return(config)); | |
320 | |
321 // Since using mock audio network adaptor, any overhead is fine. | |
322 constexpr size_t kOverhead = 64; | |
323 EXPECT_CALL(**states.mock_audio_network_adaptor, SetOverhead(kOverhead)); | |
324 states.encoder->OnReceivedOverhead(kOverhead); | |
325 | |
326 CheckEncoderRuntimeConfig(states.encoder.get(), config); | |
327 } | |
328 | |
312 TEST(AudioEncoderOpusTest, | 329 TEST(AudioEncoderOpusTest, |
313 PacketLossFractionSmoothedOnSetUplinkPacketLossFraction) { | 330 PacketLossFractionSmoothedOnSetUplinkPacketLossFraction) { |
314 auto states = CreateCodec(2); | 331 auto states = CreateCodec(2); |
315 | 332 |
316 // The values are carefully chosen so that if no smoothing is made, the test | 333 // The values are carefully chosen so that if no smoothing is made, the test |
317 // will fail. | 334 // will fail. |
318 constexpr float kPacketLossFraction_1 = 0.02f; | 335 constexpr float kPacketLossFraction_1 = 0.02f; |
319 constexpr float kPacketLossFraction_2 = 0.198f; | 336 constexpr float kPacketLossFraction_2 = 0.198f; |
320 // |kSecondSampleTimeMs| is chose to ease the calculation since | 337 // |kSecondSampleTimeMs| is chose to ease the calculation since |
321 // 0.9999 ^ 6931 = 0.5. | 338 // 0.9999 ^ 6931 = 0.5. |
322 constexpr float kSecondSampleTimeMs = 6931; | 339 constexpr float kSecondSampleTimeMs = 6931; |
323 | 340 |
324 // First time, no filtering. | 341 // First time, no filtering. |
325 states.encoder->OnReceivedUplinkPacketLossFraction(kPacketLossFraction_1); | 342 states.encoder->OnReceivedUplinkPacketLossFraction(kPacketLossFraction_1); |
326 EXPECT_DOUBLE_EQ(0.01, states.encoder->packet_loss_rate()); | 343 EXPECT_DOUBLE_EQ(0.01, states.encoder->packet_loss_rate()); |
327 | 344 |
328 states.simulated_clock->AdvanceTimeMilliseconds(kSecondSampleTimeMs); | 345 states.simulated_clock->AdvanceTimeMilliseconds(kSecondSampleTimeMs); |
329 states.encoder->OnReceivedUplinkPacketLossFraction(kPacketLossFraction_2); | 346 states.encoder->OnReceivedUplinkPacketLossFraction(kPacketLossFraction_2); |
330 | 347 |
331 // Now the output of packet loss fraction smoother should be | 348 // Now the output of packet loss fraction smoother should be |
332 // (0.02 + 0.198) / 2 = 0.109, which reach the threshold for the optimized | 349 // (0.02 + 0.198) / 2 = 0.109, which reach the threshold for the optimized |
333 // packet loss rate to increase to 0.05. If no smoothing has been made, the | 350 // packet loss rate to increase to 0.05. If no smoothing has been made, the |
334 // optimized packet loss rate should have been increase to 0.1. | 351 // optimized packet loss rate should have been increase to 0.1. |
335 EXPECT_DOUBLE_EQ(0.05, states.encoder->packet_loss_rate()); | 352 EXPECT_DOUBLE_EQ(0.05, states.encoder->packet_loss_rate()); |
336 } | 353 } |
337 | 354 |
338 } // namespace webrtc | 355 } // namespace webrtc |
OLD | NEW |