Index: modules/audio_coding/audio_network_adaptor/bitrate_controller.cc |
diff --git a/modules/audio_coding/audio_network_adaptor/bitrate_controller.cc b/modules/audio_coding/audio_network_adaptor/bitrate_controller.cc |
index 587c858ece27c6cf16f2931492008c2e802a3827..16c4bc4e556b2b89dadad9bfe65236ad34ea0928 100644 |
--- a/modules/audio_coding/audio_network_adaptor/bitrate_controller.cc |
+++ b/modules/audio_coding/audio_network_adaptor/bitrate_controller.cc |
@@ -19,9 +19,13 @@ namespace webrtc { |
namespace audio_network_adaptor { |
BitrateController::Config::Config(int initial_bitrate_bps, |
- int initial_frame_length_ms) |
+ int initial_frame_length_ms, |
+ int fl_increase_overhead_offset, |
+ int fl_decrease_overhead_offset) |
: initial_bitrate_bps(initial_bitrate_bps), |
- initial_frame_length_ms(initial_frame_length_ms) {} |
+ initial_frame_length_ms(initial_frame_length_ms), |
+ fl_increase_overhead_offset(fl_increase_overhead_offset), |
+ fl_decrease_overhead_offset(fl_decrease_overhead_offset) {} |
BitrateController::Config::~Config() = default; |
@@ -54,9 +58,15 @@ void BitrateController::MakeDecision(AudioEncoderRuntimeConfig* config) { |
webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")); |
if (config->frame_length_ms) |
frame_length_ms_ = *config->frame_length_ms; |
- int overhead_rate_bps = |
- static_cast<int>(*overhead_bytes_per_packet_ * 8 * 1000 / |
- frame_length_ms_); |
+ int offset = config->last_fl_change_increase |
+ ? config_.fl_increase_overhead_offset |
+ : config_.fl_decrease_overhead_offset; |
+ // Check that |
+ // -(*overhead_bytes_per_packet_) <= offset <= (*overhead_bytes_per_packet_) |
+ RTC_DCHECK_GE(*overhead_bytes_per_packet_, -offset); |
+ RTC_DCHECK_LE(offset, *overhead_bytes_per_packet_); |
+ int overhead_rate_bps = static_cast<int>( |
+ (*overhead_bytes_per_packet_ + offset) * 8 * 1000 / frame_length_ms_); |
bitrate_bps_ = std::max(0, *target_audio_bitrate_bps_ - overhead_rate_bps); |
} |
config->bitrate_bps = rtc::Optional<int>(bitrate_bps_); |