Index: webrtc/media/engine/webrtcvoiceengine.cc |
diff --git a/webrtc/media/engine/webrtcvoiceengine.cc b/webrtc/media/engine/webrtcvoiceengine.cc |
index fbaab675ec58d6a78b60cf9ac62e7c93955047ca..7ae7062f63fda5a0d2c0d2284b8271836e1f8f5b 100644 |
--- a/webrtc/media/engine/webrtcvoiceengine.cc |
+++ b/webrtc/media/engine/webrtcvoiceengine.cc |
@@ -519,68 +519,57 @@ bool WebRtcVoiceEngine::ToCodecInst(const AudioCodec& in, |
return WebRtcVoiceCodecs::ToCodecInst(in, out); |
} |
-WebRtcVoiceEngine::WebRtcVoiceEngine() |
- : voe_wrapper_(new VoEWrapper()), |
- audio_state_(webrtc::AudioState::Create(MakeAudioStateConfig(voe()))) { |
- Construct(); |
+WebRtcVoiceEngine::WebRtcVoiceEngine(webrtc::AudioDeviceModule* adm) |
+ : WebRtcVoiceEngine(adm, new VoEWrapper()) { |
+ audio_state_ = webrtc::AudioState::Create(MakeAudioStateConfig(voe())); |
} |
-WebRtcVoiceEngine::WebRtcVoiceEngine(VoEWrapper* voe_wrapper) |
+WebRtcVoiceEngine::WebRtcVoiceEngine(webrtc::AudioDeviceModule* adm, |
+ VoEWrapper* voe_wrapper) |
: voe_wrapper_(voe_wrapper) { |
- Construct(); |
-} |
- |
-void WebRtcVoiceEngine::Construct() { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
LOG(LS_VERBOSE) << "WebRtcVoiceEngine::WebRtcVoiceEngine"; |
signal_thread_checker_.DetachFromThread(); |
- std::memset(&default_agc_config_, 0, sizeof(default_agc_config_)); |
- voe_config_.Set<webrtc::VoicePacing>(new webrtc::VoicePacing(true)); |
- |
- webrtc::Trace::set_level_filter(kDefaultTraceFilter); |
webrtc::Trace::SetTraceCallback(this); |
- |
- // Load our audio codec list. |
- codecs_ = WebRtcVoiceCodecs::SupportedCodecs(); |
+ std::memset(&default_agc_config_, 0, sizeof(default_agc_config_)); |
+ adm_ = adm; |
+ if (adm_) { |
+ adm_->AddRef(); |
pthatcher1
2016/03/25 23:23:21
Should we use a scoped_refptr for adm_?
Taylor Brandstetter
2016/03/29 00:49:23
+1
the sun
2016/03/29 21:46:40
Done.
the sun
2016/03/29 21:46:40
Done.
|
+ } |
} |
WebRtcVoiceEngine::~WebRtcVoiceEngine() { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
LOG(LS_VERBOSE) << "WebRtcVoiceEngine::~WebRtcVoiceEngine"; |
if (adm_) { |
- voe_wrapper_.reset(); |
Taylor Brandstetter
2016/03/29 00:49:23
Is there a reason this was called here, and if so,
the sun
2016/03/29 21:46:40
Looks like it wasn't needed; VoE's ADM reference s
|
adm_->Release(); |
- adm_ = NULL; |
} |
webrtc::Trace::SetTraceCallback(nullptr); |
} |
-bool WebRtcVoiceEngine::Init(rtc::Thread* worker_thread) { |
+bool WebRtcVoiceEngine::Init() { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
- RTC_DCHECK(worker_thread == rtc::Thread::Current()); |
LOG(LS_INFO) << "WebRtcVoiceEngine::Init"; |
- bool res = InitInternal(); |
- if (res) { |
- LOG(LS_INFO) << "WebRtcVoiceEngine::Init Done!"; |
- } else { |
- LOG(LS_ERROR) << "WebRtcVoiceEngine::Init failed"; |
- Terminate(); |
- } |
- return res; |
-} |
+ LOG(LS_INFO) << webrtc::VoiceEngine::GetVersionString(); |
+ |
+ voe_config_.Set<webrtc::VoicePacing>(new webrtc::VoicePacing(true)); |
-bool WebRtcVoiceEngine::InitInternal() { |
- RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
// Temporarily turn logging level up for the Init call. |
webrtc::Trace::set_level_filter(kElevatedTraceFilter); |
- LOG(LS_INFO) << webrtc::VoiceEngine::GetVersionString(); |
if (voe_wrapper_->base()->Init(adm_) == -1) { |
LOG_RTCERR0_EX(Init, voe_wrapper_->error()); |
return false; |
} |
webrtc::Trace::set_level_filter(kDefaultTraceFilter); |
+ // No ADM supplied? Get the default one from VoE. |
+ if (!adm_) { |
+ adm_ = voe_wrapper_->base()->audio_device_module(); |
+ adm_->AddRef(); |
+ } |
+ RTC_DCHECK(adm_); |
+ |
// Save the default AGC configuration settings. This must happen before |
// calling ApplyOptions or the default will be overwritten. |
if (voe_wrapper_->processing()->GetAgcConfig(default_agc_config_) == -1) { |
@@ -610,24 +599,22 @@ bool WebRtcVoiceEngine::InitInternal() { |
} |
// Print our codec list again for the call diagnostic log. |
- LOG(LS_INFO) << "WebRtc VoiceEngine codecs:"; |
+ LOG(LS_INFO) << "Supported codecs in order of preference:"; |
+ codecs_ = WebRtcVoiceCodecs::SupportedCodecs(); |
for (const AudioCodec& codec : codecs_) { |
LOG(LS_INFO) << ToString(codec); |
} |
SetDefaultDevices(); |
- initialized_ = true; |
+ LOG(LS_INFO) << "WebRtcVoiceEngine::Init Done!"; |
return true; |
} |
void WebRtcVoiceEngine::Terminate() { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
LOG(LS_INFO) << "WebRtcVoiceEngine::Terminate"; |
- initialized_ = false; |
- |
StopAecDump(); |
- |
voe_wrapper_->base()->Terminate(); |
} |
@@ -1052,23 +1039,6 @@ bool WebRtcVoiceEngine::AdjustAgcLevel(int delta) { |
return true; |
} |
-bool WebRtcVoiceEngine::SetAudioDeviceModule(webrtc::AudioDeviceModule* adm) { |
- RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |
- if (initialized_) { |
- LOG(LS_WARNING) << "SetAudioDeviceModule can not be called after Init."; |
- return false; |
- } |
- if (adm_) { |
- adm_->Release(); |
- adm_ = NULL; |
- } |
- if (adm) { |
- adm_ = adm; |
- adm_->AddRef(); |
- } |
- return true; |
-} |
- |
bool WebRtcVoiceEngine::StartAecDump(rtc::PlatformFile file, |
int64_t max_size_bytes) { |
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread()); |