| 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;
|
| }
|
|
|
|
|