Index: webrtc/modules/audio_coding/main/acm2/rent_a_codec.h |
diff --git a/webrtc/modules/audio_coding/main/acm2/rent_a_codec.h b/webrtc/modules/audio_coding/main/acm2/rent_a_codec.h |
deleted file mode 100644 |
index 45d46bb0575b73be7152c9ff03d129e31039b94c..0000000000000000000000000000000000000000 |
--- a/webrtc/modules/audio_coding/main/acm2/rent_a_codec.h |
+++ /dev/null |
@@ -1,249 +0,0 @@ |
-/* |
- * 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_MAIN_ACM2_RENT_A_CODEC_H_ |
-#define WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_RENT_A_CODEC_H_ |
- |
-#include <stddef.h> |
-#include <map> |
- |
-#include "webrtc/base/array_view.h" |
-#include "webrtc/base/constructormagic.h" |
-#include "webrtc/base/optional.h" |
-#include "webrtc/base/scoped_ptr.h" |
-#include "webrtc/modules/audio_coding/codecs/audio_decoder.h" |
-#include "webrtc/modules/audio_coding/codecs/audio_encoder.h" |
-#include "webrtc/modules/audio_coding/main/include/audio_coding_module_typedefs.h" |
-#include "webrtc/typedefs.h" |
- |
-#if defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX) |
-#include "webrtc/modules/audio_coding/codecs/isac/locked_bandwidth_info.h" |
-#else |
-// Dummy implementation, for when we don't have iSAC. |
-namespace webrtc { |
-class LockedIsacBandwidthInfo {}; |
-} |
-#endif |
- |
-namespace webrtc { |
- |
-struct CodecInst; |
- |
-namespace acm2 { |
- |
-class RentACodec { |
- public: |
- enum class CodecId { |
-#if defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX) |
- kISAC, |
-#endif |
-#ifdef WEBRTC_CODEC_ISAC |
- kISACSWB, |
-#endif |
- // Mono |
- kPCM16B, |
- kPCM16Bwb, |
- kPCM16Bswb32kHz, |
- // Stereo |
- kPCM16B_2ch, |
- kPCM16Bwb_2ch, |
- kPCM16Bswb32kHz_2ch, |
- // Mono |
- kPCMU, |
- kPCMA, |
- // Stereo |
- kPCMU_2ch, |
- kPCMA_2ch, |
-#ifdef WEBRTC_CODEC_ILBC |
- kILBC, |
-#endif |
-#ifdef WEBRTC_CODEC_G722 |
- kG722, // Mono |
- kG722_2ch, // Stereo |
-#endif |
-#ifdef WEBRTC_CODEC_OPUS |
- kOpus, // Mono and stereo |
-#endif |
- kCNNB, |
- kCNWB, |
- kCNSWB, |
-#ifdef ENABLE_48000_HZ |
- kCNFB, |
-#endif |
- kAVT, |
-#ifdef WEBRTC_CODEC_RED |
- kRED, |
-#endif |
- kNumCodecs, // Implementation detail. Don't use. |
- |
-// Set unsupported codecs to -1. |
-#if !defined(WEBRTC_CODEC_ISAC) && !defined(WEBRTC_CODEC_ISACFX) |
- kISAC = -1, |
-#endif |
-#ifndef WEBRTC_CODEC_ISAC |
- kISACSWB = -1, |
-#endif |
- // 48 kHz not supported, always set to -1. |
- kPCM16Bswb48kHz = -1, |
-#ifndef WEBRTC_CODEC_ILBC |
- kILBC = -1, |
-#endif |
-#ifndef WEBRTC_CODEC_G722 |
- kG722 = -1, // Mono |
- kG722_2ch = -1, // Stereo |
-#endif |
-#ifndef WEBRTC_CODEC_OPUS |
- kOpus = -1, // Mono and stereo |
-#endif |
-#ifndef WEBRTC_CODEC_RED |
- kRED = -1, |
-#endif |
-#ifndef ENABLE_48000_HZ |
- kCNFB = -1, |
-#endif |
- |
- kNone = -1 |
- }; |
- |
- enum class NetEqDecoder { |
- kDecoderPCMu, |
- kDecoderPCMa, |
- kDecoderPCMu_2ch, |
- kDecoderPCMa_2ch, |
- kDecoderILBC, |
- kDecoderISAC, |
- kDecoderISACswb, |
- kDecoderPCM16B, |
- kDecoderPCM16Bwb, |
- kDecoderPCM16Bswb32kHz, |
- kDecoderPCM16Bswb48kHz, |
- kDecoderPCM16B_2ch, |
- kDecoderPCM16Bwb_2ch, |
- kDecoderPCM16Bswb32kHz_2ch, |
- kDecoderPCM16Bswb48kHz_2ch, |
- kDecoderPCM16B_5ch, |
- kDecoderG722, |
- kDecoderG722_2ch, |
- kDecoderRED, |
- kDecoderAVT, |
- kDecoderCNGnb, |
- kDecoderCNGwb, |
- kDecoderCNGswb32kHz, |
- kDecoderCNGswb48kHz, |
- kDecoderArbitrary, |
- kDecoderOpus, |
- kDecoderOpus_2ch, |
- }; |
- |
- static inline size_t NumberOfCodecs() { |
- return static_cast<size_t>(CodecId::kNumCodecs); |
- } |
- |
- static inline rtc::Optional<int> CodecIndexFromId(CodecId codec_id) { |
- const int i = static_cast<int>(codec_id); |
- return i >= 0 && i < static_cast<int>(NumberOfCodecs()) |
- ? rtc::Optional<int>(i) |
- : rtc::Optional<int>(); |
- } |
- |
- static inline rtc::Optional<CodecId> CodecIdFromIndex(int codec_index) { |
- return static_cast<size_t>(codec_index) < NumberOfCodecs() |
- ? rtc::Optional<RentACodec::CodecId>( |
- static_cast<RentACodec::CodecId>(codec_index)) |
- : rtc::Optional<RentACodec::CodecId>(); |
- } |
- |
- static rtc::Optional<CodecId> CodecIdByParams(const char* payload_name, |
- int sampling_freq_hz, |
- int channels); |
- static rtc::Optional<CodecInst> CodecInstById(CodecId codec_id); |
- static rtc::Optional<CodecId> CodecIdByInst(const CodecInst& codec_inst); |
- static rtc::Optional<CodecInst> CodecInstByParams(const char* payload_name, |
- int sampling_freq_hz, |
- int channels); |
- static bool IsCodecValid(const CodecInst& codec_inst); |
- |
- static inline bool IsPayloadTypeValid(int payload_type) { |
- return payload_type >= 0 && payload_type <= 127; |
- } |
- |
- static rtc::ArrayView<const CodecInst> Database(); |
- |
- static rtc::Optional<bool> IsSupportedNumChannels(CodecId codec_id, |
- int num_channels); |
- |
- static rtc::Optional<NetEqDecoder> NetEqDecoderFromCodecId(CodecId codec_id, |
- int num_channels); |
- |
- // Parse codec_inst and extract payload types. If the given CodecInst was for |
- // the wrong sort of codec, return kSkip; otherwise, if the rate was illegal, |
- // return kBadFreq; otherwise, update the given RTP timestamp rate (Hz) -> |
- // payload type map and return kOk. |
- enum class RegistrationResult { kOk, kSkip, kBadFreq }; |
- static RegistrationResult RegisterCngPayloadType(std::map<int, int>* pt_map, |
- const CodecInst& codec_inst); |
- static RegistrationResult RegisterRedPayloadType(std::map<int, int>* pt_map, |
- const CodecInst& codec_inst); |
- |
- RentACodec(); |
- ~RentACodec(); |
- |
- // Creates and returns an audio encoder built to the given specification. |
- // Returns null in case of error. The returned encoder is live until the next |
- // successful call to this function, or until the Rent-A-Codec is destroyed. |
- AudioEncoder* RentEncoder(const CodecInst& codec_inst); |
- |
- struct StackParameters { |
- StackParameters(); |
- ~StackParameters(); |
- |
- bool use_codec_fec = false; |
- bool use_red = false; |
- bool use_cng = false; |
- ACMVADMode vad_mode = VADNormal; |
- |
- // Maps from RTP timestamp rate (in Hz) to payload type. |
- std::map<int, int> cng_payload_types; |
- std::map<int, int> red_payload_types; |
- }; |
- |
- // Creates and returns an audio encoder stack constructed to the given |
- // specification. If the specification isn't compatible with the encoder, it |
- // will be changed to match (things will be switched off). The returned |
- // encoder is live until the next successful call to this function, or until |
- // the Rent-A-Codec is destroyed. |
- AudioEncoder* RentEncoderStack(AudioEncoder* speech_encoder, |
- StackParameters* param); |
- |
- // Get the last return values of RentEncoder and RentEncoderStack, or null if |
- // they haven't been called. |
- AudioEncoder* GetEncoder() const { return speech_encoder_.get(); } |
- AudioEncoder* GetEncoderStack() const { return encoder_stack_; } |
- |
- // Creates and returns an iSAC decoder, which will remain live until the |
- // Rent-A-Codec is destroyed. Subsequent calls will simply return the same |
- // object. |
- AudioDecoder* RentIsacDecoder(); |
- |
- private: |
- rtc::scoped_ptr<AudioEncoder> speech_encoder_; |
- rtc::scoped_ptr<AudioEncoder> cng_encoder_; |
- rtc::scoped_ptr<AudioEncoder> red_encoder_; |
- rtc::scoped_ptr<AudioDecoder> isac_decoder_; |
- AudioEncoder* encoder_stack_ = nullptr; |
- LockedIsacBandwidthInfo isac_bandwidth_info_; |
- |
- RTC_DISALLOW_COPY_AND_ASSIGN(RentACodec); |
-}; |
- |
-} // namespace acm2 |
-} // namespace webrtc |
- |
-#endif // WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_RENT_A_CODEC_H_ |