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

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"),
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698