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}
diff --git a/webrtc/modules/audio_coding/BUILD.gn b/webrtc/modules/audio_coding/BUILD.gn
index fd96219..2494fc0 100644
--- a/webrtc/modules/audio_coding/BUILD.gn
+++ b/webrtc/modules/audio_coding/BUILD.gn
@@ -235,6 +235,7 @@
     "codecs/ilbc/abs_quant.h",
     "codecs/ilbc/abs_quant_loop.c",
     "codecs/ilbc/abs_quant_loop.h",
+    "codecs/ilbc/audio_decoder_ilbc.cc",
     "codecs/ilbc/audio_encoder_ilbc.cc",
     "codecs/ilbc/augmented_cb_corr.c",
     "codecs/ilbc/augmented_cb_corr.h",
@@ -300,6 +301,7 @@
     "codecs/ilbc/hp_output.c",
     "codecs/ilbc/hp_output.h",
     "codecs/ilbc/ilbc.c",
+    "codecs/ilbc/include/audio_decoder_ilbc.h",
     "codecs/ilbc/include/audio_encoder_ilbc.h",
     "codecs/ilbc/index_conv_dec.c",
     "codecs/ilbc/index_conv_dec.h",
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 0000000..619d686
--- /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 ca4704c..ce43901 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 0000000..ada73e5
--- /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_
diff --git a/webrtc/modules/audio_coding/neteq/audio_decoder_impl.cc b/webrtc/modules/audio_coding/neteq/audio_decoder_impl.cc
index 1b0a1c1..a967021 100644
--- a/webrtc/modules/audio_coding/neteq/audio_decoder_impl.cc
+++ b/webrtc/modules/audio_coding/neteq/audio_decoder_impl.cc
@@ -20,7 +20,7 @@
 #include "webrtc/modules/audio_coding/codecs/g722/include/g722_interface.h"
 #endif
 #ifdef WEBRTC_CODEC_ILBC
-#include "webrtc/modules/audio_coding/codecs/ilbc/interface/ilbc.h"
+#include "webrtc/modules/audio_coding/codecs/ilbc/interface/audio_decoder_ilbc.h"
 #endif
 #ifdef WEBRTC_CODEC_ISACFX
 #include "webrtc/modules/audio_coding/codecs/isac/fix/interface/audio_encoder_isacfix.h"
@@ -132,47 +132,6 @@
   return channels_;
 }
 
-// iLBC
-#ifdef WEBRTC_CODEC_ILBC
-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;
-}
-#endif
-
 // G.722
 #ifdef WEBRTC_CODEC_G722
 AudioDecoderG722::AudioDecoderG722() {
diff --git a/webrtc/modules/audio_coding/neteq/audio_decoder_impl.h b/webrtc/modules/audio_coding/neteq/audio_decoder_impl.h
index 2d0d041..2ef9410 100644
--- a/webrtc/modules/audio_coding/neteq/audio_decoder_impl.h
+++ b/webrtc/modules/audio_coding/neteq/audio_decoder_impl.h
@@ -24,9 +24,6 @@
 #ifdef WEBRTC_CODEC_G722
 #include "webrtc/modules/audio_coding/codecs/g722/include/g722_interface.h"
 #endif
-#ifdef WEBRTC_CODEC_ILBC
-#include "webrtc/modules/audio_coding/codecs/ilbc/interface/ilbc.h"
-#endif
 #include "webrtc/typedefs.h"
 
 namespace webrtc {
@@ -126,29 +123,6 @@
   RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderPcm16BMultiCh);
 };
 
-#ifdef WEBRTC_CODEC_ILBC
-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);
-};
-#endif
-
 #ifdef WEBRTC_CODEC_G722
 class AudioDecoderG722 : public AudioDecoder {
  public:
diff --git a/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc b/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc
index 54dcdf5..7c9b560 100644
--- a/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc
@@ -20,6 +20,7 @@
 #include "webrtc/base/scoped_ptr.h"
 #include "webrtc/modules/audio_coding/codecs/g711/include/audio_encoder_pcm.h"
 #include "webrtc/modules/audio_coding/codecs/g722/include/audio_encoder_g722.h"
+#include "webrtc/modules/audio_coding/codecs/ilbc/interface/audio_decoder_ilbc.h"
 #include "webrtc/modules/audio_coding/codecs/ilbc/interface/audio_encoder_ilbc.h"
 #include "webrtc/modules/audio_coding/codecs/isac/fix/interface/audio_encoder_isacfix.h"
 #include "webrtc/modules/audio_coding/codecs/isac/main/interface/audio_encoder_isac.h"