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

Side by Side Diff: webrtc/modules/audio_processing/test/debug_dump_test.cc

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

Powered by Google App Engine
This is Rietveld 408576698