| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * libjingle | 2  * libjingle | 
| 3  * Copyright 2004 Google Inc. | 3  * Copyright 2004 Google Inc. | 
| 4  * | 4  * | 
| 5  * Redistribution and use in source and binary forms, with or without | 5  * Redistribution and use in source and binary forms, with or without | 
| 6  * modification, are permitted provided that the following conditions are met: | 6  * modification, are permitted provided that the following conditions are met: | 
| 7  * | 7  * | 
| 8  *  1. Redistributions of source code must retain the above copyright notice, | 8  *  1. Redistributions of source code must retain the above copyright notice, | 
| 9  *     this list of conditions and the following disclaimer. | 9  *     this list of conditions and the following disclaimer. | 
| 10  *  2. Redistributions in binary form must reproduce the above copyright notice, | 10  *  2. Redistributions in binary form must reproduce the above copyright notice, | 
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 594   webrtc::EcModes ec_mode = webrtc::kEcConference; | 594   webrtc::EcModes ec_mode = webrtc::kEcConference; | 
| 595   webrtc::AecmModes aecm_mode = webrtc::kAecmSpeakerphone; | 595   webrtc::AecmModes aecm_mode = webrtc::kAecmSpeakerphone; | 
| 596   webrtc::AgcModes agc_mode = webrtc::kAgcAdaptiveAnalog; | 596   webrtc::AgcModes agc_mode = webrtc::kAgcAdaptiveAnalog; | 
| 597   webrtc::NsModes ns_mode = webrtc::kNsHighSuppression; | 597   webrtc::NsModes ns_mode = webrtc::kNsHighSuppression; | 
| 598   if (options.aecm_generate_comfort_noise) { | 598   if (options.aecm_generate_comfort_noise) { | 
| 599     LOG(LS_VERBOSE) << "Comfort noise explicitly set to " | 599     LOG(LS_VERBOSE) << "Comfort noise explicitly set to " | 
| 600                     << *options.aecm_generate_comfort_noise | 600                     << *options.aecm_generate_comfort_noise | 
| 601                     << " (default is false)."; | 601                     << " (default is false)."; | 
| 602   } | 602   } | 
| 603 | 603 | 
| 604 #if defined(IOS) | 604 #if defined(WEBRTC_IOS) | 
| 605   // On iOS, VPIO provides built-in EC and AGC. | 605   // On iOS, VPIO provides built-in EC and AGC. | 
| 606   options.echo_cancellation = rtc::Optional<bool>(false); | 606   options.echo_cancellation = rtc::Optional<bool>(false); | 
| 607   options.auto_gain_control = rtc::Optional<bool>(false); | 607   options.auto_gain_control = rtc::Optional<bool>(false); | 
| 608   LOG(LS_INFO) << "Always disable AEC and AGC on iOS. Use built-in instead."; | 608   LOG(LS_INFO) << "Always disable AEC and AGC on iOS. Use built-in instead."; | 
| 609 #elif defined(ANDROID) | 609 #elif defined(ANDROID) | 
| 610   ec_mode = webrtc::kEcAecm; | 610   ec_mode = webrtc::kEcAecm; | 
| 611 #endif | 611 #endif | 
| 612 | 612 | 
| 613 #if defined(IOS) || defined(ANDROID) | 613 #if defined(WEBRTC_IOS) || defined(ANDROID) | 
| 614   // Set the AGC mode for iOS as well despite disabling it above, to avoid | 614   // Set the AGC mode for iOS as well despite disabling it above, to avoid | 
| 615   // unsupported configuration errors from webrtc. | 615   // unsupported configuration errors from webrtc. | 
| 616   agc_mode = webrtc::kAgcFixedDigital; | 616   agc_mode = webrtc::kAgcFixedDigital; | 
| 617   options.typing_detection = rtc::Optional<bool>(false); | 617   options.typing_detection = rtc::Optional<bool>(false); | 
| 618   options.experimental_agc = rtc::Optional<bool>(false); | 618   options.experimental_agc = rtc::Optional<bool>(false); | 
| 619   options.extended_filter_aec = rtc::Optional<bool>(false); | 619   options.extended_filter_aec = rtc::Optional<bool>(false); | 
| 620   options.experimental_ns = rtc::Optional<bool>(false); | 620   options.experimental_ns = rtc::Optional<bool>(false); | 
| 621 #endif | 621 #endif | 
| 622 | 622 | 
| 623   // Delay Agnostic AEC automatically turns on EC if not set except on iOS | 623   // Delay Agnostic AEC automatically turns on EC if not set except on iOS | 
| 624   // where the feature is not supported. | 624   // where the feature is not supported. | 
| 625   bool use_delay_agnostic_aec = false; | 625   bool use_delay_agnostic_aec = false; | 
| 626 #if !defined(IOS) | 626 #if !defined(WEBRTC_IOS) | 
| 627   if (options.delay_agnostic_aec) { | 627   if (options.delay_agnostic_aec) { | 
| 628     use_delay_agnostic_aec = *options.delay_agnostic_aec; | 628     use_delay_agnostic_aec = *options.delay_agnostic_aec; | 
| 629     if (use_delay_agnostic_aec) { | 629     if (use_delay_agnostic_aec) { | 
| 630       options.echo_cancellation = rtc::Optional<bool>(true); | 630       options.echo_cancellation = rtc::Optional<bool>(true); | 
| 631       options.extended_filter_aec = rtc::Optional<bool>(true); | 631       options.extended_filter_aec = rtc::Optional<bool>(true); | 
| 632       ec_mode = webrtc::kEcConference; | 632       ec_mode = webrtc::kEcConference; | 
| 633     } | 633     } | 
| 634   } | 634   } | 
| 635 #endif | 635 #endif | 
| 636 | 636 | 
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 854             *options.playout_sample_rate)) { | 854             *options.playout_sample_rate)) { | 
| 855       LOG_RTCERR1(SetPlayoutSampleRate, *options.playout_sample_rate); | 855       LOG_RTCERR1(SetPlayoutSampleRate, *options.playout_sample_rate); | 
| 856     } | 856     } | 
| 857   } | 857   } | 
| 858 | 858 | 
| 859   return true; | 859   return true; | 
| 860 } | 860 } | 
| 861 | 861 | 
| 862 void WebRtcVoiceEngine::SetDefaultDevices() { | 862 void WebRtcVoiceEngine::SetDefaultDevices() { | 
| 863   RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 863   RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 
| 864 #if !defined(IOS) | 864 #if !defined(WEBRTC_IOS) | 
| 865   int in_id = kDefaultAudioDeviceId; | 865   int in_id = kDefaultAudioDeviceId; | 
| 866   int out_id = kDefaultAudioDeviceId; | 866   int out_id = kDefaultAudioDeviceId; | 
| 867   LOG(LS_INFO) << "Setting microphone to (id=" << in_id | 867   LOG(LS_INFO) << "Setting microphone to (id=" << in_id | 
| 868                << ") and speaker to (id=" << out_id << ")"; | 868                << ") and speaker to (id=" << out_id << ")"; | 
| 869 | 869 | 
| 870   bool ret = true; | 870   bool ret = true; | 
| 871   if (voe_wrapper_->hw()->SetRecordingDevice(in_id) == -1) { | 871   if (voe_wrapper_->hw()->SetRecordingDevice(in_id) == -1) { | 
| 872     LOG_RTCERR1(SetRecordingDevice, in_id); | 872     LOG_RTCERR1(SetRecordingDevice, in_id); | 
| 873     ret = false; | 873     ret = false; | 
| 874   } | 874   } | 
| 875   webrtc::AudioProcessing* ap = voe()->base()->audio_processing(); | 875   webrtc::AudioProcessing* ap = voe()->base()->audio_processing(); | 
| 876   if (ap) { | 876   if (ap) { | 
| 877     ap->Initialize(); | 877     ap->Initialize(); | 
| 878   } | 878   } | 
| 879 | 879 | 
| 880   if (voe_wrapper_->hw()->SetPlayoutDevice(out_id) == -1) { | 880   if (voe_wrapper_->hw()->SetPlayoutDevice(out_id) == -1) { | 
| 881     LOG_RTCERR1(SetPlayoutDevice, out_id); | 881     LOG_RTCERR1(SetPlayoutDevice, out_id); | 
| 882     ret = false; | 882     ret = false; | 
| 883   } | 883   } | 
| 884 | 884 | 
| 885   if (ret) { | 885   if (ret) { | 
| 886     LOG(LS_INFO) << "Set microphone to (id=" << in_id | 886     LOG(LS_INFO) << "Set microphone to (id=" << in_id | 
| 887                  << ") and speaker to (id=" << out_id << ")"; | 887                  << ") and speaker to (id=" << out_id << ")"; | 
| 888   } | 888   } | 
| 889 #endif  // !IOS | 889 #endif  // !WEBRTC_IOS | 
| 890 } | 890 } | 
| 891 | 891 | 
| 892 bool WebRtcVoiceEngine::GetOutputVolume(int* level) { | 892 bool WebRtcVoiceEngine::GetOutputVolume(int* level) { | 
| 893   RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 893   RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); | 
| 894   unsigned int ulevel; | 894   unsigned int ulevel; | 
| 895   if (voe_wrapper_->volume()->GetSpeakerVolume(ulevel) == -1) { | 895   if (voe_wrapper_->volume()->GetSpeakerVolume(ulevel) == -1) { | 
| 896     LOG_RTCERR1(GetSpeakerVolume, level); | 896     LOG_RTCERR1(GetSpeakerVolume, level); | 
| 897     return false; | 897     return false; | 
| 898   } | 898   } | 
| 899   *level = ulevel; | 899   *level = ulevel; | 
| (...skipping 1609 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2509     } | 2509     } | 
| 2510   } else { | 2510   } else { | 
| 2511     LOG(LS_INFO) << "Stopping playout for channel #" << channel; | 2511     LOG(LS_INFO) << "Stopping playout for channel #" << channel; | 
| 2512     engine()->voe()->base()->StopPlayout(channel); | 2512     engine()->voe()->base()->StopPlayout(channel); | 
| 2513   } | 2513   } | 
| 2514   return true; | 2514   return true; | 
| 2515 } | 2515 } | 
| 2516 }  // namespace cricket | 2516 }  // namespace cricket | 
| 2517 | 2517 | 
| 2518 #endif  // HAVE_WEBRTC_VOICE | 2518 #endif  // HAVE_WEBRTC_VOICE | 
| OLD | NEW | 
|---|