Chromium Code Reviews| Index: webrtc/api/audio_codecs/builtin_audio_decoder_factory.cc |
| diff --git a/webrtc/api/audio_codecs/builtin_audio_decoder_factory.cc b/webrtc/api/audio_codecs/builtin_audio_decoder_factory.cc |
| index 9bd049b0e670b7c7d8708877a5561de4e2b81bc6..69a3e7c533d759a2e595fa8518f248591f694bfa 100644 |
| --- a/webrtc/api/audio_codecs/builtin_audio_decoder_factory.cc |
| +++ b/webrtc/api/audio_codecs/builtin_audio_decoder_factory.cc |
| @@ -10,12 +10,70 @@ |
| #include "webrtc/api/audio_codecs/builtin_audio_decoder_factory.h" |
| -#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory_internal.h" |
| +#include <memory> |
| +#include <vector> |
| + |
| +#include "webrtc/api/audio_codecs/L16/audio_decoder_L16.h" |
| +#include "webrtc/api/audio_codecs/audio_decoder_factory_template.h" |
| +#include "webrtc/api/audio_codecs/g711/audio_decoder_g711.h" |
| +#if WEBRTC_USE_BUILTIN_G722 |
| +#include "webrtc/api/audio_codecs/g722/audio_decoder_g722.h" // nogncheck |
| +#endif |
| +#if WEBRTC_USE_BUILTIN_ILBC |
| +#include "webrtc/api/audio_codecs/ilbc/audio_decoder_ilbc.h" // nogncheck |
| +#endif |
| +#if WEBRTC_USE_BUILTIN_ISAC_FIX |
| +#include "webrtc/api/audio_codecs/isac/audio_decoder_isac_fix.h" // nogncheck |
| +#elif WEBRTC_USE_BUILTIN_ISAC_FLOAT |
| +#include "webrtc/api/audio_codecs/isac/audio_decoder_isac_float.h" // nogncheck |
| +#endif |
| +#if WEBRTC_USE_BUILTIN_OPUS |
| +#include "webrtc/api/audio_codecs/opus/audio_decoder_opus.h" // nogncheck |
| +#endif |
| namespace webrtc { |
| +namespace { |
| + |
| +// Modify an audio decoder to not advertise support for anything. |
| +template <typename T> |
| +struct NotAdvertised { |
| + using Config = typename T::Config; |
| + static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format) { |
| + return T::SdpToConfig(audio_format); |
| + } |
| + static void AppendSupportedDecoders(std::vector<AudioCodecSpec>* specs) { |
| + // Don't advertise support for anything. |
| + } |
| + static std::unique_ptr<AudioDecoder> MakeAudioDecoder(const Config& config) { |
| + return T::MakeAudioDecoder(config); |
| + } |
| +}; |
| + |
| +} // namespace |
| + |
| rtc::scoped_refptr<AudioDecoderFactory> CreateBuiltinAudioDecoderFactory() { |
| - return CreateBuiltinAudioDecoderFactoryInternal(); |
| + return CreateAudioDecoderFactory< |
| + |
| +#if WEBRTC_USE_BUILTIN_OPUS |
| + AudioDecoderOpus, |
| +#endif |
| + |
| +#if WEBRTC_USE_BUILTIN_ISAC_FIX |
| + AudioDecoderIsacFix, |
| +#elif WEBRTC_USE_BUILTIN_ISAC_FLOAT |
| + AudioDecoderIsacFloat, |
| +#endif |
| + |
| +#if WEBRTC_USE_BUILTIN_G722 |
| + AudioDecoderG722, |
| +#endif |
| + |
| +#if WEBRTC_USE_BUILTIN_ILBC |
| + AudioDecoderIlbc, |
| +#endif |
| + |
| + AudioDecoderG711, NotAdvertised<AudioDecoderL16>>(); |
|
ossu
2017/08/22 12:29:16
Neat!
Not advertising L16 in our builtin factory
kwiberg-webrtc
2017/08/22 12:40:35
Yes, I realized that this behavior was probably or
|
| } |
| } // namespace webrtc |