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

Side by Side Diff: webrtc/modules/audio_processing/agc/agc_manager_direct_unittest.cc

Issue 2543753006: AGC: Route clipping parameter from webrtc::Config to AGC (Closed)
Patch Set: Fix a typo 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) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 15 matching lines...) Expand all
26 using ::testing::SetArgPointee; 26 using ::testing::SetArgPointee;
27 using ::testing::SetArgReferee; 27 using ::testing::SetArgReferee;
28 28
29 namespace webrtc { 29 namespace webrtc {
30 namespace { 30 namespace {
31 31
32 const int kSampleRateHz = 32000; 32 const int kSampleRateHz = 32000;
33 const int kNumChannels = 1; 33 const int kNumChannels = 1;
34 const int kSamplesPerChannel = kSampleRateHz / 100; 34 const int kSamplesPerChannel = kSampleRateHz / 100;
35 const int kInitialVolume = 128; 35 const int kInitialVolume = 128;
36 constexpr int kClippedMin = 165; // Arbitrary, but different from the default.
36 const float kAboveClippedThreshold = 0.2f; 37 const float kAboveClippedThreshold = 0.2f;
37 38
38 class TestVolumeCallbacks : public VolumeCallbacks { 39 class TestVolumeCallbacks : public VolumeCallbacks {
39 public: 40 public:
40 TestVolumeCallbacks() : volume_(0) {} 41 TestVolumeCallbacks() : volume_(0) {}
41 void SetMicVolume(int volume) override { volume_ = volume; } 42 void SetMicVolume(int volume) override { volume_ = volume; }
42 int GetMicVolume() override { return volume_; } 43 int GetMicVolume() override { return volume_; }
43 44
44 private: 45 private:
45 int volume_; 46 int volume_;
46 }; 47 };
47 48
48 } // namespace 49 } // namespace
49 50
50 class AgcManagerDirectTest : public ::testing::Test { 51 class AgcManagerDirectTest : public ::testing::Test {
51 protected: 52 protected:
52 AgcManagerDirectTest() 53 AgcManagerDirectTest()
53 : agc_(new MockAgc), manager_(agc_, &gctrl_, &volume_, kInitialVolume) { 54 : agc_(new MockAgc),
55 manager_(agc_, &gctrl_, &volume_, kInitialVolume, kClippedMin) {
54 ExpectInitialize(); 56 ExpectInitialize();
55 manager_.Initialize(); 57 manager_.Initialize();
56 } 58 }
57 59
58 void FirstProcess() { 60 void FirstProcess() {
59 EXPECT_CALL(*agc_, Reset()); 61 EXPECT_CALL(*agc_, Reset());
60 EXPECT_CALL(*agc_, GetRmsErrorDb(_)).WillOnce(Return(false)); 62 EXPECT_CALL(*agc_, GetRmsErrorDb(_)).WillOnce(Return(false));
61 CallProcess(1); 63 CallProcess(1);
62 } 64 }
63 65
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 EXPECT_EQ(225, volume_.GetMicVolume()); 500 EXPECT_EQ(225, volume_.GetMicVolume());
499 } 501 }
500 502
501 TEST_F(AgcManagerDirectTest, ClippingLoweringIsLimited) { 503 TEST_F(AgcManagerDirectTest, ClippingLoweringIsLimited) {
502 SetVolumeAndProcess(180); 504 SetVolumeAndProcess(180);
503 505
504 EXPECT_CALL(*agc_, AnalyzePreproc(_, _)) 506 EXPECT_CALL(*agc_, AnalyzePreproc(_, _))
505 .WillOnce(Return(kAboveClippedThreshold)); 507 .WillOnce(Return(kAboveClippedThreshold));
506 EXPECT_CALL(*agc_, Reset()).Times(1); 508 EXPECT_CALL(*agc_, Reset()).Times(1);
507 CallPreProc(1); 509 CallPreProc(1);
508 EXPECT_EQ(170, volume_.GetMicVolume()); 510 EXPECT_EQ(kClippedMin, volume_.GetMicVolume());
509 511
510 EXPECT_CALL(*agc_, AnalyzePreproc(_, _)) 512 EXPECT_CALL(*agc_, AnalyzePreproc(_, _))
511 .WillRepeatedly(Return(kAboveClippedThreshold)); 513 .WillRepeatedly(Return(kAboveClippedThreshold));
512 EXPECT_CALL(*agc_, Reset()).Times(0); 514 EXPECT_CALL(*agc_, Reset()).Times(0);
513 CallPreProc(1000); 515 CallPreProc(1000);
514 EXPECT_EQ(170, volume_.GetMicVolume()); 516 EXPECT_EQ(kClippedMin, volume_.GetMicVolume());
515 } 517 }
516 518
517 TEST_F(AgcManagerDirectTest, ClippingMaxIsRespectedWhenEqualToLevel) { 519 TEST_F(AgcManagerDirectTest, ClippingMaxIsRespectedWhenEqualToLevel) {
518 SetVolumeAndProcess(255); 520 SetVolumeAndProcess(255);
519 521
520 EXPECT_CALL(*agc_, AnalyzePreproc(_, _)) 522 EXPECT_CALL(*agc_, AnalyzePreproc(_, _))
521 .WillOnce(Return(kAboveClippedThreshold)); 523 .WillOnce(Return(kAboveClippedThreshold));
522 EXPECT_CALL(*agc_, Reset()).Times(1); 524 EXPECT_CALL(*agc_, Reset()).Times(1);
523 CallPreProc(1); 525 CallPreProc(1);
524 EXPECT_EQ(240, volume_.GetMicVolume()); 526 EXPECT_EQ(240, volume_.GetMicVolume());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 .WillOnce(Return(kAboveClippedThreshold)); 584 .WillOnce(Return(kAboveClippedThreshold));
583 EXPECT_CALL(*agc_, Reset()).Times(1); 585 EXPECT_CALL(*agc_, Reset()).Times(1);
584 CallPreProc(1); 586 CallPreProc(1);
585 EXPECT_EQ(180, volume_.GetMicVolume()); 587 EXPECT_EQ(180, volume_.GetMicVolume());
586 588
587 CallPreProc(300); 589 CallPreProc(300);
588 EXPECT_CALL(*agc_, AnalyzePreproc(_, _)) 590 EXPECT_CALL(*agc_, AnalyzePreproc(_, _))
589 .WillOnce(Return(kAboveClippedThreshold)); 591 .WillOnce(Return(kAboveClippedThreshold));
590 EXPECT_CALL(*agc_, Reset()).Times(1); 592 EXPECT_CALL(*agc_, Reset()).Times(1);
591 CallPreProc(1); 593 CallPreProc(1);
592 EXPECT_EQ(170, volume_.GetMicVolume()); 594 EXPECT_EQ(kClippedMin, volume_.GetMicVolume());
593 595
594 // Current level is now at the minimum, but the maximum allowed level still 596 // Current level is now at the minimum, but the maximum allowed level still
595 // has more to decrease. 597 // has more to decrease.
596 CallPreProc(300); 598 CallPreProc(300);
597 EXPECT_CALL(*agc_, AnalyzePreproc(_, _)) 599 EXPECT_CALL(*agc_, AnalyzePreproc(_, _))
598 .WillOnce(Return(kAboveClippedThreshold)); 600 .WillOnce(Return(kAboveClippedThreshold));
599 CallPreProc(1); 601 CallPreProc(1);
600 602
601 CallPreProc(300); 603 CallPreProc(300);
602 EXPECT_CALL(*agc_, AnalyzePreproc(_, _)) 604 EXPECT_CALL(*agc_, AnalyzePreproc(_, _))
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 FirstProcess(); 679 FirstProcess();
678 680
679 EXPECT_CALL(*agc_, GetRmsErrorDb(_)) 681 EXPECT_CALL(*agc_, GetRmsErrorDb(_))
680 .WillRepeatedly(DoAll(SetArgPointee<0>(30), Return(true))); 682 .WillRepeatedly(DoAll(SetArgPointee<0>(30), Return(true)));
681 volume_.SetMicVolume(0); 683 volume_.SetMicVolume(0);
682 CallProcess(10); 684 CallProcess(10);
683 EXPECT_EQ(0, volume_.GetMicVolume()); 685 EXPECT_EQ(0, volume_.GetMicVolume());
684 } 686 }
685 687
686 } // namespace webrtc 688 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_processing/agc/agc_manager_direct.cc ('k') | webrtc/modules/audio_processing/audio_processing_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698