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

Side by Side Diff: webrtc/media/engine/webrtcvoiceengine_unittest.cc

Issue 1875483002: Replace a few calls to VoEHardware with direct calls on the ADM, in WVoMC. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Add adm() function Created 4 years, 8 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
« no previous file with comments | « webrtc/media/engine/webrtcvoiceengine.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2008 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2008 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 engine) { // volume 60 engine) { // volume
61 } 61 }
62 }; 62 };
63 } // namespace 63 } // namespace
64 64
65 // Tests that our stub library "works". 65 // Tests that our stub library "works".
66 TEST(WebRtcVoiceEngineTestStubLibrary, StartupShutdown) { 66 TEST(WebRtcVoiceEngineTestStubLibrary, StartupShutdown) {
67 StrictMock<webrtc::test::MockAudioDeviceModule> adm; 67 StrictMock<webrtc::test::MockAudioDeviceModule> adm;
68 EXPECT_CALL(adm, AddRef()).WillOnce(Return(0)); 68 EXPECT_CALL(adm, AddRef()).WillOnce(Return(0));
69 EXPECT_CALL(adm, Release()).WillOnce(Return(0)); 69 EXPECT_CALL(adm, Release()).WillOnce(Return(0));
70 EXPECT_CALL(adm, BuiltInAECIsAvailable()).WillOnce(Return(false));
71 EXPECT_CALL(adm, BuiltInAGCIsAvailable()).WillOnce(Return(false));
72 EXPECT_CALL(adm, BuiltInNSIsAvailable()).WillOnce(Return(false));
70 cricket::FakeWebRtcVoiceEngine voe; 73 cricket::FakeWebRtcVoiceEngine voe;
71 EXPECT_FALSE(voe.IsInited()); 74 EXPECT_FALSE(voe.IsInited());
72 { 75 {
73 cricket::WebRtcVoiceEngine engine(&adm, new FakeVoEWrapper(&voe)); 76 cricket::WebRtcVoiceEngine engine(&adm, new FakeVoEWrapper(&voe));
74 EXPECT_TRUE(voe.IsInited()); 77 EXPECT_TRUE(voe.IsInited());
75 } 78 }
76 EXPECT_FALSE(voe.IsInited()); 79 EXPECT_FALSE(voe.IsInited());
77 } 80 }
78 81
79 class FakeAudioSink : public webrtc::AudioSinkInterface { 82 class FakeAudioSink : public webrtc::AudioSinkInterface {
80 public: 83 public:
81 void OnData(const Data& audio) override {} 84 void OnData(const Data& audio) override {}
82 }; 85 };
83 86
84 class FakeAudioSource : public cricket::AudioSource { 87 class FakeAudioSource : public cricket::AudioSource {
85 void SetSink(Sink* sink) override {} 88 void SetSink(Sink* sink) override {}
86 }; 89 };
87 90
88 class WebRtcVoiceEngineTestFake : public testing::Test { 91 class WebRtcVoiceEngineTestFake : public testing::Test {
89 public: 92 public:
90 WebRtcVoiceEngineTestFake() : WebRtcVoiceEngineTestFake("") {} 93 WebRtcVoiceEngineTestFake() : WebRtcVoiceEngineTestFake("") {}
91 94
92 explicit WebRtcVoiceEngineTestFake(const char* field_trials) 95 explicit WebRtcVoiceEngineTestFake(const char* field_trials)
93 : call_(webrtc::Call::Config()), override_field_trials_(field_trials) { 96 : call_(webrtc::Call::Config()), override_field_trials_(field_trials) {
94 EXPECT_CALL(adm_, AddRef()).WillOnce(Return(0)); 97 EXPECT_CALL(adm_, AddRef()).WillOnce(Return(0));
95 EXPECT_CALL(adm_, Release()).WillOnce(Return(0)); 98 EXPECT_CALL(adm_, Release()).WillOnce(Return(0));
99 EXPECT_CALL(adm_, BuiltInAECIsAvailable()).WillOnce(Return(false));
100 EXPECT_CALL(adm_, BuiltInAGCIsAvailable()).WillOnce(Return(false));
101 EXPECT_CALL(adm_, BuiltInNSIsAvailable()).WillOnce(Return(false));
96 engine_.reset(new cricket::WebRtcVoiceEngine(&adm_, 102 engine_.reset(new cricket::WebRtcVoiceEngine(&adm_,
97 new FakeVoEWrapper(&voe_))); 103 new FakeVoEWrapper(&voe_)));
98 send_parameters_.codecs.push_back(kPcmuCodec); 104 send_parameters_.codecs.push_back(kPcmuCodec);
99 recv_parameters_.codecs.push_back(kPcmuCodec); 105 recv_parameters_.codecs.push_back(kPcmuCodec);
100 } 106 }
101 bool SetupChannel() { 107 bool SetupChannel() {
102 channel_ = engine_->CreateChannel(&call_, cricket::MediaConfig(), 108 channel_ = engine_->CreateChannel(&call_, cricket::MediaConfig(),
103 cricket::AudioOptions()); 109 cricket::AudioOptions());
104 return (channel_ != nullptr); 110 return (channel_ != nullptr);
105 } 111 }
(...skipping 2289 matching lines...) Expand 10 before | Expand all | Expand 10 after
2395 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending()); 2401 EXPECT_TRUE(GetSendStream(kSsrc1).IsSending());
2396 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2402 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2397 EXPECT_EQ(agc_config.targetLeveldBOv, 10); // level was attenuated 2403 EXPECT_EQ(agc_config.targetLeveldBOv, 10); // level was attenuated
2398 channel_->SetSend(false); 2404 channel_->SetSend(false);
2399 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending()); 2405 EXPECT_FALSE(GetSendStream(kSsrc1).IsSending());
2400 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2406 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2401 } 2407 }
2402 2408
2403 TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) { 2409 TEST_F(WebRtcVoiceEngineTestFake, TxAgcConfigViaOptions) {
2404 EXPECT_TRUE(SetupSendStream()); 2410 EXPECT_TRUE(SetupSendStream());
2411 EXPECT_CALL(adm_,
2412 BuiltInAGCIsAvailable()).Times(2).WillRepeatedly(Return(false));
2405 webrtc::AgcConfig agc_config; 2413 webrtc::AgcConfig agc_config;
2406 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2414 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2407 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2415 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2408 send_parameters_.options.tx_agc_target_dbov = rtc::Optional<uint16_t>(3); 2416 send_parameters_.options.tx_agc_target_dbov = rtc::Optional<uint16_t>(3);
2409 send_parameters_.options.tx_agc_digital_compression_gain = 2417 send_parameters_.options.tx_agc_digital_compression_gain =
2410 rtc::Optional<uint16_t>(9); 2418 rtc::Optional<uint16_t>(9);
2411 send_parameters_.options.tx_agc_limiter = rtc::Optional<bool>(true); 2419 send_parameters_.options.tx_agc_limiter = rtc::Optional<bool>(true);
2412 send_parameters_.options.auto_gain_control = rtc::Optional<bool>(true); 2420 send_parameters_.options.auto_gain_control = rtc::Optional<bool>(true);
2413 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 2421 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2414 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2422 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2415 EXPECT_EQ(3, agc_config.targetLeveldBOv); 2423 EXPECT_EQ(3, agc_config.targetLeveldBOv);
2416 EXPECT_EQ(9, agc_config.digitalCompressionGaindB); 2424 EXPECT_EQ(9, agc_config.digitalCompressionGaindB);
2417 EXPECT_TRUE(agc_config.limiterEnable); 2425 EXPECT_TRUE(agc_config.limiterEnable);
2418 2426
2419 // Check interaction with adjust_agc_delta. Both should be respected, for 2427 // Check interaction with adjust_agc_delta. Both should be respected, for
2420 // backwards compatibility. 2428 // backwards compatibility.
2421 send_parameters_.options.adjust_agc_delta = rtc::Optional<int>(-10); 2429 send_parameters_.options.adjust_agc_delta = rtc::Optional<int>(-10);
2422 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 2430 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2423 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config)); 2431 EXPECT_EQ(0, voe_.GetAgcConfig(agc_config));
2424 EXPECT_EQ(13, agc_config.targetLeveldBOv); 2432 EXPECT_EQ(13, agc_config.targetLeveldBOv);
2425 } 2433 }
2426 2434
2427 TEST_F(WebRtcVoiceEngineTestFake, SampleRatesViaOptions) { 2435 TEST_F(WebRtcVoiceEngineTestFake, SampleRatesViaOptions) {
2428 EXPECT_TRUE(SetupSendStream()); 2436 EXPECT_TRUE(SetupSendStream());
2437 EXPECT_CALL(adm_, SetRecordingSampleRate(48000)).WillOnce(Return(0));
2438 EXPECT_CALL(adm_, SetPlayoutSampleRate(44100)).WillOnce(Return(0));
2429 send_parameters_.options.recording_sample_rate = 2439 send_parameters_.options.recording_sample_rate =
2430 rtc::Optional<uint32_t>(48000); 2440 rtc::Optional<uint32_t>(48000);
2431 send_parameters_.options.playout_sample_rate = rtc::Optional<uint32_t>(44100); 2441 send_parameters_.options.playout_sample_rate = rtc::Optional<uint32_t>(44100);
2432 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 2442 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2433
2434 unsigned int recording_sample_rate, playout_sample_rate;
2435 EXPECT_EQ(0, voe_.RecordingSampleRate(&recording_sample_rate));
2436 EXPECT_EQ(0, voe_.PlayoutSampleRate(&playout_sample_rate));
2437 EXPECT_EQ(48000u, recording_sample_rate);
2438 EXPECT_EQ(44100u, playout_sample_rate);
2439 } 2443 }
2440 2444
2441 // Test that we can set the outgoing SSRC properly. 2445 // Test that we can set the outgoing SSRC properly.
2442 // SSRC is set in SetupSendStream() by calling AddSendStream. 2446 // SSRC is set in SetupSendStream() by calling AddSendStream.
2443 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrc) { 2447 TEST_F(WebRtcVoiceEngineTestFake, SetSendSsrc) {
2444 EXPECT_TRUE(SetupSendStream()); 2448 EXPECT_TRUE(SetupSendStream());
2445 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1)); 2449 EXPECT_TRUE(call_.GetAudioSendStream(kSsrc1));
2446 } 2450 }
2447 2451
2448 TEST_F(WebRtcVoiceEngineTestFake, GetStats) { 2452 TEST_F(WebRtcVoiceEngineTestFake, GetStats) {
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
2732 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); 2736 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2)));
2733 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); 2737 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3)));
2734 EXPECT_TRUE(channel_->SetPlayout(true)); 2738 EXPECT_TRUE(channel_->SetPlayout(true));
2735 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); 2739 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1);
2736 EXPECT_TRUE(channel_->SetPlayout(false)); 2740 EXPECT_TRUE(channel_->SetPlayout(false));
2737 EXPECT_FALSE(channel_->SetPlayout(true)); 2741 EXPECT_FALSE(channel_->SetPlayout(true));
2738 } 2742 }
2739 2743
2740 TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) { 2744 TEST_F(WebRtcVoiceEngineTestFake, SetAudioOptions) {
2741 EXPECT_TRUE(SetupSendStream()); 2745 EXPECT_TRUE(SetupSendStream());
2742 2746 EXPECT_CALL(adm_,
2747 BuiltInAECIsAvailable()).Times(9).WillRepeatedly(Return(false));
2748 EXPECT_CALL(adm_,
2749 BuiltInAGCIsAvailable()).Times(4).WillRepeatedly(Return(false));
2750 EXPECT_CALL(adm_,
2751 BuiltInNSIsAvailable()).Times(2).WillRepeatedly(Return(false));
2743 bool ec_enabled; 2752 bool ec_enabled;
2744 webrtc::EcModes ec_mode; 2753 webrtc::EcModes ec_mode;
2745 webrtc::AecmModes aecm_mode; 2754 webrtc::AecmModes aecm_mode;
2746 bool cng_enabled; 2755 bool cng_enabled;
2747 bool agc_enabled; 2756 bool agc_enabled;
2748 webrtc::AgcModes agc_mode; 2757 webrtc::AgcModes agc_mode;
2749 webrtc::AgcConfig agc_config; 2758 webrtc::AgcConfig agc_config;
2750 bool ns_enabled; 2759 bool ns_enabled;
2751 webrtc::NsModes ns_mode; 2760 webrtc::NsModes ns_mode;
2752 bool highpass_filter_enabled; 2761 bool highpass_filter_enabled;
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
2930 webrtc::AgcConfig config = {0}; 2939 webrtc::AgcConfig config = {0};
2931 EXPECT_EQ(0, voe_.GetAgcConfig(config)); 2940 EXPECT_EQ(0, voe_.GetAgcConfig(config));
2932 EXPECT_EQ(set_config.targetLeveldBOv, config.targetLeveldBOv); 2941 EXPECT_EQ(set_config.targetLeveldBOv, config.targetLeveldBOv);
2933 EXPECT_EQ(set_config.digitalCompressionGaindB, 2942 EXPECT_EQ(set_config.digitalCompressionGaindB,
2934 config.digitalCompressionGaindB); 2943 config.digitalCompressionGaindB);
2935 EXPECT_EQ(set_config.limiterEnable, config.limiterEnable); 2944 EXPECT_EQ(set_config.limiterEnable, config.limiterEnable);
2936 } 2945 }
2937 2946
2938 TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) { 2947 TEST_F(WebRtcVoiceEngineTestFake, SetOptionOverridesViaChannels) {
2939 EXPECT_TRUE(SetupSendStream()); 2948 EXPECT_TRUE(SetupSendStream());
2949 EXPECT_CALL(adm_,
2950 BuiltInAECIsAvailable()).Times(9).WillRepeatedly(Return(false));
2951 EXPECT_CALL(adm_,
2952 BuiltInAGCIsAvailable()).Times(9).WillRepeatedly(Return(false));
2953 EXPECT_CALL(adm_,
2954 BuiltInNSIsAvailable()).Times(9).WillRepeatedly(Return(false));
2955
2940 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel1( 2956 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel1(
2941 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_->CreateChannel( 2957 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_->CreateChannel(
2942 &call_, cricket::MediaConfig(), cricket::AudioOptions()))); 2958 &call_, cricket::MediaConfig(), cricket::AudioOptions())));
2943 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel2( 2959 std::unique_ptr<cricket::WebRtcVoiceMediaChannel> channel2(
2944 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_->CreateChannel( 2960 static_cast<cricket::WebRtcVoiceMediaChannel*>(engine_->CreateChannel(
2945 &call_, cricket::MediaConfig(), cricket::AudioOptions()))); 2961 &call_, cricket::MediaConfig(), cricket::AudioOptions())));
2946 2962
2947 // Have to add a stream to make SetSend work. 2963 // Have to add a stream to make SetSend work.
2948 cricket::StreamParams stream1; 2964 cricket::StreamParams stream1;
2949 stream1.ssrcs.push_back(1); 2965 stream1.ssrcs.push_back(1);
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
3477 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { 3493 TEST(WebRtcVoiceEngineTest, SetRecvCodecs) {
3478 cricket::WebRtcVoiceEngine engine(nullptr); 3494 cricket::WebRtcVoiceEngine engine(nullptr);
3479 std::unique_ptr<webrtc::Call> call( 3495 std::unique_ptr<webrtc::Call> call(
3480 webrtc::Call::Create(webrtc::Call::Config())); 3496 webrtc::Call::Create(webrtc::Call::Config()));
3481 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), 3497 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(),
3482 cricket::AudioOptions(), call.get()); 3498 cricket::AudioOptions(), call.get());
3483 cricket::AudioRecvParameters parameters; 3499 cricket::AudioRecvParameters parameters;
3484 parameters.codecs = engine.codecs(); 3500 parameters.codecs = engine.codecs();
3485 EXPECT_TRUE(channel.SetRecvParameters(parameters)); 3501 EXPECT_TRUE(channel.SetRecvParameters(parameters));
3486 } 3502 }
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvoiceengine.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698