| Index: webrtc/modules/audio_coding/neteq/comfort_noise.cc | 
| diff --git a/webrtc/modules/audio_coding/neteq/comfort_noise.cc b/webrtc/modules/audio_coding/neteq/comfort_noise.cc | 
| index a5b08469beaec716e9c5e27424f3244a3ab6ab31..2a512bd750f258491f3fac1a77f25ae356da59b1 100644 | 
| --- a/webrtc/modules/audio_coding/neteq/comfort_noise.cc | 
| +++ b/webrtc/modules/audio_coding/neteq/comfort_noise.cc | 
| @@ -14,7 +14,6 @@ | 
|  | 
| #include "webrtc/base/logging.h" | 
| #include "webrtc/modules/audio_coding/codecs/audio_decoder.h" | 
| -#include "webrtc/modules/audio_coding/codecs/cng/webrtc_cng.h" | 
| #include "webrtc/modules/audio_coding/neteq/decoder_database.h" | 
| #include "webrtc/modules/audio_coding/neteq/dsp_helper.h" | 
| #include "webrtc/modules/audio_coding/neteq/sync_buffer.h" | 
| @@ -23,31 +22,23 @@ namespace webrtc { | 
|  | 
| void ComfortNoise::Reset() { | 
| first_call_ = true; | 
| -  internal_error_code_ = 0; | 
| } | 
|  | 
| int ComfortNoise::UpdateParameters(Packet* packet) { | 
| assert(packet);  // Existence is verified by caller. | 
| // Get comfort noise decoder. | 
| -  AudioDecoder* cng_decoder = decoder_database_->GetDecoder( | 
| -      packet->header.payloadType); | 
| -  if (!cng_decoder) { | 
| +  if (decoder_database_->SetActiveCngDecoder(packet->header.payloadType) | 
| +      != kOK) { | 
| delete [] packet->payload; | 
| delete packet; | 
| return kUnknownPayloadType; | 
| } | 
| -  decoder_database_->SetActiveCngDecoder(packet->header.payloadType); | 
| -  CNG_dec_inst* cng_inst = cng_decoder->CngDecoderInstance(); | 
| -  int16_t ret = WebRtcCng_UpdateSid(cng_inst, | 
| -                                    packet->payload, | 
| -                                    packet->payload_length); | 
| +  ComfortNoiseDecoder* cng_decoder = decoder_database_->GetActiveCngDecoder(); | 
| +  RTC_DCHECK(cng_decoder); | 
| +  cng_decoder->UpdateSid(rtc::ArrayView<const uint8_t>( | 
| +      packet->payload, packet->payload_length)); | 
| delete [] packet->payload; | 
| delete packet; | 
| -  if (ret < 0) { | 
| -    internal_error_code_ = WebRtcCng_GetErrorCodeDec(cng_inst); | 
| -    LOG(LS_ERROR) << "WebRtcCng_UpdateSid produced " << internal_error_code_; | 
| -    return kInternalError; | 
| -  } | 
| return kOK; | 
| } | 
|  | 
| @@ -63,28 +54,28 @@ int ComfortNoise::Generate(size_t requested_length, | 
| } | 
|  | 
| size_t number_of_samples = requested_length; | 
| -  int16_t new_period = 0; | 
| +  bool new_period = false; | 
| if (first_call_) { | 
| // Generate noise and overlap slightly with old data. | 
| number_of_samples = requested_length + overlap_length_; | 
| -    new_period = 1; | 
| +    new_period = true; | 
| } | 
| output->AssertSize(number_of_samples); | 
| // Get the decoder from the database. | 
| -  AudioDecoder* cng_decoder = decoder_database_->GetActiveCngDecoder(); | 
| +  ComfortNoiseDecoder* cng_decoder = decoder_database_->GetActiveCngDecoder(); | 
| if (!cng_decoder) { | 
| LOG(LS_ERROR) << "Unknwown payload type"; | 
| return kUnknownPayloadType; | 
| } | 
| -  CNG_dec_inst* cng_inst = cng_decoder->CngDecoderInstance(); | 
| // The expression &(*output)[0][0] is a pointer to the first element in | 
| // the first channel. | 
| -  if (WebRtcCng_Generate(cng_inst, &(*output)[0][0], number_of_samples, | 
| -                         new_period) < 0) { | 
| +  if (!cng_decoder->Generate( | 
| +          rtc::ArrayView<int16_t>(&(*output)[0][0], number_of_samples), | 
| +          new_period)) { | 
| // Error returned. | 
| output->Zeros(requested_length); | 
| -    internal_error_code_ = WebRtcCng_GetErrorCodeDec(cng_inst); | 
| -    LOG(LS_ERROR) << "WebRtcCng_Generate produced " << internal_error_code_; | 
| +    LOG(LS_ERROR) << | 
| +        "ComfortNoiseDecoder::Genererate failed to generate comfort noise"; | 
| return kInternalError; | 
| } | 
|  | 
|  |