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

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

Issue 2415403002: Introduced the new parameter setting scheme for activating the high-pass filter in APM (Closed)
Patch Set: Changes in response to reviewer comments 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
« no previous file with comments | « webrtc/media/engine/webrtcvoiceengine.cc ('k') | webrtc/modules/BUILD.gn » ('j') | 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 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 codec.ToCodecParameters()); 564 codec.ToCodecParameters());
565 } 565 }
566 EXPECT_EQ(recv_parameters_.codecs.size(), info.receive_codecs.size()); 566 EXPECT_EQ(recv_parameters_.codecs.size(), info.receive_codecs.size());
567 for (const cricket::AudioCodec& codec : recv_parameters_.codecs) { 567 for (const cricket::AudioCodec& codec : recv_parameters_.codecs) {
568 ASSERT_EQ(info.receive_codecs.count(codec.id), 1U); 568 ASSERT_EQ(info.receive_codecs.count(codec.id), 1U);
569 EXPECT_EQ(info.receive_codecs.find(codec.id)->second, 569 EXPECT_EQ(info.receive_codecs.find(codec.id)->second,
570 codec.ToCodecParameters()); 570 codec.ToCodecParameters());
571 } 571 }
572 } 572 }
573 573
574 bool IsHighPassFilterEnabled() {
575 return engine_->GetApmConfigForTest().high_pass_filter.enabled;
576 }
577
574 protected: 578 protected:
575 StrictMock<webrtc::test::MockAudioDeviceModule> adm_; 579 StrictMock<webrtc::test::MockAudioDeviceModule> adm_;
576 StrictMock<webrtc::test::MockAudioProcessing> apm_; 580 StrictMock<webrtc::test::MockAudioProcessing> apm_;
577 webrtc::RtcEventLogNullImpl event_log_; 581 webrtc::RtcEventLogNullImpl event_log_;
578 cricket::FakeCall call_; 582 cricket::FakeCall call_;
579 cricket::FakeWebRtcVoiceEngine voe_; 583 cricket::FakeWebRtcVoiceEngine voe_;
580 std::unique_ptr<cricket::WebRtcVoiceEngine> engine_; 584 std::unique_ptr<cricket::WebRtcVoiceEngine> engine_;
581 cricket::VoiceMediaChannel* channel_ = nullptr; 585 cricket::VoiceMediaChannel* channel_ = nullptr;
582 cricket::AudioSendParameters send_parameters_; 586 cricket::AudioSendParameters send_parameters_;
583 cricket::AudioRecvParameters recv_parameters_; 587 cricket::AudioRecvParameters recv_parameters_;
(...skipping 2202 matching lines...) Expand 10 before | Expand all | Expand 10 after
2786 BuiltInNSIsAvailable()).Times(2).WillRepeatedly(Return(false)); 2790 BuiltInNSIsAvailable()).Times(2).WillRepeatedly(Return(false));
2787 bool ec_enabled; 2791 bool ec_enabled;
2788 webrtc::EcModes ec_mode; 2792 webrtc::EcModes ec_mode;
2789 webrtc::AecmModes aecm_mode; 2793 webrtc::AecmModes aecm_mode;
2790 bool cng_enabled; 2794 bool cng_enabled;
2791 bool agc_enabled; 2795 bool agc_enabled;
2792 webrtc::AgcModes agc_mode; 2796 webrtc::AgcModes agc_mode;
2793 webrtc::AgcConfig agc_config; 2797 webrtc::AgcConfig agc_config;
2794 bool ns_enabled; 2798 bool ns_enabled;
2795 webrtc::NsModes ns_mode; 2799 webrtc::NsModes ns_mode;
2796 bool highpass_filter_enabled;
2797 bool stereo_swapping_enabled; 2800 bool stereo_swapping_enabled;
2798 bool typing_detection_enabled; 2801 bool typing_detection_enabled;
2799 voe_.GetEcStatus(ec_enabled, ec_mode); 2802 voe_.GetEcStatus(ec_enabled, ec_mode);
2800 voe_.GetAecmMode(aecm_mode, cng_enabled); 2803 voe_.GetAecmMode(aecm_mode, cng_enabled);
2801 voe_.GetAgcStatus(agc_enabled, agc_mode); 2804 voe_.GetAgcStatus(agc_enabled, agc_mode);
2802 voe_.GetAgcConfig(agc_config); 2805 voe_.GetAgcConfig(agc_config);
2803 voe_.GetNsStatus(ns_enabled, ns_mode); 2806 voe_.GetNsStatus(ns_enabled, ns_mode);
2804 highpass_filter_enabled = voe_.IsHighPassFilterEnabled();
2805 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled(); 2807 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
2806 voe_.GetTypingDetectionStatus(typing_detection_enabled); 2808 voe_.GetTypingDetectionStatus(typing_detection_enabled);
2807 EXPECT_TRUE(ec_enabled); 2809 EXPECT_TRUE(ec_enabled);
2808 EXPECT_TRUE(voe_.ec_metrics_enabled()); 2810 EXPECT_TRUE(voe_.ec_metrics_enabled());
2809 EXPECT_FALSE(cng_enabled); 2811 EXPECT_FALSE(cng_enabled);
2810 EXPECT_TRUE(agc_enabled); 2812 EXPECT_TRUE(agc_enabled);
2811 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2813 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2812 EXPECT_TRUE(ns_enabled); 2814 EXPECT_TRUE(ns_enabled);
2813 EXPECT_TRUE(highpass_filter_enabled); 2815 EXPECT_TRUE(IsHighPassFilterEnabled());
2814 EXPECT_FALSE(stereo_swapping_enabled); 2816 EXPECT_FALSE(stereo_swapping_enabled);
2815 EXPECT_TRUE(typing_detection_enabled); 2817 EXPECT_TRUE(typing_detection_enabled);
2816 EXPECT_EQ(ec_mode, webrtc::kEcConference); 2818 EXPECT_EQ(ec_mode, webrtc::kEcConference);
2817 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression); 2819 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression);
2818 EXPECT_EQ(50, voe_.GetNetEqCapacity()); 2820 EXPECT_EQ(50, voe_.GetNetEqCapacity());
2819 EXPECT_FALSE(voe_.GetNetEqFastAccelerate()); 2821 EXPECT_FALSE(voe_.GetNetEqFastAccelerate());
2820 2822
2821 // Nothing set in AudioOptions, so everything should be as default. 2823 // Nothing set in AudioOptions, so everything should be as default.
2822 send_parameters_.options = cricket::AudioOptions(); 2824 send_parameters_.options = cricket::AudioOptions();
2823 SetSendParameters(send_parameters_); 2825 SetSendParameters(send_parameters_);
2824 voe_.GetEcStatus(ec_enabled, ec_mode); 2826 voe_.GetEcStatus(ec_enabled, ec_mode);
2825 voe_.GetAecmMode(aecm_mode, cng_enabled); 2827 voe_.GetAecmMode(aecm_mode, cng_enabled);
2826 voe_.GetAgcStatus(agc_enabled, agc_mode); 2828 voe_.GetAgcStatus(agc_enabled, agc_mode);
2827 voe_.GetAgcConfig(agc_config); 2829 voe_.GetAgcConfig(agc_config);
2828 voe_.GetNsStatus(ns_enabled, ns_mode); 2830 voe_.GetNsStatus(ns_enabled, ns_mode);
2829 highpass_filter_enabled = voe_.IsHighPassFilterEnabled();
2830 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled(); 2831 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
2831 voe_.GetTypingDetectionStatus(typing_detection_enabled); 2832 voe_.GetTypingDetectionStatus(typing_detection_enabled);
2832 EXPECT_TRUE(ec_enabled); 2833 EXPECT_TRUE(ec_enabled);
2833 EXPECT_TRUE(voe_.ec_metrics_enabled()); 2834 EXPECT_TRUE(voe_.ec_metrics_enabled());
2834 EXPECT_FALSE(cng_enabled); 2835 EXPECT_FALSE(cng_enabled);
2835 EXPECT_TRUE(agc_enabled); 2836 EXPECT_TRUE(agc_enabled);
2836 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2837 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2837 EXPECT_TRUE(ns_enabled); 2838 EXPECT_TRUE(ns_enabled);
2838 EXPECT_TRUE(highpass_filter_enabled); 2839 EXPECT_TRUE(IsHighPassFilterEnabled());
2839 EXPECT_FALSE(stereo_swapping_enabled); 2840 EXPECT_FALSE(stereo_swapping_enabled);
2840 EXPECT_TRUE(typing_detection_enabled); 2841 EXPECT_TRUE(typing_detection_enabled);
2841 EXPECT_EQ(ec_mode, webrtc::kEcConference); 2842 EXPECT_EQ(ec_mode, webrtc::kEcConference);
2842 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression); 2843 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression);
2843 EXPECT_EQ(50, voe_.GetNetEqCapacity()); 2844 EXPECT_EQ(50, voe_.GetNetEqCapacity());
2844 EXPECT_FALSE(voe_.GetNetEqFastAccelerate()); 2845 EXPECT_FALSE(voe_.GetNetEqFastAccelerate());
2845 2846
2846 // Turn echo cancellation off 2847 // Turn echo cancellation off
2847 send_parameters_.options.echo_cancellation = rtc::Optional<bool>(false); 2848 send_parameters_.options.echo_cancellation = rtc::Optional<bool>(false);
2848 SetSendParameters(send_parameters_); 2849 SetSendParameters(send_parameters_);
2849 voe_.GetEcStatus(ec_enabled, ec_mode); 2850 voe_.GetEcStatus(ec_enabled, ec_mode);
2850 EXPECT_FALSE(ec_enabled); 2851 EXPECT_FALSE(ec_enabled);
2851 2852
2852 // Turn echo cancellation back on, with settings, and make sure 2853 // Turn echo cancellation back on, with settings, and make sure
2853 // nothing else changed. 2854 // nothing else changed.
2854 send_parameters_.options.echo_cancellation = rtc::Optional<bool>(true); 2855 send_parameters_.options.echo_cancellation = rtc::Optional<bool>(true);
2855 SetSendParameters(send_parameters_); 2856 SetSendParameters(send_parameters_);
2856 voe_.GetEcStatus(ec_enabled, ec_mode); 2857 voe_.GetEcStatus(ec_enabled, ec_mode);
2857 voe_.GetAecmMode(aecm_mode, cng_enabled); 2858 voe_.GetAecmMode(aecm_mode, cng_enabled);
2858 voe_.GetAgcStatus(agc_enabled, agc_mode); 2859 voe_.GetAgcStatus(agc_enabled, agc_mode);
2859 voe_.GetAgcConfig(agc_config); 2860 voe_.GetAgcConfig(agc_config);
2860 voe_.GetNsStatus(ns_enabled, ns_mode); 2861 voe_.GetNsStatus(ns_enabled, ns_mode);
2861 highpass_filter_enabled = voe_.IsHighPassFilterEnabled();
2862 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled(); 2862 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
2863 voe_.GetTypingDetectionStatus(typing_detection_enabled); 2863 voe_.GetTypingDetectionStatus(typing_detection_enabled);
2864 EXPECT_TRUE(ec_enabled); 2864 EXPECT_TRUE(ec_enabled);
2865 EXPECT_TRUE(voe_.ec_metrics_enabled()); 2865 EXPECT_TRUE(voe_.ec_metrics_enabled());
2866 EXPECT_TRUE(agc_enabled); 2866 EXPECT_TRUE(agc_enabled);
2867 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2867 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2868 EXPECT_TRUE(ns_enabled); 2868 EXPECT_TRUE(ns_enabled);
2869 EXPECT_TRUE(highpass_filter_enabled); 2869 EXPECT_TRUE(IsHighPassFilterEnabled());
2870 EXPECT_FALSE(stereo_swapping_enabled); 2870 EXPECT_FALSE(stereo_swapping_enabled);
2871 EXPECT_TRUE(typing_detection_enabled); 2871 EXPECT_TRUE(typing_detection_enabled);
2872 EXPECT_EQ(ec_mode, webrtc::kEcConference); 2872 EXPECT_EQ(ec_mode, webrtc::kEcConference);
2873 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression); 2873 EXPECT_EQ(ns_mode, webrtc::kNsHighSuppression);
2874 2874
2875 // Turn on delay agnostic aec and make sure nothing change w.r.t. echo 2875 // Turn on delay agnostic aec and make sure nothing change w.r.t. echo
2876 // control. 2876 // control.
2877 send_parameters_.options.delay_agnostic_aec = rtc::Optional<bool>(true); 2877 send_parameters_.options.delay_agnostic_aec = rtc::Optional<bool>(true);
2878 SetSendParameters(send_parameters_); 2878 SetSendParameters(send_parameters_);
2879 voe_.GetEcStatus(ec_enabled, ec_mode); 2879 voe_.GetEcStatus(ec_enabled, ec_mode);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2912 voe_.GetAgcConfig(agc_config); 2912 voe_.GetAgcConfig(agc_config);
2913 EXPECT_EQ(0, agc_config.targetLeveldBOv); 2913 EXPECT_EQ(0, agc_config.targetLeveldBOv);
2914 2914
2915 // Turn off other options (and stereo swapping on). 2915 // Turn off other options (and stereo swapping on).
2916 send_parameters_.options.noise_suppression = rtc::Optional<bool>(false); 2916 send_parameters_.options.noise_suppression = rtc::Optional<bool>(false);
2917 send_parameters_.options.highpass_filter = rtc::Optional<bool>(false); 2917 send_parameters_.options.highpass_filter = rtc::Optional<bool>(false);
2918 send_parameters_.options.typing_detection = rtc::Optional<bool>(false); 2918 send_parameters_.options.typing_detection = rtc::Optional<bool>(false);
2919 send_parameters_.options.stereo_swapping = rtc::Optional<bool>(true); 2919 send_parameters_.options.stereo_swapping = rtc::Optional<bool>(true);
2920 SetSendParameters(send_parameters_); 2920 SetSendParameters(send_parameters_);
2921 voe_.GetNsStatus(ns_enabled, ns_mode); 2921 voe_.GetNsStatus(ns_enabled, ns_mode);
2922 highpass_filter_enabled = voe_.IsHighPassFilterEnabled();
2923 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled(); 2922 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
2924 voe_.GetTypingDetectionStatus(typing_detection_enabled); 2923 voe_.GetTypingDetectionStatus(typing_detection_enabled);
2925 EXPECT_FALSE(ns_enabled); 2924 EXPECT_FALSE(ns_enabled);
2926 EXPECT_FALSE(highpass_filter_enabled); 2925 EXPECT_FALSE(IsHighPassFilterEnabled());
2927 EXPECT_FALSE(typing_detection_enabled); 2926 EXPECT_FALSE(typing_detection_enabled);
2928 EXPECT_TRUE(stereo_swapping_enabled); 2927 EXPECT_TRUE(stereo_swapping_enabled);
2929 2928
2930 // Set options again to ensure it has no impact. 2929 // Set options again to ensure it has no impact.
2931 SetSendParameters(send_parameters_); 2930 SetSendParameters(send_parameters_);
2932 voe_.GetEcStatus(ec_enabled, ec_mode); 2931 voe_.GetEcStatus(ec_enabled, ec_mode);
2933 voe_.GetNsStatus(ns_enabled, ns_mode); 2932 voe_.GetNsStatus(ns_enabled, ns_mode);
2934 EXPECT_TRUE(ec_enabled); 2933 EXPECT_TRUE(ec_enabled);
2935 EXPECT_EQ(webrtc::kEcConference, ec_mode); 2934 EXPECT_EQ(webrtc::kEcConference, ec_mode);
2936 EXPECT_FALSE(ns_enabled); 2935 EXPECT_FALSE(ns_enabled);
2937 EXPECT_EQ(webrtc::kNsHighSuppression, ns_mode); 2936 EXPECT_EQ(webrtc::kNsHighSuppression, ns_mode);
2938 } 2937 }
2939 2938
2940 TEST_F(WebRtcVoiceEngineTestFake, DefaultOptions) { 2939 TEST_F(WebRtcVoiceEngineTestFake, DefaultOptions) {
2941 EXPECT_TRUE(SetupSendStream()); 2940 EXPECT_TRUE(SetupSendStream());
2942 2941
2943 bool ec_enabled; 2942 bool ec_enabled;
2944 webrtc::EcModes ec_mode; 2943 webrtc::EcModes ec_mode;
2945 bool agc_enabled; 2944 bool agc_enabled;
2946 webrtc::AgcModes agc_mode; 2945 webrtc::AgcModes agc_mode;
2947 bool ns_enabled; 2946 bool ns_enabled;
2948 webrtc::NsModes ns_mode; 2947 webrtc::NsModes ns_mode;
2949 bool highpass_filter_enabled;
2950 bool stereo_swapping_enabled; 2948 bool stereo_swapping_enabled;
2951 bool typing_detection_enabled; 2949 bool typing_detection_enabled;
2952 2950
2953 voe_.GetEcStatus(ec_enabled, ec_mode); 2951 voe_.GetEcStatus(ec_enabled, ec_mode);
2954 voe_.GetAgcStatus(agc_enabled, agc_mode); 2952 voe_.GetAgcStatus(agc_enabled, agc_mode);
2955 voe_.GetNsStatus(ns_enabled, ns_mode); 2953 voe_.GetNsStatus(ns_enabled, ns_mode);
2956 highpass_filter_enabled = voe_.IsHighPassFilterEnabled();
2957 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled(); 2954 stereo_swapping_enabled = voe_.IsStereoChannelSwappingEnabled();
2958 voe_.GetTypingDetectionStatus(typing_detection_enabled); 2955 voe_.GetTypingDetectionStatus(typing_detection_enabled);
2959 EXPECT_TRUE(ec_enabled); 2956 EXPECT_TRUE(ec_enabled);
2960 EXPECT_TRUE(agc_enabled); 2957 EXPECT_TRUE(agc_enabled);
2961 EXPECT_TRUE(ns_enabled); 2958 EXPECT_TRUE(ns_enabled);
2962 EXPECT_TRUE(highpass_filter_enabled); 2959 EXPECT_TRUE(IsHighPassFilterEnabled());
2963 EXPECT_TRUE(typing_detection_enabled); 2960 EXPECT_TRUE(typing_detection_enabled);
2964 EXPECT_FALSE(stereo_swapping_enabled); 2961 EXPECT_FALSE(stereo_swapping_enabled);
2965 } 2962 }
2966 2963
2967 TEST_F(WebRtcVoiceEngineTestFake, InitDoesNotOverwriteDefaultAgcConfig) { 2964 TEST_F(WebRtcVoiceEngineTestFake, InitDoesNotOverwriteDefaultAgcConfig) {
2968 webrtc::AgcConfig set_config = {0}; 2965 webrtc::AgcConfig set_config = {0};
2969 set_config.targetLeveldBOv = 3; 2966 set_config.targetLeveldBOv = 3;
2970 set_config.digitalCompressionGaindB = 9; 2967 set_config.digitalCompressionGaindB = 9;
2971 set_config.limiterEnable = true; 2968 set_config.limiterEnable = true;
2972 EXPECT_EQ(0, voe_.SetAgcConfig(set_config)); 2969 EXPECT_EQ(0, voe_.SetAgcConfig(set_config));
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after
3555 nullptr, webrtc::CreateBuiltinAudioDecoderFactory()); 3552 nullptr, webrtc::CreateBuiltinAudioDecoderFactory());
3556 webrtc::RtcEventLogNullImpl event_log; 3553 webrtc::RtcEventLogNullImpl event_log;
3557 std::unique_ptr<webrtc::Call> call( 3554 std::unique_ptr<webrtc::Call> call(
3558 webrtc::Call::Create(webrtc::Call::Config(&event_log))); 3555 webrtc::Call::Create(webrtc::Call::Config(&event_log)));
3559 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(), 3556 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::MediaConfig(),
3560 cricket::AudioOptions(), call.get()); 3557 cricket::AudioOptions(), call.get());
3561 cricket::AudioRecvParameters parameters; 3558 cricket::AudioRecvParameters parameters;
3562 parameters.codecs = engine.recv_codecs(); 3559 parameters.codecs = engine.recv_codecs();
3563 EXPECT_TRUE(channel.SetRecvParameters(parameters)); 3560 EXPECT_TRUE(channel.SetRecvParameters(parameters));
3564 } 3561 }
OLDNEW
« no previous file with comments | « webrtc/media/engine/webrtcvoiceengine.cc ('k') | webrtc/modules/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698