From f88791d783153cc2ed1a437bda32bbc5a3150d71 Mon Sep 17 00:00:00 2001 From: "jmarusic@webrtc.org" Date: Tue, 24 Feb 2015 14:58:10 +0000 Subject: [PATCH] AudioEncoderCng: CHECK that encode calls don't fail Calls to WebRtcCng_Encode, AudioEncoder::Encode and Vad::VoiceActivity fail only if fed bad input, so instead of handling failure, we can just CHECK. This also makes it unnecessary for methods AudioEncoderCng::EncodePassive and AudioEncoderCng::EncodeActive to return a value, so we can make them void. R=kwiberg@webrtc.org Review URL: https://webrtc-codereview.appspot.com/39279004 Cr-Commit-Position: refs/heads/master@{#8475} git-svn-id: http://webrtc.googlecode.com/svn/trunk@8475 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../codecs/cng/audio_encoder_cng.cc | 34 ++++++++----------- .../codecs/cng/include/audio_encoder_cng.h | 4 +-- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/webrtc/modules/audio_coding/codecs/cng/audio_encoder_cng.cc b/webrtc/modules/audio_coding/codecs/cng/audio_encoder_cng.cc index bb53e8c9f5..ffab9ecf27 100644 --- a/webrtc/modules/audio_coding/codecs/cng/audio_encoder_cng.cc +++ b/webrtc/modules/audio_coding/codecs/cng/audio_encoder_cng.cc @@ -146,12 +146,10 @@ bool AudioEncoderCng::EncodeInternal(uint32_t rtp_timestamp, &speech_buffer_[samples_per_10ms_frame * blocks_in_first_vad_call], samples_per_10ms_frame * blocks_in_second_vad_call, SampleRateHz()); } - DCHECK_NE(activity, Vad::kError); - bool return_val = true; switch (activity) { case Vad::kPassive: { - return_val = EncodePassive(encoded, &info->encoded_bytes); + EncodePassive(encoded, &info->encoded_bytes); info->encoded_timestamp = first_timestamp_in_buffer_; info->payload_type = cng_payload_type_; info->send_even_if_empty = true; @@ -159,32 +157,31 @@ bool AudioEncoderCng::EncodeInternal(uint32_t rtp_timestamp, break; } case Vad::kActive: { - return_val = EncodeActive(max_encoded_bytes, encoded, info); + EncodeActive(max_encoded_bytes, encoded, info); last_frame_active_ = true; break; } case Vad::kError: { - return_val = false; + FATAL(); // Fails only if fed invalid data. break; } } speech_buffer_.clear(); frames_in_buffer_ = 0; - return return_val; + return true; } -bool AudioEncoderCng::EncodePassive(uint8_t* encoded, size_t* encoded_bytes) { +void AudioEncoderCng::EncodePassive(uint8_t* encoded, size_t* encoded_bytes) { bool force_sid = last_frame_active_; bool output_produced = false; const size_t samples_per_10ms_frame = 10 * SampleRateHz() / 1000; for (int i = 0; i < frames_in_buffer_; ++i) { int16_t encoded_bytes_tmp = 0; - if (WebRtcCng_Encode(cng_inst_.get(), - &speech_buffer_[i * samples_per_10ms_frame], - static_cast(samples_per_10ms_frame), encoded, - &encoded_bytes_tmp, force_sid) < 0) - return false; + CHECK_GE(WebRtcCng_Encode(cng_inst_.get(), + &speech_buffer_[i * samples_per_10ms_frame], + static_cast(samples_per_10ms_frame), + encoded, &encoded_bytes_tmp, force_sid), 0); if (encoded_bytes_tmp > 0) { CHECK(!output_produced); *encoded_bytes = static_cast(encoded_bytes_tmp); @@ -192,24 +189,21 @@ bool AudioEncoderCng::EncodePassive(uint8_t* encoded, size_t* encoded_bytes) { force_sid = false; } } - return true; } -bool AudioEncoderCng::EncodeActive(size_t max_encoded_bytes, +void AudioEncoderCng::EncodeActive(size_t max_encoded_bytes, uint8_t* encoded, EncodedInfo* info) { const size_t samples_per_10ms_frame = 10 * SampleRateHz() / 1000; for (int i = 0; i < frames_in_buffer_; ++i) { - if (!speech_encoder_->Encode(first_timestamp_in_buffer_, - &speech_buffer_[i * samples_per_10ms_frame], - samples_per_10ms_frame, max_encoded_bytes, - encoded, info)) - return false; + CHECK(speech_encoder_->Encode(first_timestamp_in_buffer_, + &speech_buffer_[i * samples_per_10ms_frame], + samples_per_10ms_frame, max_encoded_bytes, + encoded, info)); if (i < frames_in_buffer_ - 1) { CHECK_EQ(info->encoded_bytes, 0u) << "Encoder delivered data too early."; } } - return true; } } // namespace webrtc diff --git a/webrtc/modules/audio_coding/codecs/cng/include/audio_encoder_cng.h b/webrtc/modules/audio_coding/codecs/cng/include/audio_encoder_cng.h index 55b3db66e2..72a66034e7 100644 --- a/webrtc/modules/audio_coding/codecs/cng/include/audio_encoder_cng.h +++ b/webrtc/modules/audio_coding/codecs/cng/include/audio_encoder_cng.h @@ -68,9 +68,9 @@ class AudioEncoderCng final : public AudioEncoder { inline void operator()(CNG_enc_inst* ptr) const { WebRtcCng_FreeEnc(ptr); } }; - bool EncodePassive(uint8_t* encoded, size_t* encoded_bytes); + void EncodePassive(uint8_t* encoded, size_t* encoded_bytes); - bool EncodeActive(size_t max_encoded_bytes, + void EncodeActive(size_t max_encoded_bytes, uint8_t* encoded, EncodedInfo* info);