| Index: webrtc/media/engine/webrtcvoiceengine.cc
 | 
| diff --git a/webrtc/media/engine/webrtcvoiceengine.cc b/webrtc/media/engine/webrtcvoiceengine.cc
 | 
| index ed67ce84ba00cc520872b1a17e0ea8bdbb579160..3125c42e04efd74a031c6474b2e2c12464f8d6da 100644
 | 
| --- a/webrtc/media/engine/webrtcvoiceengine.cc
 | 
| +++ b/webrtc/media/engine/webrtcvoiceengine.cc
 | 
| @@ -520,13 +520,17 @@ bool WebRtcVoiceEngine::ToCodecInst(const AudioCodec& in,
 | 
|    return WebRtcVoiceCodecs::ToCodecInst(in, out);
 | 
|  }
 | 
|  
 | 
| -WebRtcVoiceEngine::WebRtcVoiceEngine(webrtc::AudioDeviceModule* adm)
 | 
| -    : WebRtcVoiceEngine(adm, new VoEWrapper()) {
 | 
| +WebRtcVoiceEngine::WebRtcVoiceEngine(
 | 
| +    webrtc::AudioDeviceModule* adm,
 | 
| +    std::shared_ptr<webrtc::AudioDecoderFactory> decoder_factory)
 | 
| +    : WebRtcVoiceEngine(adm, decoder_factory, new VoEWrapper()) {
 | 
|    audio_state_ = webrtc::AudioState::Create(MakeAudioStateConfig(voe()));
 | 
|  }
 | 
|  
 | 
| -WebRtcVoiceEngine::WebRtcVoiceEngine(webrtc::AudioDeviceModule* adm,
 | 
| -                                     VoEWrapper* voe_wrapper)
 | 
| +WebRtcVoiceEngine::WebRtcVoiceEngine(
 | 
| +    webrtc::AudioDeviceModule* adm,
 | 
| +    std::shared_ptr<webrtc::AudioDecoderFactory> decoder_factory,
 | 
| +    VoEWrapper* voe_wrapper)
 | 
|      : adm_(adm), voe_wrapper_(voe_wrapper) {
 | 
|    RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
 | 
|    LOG(LS_INFO) << "WebRtcVoiceEngine::WebRtcVoiceEngine";
 | 
| @@ -547,7 +551,8 @@ WebRtcVoiceEngine::WebRtcVoiceEngine(webrtc::AudioDeviceModule* adm,
 | 
|    webrtc::Trace::SetTraceCallback(this);
 | 
|    webrtc::Trace::set_level_filter(kElevatedTraceFilter);
 | 
|    LOG(LS_INFO) << webrtc::VoiceEngine::GetVersionString();
 | 
| -  RTC_CHECK_EQ(0, voe_wrapper_->base()->Init(adm_.get()));
 | 
| +  RTC_CHECK_EQ(0, voe_wrapper_->base()->Init(adm_.get(), nullptr,
 | 
| +                                             std::move(decoder_factory)));
 | 
|    webrtc::Trace::set_level_filter(kDefaultTraceFilter);
 | 
|  
 | 
|    // No ADM supplied? Get the default one from VoE.
 | 
| 
 |