Always keep abs send time extension.

This makes the WebRTC-KeepAbsSendTimeExtension field trial
always enabled. This means that we no longer avoid sending the
abs-send-time extension if we have negotiated sending of transport
wide sequence numbers.

The field trial WebRTC-FilterAbsSendTimeExtension is introduced to allow
reverting to the previous behavior.

Bug: webrtc:10234
Change-Id: Ifd9761d84dd1fe79af840f98ad0882a2e5adf0b0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159181
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Konrad Hofbauer <hofbauer@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29999}
This commit is contained in:
Sebastian Jansson 2019-12-04 10:02:06 +01:00 committed by Commit Bot
parent b810646c54
commit 41462d58b2
4 changed files with 8 additions and 14 deletions

View File

@ -45,13 +45,6 @@ std::unique_ptr<MediaEngineInterface> CreateMediaEngine(
}
namespace {
// If this FieldTrial is enabled, we will not filter out the abs-send-time
// header extension when the TWCC extensions were also negotiated, but keep
// kAbsSendTimeUri also if kTransportSequenceNumberUri is present.
bool IsKeepAbsSendTimeExtensionFieldTrialEnabled() {
return webrtc::field_trial::IsEnabled("WebRTC-KeepAbsSendTimeExtension");
}
// Remove mutually exclusive extensions with lower priority.
void DiscardRedundantExtensions(
std::vector<webrtc::RtpExtension>* extensions,
@ -128,14 +121,14 @@ std::vector<webrtc::RtpExtension> FilterRtpExtensions(
result.erase(it, result.end());
// Keep just the highest priority extension of any in the following lists.
if (IsKeepAbsSendTimeExtensionFieldTrialEnabled()) {
if (webrtc::field_trial::IsEnabled("WebRTC-FilterAbsSendTimeExtension")) {
static const char* const kBweExtensionPriorities[] = {
webrtc::RtpExtension::kTransportSequenceNumberUri,
webrtc::RtpExtension::kAbsSendTimeUri,
webrtc::RtpExtension::kTimestampOffsetUri};
DiscardRedundantExtensions(&result, kBweExtensionPriorities);
} else {
static const char* const kBweExtensionPriorities[] = {
webrtc::RtpExtension::kTransportSequenceNumberUri,
webrtc::RtpExtension::kAbsSendTimeUri,
webrtc::RtpExtension::kTimestampOffsetUri};
DiscardRedundantExtensions(&result, kBweExtensionPriorities);

View File

@ -182,6 +182,8 @@ TEST(WebRtcMediaEngineTest, FilterRtpExtensions_RemoveRedundantEncrypted_2) {
}
TEST(WebRtcMediaEngineTest, FilterRtpExtensions_RemoveRedundantBwe_1) {
webrtc::test::ScopedFieldTrials override_field_trials_(
"WebRTC-FilterAbsSendTimeExtension/Enabled/");
std::vector<RtpExtension> extensions;
extensions.push_back(
RtpExtension(RtpExtension::kTransportSequenceNumberUri, 3));
@ -199,8 +201,6 @@ TEST(WebRtcMediaEngineTest, FilterRtpExtensions_RemoveRedundantBwe_1) {
TEST(WebRtcMediaEngineTest,
FilterRtpExtensions_RemoveRedundantBwe_1_KeepAbsSendTime) {
std::vector<RtpExtension> extensions;
webrtc::test::ScopedFieldTrials override_field_trials_(
"WebRTC-KeepAbsSendTimeExtension/Enabled/");
extensions.push_back(
RtpExtension(RtpExtension::kTransportSequenceNumberUri, 3));
extensions.push_back(RtpExtension(RtpExtension::kTimestampOffsetUri, 9));
@ -216,6 +216,8 @@ TEST(WebRtcMediaEngineTest,
}
TEST(WebRtcMediaEngineTest, FilterRtpExtensions_RemoveRedundantBweEncrypted_1) {
webrtc::test::ScopedFieldTrials override_field_trials_(
"WebRTC-FilterAbsSendTimeExtension/Enabled/");
std::vector<RtpExtension> extensions;
extensions.push_back(
RtpExtension(RtpExtension::kTransportSequenceNumberUri, 3));
@ -239,8 +241,6 @@ TEST(WebRtcMediaEngineTest, FilterRtpExtensions_RemoveRedundantBweEncrypted_1) {
TEST(WebRtcMediaEngineTest,
FilterRtpExtensions_RemoveRedundantBweEncrypted_1_KeepAbsSendTime) {
std::vector<RtpExtension> extensions;
webrtc::test::ScopedFieldTrials override_field_trials_(
"WebRTC-KeepAbsSendTimeExtension/Enabled/");
extensions.push_back(
RtpExtension(RtpExtension::kTransportSequenceNumberUri, 3));
extensions.push_back(

View File

@ -2655,6 +2655,8 @@ TEST_F(WebRtcVideoChannelTest, RecvAbsoluteSendTimeHeaderExtensions) {
}
TEST_F(WebRtcVideoChannelTest, FiltersExtensionsPicksTransportSeqNum) {
webrtc::test::ScopedFieldTrials override_field_trials_(
"WebRTC-FilterAbsSendTimeExtension/Enabled/");
// Enable three redundant extensions.
std::vector<std::string> extensions;
extensions.push_back(RtpExtension::kAbsSendTimeUri);

View File

@ -71,7 +71,6 @@ TEST(RemoteEstimateEndToEnd, OfferedCapabilityIsInAnswer) {
}
TEST(RemoteEstimateEndToEnd, AudioUsesAbsSendTimeExtension) {
ScopedFieldTrials trials("WebRTC-KeepAbsSendTimeExtension/Enabled/");
// Defined before PeerScenario so it gets destructed after, to avoid use after free.
rtc::Event received_abs_send_time;
PeerScenario s(*test_info_);