aboutsummaryrefslogtreecommitdiff
path: root/webrtc/modules/audio_coding/codecs
diff options
context:
space:
mode:
authorkwiberg <kwiberg@webrtc.org>2015-09-16 21:26:32 -0700
committerCommit bot <commit-bot@chromium.org>2015-09-17 04:26:39 +0000
commitfff9f176f542053ca7cb887c184c72ad3fc5755d (patch)
tree0d390454e41d96a93b81977db5bff4883e25339c /webrtc/modules/audio_coding/codecs
parent1f9baab753be55a7c6d31c84a5470fe646936edd (diff)
downloadwebrtc-fff9f176f542053ca7cb887c184c72ad3fc5755d.tar.gz
Move AudioDecoderIlbc next to AudioEncoderIlbc
All AudioDecoder subclasses have historically lived in NetEq, but they fit better with the codec they wrap. BUG=webrtc:4557 Review URL: https://codereview.webrtc.org/1348053002 Cr-Commit-Position: refs/heads/master@{#9961}
Diffstat (limited to 'webrtc/modules/audio_coding/codecs')
-rw-r--r--webrtc/modules/audio_coding/codecs/ilbc/audio_decoder_ilbc.cc56
-rw-r--r--webrtc/modules/audio_coding/codecs/ilbc/ilbc.gypi2
-rw-r--r--webrtc/modules/audio_coding/codecs/ilbc/interface/audio_decoder_ilbc.h42
3 files changed, 100 insertions, 0 deletions
diff --git a/webrtc/modules/audio_coding/codecs/ilbc/audio_decoder_ilbc.cc b/webrtc/modules/audio_coding/codecs/ilbc/audio_decoder_ilbc.cc
new file mode 100644
index 0000000000..619d686802
--- /dev/null
+++ b/webrtc/modules/audio_coding/codecs/ilbc/audio_decoder_ilbc.cc
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "webrtc/modules/audio_coding/codecs/ilbc/interface/audio_decoder_ilbc.h"
+
+#include "webrtc/base/checks.h"
+#include "webrtc/modules/audio_coding/codecs/ilbc/interface/ilbc.h"
+
+namespace webrtc {
+
+AudioDecoderIlbc::AudioDecoderIlbc() {
+ WebRtcIlbcfix_DecoderCreate(&dec_state_);
+ WebRtcIlbcfix_Decoderinit30Ms(dec_state_);
+}
+
+AudioDecoderIlbc::~AudioDecoderIlbc() {
+ WebRtcIlbcfix_DecoderFree(dec_state_);
+}
+
+bool AudioDecoderIlbc::HasDecodePlc() const {
+ return true;
+}
+
+int AudioDecoderIlbc::DecodeInternal(const uint8_t* encoded,
+ size_t encoded_len,
+ int sample_rate_hz,
+ int16_t* decoded,
+ SpeechType* speech_type) {
+ DCHECK_EQ(sample_rate_hz, 8000);
+ int16_t temp_type = 1; // Default is speech.
+ int ret = WebRtcIlbcfix_Decode(dec_state_, encoded, encoded_len, decoded,
+ &temp_type);
+ *speech_type = ConvertSpeechType(temp_type);
+ return ret;
+}
+
+size_t AudioDecoderIlbc::DecodePlc(size_t num_frames, int16_t* decoded) {
+ return WebRtcIlbcfix_NetEqPlc(dec_state_, decoded, num_frames);
+}
+
+void AudioDecoderIlbc::Reset() {
+ WebRtcIlbcfix_Decoderinit30Ms(dec_state_);
+}
+
+size_t AudioDecoderIlbc::Channels() const {
+ return 1;
+}
+
+} // namespace webrtc
diff --git a/webrtc/modules/audio_coding/codecs/ilbc/ilbc.gypi b/webrtc/modules/audio_coding/codecs/ilbc/ilbc.gypi
index ca4704cc40..ce439014a1 100644
--- a/webrtc/modules/audio_coding/codecs/ilbc/ilbc.gypi
+++ b/webrtc/modules/audio_coding/codecs/ilbc/ilbc.gypi
@@ -26,10 +26,12 @@
],
},
'sources': [
+ 'interface/audio_decoder_ilbc.h',
'interface/audio_encoder_ilbc.h',
'interface/ilbc.h',
'abs_quant.c',
'abs_quant_loop.c',
+ 'audio_decoder_ilbc.cc',
'audio_encoder_ilbc.cc',
'augmented_cb_corr.c',
'bw_expand.c',
diff --git a/webrtc/modules/audio_coding/codecs/ilbc/interface/audio_decoder_ilbc.h b/webrtc/modules/audio_coding/codecs/ilbc/interface/audio_decoder_ilbc.h
new file mode 100644
index 0000000000..ada73e5635
--- /dev/null
+++ b/webrtc/modules/audio_coding/codecs/ilbc/interface/audio_decoder_ilbc.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+
+#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ILBC_INTERFACE_AUDIO_DECODER_ILBC_H_
+#define WEBRTC_MODULES_AUDIO_CODING_CODECS_ILBC_INTERFACE_AUDIO_DECODER_ILBC_H_
+
+#include "webrtc/modules/audio_coding/codecs/audio_decoder.h"
+
+typedef struct iLBC_decinst_t_ IlbcDecoderInstance;
+
+namespace webrtc {
+
+class AudioDecoderIlbc : public AudioDecoder {
+ public:
+ AudioDecoderIlbc();
+ ~AudioDecoderIlbc() override;
+ bool HasDecodePlc() const override;
+ size_t DecodePlc(size_t num_frames, int16_t* decoded) override;
+ void Reset() override;
+ size_t Channels() const override;
+
+ protected:
+ int DecodeInternal(const uint8_t* encoded,
+ size_t encoded_len,
+ int sample_rate_hz,
+ int16_t* decoded,
+ SpeechType* speech_type) override;
+
+ private:
+ IlbcDecoderInstance* dec_state_;
+ RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderIlbc);
+};
+
+} // namespace webrtc
+#endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_ILBC_INTERFACE_AUDIO_DECODER_ILBC_H_