New interface (AudioDecoderFactory), with an implementation

This is a first draft of what we're hoping to use to create all
AudioDecoder instances. Follow-up CLs will start using this internally
in NetEq instead of calling constructors manually.

BUG=webrtc:5801

Review-Url: https://codereview.webrtc.org/1917163002
Cr-Commit-Position: refs/heads/master@{#12548}
diff --git a/webrtc/modules/audio_coding/BUILD.gn b/webrtc/modules/audio_coding/BUILD.gn
index 3797818..a51a73a 100644
--- a/webrtc/modules/audio_coding/BUILD.gn
+++ b/webrtc/modules/audio_coding/BUILD.gn
@@ -39,6 +39,33 @@
   audio_codec_deps += [ ":red" ]
 }
 
+source_set("audio_decoder_factory_interface") {
+  sources = [
+    "codecs/audio_decoder_factory.h",
+    "codecs/audio_format.cc",
+    "codecs/audio_format.h",
+  ]
+  configs += [ "../..:common_config" ]
+  public_configs = [ "../..:common_inherited_config" ]
+  deps = [
+    "../..:webrtc_common",
+  ]
+}
+
+source_set("builtin_audio_decoder_factory") {
+  sources = [
+    "codecs/builtin_audio_decoder_factory.cc",
+    "codecs/builtin_audio_decoder_factory.h",
+  ]
+  configs += [ "../..:common_config" ]
+  public_configs = [ "../..:common_inherited_config" ]
+  deps = [
+           "../..:webrtc_common",
+           ":audio_decoder_factory_interface",
+         ] + audio_codec_deps
+  defines = audio_codec_defines
+}
+
 source_set("rent_a_codec") {
   sources = [
     "acm2/acm_codec_database.cc",