| Index: webrtc/modules/audio_coding/acm2/rent_a_codec.cc
|
| diff --git a/webrtc/modules/audio_coding/acm2/rent_a_codec.cc b/webrtc/modules/audio_coding/acm2/rent_a_codec.cc
|
| index 91c5e4d2fc3e2ff84a0590e5579932f670dcc96c..f37b12c181e4036f05fb3e7ad1a53ffdd9b2e35e 100644
|
| --- a/webrtc/modules/audio_coding/acm2/rent_a_codec.cc
|
| +++ b/webrtc/modules/audio_coding/acm2/rent_a_codec.cc
|
| @@ -179,25 +179,28 @@ std::unique_ptr<AudioEncoder> CreateEncoder(const CodecInst& speech_inst,
|
| return std::unique_ptr<AudioEncoder>();
|
| }
|
|
|
| -std::unique_ptr<AudioEncoder> CreateRedEncoder(AudioEncoder* encoder,
|
| - int red_payload_type) {
|
| +std::unique_ptr<AudioEncoder> CreateRedEncoder(
|
| + std::unique_ptr<AudioEncoder> encoder,
|
| + int red_payload_type) {
|
| #ifdef WEBRTC_CODEC_RED
|
| AudioEncoderCopyRed::Config config;
|
| config.payload_type = red_payload_type;
|
| - config.speech_encoder = encoder;
|
| - return std::unique_ptr<AudioEncoder>(new AudioEncoderCopyRed(config));
|
| + config.speech_encoder = std::move(encoder);
|
| + return std::unique_ptr<AudioEncoder>(
|
| + new AudioEncoderCopyRed(std::move(config)));
|
| #else
|
| return std::unique_ptr<AudioEncoder>();
|
| #endif
|
| }
|
|
|
| -std::unique_ptr<AudioEncoder> CreateCngEncoder(AudioEncoder* encoder,
|
| - int payload_type,
|
| - ACMVADMode vad_mode) {
|
| +std::unique_ptr<AudioEncoder> CreateCngEncoder(
|
| + std::unique_ptr<AudioEncoder> encoder,
|
| + int payload_type,
|
| + ACMVADMode vad_mode) {
|
| AudioEncoderCng::Config config;
|
| config.num_channels = encoder->NumChannels();
|
| config.payload_type = payload_type;
|
| - config.speech_encoder = encoder;
|
| + config.speech_encoder = std::move(encoder);
|
| switch (vad_mode) {
|
| case VADNormal:
|
| config.vad_mode = Vad::kVadNormal;
|
| @@ -214,7 +217,7 @@ std::unique_ptr<AudioEncoder> CreateCngEncoder(AudioEncoder* encoder,
|
| default:
|
| FATAL();
|
| }
|
| - return std::unique_ptr<AudioEncoder>(new AudioEncoderCng(config));
|
| + return std::unique_ptr<AudioEncoder>(new AudioEncoderCng(std::move(config)));
|
| }
|
|
|
| std::unique_ptr<AudioDecoder> CreateIsacDecoder(
|
| @@ -234,13 +237,9 @@ std::unique_ptr<AudioDecoder> CreateIsacDecoder(
|
| RentACodec::RentACodec() = default;
|
| RentACodec::~RentACodec() = default;
|
|
|
| -AudioEncoder* RentACodec::RentEncoder(const CodecInst& codec_inst) {
|
| - std::unique_ptr<AudioEncoder> enc =
|
| - CreateEncoder(codec_inst, &isac_bandwidth_info_);
|
| - if (!enc)
|
| - return nullptr;
|
| - speech_encoder_ = std::move(enc);
|
| - return speech_encoder_.get();
|
| +std::unique_ptr<AudioEncoder> RentACodec::RentEncoder(
|
| + const CodecInst& codec_inst) {
|
| + return CreateEncoder(codec_inst, &isac_bandwidth_info_);
|
| }
|
|
|
| RentACodec::StackParameters::StackParameters() {
|
| @@ -253,7 +252,8 @@ RentACodec::StackParameters::StackParameters() {
|
|
|
| RentACodec::StackParameters::~StackParameters() = default;
|
|
|
| -AudioEncoder* RentACodec::RentEncoderStack(StackParameters* param) {
|
| +std::unique_ptr<AudioEncoder> RentACodec::RentEncoderStack(
|
| + StackParameters* param) {
|
| RTC_DCHECK(param->speech_encoder);
|
|
|
| if (param->use_codec_fec) {
|
| @@ -282,19 +282,14 @@ AudioEncoder* RentACodec::RentEncoderStack(StackParameters* param) {
|
| // reset the latter to ensure its buffer is empty.
|
| param->speech_encoder->Reset();
|
| }
|
| - AudioEncoder* encoder_stack = param->speech_encoder;
|
| + std::unique_ptr<AudioEncoder> encoder_stack =
|
| + std::move(param->speech_encoder);
|
| if (param->use_red) {
|
| - red_encoder_ = CreateRedEncoder(encoder_stack, *red_pt);
|
| - if (red_encoder_)
|
| - encoder_stack = red_encoder_.get();
|
| - } else {
|
| - red_encoder_.reset();
|
| + encoder_stack = CreateRedEncoder(std::move(encoder_stack), *red_pt);
|
| }
|
| if (param->use_cng) {
|
| - cng_encoder_ = CreateCngEncoder(encoder_stack, *cng_pt, param->vad_mode);
|
| - encoder_stack = cng_encoder_.get();
|
| - } else {
|
| - cng_encoder_.reset();
|
| + encoder_stack =
|
| + CreateCngEncoder(std::move(encoder_stack), *cng_pt, param->vad_mode);
|
| }
|
| return encoder_stack;
|
| }
|
|
|