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..e466ab32048aa081fc540587a797d30cc8a17948 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,22 @@ 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(); |
+ cng_decoder->UpdateSid(rtc::ArrayView<const uint8_t>( |
+ packet->payload, packet->payload_length)); |
kwiberg-webrtc
2016/04/12 13:35:31
You probably don't need to store the cng decoder i
ossu
2016/04/12 13:54:50
Yeah, it can but it never will. RTC_DCHECK?
It's g
hlundin-webrtc
2016/04/13 07:05:24
I vote for a DCHECK.
ossu
2016/04/13 11:57:07
Acknowledged.
|
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 +61,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; |
} |