diff --git a/EchoCanceller.cpp b/EchoCanceller.cpp index 6e866bd42b..0ca8a296ef 100755 --- a/EchoCanceller.cpp +++ b/EchoCanceller.cpp @@ -13,6 +13,7 @@ #include "audio/AudioOutput.h" #include "audio/AudioInput.h" #include "logging.h" +#include "VoIPServerConfig.h" #include #include @@ -42,12 +43,34 @@ EchoCanceller::EchoCanceller(bool enableAEC, bool enableNS, bool enableAGC){ config.high_pass_filter.enabled = enableAEC; config.gain_controller2.enabled = enableAGC; apm->ApplyConfig(config); - - apm->noise_suppression()->set_level(webrtc::NoiseSuppression::Level::kHigh); + + webrtc::NoiseSuppression::Level nsLevel; +#ifdef __APPLE__ + switch(ServerConfig::GetSharedInstance()->GetInt("webrtc_ns_level_vpio", 0)){ +#else + switch(ServerConfig::GetSharedInstance()->GetInt("webrtc_ns_level", 2)){ +#endif + case 0: + nsLevel=webrtc::NoiseSuppression::Level::kLow; + break; + case 1: + nsLevel=webrtc::NoiseSuppression::Level::kModerate; + break; + case 3: + nsLevel=webrtc::NoiseSuppression::Level::kVeryHigh; + break; + case 2: + default: + nsLevel=webrtc::NoiseSuppression::Level::kHigh; + break; + } + apm->noise_suppression()->set_level(nsLevel); apm->noise_suppression()->Enable(enableNS); if(enableAGC){ apm->gain_control()->set_mode(webrtc::GainControl::Mode::kAdaptiveDigital); - apm->gain_control()->set_target_level_dbfs(9); + apm->gain_control()->set_target_level_dbfs(ServerConfig::GetSharedInstance()->GetInt("webrtc_agc_target_level", 9)); + apm->gain_control()->enable_limiter(ServerConfig::GetSharedInstance()->GetBoolean("webrtc_agc_enable_limiter", true)); + apm->gain_control()->set_compression_gain_db(ServerConfig::GetSharedInstance()->GetInt("webrtc_agc_compression_gain", 20)); } apm->voice_detection()->set_likelihood(webrtc::VoiceDetection::Likelihood::kVeryLowLikelihood); diff --git a/os/darwin/DarwinSpecific.mm b/os/darwin/DarwinSpecific.mm index dc1f4a4f62..963553e04e 100644 --- a/os/darwin/DarwinSpecific.mm +++ b/os/darwin/DarwinSpecific.mm @@ -73,11 +73,17 @@ CellularCarrierInfo DarwinSpecific::GetCarrierInfo(){ #if TARGET_OS_IOS CTTelephonyNetworkInfo* netinfo=[CTTelephonyNetworkInfo new]; CTCarrier* carrier=[netinfo subscriberCellularProvider]; - if(carrier && [carrier carrierName]){ - info.name=[[carrier carrierName] cStringUsingEncoding:NSUTF8StringEncoding]; - info.mcc=[[carrier mobileCountryCode] cStringUsingEncoding:NSUTF8StringEncoding]; - info.mnc=[[carrier mobileNetworkCode] cStringUsingEncoding:NSUTF8StringEncoding]; - info.countryCode=[[[carrier isoCountryCode] uppercaseString] cStringUsingEncoding:NSUTF8StringEncoding]; + if(carrier){ + NSString* name=[carrier carrierName]; + NSString* mcc=[carrier mobileCountryCode]; + NSString* mnc=[carrier mobileNetworkCode]; + NSString* countryCode=[carrier isoCountryCode]; + if(name && mcc && mnc && countryCode){ + info.name=[name cStringUsingEncoding:NSUTF8StringEncoding]; + info.mcc=[mcc cStringUsingEncoding:NSUTF8StringEncoding]; + info.mnc=[mnc cStringUsingEncoding:NSUTF8StringEncoding]; + info.countryCode=[[countryCode uppercaseString] cStringUsingEncoding:NSUTF8StringEncoding]; + } } #endif return info;