Chromium Code Reviews| 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..6861aa469c57b0f9ed3a71ca1c71eec86d98b727 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 != nullptr); |
|
kwiberg-webrtc
2016/04/14 09:42:48
Just "RTC_DCHECK(cng_decoder)" is sufficient.
ossu
2016/04/15 11:56:10
Acknowledged.
|
| + 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; |
| } |
| @@ -71,20 +62,20 @@ int ComfortNoise::Generate(size_t requested_length, |
| } |
| 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; |
| } |