Index: webrtc/modules/audio_coding/main/acm2/codec_owner.cc |
diff --git a/webrtc/modules/audio_coding/main/acm2/codec_owner.cc b/webrtc/modules/audio_coding/main/acm2/codec_owner.cc |
index 23b6552366a8fd0d0859fda6be25e320cbf0b8ad..449a467a172e2e329612297dd5855788d6efc379 100644 |
--- a/webrtc/modules/audio_coding/main/acm2/codec_owner.cc |
+++ b/webrtc/modules/audio_coding/main/acm2/codec_owner.cc |
@@ -15,65 +15,31 @@ |
#include "webrtc/engine_configurations.h" |
#include "webrtc/modules/audio_coding/codecs/cng/include/audio_encoder_cng.h" |
#include "webrtc/modules/audio_coding/codecs/g711/include/audio_encoder_pcm.h" |
+#ifdef WEBRTC_CODEC_G722 |
#include "webrtc/modules/audio_coding/codecs/g722/include/audio_encoder_g722.h" |
+#endif |
+#ifdef WEBRTC_CODEC_ILBC |
#include "webrtc/modules/audio_coding/codecs/ilbc/interface/audio_encoder_ilbc.h" |
+#endif |
+#ifdef WEBRTC_CODEC_ISACFX |
#include "webrtc/modules/audio_coding/codecs/isac/fix/interface/audio_decoder_isacfix.h" |
#include "webrtc/modules/audio_coding/codecs/isac/fix/interface/audio_encoder_isacfix.h" |
+#endif |
+#ifdef WEBRTC_CODEC_ISAC |
#include "webrtc/modules/audio_coding/codecs/isac/main/interface/audio_decoder_isac.h" |
#include "webrtc/modules/audio_coding/codecs/isac/main/interface/audio_encoder_isac.h" |
+#endif |
+#ifdef WEBRTC_CODEC_OPUS |
#include "webrtc/modules/audio_coding/codecs/opus/interface/audio_encoder_opus.h" |
+#endif |
#include "webrtc/modules/audio_coding/codecs/pcm16b/include/audio_encoder_pcm16b.h" |
+#ifdef WEBRTC_CODEC_RED |
#include "webrtc/modules/audio_coding/codecs/red/audio_encoder_copy_red.h" |
+#endif |
namespace webrtc { |
namespace acm2 { |
-namespace { |
-bool IsIsac(const CodecInst& codec) { |
- return |
-#if (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)) |
- !STR_CASE_CMP(codec.plname, "isac") || |
-#endif |
- false; |
-} |
- |
-bool IsOpus(const CodecInst& codec) { |
- return |
-#ifdef WEBRTC_CODEC_OPUS |
- !STR_CASE_CMP(codec.plname, "opus") || |
-#endif |
- false; |
-} |
- |
-bool IsPcmU(const CodecInst& codec) { |
- return !STR_CASE_CMP(codec.plname, "pcmu"); |
-} |
- |
-bool IsPcmA(const CodecInst& codec) { |
- return !STR_CASE_CMP(codec.plname, "pcma"); |
-} |
- |
-bool IsPcm16B(const CodecInst& codec) { |
- return !STR_CASE_CMP(codec.plname, "l16"); |
-} |
- |
-bool IsIlbc(const CodecInst& codec) { |
- return |
-#ifdef WEBRTC_CODEC_ILBC |
- !STR_CASE_CMP(codec.plname, "ilbc") || |
-#endif |
- false; |
-} |
- |
-bool IsG722(const CodecInst& codec) { |
- return |
-#ifdef WEBRTC_CODEC_G722 |
- !STR_CASE_CMP(codec.plname, "g722") || |
-#endif |
- false; |
-} |
-} // namespace |
- |
CodecOwner::CodecOwner() : external_speech_encoder_(nullptr) { |
} |
@@ -93,57 +59,56 @@ rtc::scoped_ptr<AudioDecoder> CreateIsacDecoder( |
#endif |
} |
-rtc::scoped_ptr<AudioEncoder> CreateIsacEncoder( |
- const CodecInst& speech_inst, |
- LockedIsacBandwidthInfo* bwinfo) { |
-#if defined(WEBRTC_CODEC_ISACFX) |
- return rtc_make_scoped_ptr(new AudioEncoderIsacFix(speech_inst, bwinfo)); |
-#elif defined(WEBRTC_CODEC_ISAC) |
- return rtc_make_scoped_ptr(new AudioEncoderIsac(speech_inst, bwinfo)); |
-#else |
- FATAL() << "iSAC is not supported."; |
- return rtc::scoped_ptr<AudioEncoderMutable>(); |
-#endif |
-} |
- |
// Returns a new speech encoder, or null on error. |
// TODO(kwiberg): Don't handle errors here (bug 5033) |
rtc::scoped_ptr<AudioEncoder> CreateSpeechEncoder( |
const CodecInst& speech_inst, |
LockedIsacBandwidthInfo* bwinfo) { |
- if (IsIsac(speech_inst)) { |
- return CreateIsacEncoder(speech_inst, bwinfo); |
- } else if (IsOpus(speech_inst)) { |
+#if defined(WEBRTC_CODEC_ISACFX) |
+ if (STR_CASE_CMP(speech_inst.plname, "isac") == 0) |
+ return rtc_make_scoped_ptr(new AudioEncoderIsacFix(speech_inst, bwinfo)); |
+#endif |
+#if defined(WEBRTC_CODEC_ISAC) |
+ if (STR_CASE_CMP(speech_inst.plname, "isac") == 0) |
+ return rtc_make_scoped_ptr(new AudioEncoderIsac(speech_inst, bwinfo)); |
+#endif |
+#ifdef WEBRTC_CODEC_OPUS |
+ if (STR_CASE_CMP(speech_inst.plname, "opus") == 0) |
return rtc_make_scoped_ptr(new AudioEncoderOpus(speech_inst)); |
- } else if (IsPcmU(speech_inst)) { |
+#endif |
+ if (STR_CASE_CMP(speech_inst.plname, "pcmu") == 0) |
return rtc_make_scoped_ptr(new AudioEncoderPcmU(speech_inst)); |
- } else if (IsPcmA(speech_inst)) { |
+ if (STR_CASE_CMP(speech_inst.plname, "pcma") == 0) |
return rtc_make_scoped_ptr(new AudioEncoderPcmA(speech_inst)); |
- } else if (IsPcm16B(speech_inst)) { |
+ if (STR_CASE_CMP(speech_inst.plname, "l16") == 0) |
return rtc_make_scoped_ptr(new AudioEncoderPcm16B(speech_inst)); |
- } else if (IsIlbc(speech_inst)) { |
+#ifdef WEBRTC_CODEC_ILBC |
+ if (STR_CASE_CMP(speech_inst.plname, "ilbc") == 0) |
return rtc_make_scoped_ptr(new AudioEncoderIlbc(speech_inst)); |
- } else if (IsG722(speech_inst)) { |
+#endif |
+#ifdef WEBRTC_CODEC_G722 |
+ if (STR_CASE_CMP(speech_inst.plname, "g722") == 0) |
return rtc_make_scoped_ptr(new AudioEncoderG722(speech_inst)); |
- } else { |
- LOG_F(LS_ERROR) << "Could not create encoder of type " |
- << speech_inst.plname; |
- return rtc::scoped_ptr<AudioEncoder>(); |
- } |
+#endif |
+ LOG_F(LS_ERROR) << "Could not create encoder of type " << speech_inst.plname; |
+ return rtc::scoped_ptr<AudioEncoder>(); |
} |
AudioEncoder* CreateRedEncoder(int red_payload_type, |
AudioEncoder* encoder, |
rtc::scoped_ptr<AudioEncoder>* red_encoder) { |
- if (red_payload_type == -1) { |
- red_encoder->reset(); |
- return encoder; |
+#ifdef WEBRTC_CODEC_RED |
+ if (red_payload_type != -1) { |
+ AudioEncoderCopyRed::Config config; |
+ config.payload_type = red_payload_type; |
+ config.speech_encoder = encoder; |
+ red_encoder->reset(new AudioEncoderCopyRed(config)); |
+ return red_encoder->get(); |
} |
- AudioEncoderCopyRed::Config config; |
- config.payload_type = red_payload_type; |
- config.speech_encoder = encoder; |
- red_encoder->reset(new AudioEncoderCopyRed(config)); |
- return red_encoder->get(); |
+#endif |
+ |
+ red_encoder->reset(); |
+ return encoder; |
} |
void CreateCngEncoder(int cng_payload_type, |