NetEq: Use a BuiltinAudioDecoderFactory to create decoders

Later steps in the refactoring will have the factory injected from the
outside rather than owned by NetEq.

BUG=webrtc:5801

Review-Url: https://codereview.webrtc.org/1928293002
Cr-Commit-Position: refs/heads/master@{#12604}
diff --git a/webrtc/modules/audio_coding/neteq/decoder_database.cc b/webrtc/modules/audio_coding/neteq/decoder_database.cc
index 845b2ad..4fddf75 100644
--- a/webrtc/modules/audio_coding/neteq/decoder_database.cc
+++ b/webrtc/modules/audio_coding/neteq/decoder_database.cc
@@ -19,9 +19,11 @@
 
 namespace webrtc {
 
-DecoderDatabase::DecoderDatabase()
-    : active_decoder_type_(-1), active_cng_decoder_type_(-1) {
-}
+DecoderDatabase::DecoderDatabase(
+    std::unique_ptr<AudioDecoderFactory> decoder_factory)
+    : active_decoder_type_(-1),
+      active_cng_decoder_type_(-1),
+      decoder_factory_(std::move(decoder_factory)) {}
 
 DecoderDatabase::~DecoderDatabase() = default;
 
@@ -32,20 +34,23 @@
     : codec_type(ct),
       name(nm),
       fs_hz(fs),
-      external_decoder(ext_dec) {}
+      external_decoder(ext_dec),
+      audio_format_(acm2::RentACodec::NetEqDecoderToSdpAudioFormat(ct)) {}
 
 DecoderDatabase::DecoderInfo::DecoderInfo(DecoderInfo&&) = default;
 DecoderDatabase::DecoderInfo::~DecoderInfo() = default;
 
-AudioDecoder* DecoderDatabase::DecoderInfo::GetDecoder() {
+AudioDecoder* DecoderDatabase::DecoderInfo::GetDecoder(
+    AudioDecoderFactory* factory) {
   if (external_decoder) {
     RTC_DCHECK(!decoder_);
     return external_decoder;
   }
+  RTC_DCHECK(audio_format_);
   if (!decoder_) {
-    decoder_.reset(CreateAudioDecoder(codec_type));
+    decoder_ = factory->MakeAudioDecoder(*audio_format_);
   }
-  RTC_DCHECK(decoder_);
+  RTC_DCHECK(decoder_) << "Failed to create: " << *audio_format_;
   return decoder_.get();
 }
 
@@ -155,7 +160,7 @@
     return NULL;
   }
   DecoderInfo* info = &(*it).second;
-  return info->GetDecoder();
+  return info->GetDecoder(decoder_factory_.get());
 }
 
 bool DecoderDatabase::IsType(uint8_t rtp_payload_type,