| 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
|
| index 4daac6ad7eb6213429c5417be0e4a95c98aa23b1..45715607aae67cd44fdf429196cb112d54973ca7 100644
|
| --- a/webrtc/modules/audio_coding/main/acm2/rent_a_codec.h
|
| +++ b/webrtc/modules/audio_coding/main/acm2/rent_a_codec.h
|
| @@ -17,9 +17,10 @@
|
| #include "webrtc/base/constructormagic.h"
|
| #include "webrtc/base/optional.h"
|
| #include "webrtc/base/scoped_ptr.h"
|
| -#include "webrtc/typedefs.h"
|
| -#include "webrtc/modules/audio_coding/codecs/audio_encoder.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"
|
| @@ -188,14 +189,35 @@ class RentACodec {
|
| // successful call to this function, or until the Rent-A-Codec is destroyed.
|
| AudioEncoder* RentEncoder(const CodecInst& codec_inst);
|
|
|
| + // Creates and returns an audio encoder stack where the given speech encoder
|
| + // is augmented with the specified CNG/VAD and RED encoders. Leave either
|
| + // optional field blank if you don't want the corresponding gizmo in the
|
| + // stack. The returned encoder is live until the next successful call to this
|
| + // function, or until the Rent-A-Codec is destroyed.
|
| + struct CngConfig {
|
| + int cng_payload_type;
|
| + ACMVADMode vad_mode;
|
| + };
|
| + AudioEncoder* RentEncoderStack(AudioEncoder* speech_encoder,
|
| + rtc::Optional<CngConfig> cng_config,
|
| + rtc::Optional<int> red_payload_type);
|
| +
|
| + // 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> encoder_;
|
| + 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);
|
|
|