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 30 matching lines...) Expand all Loading... | |
41 DebugDumpGenerator(const std::string& input_file_name, | 41 DebugDumpGenerator(const std::string& input_file_name, |
42 int input_file_rate_hz, | 42 int input_file_rate_hz, |
43 int input_channels, | 43 int input_channels, |
44 const std::string& reverse_file_name, | 44 const std::string& reverse_file_name, |
45 int reverse_file_rate_hz, | 45 int reverse_file_rate_hz, |
46 int reverse_channels, | 46 int reverse_channels, |
47 const Config& config, | 47 const Config& config, |
48 const std::string& dump_file_name); | 48 const std::string& dump_file_name); |
49 | 49 |
50 // Constructor that uses default input files. | 50 // Constructor that uses default input files. |
51 explicit DebugDumpGenerator(const Config& config); | 51 explicit DebugDumpGenerator(const Config& config, |
52 const AudioProcessing::Config& apm_config); | |
52 | 53 |
53 ~DebugDumpGenerator(); | 54 ~DebugDumpGenerator(); |
54 | 55 |
55 // Changes the sample rate of the input audio to the APM. | 56 // Changes the sample rate of the input audio to the APM. |
56 void SetInputRate(int rate_hz); | 57 void SetInputRate(int rate_hz); |
57 | 58 |
58 // Sets if converts stereo input signal to mono by discarding other channels. | 59 // Sets if converts stereo input signal to mono by discarding other channels. |
59 void ForceInputMono(bool mono); | 60 void ForceInputMono(bool mono); |
60 | 61 |
61 // Changes the sample rate of the reverse audio to the APM. | 62 // Changes the sample rate of the reverse audio to the APM. |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
126 input_(new ChannelBuffer<float>(input_config_.num_frames(), | 127 input_(new ChannelBuffer<float>(input_config_.num_frames(), |
127 input_config_.num_channels())), | 128 input_config_.num_channels())), |
128 reverse_(new ChannelBuffer<float>(reverse_config_.num_frames(), | 129 reverse_(new ChannelBuffer<float>(reverse_config_.num_frames(), |
129 reverse_config_.num_channels())), | 130 reverse_config_.num_channels())), |
130 output_(new ChannelBuffer<float>(output_config_.num_frames(), | 131 output_(new ChannelBuffer<float>(output_config_.num_frames(), |
131 output_config_.num_channels())), | 132 output_config_.num_channels())), |
132 apm_(AudioProcessing::Create(config)), | 133 apm_(AudioProcessing::Create(config)), |
133 dump_file_name_(dump_file_name) { | 134 dump_file_name_(dump_file_name) { |
134 } | 135 } |
135 | 136 |
136 DebugDumpGenerator::DebugDumpGenerator(const Config& config) | 137 DebugDumpGenerator::DebugDumpGenerator( |
137 : DebugDumpGenerator(ResourcePath("near32_stereo", "pcm"), 32000, 2, | 138 const Config& config, |
138 ResourcePath("far32_stereo", "pcm"), 32000, 2, | 139 const AudioProcessing::Config& apm_config) |
139 config, | 140 : DebugDumpGenerator(ResourcePath("near32_stereo", "pcm"), |
140 TempFilename(OutputPath(), "debug_aec")) { | 141 32000, |
142 2, | |
143 ResourcePath("far32_stereo", "pcm"), | |
144 32000, | |
145 2, | |
146 config, | |
147 TempFilename(OutputPath(), "debug_aec")) { | |
148 RTC_DCHECK(apm_config.Validate()); | |
the sun
2016/09/01 13:48:01
dd
peah-webrtc
2016/09/02 08:22:03
Done.
| |
149 RTC_CHECK(apm_->ApplyConfig(apm_config)); | |
141 } | 150 } |
142 | 151 |
143 DebugDumpGenerator::~DebugDumpGenerator() { | 152 DebugDumpGenerator::~DebugDumpGenerator() { |
144 remove(dump_file_name_.c_str()); | 153 remove(dump_file_name_.c_str()); |
145 } | 154 } |
146 | 155 |
147 void DebugDumpGenerator::SetInputRate(int rate_hz) { | 156 void DebugDumpGenerator::SetInputRate(int rate_hz) { |
148 input_audio_.set_output_rate_hz(rate_hz); | 157 input_audio_.set_output_rate_hz(rate_hz); |
149 input_config_.set_sample_rate_hz(rate_hz); | 158 input_config_.set_sample_rate_hz(rate_hz); |
150 MaybeResetBuffer(&input_, input_config_); | 159 MaybeResetBuffer(&input_, input_config_); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
258 ASSERT_EQ(0, memcmp(output->channels()[i], | 267 ASSERT_EQ(0, memcmp(output->channels()[i], |
259 msg->output_channel(i).data(), | 268 msg->output_channel(i).data(), |
260 msg->output_channel(i).size())); | 269 msg->output_channel(i).size())); |
261 } | 270 } |
262 } | 271 } |
263 } | 272 } |
264 } | 273 } |
265 | 274 |
266 TEST_F(DebugDumpTest, SimpleCase) { | 275 TEST_F(DebugDumpTest, SimpleCase) { |
267 Config config; | 276 Config config; |
268 DebugDumpGenerator generator(config); | 277 AudioProcessing::Config apm_config; |
278 DebugDumpGenerator generator(config, apm_config); | |
269 generator.StartRecording(); | 279 generator.StartRecording(); |
270 generator.Process(100); | 280 generator.Process(100); |
271 generator.StopRecording(); | 281 generator.StopRecording(); |
272 VerifyDebugDump(generator.dump_file_name()); | 282 VerifyDebugDump(generator.dump_file_name()); |
273 } | 283 } |
274 | 284 |
275 TEST_F(DebugDumpTest, ChangeInputFormat) { | 285 TEST_F(DebugDumpTest, ChangeInputFormat) { |
276 Config config; | 286 Config config; |
277 DebugDumpGenerator generator(config); | 287 AudioProcessing::Config apm_config; |
288 DebugDumpGenerator generator(config, apm_config); | |
289 | |
278 generator.StartRecording(); | 290 generator.StartRecording(); |
279 generator.Process(100); | 291 generator.Process(100); |
280 generator.SetInputRate(48000); | 292 generator.SetInputRate(48000); |
281 | 293 |
282 generator.ForceInputMono(true); | 294 generator.ForceInputMono(true); |
283 // Number of output channel should not be larger than that of input. APM will | 295 // Number of output channel should not be larger than that of input. APM will |
284 // fail otherwise. | 296 // fail otherwise. |
285 generator.SetOutputChannels(1); | 297 generator.SetOutputChannels(1); |
286 | 298 |
287 generator.Process(100); | 299 generator.Process(100); |
288 generator.StopRecording(); | 300 generator.StopRecording(); |
289 VerifyDebugDump(generator.dump_file_name()); | 301 VerifyDebugDump(generator.dump_file_name()); |
290 } | 302 } |
291 | 303 |
292 TEST_F(DebugDumpTest, ChangeReverseFormat) { | 304 TEST_F(DebugDumpTest, ChangeReverseFormat) { |
293 Config config; | 305 Config config; |
294 DebugDumpGenerator generator(config); | 306 AudioProcessing::Config apm_config; |
307 DebugDumpGenerator generator(config, apm_config); | |
295 generator.StartRecording(); | 308 generator.StartRecording(); |
296 generator.Process(100); | 309 generator.Process(100); |
297 generator.SetReverseRate(48000); | 310 generator.SetReverseRate(48000); |
298 generator.ForceReverseMono(true); | 311 generator.ForceReverseMono(true); |
299 generator.Process(100); | 312 generator.Process(100); |
300 generator.StopRecording(); | 313 generator.StopRecording(); |
301 VerifyDebugDump(generator.dump_file_name()); | 314 VerifyDebugDump(generator.dump_file_name()); |
302 } | 315 } |
303 | 316 |
304 TEST_F(DebugDumpTest, ChangeOutputFormat) { | 317 TEST_F(DebugDumpTest, ChangeOutputFormat) { |
305 Config config; | 318 Config config; |
306 DebugDumpGenerator generator(config); | 319 AudioProcessing::Config apm_config; |
320 DebugDumpGenerator generator(config, apm_config); | |
307 generator.StartRecording(); | 321 generator.StartRecording(); |
308 generator.Process(100); | 322 generator.Process(100); |
309 generator.SetOutputRate(48000); | 323 generator.SetOutputRate(48000); |
310 generator.SetOutputChannels(1); | 324 generator.SetOutputChannels(1); |
311 generator.Process(100); | 325 generator.Process(100); |
312 generator.StopRecording(); | 326 generator.StopRecording(); |
313 VerifyDebugDump(generator.dump_file_name()); | 327 VerifyDebugDump(generator.dump_file_name()); |
314 } | 328 } |
315 | 329 |
316 TEST_F(DebugDumpTest, ToggleAec) { | 330 TEST_F(DebugDumpTest, ToggleAec) { |
317 Config config; | 331 Config config; |
318 DebugDumpGenerator generator(config); | 332 AudioProcessing::Config apm_config; |
333 DebugDumpGenerator generator(config, apm_config); | |
319 generator.StartRecording(); | 334 generator.StartRecording(); |
320 generator.Process(100); | 335 generator.Process(100); |
321 | 336 |
322 EchoCancellation* aec = generator.apm()->echo_cancellation(); | 337 EchoCancellation* aec = generator.apm()->echo_cancellation(); |
323 EXPECT_EQ(AudioProcessing::kNoError, aec->Enable(!aec->is_enabled())); | 338 EXPECT_EQ(AudioProcessing::kNoError, aec->Enable(!aec->is_enabled())); |
324 | 339 |
325 generator.Process(100); | 340 generator.Process(100); |
326 generator.StopRecording(); | 341 generator.StopRecording(); |
327 VerifyDebugDump(generator.dump_file_name()); | 342 VerifyDebugDump(generator.dump_file_name()); |
328 } | 343 } |
329 | 344 |
330 TEST_F(DebugDumpTest, ToggleDelayAgnosticAec) { | 345 TEST_F(DebugDumpTest, ToggleDelayAgnosticAec) { |
331 Config config; | 346 Config config; |
347 AudioProcessing::Config apm_config; | |
332 config.Set<DelayAgnostic>(new DelayAgnostic(true)); | 348 config.Set<DelayAgnostic>(new DelayAgnostic(true)); |
333 DebugDumpGenerator generator(config); | 349 DebugDumpGenerator generator(config, apm_config); |
334 generator.StartRecording(); | 350 generator.StartRecording(); |
335 generator.Process(100); | 351 generator.Process(100); |
336 | 352 |
337 EchoCancellation* aec = generator.apm()->echo_cancellation(); | 353 EchoCancellation* aec = generator.apm()->echo_cancellation(); |
338 EXPECT_EQ(AudioProcessing::kNoError, aec->Enable(!aec->is_enabled())); | 354 EXPECT_EQ(AudioProcessing::kNoError, aec->Enable(!aec->is_enabled())); |
339 | 355 |
340 generator.Process(100); | 356 generator.Process(100); |
341 generator.StopRecording(); | 357 generator.StopRecording(); |
342 VerifyDebugDump(generator.dump_file_name()); | 358 VerifyDebugDump(generator.dump_file_name()); |
343 } | 359 } |
344 | 360 |
345 TEST_F(DebugDumpTest, VerifyRefinedAdaptiveFilterExperimentalString) { | 361 TEST_F(DebugDumpTest, VerifyRefinedAdaptiveFilterExperimentalString) { |
346 Config config; | 362 Config config; |
363 AudioProcessing::Config apm_config; | |
347 config.Set<RefinedAdaptiveFilter>(new RefinedAdaptiveFilter(true)); | 364 config.Set<RefinedAdaptiveFilter>(new RefinedAdaptiveFilter(true)); |
348 DebugDumpGenerator generator(config); | 365 DebugDumpGenerator generator(config, apm_config); |
349 generator.StartRecording(); | 366 generator.StartRecording(); |
350 generator.Process(100); | 367 generator.Process(100); |
351 generator.StopRecording(); | 368 generator.StopRecording(); |
352 | 369 |
353 DebugDumpReplayer debug_dump_replayer_; | 370 DebugDumpReplayer debug_dump_replayer_; |
354 | 371 |
355 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); | 372 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); |
356 | 373 |
357 while (const rtc::Optional<audioproc::Event> event = | 374 while (const rtc::Optional<audioproc::Event> event = |
358 debug_dump_replayer_.GetNextEvent()) { | 375 debug_dump_replayer_.GetNextEvent()) { |
359 debug_dump_replayer_.RunNextEvent(); | 376 debug_dump_replayer_.RunNextEvent(); |
360 if (event->type() == audioproc::Event::CONFIG) { | 377 if (event->type() == audioproc::Event::CONFIG) { |
361 const audioproc::Config* msg = &event->config(); | 378 const audioproc::Config* msg = &event->config(); |
362 ASSERT_TRUE(msg->has_experiments_description()); | 379 ASSERT_TRUE(msg->has_experiments_description()); |
363 EXPECT_PRED_FORMAT2(testing::IsSubstring, "RefinedAdaptiveFilter", | 380 EXPECT_PRED_FORMAT2(testing::IsSubstring, "RefinedAdaptiveFilter", |
364 msg->experiments_description().c_str()); | 381 msg->experiments_description().c_str()); |
365 } | 382 } |
366 } | 383 } |
367 } | 384 } |
368 | 385 |
369 TEST_F(DebugDumpTest, VerifyCombinedExperimentalStringInclusive) { | 386 TEST_F(DebugDumpTest, VerifyCombinedExperimentalStringInclusive) { |
370 Config config; | 387 Config config; |
388 AudioProcessing::Config apm_config; | |
371 config.Set<RefinedAdaptiveFilter>(new RefinedAdaptiveFilter(true)); | 389 config.Set<RefinedAdaptiveFilter>(new RefinedAdaptiveFilter(true)); |
372 config.Set<EchoCanceller3>(new EchoCanceller3(true)); | 390 config.Set<EchoCanceller3>(new EchoCanceller3(true)); |
373 DebugDumpGenerator generator(config); | 391 DebugDumpGenerator generator(config, apm_config); |
374 generator.StartRecording(); | 392 generator.StartRecording(); |
375 generator.Process(100); | 393 generator.Process(100); |
376 generator.StopRecording(); | 394 generator.StopRecording(); |
377 | 395 |
378 DebugDumpReplayer debug_dump_replayer_; | 396 DebugDumpReplayer debug_dump_replayer_; |
379 | 397 |
380 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); | 398 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); |
381 | 399 |
382 while (const rtc::Optional<audioproc::Event> event = | 400 while (const rtc::Optional<audioproc::Event> event = |
383 debug_dump_replayer_.GetNextEvent()) { | 401 debug_dump_replayer_.GetNextEvent()) { |
384 debug_dump_replayer_.RunNextEvent(); | 402 debug_dump_replayer_.RunNextEvent(); |
385 if (event->type() == audioproc::Event::CONFIG) { | 403 if (event->type() == audioproc::Event::CONFIG) { |
386 const audioproc::Config* msg = &event->config(); | 404 const audioproc::Config* msg = &event->config(); |
387 ASSERT_TRUE(msg->has_experiments_description()); | 405 ASSERT_TRUE(msg->has_experiments_description()); |
388 EXPECT_PRED_FORMAT2(testing::IsSubstring, "RefinedAdaptiveFilter", | 406 EXPECT_PRED_FORMAT2(testing::IsSubstring, "RefinedAdaptiveFilter", |
389 msg->experiments_description().c_str()); | 407 msg->experiments_description().c_str()); |
390 EXPECT_PRED_FORMAT2(testing::IsSubstring, "AEC3", | 408 EXPECT_PRED_FORMAT2(testing::IsSubstring, "AEC3", |
391 msg->experiments_description().c_str()); | 409 msg->experiments_description().c_str()); |
392 } | 410 } |
393 } | 411 } |
394 } | 412 } |
395 | 413 |
396 TEST_F(DebugDumpTest, VerifyCombinedExperimentalStringExclusive) { | 414 TEST_F(DebugDumpTest, VerifyCombinedExperimentalStringExclusive) { |
397 Config config; | 415 Config config; |
416 AudioProcessing::Config apm_config; | |
398 config.Set<RefinedAdaptiveFilter>(new RefinedAdaptiveFilter(true)); | 417 config.Set<RefinedAdaptiveFilter>(new RefinedAdaptiveFilter(true)); |
399 DebugDumpGenerator generator(config); | 418 DebugDumpGenerator generator(config, apm_config); |
400 generator.StartRecording(); | 419 generator.StartRecording(); |
401 generator.Process(100); | 420 generator.Process(100); |
402 generator.StopRecording(); | 421 generator.StopRecording(); |
403 | 422 |
404 DebugDumpReplayer debug_dump_replayer_; | 423 DebugDumpReplayer debug_dump_replayer_; |
405 | 424 |
406 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); | 425 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); |
407 | 426 |
408 while (const rtc::Optional<audioproc::Event> event = | 427 while (const rtc::Optional<audioproc::Event> event = |
409 debug_dump_replayer_.GetNextEvent()) { | 428 debug_dump_replayer_.GetNextEvent()) { |
410 debug_dump_replayer_.RunNextEvent(); | 429 debug_dump_replayer_.RunNextEvent(); |
411 if (event->type() == audioproc::Event::CONFIG) { | 430 if (event->type() == audioproc::Event::CONFIG) { |
412 const audioproc::Config* msg = &event->config(); | 431 const audioproc::Config* msg = &event->config(); |
413 ASSERT_TRUE(msg->has_experiments_description()); | 432 ASSERT_TRUE(msg->has_experiments_description()); |
414 EXPECT_PRED_FORMAT2(testing::IsSubstring, "RefinedAdaptiveFilter", | 433 EXPECT_PRED_FORMAT2(testing::IsSubstring, "RefinedAdaptiveFilter", |
415 msg->experiments_description().c_str()); | 434 msg->experiments_description().c_str()); |
416 EXPECT_PRED_FORMAT2(testing::IsNotSubstring, "AEC3", | 435 EXPECT_PRED_FORMAT2(testing::IsNotSubstring, "AEC3", |
417 msg->experiments_description().c_str()); | 436 msg->experiments_description().c_str()); |
418 } | 437 } |
419 } | 438 } |
420 } | 439 } |
421 | 440 |
422 TEST_F(DebugDumpTest, VerifyAec3ExperimentalString) { | 441 TEST_F(DebugDumpTest, VerifyAec3ExperimentalString) { |
423 Config config; | 442 Config config; |
443 AudioProcessing::Config apm_config; | |
424 config.Set<EchoCanceller3>(new EchoCanceller3(true)); | 444 config.Set<EchoCanceller3>(new EchoCanceller3(true)); |
425 DebugDumpGenerator generator(config); | 445 DebugDumpGenerator generator(config, apm_config); |
426 generator.StartRecording(); | 446 generator.StartRecording(); |
427 generator.Process(100); | 447 generator.Process(100); |
428 generator.StopRecording(); | 448 generator.StopRecording(); |
429 | 449 |
430 DebugDumpReplayer debug_dump_replayer_; | 450 DebugDumpReplayer debug_dump_replayer_; |
431 | 451 |
432 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); | 452 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); |
433 | 453 |
434 while (const rtc::Optional<audioproc::Event> event = | 454 while (const rtc::Optional<audioproc::Event> event = |
435 debug_dump_replayer_.GetNextEvent()) { | 455 debug_dump_replayer_.GetNextEvent()) { |
436 debug_dump_replayer_.RunNextEvent(); | 456 debug_dump_replayer_.RunNextEvent(); |
437 if (event->type() == audioproc::Event::CONFIG) { | 457 if (event->type() == audioproc::Event::CONFIG) { |
438 const audioproc::Config* msg = &event->config(); | 458 const audioproc::Config* msg = &event->config(); |
439 ASSERT_TRUE(msg->has_experiments_description()); | 459 ASSERT_TRUE(msg->has_experiments_description()); |
440 EXPECT_PRED_FORMAT2(testing::IsSubstring, "AEC3", | 460 EXPECT_PRED_FORMAT2(testing::IsSubstring, "AEC3", |
441 msg->experiments_description().c_str()); | 461 msg->experiments_description().c_str()); |
442 } | 462 } |
443 } | 463 } |
444 } | 464 } |
445 | 465 |
446 TEST_F(DebugDumpTest, VerifyLevelControllerExperimentalString) { | 466 TEST_F(DebugDumpTest, VerifyLevelControllerExperimentalString) { |
447 Config config; | 467 Config config; |
448 config.Set<LevelControl>(new LevelControl(true)); | 468 AudioProcessing::Config apm_config; |
449 DebugDumpGenerator generator(config); | 469 apm_config.level_controller.enabled = true; |
470 DebugDumpGenerator generator(config, apm_config); | |
450 generator.StartRecording(); | 471 generator.StartRecording(); |
451 generator.Process(100); | 472 generator.Process(100); |
452 generator.StopRecording(); | 473 generator.StopRecording(); |
453 | 474 |
454 DebugDumpReplayer debug_dump_replayer_; | 475 DebugDumpReplayer debug_dump_replayer_; |
455 | 476 |
456 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); | 477 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); |
457 | 478 |
458 while (const rtc::Optional<audioproc::Event> event = | 479 while (const rtc::Optional<audioproc::Event> event = |
459 debug_dump_replayer_.GetNextEvent()) { | 480 debug_dump_replayer_.GetNextEvent()) { |
460 debug_dump_replayer_.RunNextEvent(); | 481 debug_dump_replayer_.RunNextEvent(); |
461 if (event->type() == audioproc::Event::CONFIG) { | 482 if (event->type() == audioproc::Event::CONFIG) { |
462 const audioproc::Config* msg = &event->config(); | 483 const audioproc::Config* msg = &event->config(); |
463 ASSERT_TRUE(msg->has_experiments_description()); | 484 ASSERT_TRUE(msg->has_experiments_description()); |
464 EXPECT_PRED_FORMAT2(testing::IsSubstring, "LevelController", | 485 EXPECT_PRED_FORMAT2(testing::IsSubstring, "LevelController", |
465 msg->experiments_description().c_str()); | 486 msg->experiments_description().c_str()); |
466 } | 487 } |
467 } | 488 } |
468 } | 489 } |
469 | 490 |
470 TEST_F(DebugDumpTest, VerifyEmptyExperimentalString) { | 491 TEST_F(DebugDumpTest, VerifyEmptyExperimentalString) { |
471 Config config; | 492 Config config; |
472 DebugDumpGenerator generator(config); | 493 AudioProcessing::Config apm_config; |
494 DebugDumpGenerator generator(config, apm_config); | |
473 generator.StartRecording(); | 495 generator.StartRecording(); |
474 generator.Process(100); | 496 generator.Process(100); |
475 generator.StopRecording(); | 497 generator.StopRecording(); |
476 | 498 |
477 DebugDumpReplayer debug_dump_replayer_; | 499 DebugDumpReplayer debug_dump_replayer_; |
478 | 500 |
479 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); | 501 ASSERT_TRUE(debug_dump_replayer_.SetDumpFile(generator.dump_file_name())); |
480 | 502 |
481 while (const rtc::Optional<audioproc::Event> event = | 503 while (const rtc::Optional<audioproc::Event> event = |
482 debug_dump_replayer_.GetNextEvent()) { | 504 debug_dump_replayer_.GetNextEvent()) { |
483 debug_dump_replayer_.RunNextEvent(); | 505 debug_dump_replayer_.RunNextEvent(); |
484 if (event->type() == audioproc::Event::CONFIG) { | 506 if (event->type() == audioproc::Event::CONFIG) { |
485 const audioproc::Config* msg = &event->config(); | 507 const audioproc::Config* msg = &event->config(); |
486 ASSERT_TRUE(msg->has_experiments_description()); | 508 ASSERT_TRUE(msg->has_experiments_description()); |
487 EXPECT_EQ(0u, msg->experiments_description().size()); | 509 EXPECT_EQ(0u, msg->experiments_description().size()); |
488 } | 510 } |
489 } | 511 } |
490 } | 512 } |
491 | 513 |
492 TEST_F(DebugDumpTest, ToggleAecLevel) { | 514 TEST_F(DebugDumpTest, ToggleAecLevel) { |
493 Config config; | 515 Config config; |
494 DebugDumpGenerator generator(config); | 516 AudioProcessing::Config apm_config; |
517 DebugDumpGenerator generator(config, apm_config); | |
495 EchoCancellation* aec = generator.apm()->echo_cancellation(); | 518 EchoCancellation* aec = generator.apm()->echo_cancellation(); |
496 EXPECT_EQ(AudioProcessing::kNoError, aec->Enable(true)); | 519 EXPECT_EQ(AudioProcessing::kNoError, aec->Enable(true)); |
497 EXPECT_EQ(AudioProcessing::kNoError, | 520 EXPECT_EQ(AudioProcessing::kNoError, |
498 aec->set_suppression_level(EchoCancellation::kLowSuppression)); | 521 aec->set_suppression_level(EchoCancellation::kLowSuppression)); |
499 generator.StartRecording(); | 522 generator.StartRecording(); |
500 generator.Process(100); | 523 generator.Process(100); |
501 | 524 |
502 EXPECT_EQ(AudioProcessing::kNoError, | 525 EXPECT_EQ(AudioProcessing::kNoError, |
503 aec->set_suppression_level(EchoCancellation::kHighSuppression)); | 526 aec->set_suppression_level(EchoCancellation::kHighSuppression)); |
504 generator.Process(100); | 527 generator.Process(100); |
505 generator.StopRecording(); | 528 generator.StopRecording(); |
506 VerifyDebugDump(generator.dump_file_name()); | 529 VerifyDebugDump(generator.dump_file_name()); |
507 } | 530 } |
508 | 531 |
509 #if defined(WEBRTC_ANDROID) | 532 #if defined(WEBRTC_ANDROID) |
510 // AGC may not be supported on Android. | 533 // AGC may not be supported on Android. |
511 #define MAYBE_ToggleAgc DISABLED_ToggleAgc | 534 #define MAYBE_ToggleAgc DISABLED_ToggleAgc |
512 #else | 535 #else |
513 #define MAYBE_ToggleAgc ToggleAgc | 536 #define MAYBE_ToggleAgc ToggleAgc |
514 #endif | 537 #endif |
515 TEST_F(DebugDumpTest, MAYBE_ToggleAgc) { | 538 TEST_F(DebugDumpTest, MAYBE_ToggleAgc) { |
516 Config config; | 539 Config config; |
517 DebugDumpGenerator generator(config); | 540 AudioProcessing::Config apm_config; |
541 DebugDumpGenerator generator(config, apm_config); | |
518 generator.StartRecording(); | 542 generator.StartRecording(); |
519 generator.Process(100); | 543 generator.Process(100); |
520 | 544 |
521 GainControl* agc = generator.apm()->gain_control(); | 545 GainControl* agc = generator.apm()->gain_control(); |
522 EXPECT_EQ(AudioProcessing::kNoError, agc->Enable(!agc->is_enabled())); | 546 EXPECT_EQ(AudioProcessing::kNoError, agc->Enable(!agc->is_enabled())); |
523 | 547 |
524 generator.Process(100); | 548 generator.Process(100); |
525 generator.StopRecording(); | 549 generator.StopRecording(); |
526 VerifyDebugDump(generator.dump_file_name()); | 550 VerifyDebugDump(generator.dump_file_name()); |
527 } | 551 } |
528 | 552 |
529 TEST_F(DebugDumpTest, ToggleNs) { | 553 TEST_F(DebugDumpTest, ToggleNs) { |
530 Config config; | 554 Config config; |
531 DebugDumpGenerator generator(config); | 555 AudioProcessing::Config apm_config; |
556 DebugDumpGenerator generator(config, apm_config); | |
532 generator.StartRecording(); | 557 generator.StartRecording(); |
533 generator.Process(100); | 558 generator.Process(100); |
534 | 559 |
535 NoiseSuppression* ns = generator.apm()->noise_suppression(); | 560 NoiseSuppression* ns = generator.apm()->noise_suppression(); |
536 EXPECT_EQ(AudioProcessing::kNoError, ns->Enable(!ns->is_enabled())); | 561 EXPECT_EQ(AudioProcessing::kNoError, ns->Enable(!ns->is_enabled())); |
537 | 562 |
538 generator.Process(100); | 563 generator.Process(100); |
539 generator.StopRecording(); | 564 generator.StopRecording(); |
540 VerifyDebugDump(generator.dump_file_name()); | 565 VerifyDebugDump(generator.dump_file_name()); |
541 } | 566 } |
542 | 567 |
543 TEST_F(DebugDumpTest, TransientSuppressionOn) { | 568 TEST_F(DebugDumpTest, TransientSuppressionOn) { |
544 Config config; | 569 Config config; |
570 AudioProcessing::Config apm_config; | |
545 config.Set<ExperimentalNs>(new ExperimentalNs(true)); | 571 config.Set<ExperimentalNs>(new ExperimentalNs(true)); |
546 DebugDumpGenerator generator(config); | 572 DebugDumpGenerator generator(config, apm_config); |
547 generator.StartRecording(); | 573 generator.StartRecording(); |
548 generator.Process(100); | 574 generator.Process(100); |
549 generator.StopRecording(); | 575 generator.StopRecording(); |
550 VerifyDebugDump(generator.dump_file_name()); | 576 VerifyDebugDump(generator.dump_file_name()); |
551 } | 577 } |
552 | 578 |
553 } // namespace test | 579 } // namespace test |
554 } // namespace webrtc | 580 } // namespace webrtc |
OLD | NEW |