| 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 |