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

Side by Side Diff: webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc

Issue 2528933002: Adding OnReceivedOverhead to AudioEncoder. (Closed)
Patch Set: Created 4 years 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
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698