Move AudioDecoderPcm* next to AudioEncoderPcm*
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/1348613003
Cr-Original-Commit-Position: refs/heads/master@{#10015}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 6faf5bebbab70fd358364b901e36c236bbe84046
diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn
index 862c605..5d85db3 100644
--- a/modules/audio_coding/BUILD.gn
+++ b/modules/audio_coding/BUILD.gn
@@ -172,10 +172,12 @@
source_set("g711") {
sources = [
+ "codecs/g711/audio_decoder_pcm.cc",
"codecs/g711/audio_encoder_pcm.cc",
"codecs/g711/g711.c",
"codecs/g711/g711.h",
"codecs/g711/g711_interface.c",
+ "codecs/g711/include/audio_decoder_pcm.h",
"codecs/g711/include/audio_encoder_pcm.h",
"codecs/g711/include/g711_interface.h",
]
diff --git a/modules/audio_coding/codecs/g711/audio_decoder_pcm.cc b/modules/audio_coding/codecs/g711/audio_decoder_pcm.cc
new file mode 100644
index 0000000..b273b18
--- /dev/null
+++ b/modules/audio_coding/codecs/g711/audio_decoder_pcm.cc
@@ -0,0 +1,73 @@
+/*
+ * 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/g711/include/audio_decoder_pcm.h"
+
+#include "webrtc/modules/audio_coding/codecs/g711/include/g711_interface.h"
+
+namespace webrtc {
+
+void AudioDecoderPcmU::Reset() {}
+
+size_t AudioDecoderPcmU::Channels() const {
+ return 1;
+}
+
+int AudioDecoderPcmU::DecodeInternal(const uint8_t* encoded,
+ size_t encoded_len,
+ int sample_rate_hz,
+ int16_t* decoded,
+ SpeechType* speech_type) {
+ RTC_DCHECK_EQ(sample_rate_hz, 8000);
+ int16_t temp_type = 1; // Default is speech.
+ size_t ret = WebRtcG711_DecodeU(encoded, encoded_len, decoded, &temp_type);
+ *speech_type = ConvertSpeechType(temp_type);
+ return static_cast<int>(ret);
+}
+
+int AudioDecoderPcmU::PacketDuration(const uint8_t* encoded,
+ size_t encoded_len) const {
+ // One encoded byte per sample per channel.
+ return static_cast<int>(encoded_len / Channels());
+}
+
+size_t AudioDecoderPcmUMultiCh::Channels() const {
+ return channels_;
+}
+
+void AudioDecoderPcmA::Reset() {}
+
+size_t AudioDecoderPcmA::Channels() const {
+ return 1;
+}
+
+int AudioDecoderPcmA::DecodeInternal(const uint8_t* encoded,
+ size_t encoded_len,
+ int sample_rate_hz,
+ int16_t* decoded,
+ SpeechType* speech_type) {
+ RTC_DCHECK_EQ(sample_rate_hz, 8000);
+ int16_t temp_type = 1; // Default is speech.
+ size_t ret = WebRtcG711_DecodeA(encoded, encoded_len, decoded, &temp_type);
+ *speech_type = ConvertSpeechType(temp_type);
+ return static_cast<int>(ret);
+}
+
+int AudioDecoderPcmA::PacketDuration(const uint8_t* encoded,
+ size_t encoded_len) const {
+ // One encoded byte per sample per channel.
+ return static_cast<int>(encoded_len / Channels());
+}
+
+size_t AudioDecoderPcmAMultiCh::Channels() const {
+ return channels_;
+}
+
+} // namespace webrtc
diff --git a/modules/audio_coding/codecs/g711/g711.gypi b/modules/audio_coding/codecs/g711/g711.gypi
index fc86b18..d35d787 100644
--- a/modules/audio_coding/codecs/g711/g711.gypi
+++ b/modules/audio_coding/codecs/g711/g711.gypi
@@ -26,10 +26,12 @@
},
'sources': [
'include/g711_interface.h',
+ 'include/audio_decoder_pcm.h',
'include/audio_encoder_pcm.h',
'g711_interface.c',
'g711.c',
'g711.h',
+ 'audio_decoder_pcm.cc',
'audio_encoder_pcm.cc',
],
},
diff --git a/modules/audio_coding/codecs/g711/include/audio_decoder_pcm.h b/modules/audio_coding/codecs/g711/include/audio_decoder_pcm.h
new file mode 100644
index 0000000..4f82603
--- /dev/null
+++ b/modules/audio_coding/codecs/g711/include/audio_decoder_pcm.h
@@ -0,0 +1,82 @@
+/*
+ * 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_G711_INCLUDE_AUDIO_DECODER_PCM_H_
+#define WEBRTC_MODULES_AUDIO_CODING_CODECS_G711_INCLUDE_AUDIO_DECODER_PCM_H_
+
+#include "webrtc/base/checks.h"
+#include "webrtc/modules/audio_coding/codecs/audio_decoder.h"
+
+namespace webrtc {
+
+class AudioDecoderPcmU : public AudioDecoder {
+ public:
+ AudioDecoderPcmU() {}
+ void Reset() override;
+ int PacketDuration(const uint8_t* encoded, size_t encoded_len) const 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:
+ RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcmU);
+};
+
+class AudioDecoderPcmA : public AudioDecoder {
+ public:
+ AudioDecoderPcmA() {}
+ void Reset() override;
+ int PacketDuration(const uint8_t* encoded, size_t encoded_len) const 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:
+ RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcmA);
+};
+
+class AudioDecoderPcmUMultiCh : public AudioDecoderPcmU {
+ public:
+ explicit AudioDecoderPcmUMultiCh(size_t channels)
+ : AudioDecoderPcmU(), channels_(channels) {
+ RTC_DCHECK_GT(channels, 0u);
+ }
+ size_t Channels() const override;
+
+ private:
+ const size_t channels_;
+ RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcmUMultiCh);
+};
+
+class AudioDecoderPcmAMultiCh : public AudioDecoderPcmA {
+ public:
+ explicit AudioDecoderPcmAMultiCh(size_t channels)
+ : AudioDecoderPcmA(), channels_(channels) {
+ RTC_DCHECK_GT(channels, 0u);
+ }
+ size_t Channels() const override;
+
+ private:
+ const size_t channels_;
+ RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcmAMultiCh);
+};
+
+} // namespace webrtc
+#endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_G711_INCLUDE_AUDIO_DECODER_PCM_H_
diff --git a/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc b/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc
index 36e2734..ca56d45 100644
--- a/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc
+++ b/modules/audio_coding/main/acm2/audio_coding_module_unittest_oldapi.cc
@@ -16,6 +16,7 @@
#include "webrtc/base/scoped_ptr.h"
#include "webrtc/base/thread_annotations.h"
#include "webrtc/modules/audio_coding/codecs/audio_encoder.h"
+#include "webrtc/modules/audio_coding/codecs/g711/include/audio_decoder_pcm.h"
#include "webrtc/modules/audio_coding/codecs/g711/include/audio_encoder_pcm.h"
#include "webrtc/modules/audio_coding/codecs/isac/main/interface/audio_encoder_isac.h"
#include "webrtc/modules/audio_coding/codecs/mock/mock_audio_encoder.h"
diff --git a/modules/audio_coding/neteq/audio_decoder_impl.cc b/modules/audio_coding/neteq/audio_decoder_impl.cc
index 5081298..1428eac 100644
--- a/modules/audio_coding/neteq/audio_decoder_impl.cc
+++ b/modules/audio_coding/neteq/audio_decoder_impl.cc
@@ -14,7 +14,7 @@
#include "webrtc/base/checks.h"
#include "webrtc/modules/audio_coding/codecs/cng/include/webrtc_cng.h"
-#include "webrtc/modules/audio_coding/codecs/g711/include/g711_interface.h"
+#include "webrtc/modules/audio_coding/codecs/g711/include/audio_decoder_pcm.h"
#ifdef WEBRTC_CODEC_G722
#include "webrtc/modules/audio_coding/codecs/g722/include/audio_decoder_g722.h"
#endif
@@ -34,66 +34,6 @@
namespace webrtc {
-// PCMu
-
-void AudioDecoderPcmU::Reset() {
-}
-size_t AudioDecoderPcmU::Channels() const {
- return 1;
-}
-
-int AudioDecoderPcmU::DecodeInternal(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- int16_t* decoded,
- SpeechType* speech_type) {
- RTC_DCHECK_EQ(sample_rate_hz, 8000);
- int16_t temp_type = 1; // Default is speech.
- size_t ret = WebRtcG711_DecodeU(encoded, encoded_len, decoded, &temp_type);
- *speech_type = ConvertSpeechType(temp_type);
- return static_cast<int>(ret);
-}
-
-int AudioDecoderPcmU::PacketDuration(const uint8_t* encoded,
- size_t encoded_len) const {
- // One encoded byte per sample per channel.
- return static_cast<int>(encoded_len / Channels());
-}
-
-size_t AudioDecoderPcmUMultiCh::Channels() const {
- return channels_;
-}
-
-// PCMa
-
-void AudioDecoderPcmA::Reset() {
-}
-size_t AudioDecoderPcmA::Channels() const {
- return 1;
-}
-
-int AudioDecoderPcmA::DecodeInternal(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- int16_t* decoded,
- SpeechType* speech_type) {
- RTC_DCHECK_EQ(sample_rate_hz, 8000);
- int16_t temp_type = 1; // Default is speech.
- size_t ret = WebRtcG711_DecodeA(encoded, encoded_len, decoded, &temp_type);
- *speech_type = ConvertSpeechType(temp_type);
- return static_cast<int>(ret);
-}
-
-int AudioDecoderPcmA::PacketDuration(const uint8_t* encoded,
- size_t encoded_len) const {
- // One encoded byte per sample per channel.
- return static_cast<int>(encoded_len / Channels());
-}
-
-size_t AudioDecoderPcmAMultiCh::Channels() const {
- return channels_;
-}
-
AudioDecoderCng::AudioDecoderCng() {
RTC_CHECK_EQ(0, WebRtcCng_CreateDec(&dec_state_));
WebRtcCng_InitDec(dec_state_);
diff --git a/modules/audio_coding/neteq/audio_decoder_impl.h b/modules/audio_coding/neteq/audio_decoder_impl.h
index 27f293e..f7d50d1 100644
--- a/modules/audio_coding/neteq/audio_decoder_impl.h
+++ b/modules/audio_coding/neteq/audio_decoder_impl.h
@@ -28,68 +28,6 @@
namespace webrtc {
-class AudioDecoderPcmU : public AudioDecoder {
- public:
- AudioDecoderPcmU() {}
- void Reset() override;
- int PacketDuration(const uint8_t* encoded, size_t encoded_len) const 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:
- RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcmU);
-};
-
-class AudioDecoderPcmA : public AudioDecoder {
- public:
- AudioDecoderPcmA() {}
- void Reset() override;
- int PacketDuration(const uint8_t* encoded, size_t encoded_len) const 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:
- RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcmA);
-};
-
-class AudioDecoderPcmUMultiCh : public AudioDecoderPcmU {
- public:
- explicit AudioDecoderPcmUMultiCh(size_t channels)
- : AudioDecoderPcmU(), channels_(channels) {
- assert(channels > 0);
- }
- size_t Channels() const override;
-
- private:
- const size_t channels_;
- RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcmUMultiCh);
-};
-
-class AudioDecoderPcmAMultiCh : public AudioDecoderPcmA {
- public:
- explicit AudioDecoderPcmAMultiCh(size_t channels)
- : AudioDecoderPcmA(), channels_(channels) {
- assert(channels > 0);
- }
- size_t Channels() const override;
-
- private:
- const size_t channels_;
- RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcmAMultiCh);
-};
-
// AudioDecoderCng is a special type of AudioDecoder. It inherits from
// AudioDecoder just to fit in the DecoderDatabase. None of the class methods
// should be used, except constructor, destructor, and accessors.
diff --git a/modules/audio_coding/neteq/audio_decoder_unittest.cc b/modules/audio_coding/neteq/audio_decoder_unittest.cc
index 64aa648..d7446a8 100644
--- a/modules/audio_coding/neteq/audio_decoder_unittest.cc
+++ b/modules/audio_coding/neteq/audio_decoder_unittest.cc
@@ -18,6 +18,7 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "webrtc/base/scoped_ptr.h"
+#include "webrtc/modules/audio_coding/codecs/g711/include/audio_decoder_pcm.h"
#include "webrtc/modules/audio_coding/codecs/g711/include/audio_encoder_pcm.h"
#include "webrtc/modules/audio_coding/codecs/g722/include/audio_decoder_g722.h"
#include "webrtc/modules/audio_coding/codecs/g722/include/audio_encoder_g722.h"