Default enable sending transport sequence numbers on audio packets.

This enables send side bandwidth estimation for audio and removes field
trial "WebRTC-Audio-SendSideBwe" which this was controlled through.

Transport-cc extension still needs to be negotiated.

Bug: webrtc:12222
Change-Id: Ie2268fad13703eeb0f0d38fcf484baaa29715b7c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/194142
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Jakob Ivarsson <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32681}
This commit is contained in:
Jakob Ivarsson 2020-11-23 15:05:44 +01:00 committed by Commit Bot
parent d840c8fb5d
commit 47a03e8743
10 changed files with 8 additions and 57 deletions

View File

@ -143,7 +143,6 @@ AudioSendStream::AudioSendStream(
std::unique_ptr<voe::ChannelSendInterface> channel_send)
: clock_(clock),
worker_queue_(rtp_transport->GetWorkerQueue()),
audio_send_side_bwe_(field_trial::IsEnabled("WebRTC-Audio-SendSideBwe")),
allocate_audio_without_feedback_(
field_trial::IsEnabled("WebRTC-Audio-ABWENoTWCC")),
enable_audio_alr_probing_(
@ -289,7 +288,7 @@ void AudioSendStream::ConfigureStream(
RtcpBandwidthObserver* bandwidth_observer = nullptr;
if (audio_send_side_bwe_ && !allocate_audio_without_feedback_ &&
if (!allocate_audio_without_feedback_ &&
new_ids.transport_sequence_number != 0) {
rtp_rtcp_module_->RegisterRtpHeaderExtension(
TransportSequenceNumber::kUri, new_ids.transport_sequence_number);
@ -809,8 +808,7 @@ void AudioSendStream::ReconfigureBitrateObserver(
if (config_.min_bitrate_bps == new_config.min_bitrate_bps &&
config_.max_bitrate_bps == new_config.max_bitrate_bps &&
config_.bitrate_priority == new_config.bitrate_priority &&
(TransportSeqNumId(config_) == TransportSeqNumId(new_config) ||
!audio_send_side_bwe_) &&
TransportSeqNumId(config_) == TransportSeqNumId(new_config) &&
config_.audio_network_adaptor_config ==
new_config.audio_network_adaptor_config) {
return;

View File

@ -155,7 +155,6 @@ class AudioSendStream final : public webrtc::AudioSendStream,
rtc::RaceChecker audio_capture_race_checker_;
rtc::TaskQueue* worker_queue_;
const bool audio_send_side_bwe_;
const bool allocate_audio_without_feedback_;
const bool force_no_audio_feedback_ = allocate_audio_without_feedback_;
const bool enable_audio_alr_probing_;

View File

@ -188,17 +188,10 @@ class TransportWideSequenceNumberObserver : public AudioSendTest {
};
TEST_F(AudioSendStreamCallTest, SendsTransportWideSequenceNumbersInFieldTrial) {
ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
TransportWideSequenceNumberObserver test(/*expect_sequence_number=*/true);
RunBaseTest(&test);
}
TEST_F(AudioSendStreamCallTest,
DoesNotSendTransportWideSequenceNumbersPerDefault) {
TransportWideSequenceNumberObserver test(/*expect_sequence_number=*/false);
RunBaseTest(&test);
}
TEST_F(AudioSendStreamCallTest, SendDtmf) {
static const uint8_t kDtmfPayloadType = 120;
static const int kDtmfPayloadFrequency = 8000;

View File

@ -421,7 +421,6 @@ TEST(AudioSendStreamTest, SetMuted) {
}
TEST(AudioSendStreamTest, AudioBweCorrectObjectsOnChannelProxy) {
ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
for (bool use_null_audio_processing : {false, true}) {
ConfigHelper helper(true, true, use_null_audio_processing);
auto send_stream = helper.CreateAudioSendStream();
@ -523,14 +522,12 @@ TEST(AudioSendStreamTest, GetStatsAudioLevel) {
TEST(AudioSendStreamTest, SendCodecAppliesAudioNetworkAdaptor) {
for (bool use_null_audio_processing : {false, true}) {
ConfigHelper helper(false, true, use_null_audio_processing);
ConfigHelper helper(true, true, use_null_audio_processing);
helper.config().send_codec_spec =
AudioSendStream::Config::SendCodecSpec(0, kOpusFormat);
const std::string kAnaConfigString = "abcde";
const std::string kAnaReconfigString = "12345";
helper.config().rtp.extensions.push_back(RtpExtension(
RtpExtension::kTransportSequenceNumberUri, kTransportSequenceNumberId));
helper.config().audio_network_adaptor_config = kAnaConfigString;
EXPECT_CALL(helper.mock_encoder_factory(), MakeAudioEncoderMock(_, _, _, _))
@ -559,12 +556,10 @@ TEST(AudioSendStreamTest, SendCodecAppliesAudioNetworkAdaptor) {
TEST(AudioSendStreamTest, AudioNetworkAdaptorReceivesOverhead) {
for (bool use_null_audio_processing : {false, true}) {
ConfigHelper helper(false, true, use_null_audio_processing);
ConfigHelper helper(true, true, use_null_audio_processing);
helper.config().send_codec_spec =
AudioSendStream::Config::SendCodecSpec(0, kOpusFormat);
const std::string kAnaConfigString = "abcde";
helper.config().rtp.extensions.push_back(RtpExtension(
RtpExtension::kTransportSequenceNumberUri, kTransportSequenceNumberId));
EXPECT_CALL(helper.mock_encoder_factory(), MakeAudioEncoderMock(_, _, _, _))
.WillOnce(Invoke(
@ -647,7 +642,6 @@ TEST(AudioSendStreamTest, DoesNotPassHigherBitrateThanMaxBitrate) {
}
TEST(AudioSendStreamTest, SSBweTargetInRangeRespected) {
ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
for (bool use_null_audio_processing : {false, true}) {
ConfigHelper helper(true, true, use_null_audio_processing);
auto send_stream = helper.CreateAudioSendStream();
@ -666,7 +660,6 @@ TEST(AudioSendStreamTest, SSBweTargetInRangeRespected) {
TEST(AudioSendStreamTest, SSBweFieldTrialMinRespected) {
ScopedFieldTrials field_trials(
"WebRTC-Audio-SendSideBwe/Enabled/"
"WebRTC-Audio-Allocation/min:6kbps,max:64kbps/");
for (bool use_null_audio_processing : {false, true}) {
ConfigHelper helper(true, true, use_null_audio_processing);
@ -684,7 +677,6 @@ TEST(AudioSendStreamTest, SSBweFieldTrialMinRespected) {
TEST(AudioSendStreamTest, SSBweFieldTrialMaxRespected) {
ScopedFieldTrials field_trials(
"WebRTC-Audio-SendSideBwe/Enabled/"
"WebRTC-Audio-Allocation/min:6kbps,max:64kbps/");
for (bool use_null_audio_processing : {false, true}) {
ConfigHelper helper(true, true, use_null_audio_processing);
@ -702,8 +694,6 @@ TEST(AudioSendStreamTest, SSBweFieldTrialMaxRespected) {
TEST(AudioSendStreamTest, SSBweWithOverhead) {
ScopedFieldTrials field_trials(
"WebRTC-Audio-SendSideBwe/Enabled/"
"WebRTC-SendSideBwe-WithOverhead/Enabled/"
"WebRTC-Audio-LegacyOverhead/Disabled/");
for (bool use_null_audio_processing : {false, true}) {
ConfigHelper helper(true, true, use_null_audio_processing);
@ -725,8 +715,6 @@ TEST(AudioSendStreamTest, SSBweWithOverhead) {
TEST(AudioSendStreamTest, SSBweWithOverheadMinRespected) {
ScopedFieldTrials field_trials(
"WebRTC-Audio-SendSideBwe/Enabled/"
"WebRTC-SendSideBwe-WithOverhead/Enabled/"
"WebRTC-Audio-LegacyOverhead/Disabled/"
"WebRTC-Audio-Allocation/min:6kbps,max:64kbps/");
for (bool use_null_audio_processing : {false, true}) {
@ -747,8 +735,6 @@ TEST(AudioSendStreamTest, SSBweWithOverheadMinRespected) {
TEST(AudioSendStreamTest, SSBweWithOverheadMaxRespected) {
ScopedFieldTrials field_trials(
"WebRTC-Audio-SendSideBwe/Enabled/"
"WebRTC-SendSideBwe-WithOverhead/Enabled/"
"WebRTC-Audio-LegacyOverhead/Disabled/"
"WebRTC-Audio-Allocation/min:6kbps,max:64kbps/");
for (bool use_null_audio_processing : {false, true}) {
@ -808,7 +794,6 @@ TEST(AudioSendStreamTest, DontRecreateEncoder) {
}
TEST(AudioSendStreamTest, ReconfigureTransportCcResetsFirst) {
ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
for (bool use_null_audio_processing : {false, true}) {
ConfigHelper helper(false, true, use_null_audio_processing);
auto send_stream = helper.CreateAudioSendStream();

View File

@ -160,9 +160,6 @@ using AudioBweIntegrationTest = CallTest;
// TODO(tschumim): This test is flaky when run on android and mac. Re-enable the
// test for when the issue is fixed.
TEST_F(AudioBweIntegrationTest, DISABLED_NoBandwidthDropAfterDtx) {
webrtc::test::ScopedFieldTrials override_field_trials(
"WebRTC-Audio-SendSideBwe/Enabled/"
"WebRTC-SendSideBwe-WithOverhead/Enabled/");
NoBandwidthDropAfterDtx test;
RunBaseTest(&test);
}

View File

@ -663,7 +663,6 @@ TEST_F(RampUpTest, DISABLED_UpDownUpTransportSequenceNumberPacketLoss) {
UpDownUpAudioVideoTransportSequenceNumberRtx
#endif
TEST_F(RampUpTest, MAYBE_UpDownUpAudioVideoTransportSequenceNumberRtx) {
test::ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
std::vector<int> loss_rates = {0, 0, 0, 0};
RampUpDownUpTester test(3, 1, 0, kStartBitrateBps,
RtpExtension::kTransportSequenceNumberUri, true,
@ -672,7 +671,6 @@ TEST_F(RampUpTest, MAYBE_UpDownUpAudioVideoTransportSequenceNumberRtx) {
}
TEST_F(RampUpTest, UpDownUpAudioTransportSequenceNumberRtx) {
test::ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
std::vector<int> loss_rates = {0, 0, 0, 0};
RampUpDownUpTester test(0, 1, 0, kStartBitrateBps,
RtpExtension::kTransportSequenceNumberUri, true,

View File

@ -1344,8 +1344,6 @@ TEST_P(WebRtcVoiceEngineTestFake, SetAndGetRtpSendParameters) {
// Test that max_bitrate_bps in send stream config gets updated correctly when
// SetRtpSendParameters is called.
TEST_P(WebRtcVoiceEngineTestFake, SetRtpSendParameterUpdatesMaxBitrate) {
webrtc::test::ScopedFieldTrials override_field_trials(
"WebRTC-Audio-SendSideBwe/Enabled/");
EXPECT_TRUE(SetupSendStream());
cricket::AudioSendParameters send_parameters;
send_parameters.codecs.push_back(kOpusCodec);
@ -2127,17 +2125,7 @@ TEST_P(WebRtcVoiceEngineTestFake, SetSendCodecsCaseInsensitive) {
EXPECT_TRUE(channel_->CanInsertDtmf());
}
class WebRtcVoiceEngineWithSendSideBweTest : public WebRtcVoiceEngineTestFake {
public:
WebRtcVoiceEngineWithSendSideBweTest()
: WebRtcVoiceEngineTestFake("WebRTC-Audio-SendSideBwe/Enabled/") {}
};
INSTANTIATE_TEST_SUITE_P(UnusedParameter,
WebRtcVoiceEngineWithSendSideBweTest,
::testing::Values(true));
TEST_P(WebRtcVoiceEngineWithSendSideBweTest,
TEST_P(WebRtcVoiceEngineTestFake,
SupportsTransportSequenceNumberHeaderExtension) {
const std::vector<webrtc::RtpExtension> header_extensions =
GetDefaultEnabledRtpHeaderExtensions(*engine_);
@ -2530,9 +2518,7 @@ class WebRtcVoiceEngineWithSendSideBweWithOverheadTest
public:
WebRtcVoiceEngineWithSendSideBweWithOverheadTest()
: WebRtcVoiceEngineTestFake(
"WebRTC-Audio-SendSideBwe/Enabled/WebRTC-Audio-Allocation/"
"min:6000bps,max:32000bps/WebRTC-SendSideBwe-WithOverhead/"
"Enabled/") {}
"WebRTC-Audio-Allocation/min:6000bps,max:32000bps/") {}
};
// Test that we can set the outgoing SSRC properly.

View File

@ -32,10 +32,7 @@ TEST(GoogCcPeerScenarioTest, MAYBE_NoBweChangeFromVideoUnmute) {
// packets sizes. This will create a change in propagation time which might be
// detected as an overuse. Using separate overuse detectors for audio and
// video avoids the issue.
std::string audio_twcc_trials(
"WebRTC-Audio-SendSideBwe/Enabled/" //
"WebRTC-SendSideBwe-WithOverhead/Enabled/" //
"WebRTC-Audio-AlrProbing/Disabled/");
std::string audio_twcc_trials("WebRTC-Audio-AlrProbing/Disabled/");
std::string separate_audio_video(
"WebRTC-Bwe-SeparateAudioPackets/"
"enabled:true,packet_threshold:15,time_threshold:1000ms/");

View File

@ -146,7 +146,7 @@ TEST(ScenarioTest,
RetransmitsVideoPacketsInAudioAndVideoCallWithSendSideBweAndLoss) {
// Make sure audio packets are included in transport feedback.
test::ScopedFieldTrials override_field_trials(
"WebRTC-Audio-SendSideBwe/Enabled/WebRTC-Audio-ABWENoTWCC/Disabled/");
"WebRTC-Audio-ABWENoTWCC/Disabled/");
Scenario s;
CallClientConfig call_client_config;

View File

@ -327,7 +327,6 @@ TEST_F(TransportFeedbackEndToEndTest, VideoTransportFeedbackNotConfigured) {
}
TEST_F(TransportFeedbackEndToEndTest, AudioReceivesTransportFeedback) {
test::ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
TransportFeedbackTester test(true, 0, 1);
RunBaseTest(&test);
}
@ -435,7 +434,6 @@ TEST_F(TransportFeedbackEndToEndTest,
}
TEST_F(TransportFeedbackEndToEndTest, TransportSeqNumOnAudioAndVideo) {
test::ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
static constexpr size_t kMinPacketsToWaitFor = 50;
class TransportSequenceNumberTest : public test::EndToEndTest {
public: