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"