diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn index 8c5fb00760..43b1d9bab8 100644 --- a/modules/audio_coding/BUILD.gn +++ b/modules/audio_coding/BUILD.gn @@ -370,15 +370,13 @@ rtc_source_set("ilbc_c") { ] } -rtc_static_library("isac_common") { +rtc_source_set("isac_common") { poisonous = [ "audio_codecs" ] sources = [ "codecs/isac/audio_decoder_isac_t.h", "codecs/isac/audio_decoder_isac_t_impl.h", "codecs/isac/audio_encoder_isac_t.h", "codecs/isac/audio_encoder_isac_t_impl.h", - "codecs/isac/locked_bandwidth_info.cc", - "codecs/isac/locked_bandwidth_info.h", ] deps = [ ":isac_bwinfo", diff --git a/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h b/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h index 1e6560f5f7..9af70543e1 100644 --- a/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h +++ b/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h @@ -16,7 +16,6 @@ #include "absl/types/optional.h" #include "api/audio_codecs/audio_decoder.h" #include "api/scoped_refptr.h" -#include "modules/audio_coding/codecs/isac/locked_bandwidth_info.h" #include "rtc_base/constructor_magic.h" namespace webrtc { @@ -26,7 +25,6 @@ class AudioDecoderIsacT final : public AudioDecoder { public: struct Config { bool IsOk() const; - rtc::scoped_refptr bwinfo; int sample_rate_hz = 16000; }; explicit AudioDecoderIsacT(const Config& config); @@ -52,7 +50,6 @@ class AudioDecoderIsacT final : public AudioDecoder { private: typename T::instance_type* isac_state_; int sample_rate_hz_; - rtc::scoped_refptr bwinfo_; RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderIsacT); }; diff --git a/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h b/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h index 0d65517fc1..90c61b12eb 100644 --- a/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h +++ b/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h @@ -22,16 +22,11 @@ bool AudioDecoderIsacT::Config::IsOk() const { template AudioDecoderIsacT::AudioDecoderIsacT(const Config& config) - : sample_rate_hz_(config.sample_rate_hz), bwinfo_(config.bwinfo) { + : sample_rate_hz_(config.sample_rate_hz) { RTC_CHECK(config.IsOk()) << "Unsupported sample rate " << config.sample_rate_hz; RTC_CHECK_EQ(0, T::Create(&isac_state_)); T::DecoderInit(isac_state_); - if (bwinfo_) { - IsacBandwidthInfo bi; - T::GetBandwidthInfo(isac_state_, &bi); - bwinfo_->Set(bi); - } RTC_CHECK_EQ(0, T::SetDecSampRate(isac_state_, sample_rate_hz_)); } @@ -78,11 +73,6 @@ int AudioDecoderIsacT::IncomingPacket(const uint8_t* payload, int ret = T::UpdateBwEstimate(isac_state_, payload, payload_len, rtp_sequence_number, rtp_timestamp, arrival_timestamp); - if (bwinfo_) { - IsacBandwidthInfo bwinfo; - T::GetBandwidthInfo(isac_state_, &bwinfo); - bwinfo_->Set(bwinfo); - } return ret; } diff --git a/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h b/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h index c6ef7958e2..f9a4c97b83 100644 --- a/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h +++ b/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h @@ -15,7 +15,6 @@ #include "api/audio_codecs/audio_encoder.h" #include "api/scoped_refptr.h" -#include "modules/audio_coding/codecs/isac/locked_bandwidth_info.h" #include "rtc_base/constructor_magic.h" namespace webrtc { @@ -30,8 +29,6 @@ class AudioEncoderIsacT final : public AudioEncoder { struct Config { bool IsOk() const; - rtc::scoped_refptr bwinfo; - int payload_type = 103; int sample_rate_hz = 16000; int frame_size_ms = 30; @@ -39,14 +36,6 @@ class AudioEncoderIsacT final : public AudioEncoder { // rate, in bits/s. int max_payload_size_bytes = -1; int max_bit_rate = -1; - - // If true, the encoder will dynamically adjust frame size and bit rate; - // the configured values are then merely the starting point. - bool adaptive_mode = false; - - // In adaptive mode, prevent adaptive changes to the frame size. (Not used - // in nonadaptive mode.) - bool enforce_frame_size = false; }; explicit AudioEncoderIsacT(const Config& config); @@ -74,7 +63,6 @@ class AudioEncoderIsacT final : public AudioEncoder { Config config_; typename T::instance_type* isac_state_ = nullptr; - rtc::scoped_refptr bwinfo_; // Have we accepted input but not yet emitted it in a packet? bool packet_in_progress_ = false; diff --git a/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h b/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h index 34481394b9..7c0b1a542d 100644 --- a/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h +++ b/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h @@ -21,8 +21,7 @@ bool AudioEncoderIsacT::Config::IsOk() const { return false; if (max_payload_size_bytes < 120 && max_payload_size_bytes != -1) return false; - if (adaptive_mode && !bwinfo) - return false; + switch (sample_rate_hz) { case 16000: if (max_bit_rate > 53400) @@ -78,8 +77,6 @@ size_t AudioEncoderIsacT::Max10MsFramesInAPacket() const { template int AudioEncoderIsacT::GetTargetBitrate() const { - if (config_.adaptive_mode) - return -1; return config_.bit_rate == 0 ? kDefaultBitRate : config_.bit_rate; } @@ -93,11 +90,6 @@ AudioEncoder::EncodedInfo AudioEncoderIsacT::EncodeImpl( packet_in_progress_ = true; packet_timestamp_ = rtp_timestamp; } - if (bwinfo_) { - IsacBandwidthInfo bwinfo = bwinfo_->Get(); - T::SetBandwidthInfo(isac_state_, &bwinfo); - } - size_t encoded_bytes = encoded->AppendData( kSufficientEncodeBufferSizeBytes, [&](rtc::ArrayView encoded) { int r = T::Encode(isac_state_, audio.data(), encoded.data()); @@ -131,19 +123,14 @@ template void AudioEncoderIsacT::RecreateEncoderInstance(const Config& config) { RTC_CHECK(config.IsOk()); packet_in_progress_ = false; - bwinfo_ = config.bwinfo; if (isac_state_) RTC_CHECK_EQ(0, T::Free(isac_state_)); RTC_CHECK_EQ(0, T::Create(&isac_state_)); - RTC_CHECK_EQ(0, T::EncoderInit(isac_state_, config.adaptive_mode ? 0 : 1)); + RTC_CHECK_EQ(0, T::EncoderInit(isac_state_, 1)); RTC_CHECK_EQ(0, T::SetEncSampRate(isac_state_, config.sample_rate_hz)); const int bit_rate = config.bit_rate == 0 ? kDefaultBitRate : config.bit_rate; - if (config.adaptive_mode) { - RTC_CHECK_EQ(0, T::ControlBwe(isac_state_, bit_rate, config.frame_size_ms, - config.enforce_frame_size)); - } else { - RTC_CHECK_EQ(0, T::Control(isac_state_, bit_rate, config.frame_size_ms)); - } + RTC_CHECK_EQ(0, T::Control(isac_state_, bit_rate, config.frame_size_ms)); + if (config.max_payload_size_bytes != -1) RTC_CHECK_EQ( 0, T::SetMaxPayloadSize(isac_state_, config.max_payload_size_bytes)); diff --git a/modules/audio_coding/codecs/isac/locked_bandwidth_info.cc b/modules/audio_coding/codecs/isac/locked_bandwidth_info.cc deleted file mode 100644 index 80d10abf7f..0000000000 --- a/modules/audio_coding/codecs/isac/locked_bandwidth_info.cc +++ /dev/null @@ -1,21 +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. - */ - -#include "modules/audio_coding/codecs/isac/locked_bandwidth_info.h" - -namespace webrtc { - -LockedIsacBandwidthInfo::LockedIsacBandwidthInfo() : ref_count_(0) { - bwinfo_.in_use = 0; -} - -LockedIsacBandwidthInfo::~LockedIsacBandwidthInfo() = default; - -} // namespace webrtc diff --git a/modules/audio_coding/codecs/isac/locked_bandwidth_info.h b/modules/audio_coding/codecs/isac/locked_bandwidth_info.h deleted file mode 100644 index 0b1bc7d223..0000000000 --- a/modules/audio_coding/codecs/isac/locked_bandwidth_info.h +++ /dev/null @@ -1,56 +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 MODULES_AUDIO_CODING_CODECS_ISAC_LOCKED_BANDWIDTH_INFO_H_ -#define MODULES_AUDIO_CODING_CODECS_ISAC_LOCKED_BANDWIDTH_INFO_H_ - -#include "modules/audio_coding/codecs/isac/bandwidth_info.h" -#include "rtc_base/atomic_ops.h" -#include "rtc_base/critical_section.h" -#include "rtc_base/thread_annotations.h" - -namespace webrtc { - -// An IsacBandwidthInfo that's safe to access from multiple threads because -// it's protected by a mutex. -class LockedIsacBandwidthInfo final { - public: - LockedIsacBandwidthInfo(); - ~LockedIsacBandwidthInfo(); - - IsacBandwidthInfo Get() const { - rtc::CritScope lock(&lock_); - return bwinfo_; - } - - void Set(const IsacBandwidthInfo& bwinfo) { - rtc::CritScope lock(&lock_); - bwinfo_ = bwinfo; - } - - int AddRef() const { return rtc::AtomicOps::Increment(&ref_count_); } - - int Release() const { - const int count = rtc::AtomicOps::Decrement(&ref_count_); - if (count == 0) { - delete this; - } - return count; - } - - private: - mutable volatile int ref_count_; - rtc::CriticalSection lock_; - IsacBandwidthInfo bwinfo_ RTC_GUARDED_BY(lock_); -}; - -} // namespace webrtc - -#endif // MODULES_AUDIO_CODING_CODECS_ISAC_LOCKED_BANDWIDTH_INFO_H_ diff --git a/modules/audio_coding/neteq/audio_decoder_unittest.cc b/modules/audio_coding/neteq/audio_decoder_unittest.cc index e58b08d038..07886019b2 100644 --- a/modules/audio_coding/neteq/audio_decoder_unittest.cc +++ b/modules/audio_coding/neteq/audio_decoder_unittest.cc @@ -353,7 +353,6 @@ class AudioDecoderIsacFloatTest : public AudioDecoderTest { AudioEncoderIsacFloatImpl::Config config; config.payload_type = payload_type_; config.sample_rate_hz = codec_input_rate_hz_; - config.adaptive_mode = false; config.frame_size_ms = 1000 * static_cast(frame_size_) / codec_input_rate_hz_; audio_encoder_.reset(new AudioEncoderIsacFloatImpl(config)); @@ -373,7 +372,6 @@ class AudioDecoderIsacSwbTest : public AudioDecoderTest { AudioEncoderIsacFloatImpl::Config config; config.payload_type = payload_type_; config.sample_rate_hz = codec_input_rate_hz_; - config.adaptive_mode = false; config.frame_size_ms = 1000 * static_cast(frame_size_) / codec_input_rate_hz_; audio_encoder_.reset(new AudioEncoderIsacFloatImpl(config)); @@ -393,7 +391,6 @@ class AudioDecoderIsacFixTest : public AudioDecoderTest { AudioEncoderIsacFixImpl::Config config; config.payload_type = payload_type_; config.sample_rate_hz = codec_input_rate_hz_; - config.adaptive_mode = false; config.frame_size_ms = 1000 * static_cast(frame_size_) / codec_input_rate_hz_; audio_encoder_.reset(new AudioEncoderIsacFixImpl(config));