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:
parent
d840c8fb5d
commit
47a03e8743
@ -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;
|
||||
|
||||
@ -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_;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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/");
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user