| Index: webrtc/modules/audio_coding/neteq/neteq_impl.cc
 | 
| diff --git a/webrtc/modules/audio_coding/neteq/neteq_impl.cc b/webrtc/modules/audio_coding/neteq/neteq_impl.cc
 | 
| index 9c4f5809068f8964ef74882c0414f184ce37eef0..71eea2114c2d3892e13d160ba43d8e700e20dea7 100644
 | 
| --- a/webrtc/modules/audio_coding/neteq/neteq_impl.cc
 | 
| +++ b/webrtc/modules/audio_coding/neteq/neteq_impl.cc
 | 
| @@ -431,6 +431,27 @@ int NetEqImpl::last_output_sample_rate_hz() const {
 | 
|    return last_output_sample_rate_hz_;
 | 
|  }
 | 
|  
 | 
| +rtc::Optional<CodecInst> NetEqImpl::GetDecoder(int payload_type) const {
 | 
| +  rtc::CritScope lock(&crit_sect_);
 | 
| +  const DecoderDatabase::DecoderInfo* di =
 | 
| +      decoder_database_->GetDecoderInfo(payload_type);
 | 
| +  if (!di) {
 | 
| +    return rtc::Optional<CodecInst>();
 | 
| +  }
 | 
| +
 | 
| +  // Create a CodecInst with some fields set. The remaining fields are zeroed,
 | 
| +  // but we tell MSan to consider them uninitialized.
 | 
| +  CodecInst ci = {0};
 | 
| +  rtc::MsanMarkUninitialized(rtc::MakeArrayView(&ci, 1));
 | 
| +  ci.pltype = payload_type;
 | 
| +  std::strncpy(ci.plname, di->name.c_str(), sizeof(ci.plname));
 | 
| +  ci.plname[sizeof(ci.plname) - 1] = '\0';
 | 
| +  ci.plfreq = di->IsRed() || di->IsDtmf() ? 8000 : di->SampleRateHz();
 | 
| +  AudioDecoder* const decoder = di->GetDecoder();
 | 
| +  ci.channels = decoder ? decoder->Channels() : 1;
 | 
| +  return rtc::Optional<CodecInst>(ci);
 | 
| +}
 | 
| +
 | 
|  int NetEqImpl::SetTargetNumberOfChannels() {
 | 
|    return kNotImplemented;
 | 
|  }
 | 
| 
 |