Better handle target audio bitrate allocation.
Do not update target audio bitrate if WebRTC-Audio-SendSideBwe-For-Video is enabled but other side does not support TWCC
Bug: webrtc:8243
Change-Id: I6c3c4f223dc5168d726996324717d7ba9ec96e6c
Reviewed-on: https://webrtc-review.googlesource.com/88440
Commit-Queue: Alex Narest <alexnarest@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23963}
diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc
index 9fdf5f6..de1be2c 100644
--- a/audio/audio_send_stream.cc
+++ b/audio/audio_send_stream.cc
@@ -525,9 +525,17 @@
<< rtc::ToString(spec.format);
return false;
}
+
+ // If other side does not support audio TWCC and WebRTC-Audio-ABWENoTWCC is
+ // not enabled, do not update target audio bitrate if we are in
+ // WebRTC-Audio-SendSideBwe-For-Video experiment
+ const bool do_not_update_target_bitrate =
+ !webrtc::field_trial::IsEnabled("WebRTC-Audio-ABWENoTWCC") &&
+ webrtc::field_trial::IsEnabled("WebRTC-Audio-SendSideBwe-For-Video") &&
+ !FindExtensionIds(new_config.rtp.extensions).transport_sequence_number;
// If a bitrate has been specified for the codec, use it over the
// codec's default.
- if (spec.target_bitrate_bps) {
+ if (!do_not_update_target_bitrate && spec.target_bitrate_bps) {
encoder->OnReceivedTargetAudioBitrate(*spec.target_bitrate_bps);
}
@@ -590,11 +598,19 @@
return SetupSendCodec(stream, new_config);
}
+ // If other side does not support audio TWCC and WebRTC-Audio-ABWENoTWCC is
+ // not enabled, do not update target audio bitrate if we are in
+ // WebRTC-Audio-SendSideBwe-For-Video experiment
+ const bool do_not_update_target_bitrate =
+ !webrtc::field_trial::IsEnabled("WebRTC-Audio-ABWENoTWCC") &&
+ webrtc::field_trial::IsEnabled("WebRTC-Audio-SendSideBwe-For-Video") &&
+ !FindExtensionIds(new_config.rtp.extensions).transport_sequence_number;
+
const absl::optional<int>& new_target_bitrate_bps =
new_config.send_codec_spec->target_bitrate_bps;
// If a bitrate has been specified for the codec, use it over the
// codec's default.
- if (new_target_bitrate_bps &&
+ if (!do_not_update_target_bitrate && new_target_bitrate_bps &&
new_target_bitrate_bps !=
old_config.send_codec_spec->target_bitrate_bps) {
CallEncoder(stream->channel_proxy_, [&](AudioEncoder* encoder) {