OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |