Revert "Always offer transport sequence number header extension for audio"
This reverts commit fd965c008c7bc395bb276f260262ac11ccd25406. Reason for revert: Cause test failure. Original change's description: > Always offer transport sequence number header extension for audio > > If the extension is negotiated, it will only be used if > the field trial WebRTC-Audio-SendSideBwe is enabled. > This allows simpler experimentation if it should be used or not. > > Bug: webrtc:10309 webrtc:10286 > Change-Id: I797e6f14c06d46189e40f6d09805c2e09afc015b > Reviewed-on: https://webrtc-review.googlesource.com/c/122542 > Commit-Queue: Per Kjellander <perkj@webrtc.org> > Reviewed-by: Erik Språng <sprang@webrtc.org> > Reviewed-by: Sebastian Jansson <srte@webrtc.org> > Reviewed-by: Oskar Sundbom <ossu@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#26689} TBR=ossu@webrtc.org,sprang@webrtc.org,srte@webrtc.org,perkj@webrtc.org Change-Id: I1b7d3fa5c282a5bf049ca54695ad16c8278a2698 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:10309 webrtc:10286 Reviewed-on: https://webrtc-review.googlesource.com/c/123182 Reviewed-by: Ying Wang <yinwa@webrtc.org> Commit-Queue: Ying Wang <yinwa@webrtc.org> Cr-Commit-Position: refs/heads/master@{#26703}
This commit is contained in:
@ -149,7 +149,6 @@ if (rtc_include_tests) {
|
|||||||
"../logging:rtc_event_log_api",
|
"../logging:rtc_event_log_api",
|
||||||
"../modules/audio_device:mock_audio_device",
|
"../modules/audio_device:mock_audio_device",
|
||||||
"../rtc_base:rtc_base_tests_utils",
|
"../rtc_base:rtc_base_tests_utils",
|
||||||
"../test:field_trial",
|
|
||||||
|
|
||||||
# For TestAudioDeviceModule
|
# For TestAudioDeviceModule
|
||||||
"../modules/audio_device:audio_device_impl",
|
"../modules/audio_device:audio_device_impl",
|
||||||
|
@ -264,8 +264,8 @@ void AudioSendStream::ConfigureStream(
|
|||||||
|
|
||||||
RtcpBandwidthObserver* bandwidth_observer = nullptr;
|
RtcpBandwidthObserver* bandwidth_observer = nullptr;
|
||||||
|
|
||||||
if (stream->allocation_settings_.ShouldSendTransportSequenceNumber(
|
if (stream->allocation_settings_.IncludeAudioInFeedback(
|
||||||
new_ids.transport_sequence_number)) {
|
new_ids.transport_sequence_number != 0)) {
|
||||||
channel_send->EnableSendTransportSequenceNumber(
|
channel_send->EnableSendTransportSequenceNumber(
|
||||||
new_ids.transport_sequence_number);
|
new_ids.transport_sequence_number);
|
||||||
// Probing in application limited region is only used in combination with
|
// Probing in application limited region is only used in combination with
|
||||||
|
@ -9,8 +9,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "test/call_test.h"
|
#include "test/call_test.h"
|
||||||
#include "test/constants.h"
|
|
||||||
#include "test/field_trial.h"
|
|
||||||
#include "test/gtest.h"
|
#include "test/gtest.h"
|
||||||
#include "test/rtcp_packet_parser.h"
|
#include "test/rtcp_packet_parser.h"
|
||||||
|
|
||||||
@ -139,54 +137,42 @@ TEST_F(AudioSendStreamCallTest, SupportsAudioLevel) {
|
|||||||
RunBaseTest(&test);
|
RunBaseTest(&test);
|
||||||
}
|
}
|
||||||
|
|
||||||
class TransportWideSequenceNumberObserver : public AudioSendTest {
|
TEST_F(AudioSendStreamCallTest, SupportsTransportWideSequenceNumbers) {
|
||||||
public:
|
static const uint8_t kExtensionId = test::kTransportSequenceNumberExtensionId;
|
||||||
explicit TransportWideSequenceNumberObserver(bool expect_sequence_number)
|
class TransportWideSequenceNumberObserver : public AudioSendTest {
|
||||||
: AudioSendTest(), expect_sequence_number_(expect_sequence_number) {
|
public:
|
||||||
EXPECT_TRUE(parser_->RegisterRtpHeaderExtension(
|
TransportWideSequenceNumberObserver() : AudioSendTest() {
|
||||||
kRtpExtensionTransportSequenceNumber,
|
EXPECT_TRUE(parser_->RegisterRtpHeaderExtension(
|
||||||
kTransportSequenceNumberExtensionId));
|
kRtpExtensionTransportSequenceNumber, kExtensionId));
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Action OnSendRtp(const uint8_t* packet, size_t length) override {
|
Action OnSendRtp(const uint8_t* packet, size_t length) override {
|
||||||
RTPHeader header;
|
RTPHeader header;
|
||||||
EXPECT_TRUE(parser_->Parse(packet, length, &header));
|
EXPECT_TRUE(parser_->Parse(packet, length, &header));
|
||||||
|
|
||||||
EXPECT_EQ(header.extension.hasTransportSequenceNumber,
|
EXPECT_TRUE(header.extension.hasTransportSequenceNumber);
|
||||||
expect_sequence_number_);
|
EXPECT_FALSE(header.extension.hasTransmissionTimeOffset);
|
||||||
EXPECT_FALSE(header.extension.hasTransmissionTimeOffset);
|
EXPECT_FALSE(header.extension.hasAbsoluteSendTime);
|
||||||
EXPECT_FALSE(header.extension.hasAbsoluteSendTime);
|
|
||||||
|
|
||||||
observation_complete_.Set();
|
observation_complete_.Set();
|
||||||
|
|
||||||
return SEND_PACKET;
|
return SEND_PACKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModifyAudioConfigs(
|
void ModifyAudioConfigs(
|
||||||
AudioSendStream::Config* send_config,
|
AudioSendStream::Config* send_config,
|
||||||
std::vector<AudioReceiveStream::Config>* receive_configs) override {
|
std::vector<AudioReceiveStream::Config>* receive_configs) override {
|
||||||
send_config->rtp.extensions.clear();
|
send_config->rtp.extensions.clear();
|
||||||
send_config->rtp.extensions.push_back(
|
send_config->rtp.extensions.push_back(RtpExtension(
|
||||||
RtpExtension(RtpExtension::kTransportSequenceNumberUri,
|
RtpExtension::kTransportSequenceNumberUri, kExtensionId));
|
||||||
kTransportSequenceNumberExtensionId));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void PerformTest() override {
|
void PerformTest() override {
|
||||||
EXPECT_TRUE(Wait()) << "Timed out while waiting for a single RTP packet.";
|
EXPECT_TRUE(Wait()) << "Timed out while waiting for a single RTP packet.";
|
||||||
}
|
}
|
||||||
const bool expect_sequence_number_;
|
} test;
|
||||||
};
|
|
||||||
|
|
||||||
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);
|
RunBaseTest(&test);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
#include "modules/rtp_rtcp/mocks/mock_rtcp_rtt_stats.h"
|
#include "modules/rtp_rtcp/mocks/mock_rtcp_rtt_stats.h"
|
||||||
#include "modules/rtp_rtcp/mocks/mock_rtp_rtcp.h"
|
#include "modules/rtp_rtcp/mocks/mock_rtp_rtcp.h"
|
||||||
#include "rtc_base/task_queue.h"
|
#include "rtc_base/task_queue.h"
|
||||||
#include "test/field_trial.h"
|
|
||||||
#include "test/gtest.h"
|
#include "test/gtest.h"
|
||||||
#include "test/mock_audio_encoder.h"
|
#include "test/mock_audio_encoder.h"
|
||||||
#include "test/mock_audio_encoder_factory.h"
|
#include "test/mock_audio_encoder_factory.h"
|
||||||
@ -354,7 +353,6 @@ TEST(AudioSendStreamTest, SetMuted) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(AudioSendStreamTest, AudioBweCorrectObjectsOnChannelProxy) {
|
TEST(AudioSendStreamTest, AudioBweCorrectObjectsOnChannelProxy) {
|
||||||
ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
|
|
||||||
ConfigHelper helper(true, true);
|
ConfigHelper helper(true, true);
|
||||||
auto send_stream = helper.CreateAudioSendStream();
|
auto send_stream = helper.CreateAudioSendStream();
|
||||||
}
|
}
|
||||||
@ -506,7 +504,6 @@ TEST(AudioSendStreamTest, DontRecreateEncoder) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(AudioSendStreamTest, ReconfigureTransportCcResetsFirst) {
|
TEST(AudioSendStreamTest, ReconfigureTransportCcResetsFirst) {
|
||||||
ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
|
|
||||||
ConfigHelper helper(false, true);
|
ConfigHelper helper(false, true);
|
||||||
auto send_stream = helper.CreateAudioSendStream();
|
auto send_stream = helper.CreateAudioSendStream();
|
||||||
auto new_config = helper.config();
|
auto new_config = helper.config();
|
||||||
|
@ -559,8 +559,11 @@ RtpCapabilities WebRtcVoiceEngine::GetCapabilities() const {
|
|||||||
int id = 1;
|
int id = 1;
|
||||||
capabilities.header_extensions.push_back(
|
capabilities.header_extensions.push_back(
|
||||||
webrtc::RtpExtension(webrtc::RtpExtension::kAudioLevelUri, id++));
|
webrtc::RtpExtension(webrtc::RtpExtension::kAudioLevelUri, id++));
|
||||||
capabilities.header_extensions.push_back(webrtc::RtpExtension(
|
if (allocation_settings_.EnableTransportSequenceNumberExtension()) {
|
||||||
webrtc::RtpExtension::kTransportSequenceNumberUri, id++));
|
capabilities.header_extensions.push_back(webrtc::RtpExtension(
|
||||||
|
webrtc::RtpExtension::kTransportSequenceNumberUri, id++));
|
||||||
|
}
|
||||||
|
|
||||||
return capabilities;
|
return capabilities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,12 +65,16 @@ bool AudioAllocationSettings::ConfigureRateAllocationRange() const {
|
|||||||
return audio_send_side_bwe_;
|
return audio_send_side_bwe_;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AudioAllocationSettings::ShouldSendTransportSequenceNumber(
|
bool AudioAllocationSettings::EnableTransportSequenceNumberExtension() const {
|
||||||
|
// TODO(srte): Update this to be more accurate.
|
||||||
|
return audio_send_side_bwe_ && !allocate_audio_without_feedback_;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool AudioAllocationSettings::IncludeAudioInFeedback(
|
||||||
int transport_seq_num_extension_header_id) const {
|
int transport_seq_num_extension_header_id) const {
|
||||||
if (force_no_audio_feedback_)
|
if (force_no_audio_feedback_)
|
||||||
return false;
|
return false;
|
||||||
return audio_send_side_bwe_ && !allocate_audio_without_feedback_ &&
|
return transport_seq_num_extension_header_id != 0;
|
||||||
transport_seq_num_extension_header_id != 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AudioAllocationSettings::UpdateAudioTargetBitrate(
|
bool AudioAllocationSettings::UpdateAudioTargetBitrate(
|
||||||
|
@ -27,13 +27,14 @@ class AudioAllocationSettings {
|
|||||||
bool IgnoreSeqNumIdChange() const;
|
bool IgnoreSeqNumIdChange() const;
|
||||||
// Returns true if the bitrate allocation range should be configured.
|
// Returns true if the bitrate allocation range should be configured.
|
||||||
bool ConfigureRateAllocationRange() const;
|
bool ConfigureRateAllocationRange() const;
|
||||||
// Returns true if sent audio packets should have transport wide sequence
|
// Returns true if the transport sequence number extension should be enabled.
|
||||||
// numbers.
|
bool EnableTransportSequenceNumberExtension() const;
|
||||||
|
// Returns true if audio traffic should be included in transport wide feedback
|
||||||
|
// packets.
|
||||||
// |transport_seq_num_extension_header_id| the extension header id for
|
// |transport_seq_num_extension_header_id| the extension header id for
|
||||||
// transport sequence numbers. Set to 0 if not the extension is not
|
// transport sequence numbers. Set to 0 if not the extension is not
|
||||||
// configured.
|
// configured.
|
||||||
bool ShouldSendTransportSequenceNumber(
|
bool IncludeAudioInFeedback(int transport_seq_num_extension_header_id) const;
|
||||||
int transport_seq_num_extension_header_id) const;
|
|
||||||
// Returns true if target bitrate for audio streams should be updated.
|
// Returns true if target bitrate for audio streams should be updated.
|
||||||
// |transport_seq_num_extension_header_id| the extension header id for
|
// |transport_seq_num_extension_header_id| the extension header id for
|
||||||
// transport sequence numbers. Set to 0 if not the extension is not
|
// transport sequence numbers. Set to 0 if not the extension is not
|
||||||
|
@ -316,7 +316,6 @@ TEST_F(TransportFeedbackEndToEndTest, VideoTransportFeedbackNotConfigured) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(TransportFeedbackEndToEndTest, AudioReceivesTransportFeedback) {
|
TEST_F(TransportFeedbackEndToEndTest, AudioReceivesTransportFeedback) {
|
||||||
test::ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
|
|
||||||
TransportFeedbackTester test(true, 0, 1);
|
TransportFeedbackTester test(true, 0, 1);
|
||||||
RunBaseTest(&test);
|
RunBaseTest(&test);
|
||||||
}
|
}
|
||||||
@ -425,7 +424,6 @@ TEST_F(TransportFeedbackEndToEndTest,
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(TransportFeedbackEndToEndTest, TransportSeqNumOnAudioAndVideo) {
|
TEST_F(TransportFeedbackEndToEndTest, TransportSeqNumOnAudioAndVideo) {
|
||||||
test::ScopedFieldTrials field_trials("WebRTC-Audio-SendSideBwe/Enabled/");
|
|
||||||
static constexpr int kExtensionId = 8;
|
static constexpr int kExtensionId = 8;
|
||||||
static constexpr size_t kMinPacketsToWaitFor = 50;
|
static constexpr size_t kMinPacketsToWaitFor = 50;
|
||||||
class TransportSequenceNumberTest : public test::EndToEndTest {
|
class TransportSequenceNumberTest : public test::EndToEndTest {
|
||||||
|
Reference in New Issue
Block a user