Remove default enabled field trial WebRTC-SendSideBwe-WithOverhead
Bug: webrtc:6762
Change-Id: I520188a13ee5f50c441226574ccb3df54f842835
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/285300
Reviewed-by: Peter Hanspers <peterhanspers@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Jakob Ivarsson <jakobi@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38783}
diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc
index 8bc0f4b..7d6ec79 100644
--- a/audio/audio_send_stream.cc
+++ b/audio/audio_send_stream.cc
@@ -152,8 +152,6 @@
field_trials_.IsEnabled("WebRTC-Audio-ABWENoTWCC")),
enable_audio_alr_probing_(
!field_trials_.IsDisabled("WebRTC-Audio-AlrProbing")),
- send_side_bwe_with_overhead_(
- !field_trials_.IsDisabled("WebRTC-SendSideBwe-WithOverhead")),
allocation_settings_(field_trials_),
config_(Config(/*send_transport=*/nullptr)),
audio_state_(audio_state),
@@ -372,8 +370,7 @@
config_.max_bitrate_bps != -1 &&
(allocate_audio_without_feedback_ || TransportSeqNumId(config_) != 0)) {
rtp_transport_->AccountForAudioPacketsInPacedSender(true);
- if (send_side_bwe_with_overhead_)
- rtp_transport_->IncludeOverheadInPacedSender();
+ rtp_transport_->IncludeOverheadInPacedSender();
rtp_rtcp_module_->SetAsPartOfAllocation(true);
ConfigureBitrateObserver();
} else {
@@ -811,8 +808,7 @@
if (!new_config.has_dscp && new_config.min_bitrate_bps != -1 &&
new_config.max_bitrate_bps != -1 && TransportSeqNumId(new_config) != 0) {
rtp_transport_->AccountForAudioPacketsInPacedSender(true);
- if (send_side_bwe_with_overhead_)
- rtp_transport_->IncludeOverheadInPacedSender();
+ rtp_transport_->IncludeOverheadInPacedSender();
// We may get a callback immediately as the observer is registered, so
// make sure the bitrate limits in config_ are up-to-date.
config_.min_bitrate_bps = new_config.min_bitrate_bps;
@@ -835,22 +831,21 @@
RTC_DCHECK(constraints.has_value());
DataRate priority_bitrate = allocation_settings_.priority_bitrate;
- if (send_side_bwe_with_overhead_) {
- if (use_legacy_overhead_calculation_) {
- // OverheadPerPacket = Ipv4(20B) + UDP(8B) + SRTP(10B) + RTP(12)
- constexpr int kOverheadPerPacket = 20 + 8 + 10 + 12;
- const TimeDelta kMinPacketDuration = TimeDelta::Millis(20);
- DataRate max_overhead =
- DataSize::Bytes(kOverheadPerPacket) / kMinPacketDuration;
- priority_bitrate += max_overhead;
- } else {
- RTC_DCHECK(frame_length_range_);
- const DataSize overhead_per_packet =
- DataSize::Bytes(total_packet_overhead_bytes_);
- DataRate min_overhead = overhead_per_packet / frame_length_range_->second;
- priority_bitrate += min_overhead;
- }
+ if (use_legacy_overhead_calculation_) {
+ // OverheadPerPacket = Ipv4(20B) + UDP(8B) + SRTP(10B) + RTP(12)
+ constexpr int kOverheadPerPacket = 20 + 8 + 10 + 12;
+ const TimeDelta kMinPacketDuration = TimeDelta::Millis(20);
+ DataRate max_overhead =
+ DataSize::Bytes(kOverheadPerPacket) / kMinPacketDuration;
+ priority_bitrate += max_overhead;
+ } else {
+ RTC_DCHECK(frame_length_range_);
+ const DataSize overhead_per_packet =
+ DataSize::Bytes(total_packet_overhead_bytes_);
+ DataRate min_overhead = overhead_per_packet / frame_length_range_->second;
+ priority_bitrate += min_overhead;
}
+
if (allocation_settings_.priority_bitrate_raw)
priority_bitrate = *allocation_settings_.priority_bitrate_raw;
@@ -903,25 +898,23 @@
<< "TargetAudioBitrateConstraints::min";
return absl::nullopt;
}
- if (send_side_bwe_with_overhead_) {
- if (use_legacy_overhead_calculation_) {
- // OverheadPerPacket = Ipv4(20B) + UDP(8B) + SRTP(10B) + RTP(12)
- const DataSize kOverheadPerPacket = DataSize::Bytes(20 + 8 + 10 + 12);
- const TimeDelta kMaxFrameLength =
- TimeDelta::Millis(60); // Based on Opus spec
- const DataRate kMinOverhead = kOverheadPerPacket / kMaxFrameLength;
- constraints.min += kMinOverhead;
- constraints.max += kMinOverhead;
- } else {
- if (!frame_length_range_.has_value()) {
- RTC_LOG(LS_WARNING) << "frame_length_range_ is not set";
- return absl::nullopt;
- }
- const DataSize kOverheadPerPacket =
- DataSize::Bytes(total_packet_overhead_bytes_);
- constraints.min += kOverheadPerPacket / frame_length_range_->second;
- constraints.max += kOverheadPerPacket / frame_length_range_->first;
+ if (use_legacy_overhead_calculation_) {
+ // OverheadPerPacket = Ipv4(20B) + UDP(8B) + SRTP(10B) + RTP(12)
+ const DataSize kOverheadPerPacket = DataSize::Bytes(20 + 8 + 10 + 12);
+ const TimeDelta kMaxFrameLength =
+ TimeDelta::Millis(60); // Based on Opus spec
+ const DataRate kMinOverhead = kOverheadPerPacket / kMaxFrameLength;
+ constraints.min += kMinOverhead;
+ constraints.max += kMinOverhead;
+ } else {
+ if (!frame_length_range_.has_value()) {
+ RTC_LOG(LS_WARNING) << "frame_length_range_ is not set";
+ return absl::nullopt;
}
+ const DataSize kOverheadPerPacket =
+ DataSize::Bytes(total_packet_overhead_bytes_);
+ constraints.min += kOverheadPerPacket / frame_length_range_->second;
+ constraints.max += kOverheadPerPacket / frame_length_range_->first;
}
return constraints;
}
diff --git a/audio/audio_send_stream.h b/audio/audio_send_stream.h
index cdb7472..42be43a 100644
--- a/audio/audio_send_stream.h
+++ b/audio/audio_send_stream.h
@@ -178,7 +178,6 @@
const bool allocate_audio_without_feedback_;
const bool force_no_audio_feedback_ = allocate_audio_without_feedback_;
const bool enable_audio_alr_probing_;
- const bool send_side_bwe_with_overhead_;
const AudioAllocationConfig allocation_settings_;
webrtc::AudioSendStream::Config config_
diff --git a/call/call_perf_tests.cc b/call/call_perf_tests.cc
index ac139af..d59b704 100644
--- a/call/call_perf_tests.cc
+++ b/call/call_perf_tests.cc
@@ -778,13 +778,9 @@
#endif
TEST_F(CallPerfTest, MAYBE_KeepsHighBitrateWhenReconfiguringSender) {
static const uint32_t kInitialBitrateKbps = 400;
+ static const uint32_t kInitialBitrateOverheadKpbs = 6;
static const uint32_t kReconfigureThresholdKbps = 600;
- // We get lower bitrate than expected by this test if the following field
- // trial is enabled.
- test::ScopedKeyValueConfig field_trials(
- field_trials_, "WebRTC-SendSideBwe-WithOverhead/Disabled/");
-
class VideoStreamFactory
: public VideoEncoderConfig::VideoStreamFactoryInterface {
public:
@@ -824,9 +820,10 @@
// First time initialization. Frame size is known.
// `expected_bitrate` is affected by bandwidth estimation before the
// first frame arrives to the encoder.
- uint32_t expected_bitrate = last_set_bitrate_kbps_ > 0
- ? last_set_bitrate_kbps_
- : kInitialBitrateKbps;
+ uint32_t expected_bitrate =
+ last_set_bitrate_kbps_ > 0
+ ? last_set_bitrate_kbps_
+ : kInitialBitrateKbps - kInitialBitrateOverheadKpbs;
EXPECT_EQ(expected_bitrate, config->startBitrate)
<< "Encoder not initialized at expected bitrate.";
EXPECT_EQ(kDefaultWidth, config->width);
diff --git a/call/rtp_transport_controller_send.cc b/call/rtp_transport_controller_send.cc
index 18c75df..940dff7 100644
--- a/call/rtp_transport_controller_send.cc
+++ b/call/rtp_transport_controller_send.cc
@@ -65,10 +65,6 @@
return absl::StartsWith(trials.Lookup(key), "Enabled");
}
-bool IsDisabled(const FieldTrialsView& trials, absl::string_view key) {
- return absl::StartsWith(trials.Lookup(key), "Disabled");
-}
-
bool IsRelayed(const rtc::NetworkRoute& route) {
return route.local.uses_turn() || route.remote.uses_turn();
}
@@ -107,8 +103,6 @@
last_report_block_time_(Timestamp::Millis(clock_->TimeInMilliseconds())),
reset_feedback_on_route_change_(
!IsEnabled(*config.trials, "WebRTC-Bwe-NoFeedbackReset")),
- send_side_bwe_with_overhead_(
- !IsDisabled(*config.trials, "WebRTC-SendSideBwe-WithOverhead")),
add_pacing_to_cwin_(
IsEnabled(*config.trials,
"WebRTC-AddPacingToCongestionWindowPushback")),
@@ -554,9 +548,7 @@
RTC_DCHECK_RUN_ON(&task_queue_);
feedback_demuxer_.AddPacket(packet_info);
transport_feedback_adapter_.AddPacket(
- packet_info,
- send_side_bwe_with_overhead_ ? transport_overhead_bytes_per_packet_ : 0,
- creation_time);
+ packet_info, transport_overhead_bytes_per_packet_, creation_time);
});
}
diff --git a/call/rtp_transport_controller_send.h b/call/rtp_transport_controller_send.h
index 2ba0fda..51bda73 100644
--- a/call/rtp_transport_controller_send.h
+++ b/call/rtp_transport_controller_send.h
@@ -189,7 +189,6 @@
StreamsConfig streams_config_ RTC_GUARDED_BY(task_queue_);
const bool reset_feedback_on_route_change_;
- const bool send_side_bwe_with_overhead_;
const bool add_pacing_to_cwin_;
FieldTrialParameter<DataRate> relay_bandwidth_cap_;
diff --git a/call/rtp_video_sender.cc b/call/rtp_video_sender.cc
index 5d2d1f1..02155bc 100644
--- a/call/rtp_video_sender.cc
+++ b/call/rtp_video_sender.cc
@@ -375,9 +375,6 @@
const FieldTrialsView& field_trials,
TaskQueueFactory* task_queue_factory)
: field_trials_(field_trials),
- send_side_bwe_with_overhead_(!absl::StartsWith(
- field_trials_.Lookup("WebRTC-SendSideBwe-WithOverhead"),
- "Disabled")),
use_frame_rate_for_overhead_(absl::StartsWith(
field_trials_.Lookup("WebRTC-Video-UseFrameRateForOverhead"),
"Enabled")),
@@ -409,7 +406,7 @@
frame_count_observer_(observers.frame_count_observer) {
transport_checker_.Detach();
RTC_DCHECK_EQ(rtp_config_.ssrcs.size(), rtp_streams_.size());
- if (send_side_bwe_with_overhead_ && has_packet_feedback_)
+ if (has_packet_feedback_)
transport_->IncludeOverheadInPacedSender();
// SSRCs are assumed to be sorted in the same order as `rtp_modules`.
for (uint32_t ssrc : rtp_config_.ssrcs) {
@@ -835,7 +832,7 @@
DataSize max_total_packet_size = DataSize::Bytes(
rtp_config_.max_packet_size + transport_overhead_bytes_per_packet_);
uint32_t payload_bitrate_bps = update.target_bitrate.bps();
- if (send_side_bwe_with_overhead_ && has_packet_feedback_) {
+ if (has_packet_feedback_) {
DataRate overhead_rate =
CalculateOverheadRate(update.target_bitrate, max_total_packet_size,
packet_overhead, Frequency::Hertz(framerate));
@@ -869,7 +866,7 @@
loss_mask_vector_.clear();
uint32_t encoder_overhead_rate_bps = 0;
- if (send_side_bwe_with_overhead_ && has_packet_feedback_) {
+ if (has_packet_feedback_) {
// TODO(srte): The packet size should probably be the same as in the
// CalculateOverheadRate call above (just max_total_packet_size), it doesn't
// make sense to use different packet rates for different overhead
@@ -882,12 +879,11 @@
encoder_overhead_rate.bps<uint32_t>(),
update.target_bitrate.bps<uint32_t>() - encoder_target_rate_bps_);
}
- // When the field trial "WebRTC-SendSideBwe-WithOverhead" is enabled
- // protection_bitrate includes overhead.
const uint32_t media_rate = encoder_target_rate_bps_ +
encoder_overhead_rate_bps +
packetization_rate_bps;
RTC_DCHECK_GE(update.target_bitrate, DataRate::BitsPerSec(media_rate));
+ // `protection_bitrate_bps_` includes overhead.
protection_bitrate_bps_ = update.target_bitrate.bps() - media_rate;
}
diff --git a/call/rtp_video_sender.h b/call/rtp_video_sender.h
index 9804bd8..88e55f8 100644
--- a/call/rtp_video_sender.h
+++ b/call/rtp_video_sender.h
@@ -170,7 +170,6 @@
Frequency framerate) const;
const FieldTrialsView& field_trials_;
- const bool send_side_bwe_with_overhead_;
const bool use_frame_rate_for_overhead_;
const bool has_packet_feedback_;
diff --git a/modules/audio_coding/audio_network_adaptor/bitrate_controller_unittest.cc b/modules/audio_coding/audio_network_adaptor/bitrate_controller_unittest.cc
index 3155f19..9c593b8 100644
--- a/modules/audio_coding/audio_network_adaptor/bitrate_controller_unittest.cc
+++ b/modules/audio_coding/audio_network_adaptor/bitrate_controller_unittest.cc
@@ -74,8 +74,6 @@
}
TEST(AnaBitrateControllerTest, ChangeBitrateOnTargetBitrateChanged) {
- test::ScopedFieldTrials override_field_trials(
- "WebRTC-SendSideBwe-WithOverhead/Enabled/");
constexpr int kInitialFrameLengthMs = 20;
BitrateController controller(
BitrateController::Config(32000, kInitialFrameLengthMs, 0, 0));
@@ -98,8 +96,6 @@
// BitrateController::UpdateNetworkMetrics(...) can handle multiple
// network updates at once. This is, however, not a common use case in current
// audio_network_adaptor_impl.cc.
- test::ScopedFieldTrials override_field_trials(
- "WebRTC-SendSideBwe-WithOverhead/Enabled/");
constexpr int kInitialFrameLengthMs = 20;
BitrateController controller(
BitrateController::Config(32000, kInitialFrameLengthMs, 0, 0));
@@ -116,8 +112,6 @@
}
TEST(AnaBitrateControllerTest, TreatUnknownFrameLengthAsFrameLengthUnchanged) {
- test::ScopedFieldTrials override_field_trials(
- "WebRTC-SendSideBwe-WithOverhead/Enabled/");
constexpr int kInitialFrameLengthMs = 20;
BitrateController controller(
BitrateController::Config(32000, kInitialFrameLengthMs, 0, 0));
@@ -131,8 +125,6 @@
}
TEST(AnaBitrateControllerTest, IncreaseBitrateOnFrameLengthIncreased) {
- test::ScopedFieldTrials override_field_trials(
- "WebRTC-SendSideBwe-WithOverhead/Enabled/");
constexpr int kInitialFrameLengthMs = 20;
BitrateController controller(
BitrateController::Config(32000, kInitialFrameLengthMs, 0, 0));
@@ -155,8 +147,6 @@
}
TEST(AnaBitrateControllerTest, DecreaseBitrateOnFrameLengthDecreased) {
- test::ScopedFieldTrials override_field_trials(
- "WebRTC-SendSideBwe-WithOverhead/Enabled/");
constexpr int kInitialFrameLengthMs = 60;
BitrateController controller(
BitrateController::Config(32000, kInitialFrameLengthMs, 0, 0));
@@ -179,8 +169,6 @@
}
TEST(AnaBitrateControllerTest, BitrateNeverBecomesNegative) {
- test::ScopedFieldTrials override_field_trials(
- "WebRTC-SendSideBwe-WithOverhead/Enabled/");
BitrateController controller(BitrateController::Config(32000, 20, 0, 0));
constexpr size_t kOverheadBytesPerPacket = 64;
constexpr int kFrameLengthMs = 60;
@@ -192,8 +180,6 @@
}
TEST(AnaBitrateControllerTest, CheckBehaviorOnChangingCondition) {
- test::ScopedFieldTrials override_field_trials(
- "WebRTC-SendSideBwe-WithOverhead/Enabled/");
BitrateController controller(BitrateController::Config(32000, 20, 0, 0));
// Start from an arbitrary overall bitrate.
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
index 19afca1..51b0fcd 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
+++ b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
@@ -362,8 +362,6 @@
const AudioNetworkAdaptorCreator& audio_network_adaptor_creator,
std::unique_ptr<SmoothingFilter> bitrate_smoother)
: payload_type_(payload_type),
- send_side_bwe_with_overhead_(
- !webrtc::field_trial::IsDisabled("WebRTC-SendSideBwe-WithOverhead")),
use_stable_target_for_adaptation_(!webrtc::field_trial::IsDisabled(
"WebRTC-Audio-StableTargetAdaptation")),
adjust_bandwidth_(
@@ -521,7 +519,7 @@
}
ApplyAudioNetworkAdaptor();
- } else if (send_side_bwe_with_overhead_) {
+ } else {
if (!overhead_bytes_per_packet_) {
RTC_LOG(LS_INFO)
<< "AudioEncoderOpusImpl: Overhead unknown, target audio bitrate "
@@ -534,8 +532,6 @@
std::min(AudioEncoderOpusConfig::kMaxBitrateBps,
std::max(AudioEncoderOpusConfig::kMinBitrateBps,
target_audio_bitrate_bps - overhead_bps)));
- } else {
- SetTargetBitrate(target_audio_bitrate_bps);
}
}
void AudioEncoderOpusImpl::OnReceivedUplinkBandwidth(
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus.h b/modules/audio_coding/codecs/opus/audio_encoder_opus.h
index a0c42af..8c5c235 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_opus.h
+++ b/modules/audio_coding/codecs/opus/audio_encoder_opus.h
@@ -154,7 +154,6 @@
AudioEncoderOpusConfig config_;
const int payload_type_;
- const bool send_side_bwe_with_overhead_;
const bool use_stable_target_for_adaptation_;
const bool adjust_bandwidth_;
bool bitrate_changed_;
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc b/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
index 673aad7..a2ebe43 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
+++ b/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc
@@ -373,9 +373,6 @@
}
TEST_P(AudioEncoderOpusTest, DoNotInvokeSetTargetBitrateIfOverheadUnknown) {
- test::ScopedFieldTrials override_field_trials(
- "WebRTC-SendSideBwe-WithOverhead/Enabled/");
-
auto states = CreateCodec(sample_rate_hz_, 2);
states->encoder->OnReceivedUplinkBandwidth(kDefaultOpusRate * 2,
diff --git a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
index 44054f1..d4cb827 100644
--- a/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
+++ b/modules/congestion_controller/goog_cc/goog_cc_network_control_unittest.cc
@@ -140,7 +140,6 @@
// Scenarios:
void UpdatesTargetRateBasedOnLinkCapacity(absl::string_view test_name = "") {
- ScopedFieldTrials trial("WebRTC-SendSideBwe-WithOverhead/Enabled/");
auto factory = CreateFeedbackOnlyFactory();
Scenario s("googcc_unit/target_capacity" + std::string(test_name), false);
CallClientConfig config;
@@ -769,9 +768,7 @@
}
TEST(GoogCcScenario, DetectsHighRateInSafeResetTrial) {
- ScopedFieldTrials trial(
- "WebRTC-Bwe-SafeResetOnRouteChange/Enabled,ack/"
- "WebRTC-SendSideBwe-WithOverhead/Enabled/");
+ ScopedFieldTrials trial("WebRTC-Bwe-SafeResetOnRouteChange/Enabled,ack/");
const DataRate kInitialLinkCapacity = DataRate::KilobitsPerSec(200);
const DataRate kNewLinkCapacity = DataRate::KilobitsPerSec(800);
const DataRate kStartRate = DataRate::KilobitsPerSec(300);
diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn
index 843d2f2..abcdb61 100644
--- a/modules/rtp_rtcp/BUILD.gn
+++ b/modules/rtp_rtcp/BUILD.gn
@@ -665,6 +665,7 @@
"../../rtc_base:threading",
"../../rtc_base:timeutils",
"../../system_wrappers",
+ "../../test:explicit_key_value_config",
"../../test:field_trial",
"../../test:mock_frame_transformer",
"../../test:mock_transport",
diff --git a/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.cc b/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.cc
index 3687669..2e7e219 100644
--- a/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.cc
+++ b/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.cc
@@ -28,11 +28,6 @@
constexpr int kBitrateStatisticsWindowMs = 1000;
constexpr size_t kRtpSequenceNumberMapMaxEntries = 1 << 13;
-bool IsDisabled(absl::string_view name, const FieldTrialsView* field_trials) {
- FieldTrialBasedConfig default_trials;
- auto& trials = field_trials ? *field_trials : default_trials;
- return absl::StartsWith(trials.Lookup(name), "Disabled");
-}
} // namespace
DEPRECATED_RtpSenderEgress::NonPacedPacketSender::NonPacedPacketSender(
@@ -72,8 +67,6 @@
flexfec_ssrc_(config.fec_generator ? config.fec_generator->FecSsrc()
: absl::nullopt),
populate_network2_timestamp_(config.populate_network2_timestamp),
- send_side_bwe_with_overhead_(
- !IsDisabled("WebRTC-SendSideBwe-WithOverhead", config.field_trials)),
clock_(config.clock),
packet_history_(packet_history),
transport_(config.outgoing_transport),
@@ -316,16 +309,11 @@
const RtpPacketToSend& packet,
const PacedPacketInfo& pacing_info) {
if (transport_feedback_observer_) {
- size_t packet_size = packet.payload_size() + packet.padding_size();
- if (send_side_bwe_with_overhead_) {
- packet_size = packet.size();
- }
-
RtpPacketSendInfo packet_info;
packet_info.media_ssrc = ssrc_;
packet_info.transport_sequence_number = packet_id;
packet_info.rtp_sequence_number = packet.SequenceNumber();
- packet_info.length = packet_size;
+ packet_info.length = packet.size();
packet_info.pacing_info = pacing_info;
packet_info.packet_type = packet.packet_type();
transport_feedback_observer_->OnAddPacket(packet_info);
diff --git a/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.h b/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.h
index fd5dfdd..da833f5 100644
--- a/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.h
+++ b/modules/rtp_rtcp/source/deprecated/deprecated_rtp_sender_egress.h
@@ -110,7 +110,6 @@
const absl::optional<uint32_t> rtx_ssrc_;
const absl::optional<uint32_t> flexfec_ssrc_;
const bool populate_network2_timestamp_;
- const bool send_side_bwe_with_overhead_;
Clock* const clock_;
RtpPacketHistory* const packet_history_;
Transport* const transport_;
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
index f5c6311..918e075 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl2_unittest.cc
@@ -28,6 +28,7 @@
#include "rtc_base/logging.h"
#include "rtc_base/rate_limiter.h"
#include "rtc_base/strings/string_builder.h"
+#include "test/explicit_key_value_config.h"
#include "test/gmock.h"
#include "test/gtest.h"
#include "test/rtcp_packet_parser.h"
@@ -43,6 +44,8 @@
using ::testing::Optional;
using ::testing::SizeIs;
+using webrtc::test::ExplicitKeyValueConfig;
+
namespace webrtc {
namespace {
constexpr uint32_t kSenderSsrc = 0x12345;
@@ -151,36 +154,6 @@
std::deque<Packet> rtcp_packets_;
};
-struct TestConfig {
- explicit TestConfig(bool with_overhead) : with_overhead(with_overhead) {}
-
- bool with_overhead = false;
-};
-
-class FieldTrialConfig : public FieldTrialsRegistry {
- public:
- static FieldTrialConfig GetFromTestConfig(const TestConfig& config) {
- FieldTrialConfig trials;
- trials.overhead_enabled_ = config.with_overhead;
- return trials;
- }
-
- FieldTrialConfig() : overhead_enabled_(false) {}
- ~FieldTrialConfig() override {}
-
- void SetOverHeadEnabled(bool enabled) { overhead_enabled_ = enabled; }
-
- private:
- std::string GetValue(absl::string_view key) const override {
- if (key == "WebRTC-SendSideBwe-WithOverhead") {
- return overhead_enabled_ ? "Enabled" : "Disabled";
- }
- return "";
- }
-
- bool overhead_enabled_;
-};
-
class RtpRtcpModule : public RtcpPacketTypeCounterObserver,
public SendPacketObserver {
public:
@@ -194,7 +167,7 @@
RtpRtcpModule(GlobalSimulatedTimeController* time_controller,
bool is_sender,
- const FieldTrialConfig& trials)
+ const FieldTrialsRegistry& trials)
: time_controller_(time_controller),
is_sender_(is_sender),
trials_(trials),
@@ -206,7 +179,7 @@
TimeController* const time_controller_;
const bool is_sender_;
- const FieldTrialConfig& trials_;
+ const FieldTrialsRegistry& trials_;
RtcpPacketTypeCounter packets_sent_;
RtcpPacketTypeCounter packets_received_;
std::unique_ptr<ReceiveStatistics> receive_statistics_;
@@ -289,11 +262,11 @@
};
} // namespace
-class RtpRtcpImpl2Test : public ::testing::TestWithParam<TestConfig> {
+class RtpRtcpImpl2Test : public ::testing::Test {
protected:
RtpRtcpImpl2Test()
: time_controller_(Timestamp::Micros(133590000000000)),
- field_trials_(FieldTrialConfig::GetFromTestConfig(GetParam())),
+ field_trials_(""),
sender_(&time_controller_,
/*is_sender=*/true,
field_trials_),
@@ -346,7 +319,7 @@
}
GlobalSimulatedTimeController time_controller_;
- FieldTrialConfig field_trials_;
+ test::ExplicitKeyValueConfig field_trials_;
RtpRtcpModule sender_;
std::unique_ptr<RTPSenderVideo> sender_video_;
RtpRtcpModule receiver_;
@@ -403,7 +376,7 @@
}
};
-TEST_P(RtpRtcpImpl2Test, RetransmitsAllLayers) {
+TEST_F(RtpRtcpImpl2Test, RetransmitsAllLayers) {
// Send frames.
EXPECT_EQ(0, sender_.RtpSent());
EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(),
@@ -432,7 +405,7 @@
EXPECT_EQ(kSequenceNumber + 2, sender_.LastRtpSequenceNumber());
}
-TEST_P(RtpRtcpImpl2Test, Rtt) {
+TEST_F(RtpRtcpImpl2Test, Rtt) {
RtpPacketReceived packet;
packet.SetTimestamp(1);
packet.SetSequenceNumber(123);
@@ -476,7 +449,7 @@
EXPECT_NEAR(2 * kOneWayNetworkDelay.ms(), sender_.impl_->rtt_ms(), 1);
}
-TEST_P(RtpRtcpImpl2Test, RttForReceiverOnly) {
+TEST_F(RtpRtcpImpl2Test, RttForReceiverOnly) {
// Receiver module should send a Receiver time reference report (RTRR).
EXPECT_EQ(0, receiver_.impl_->SendRTCP(kRtcpReport));
@@ -495,7 +468,7 @@
EXPECT_NEAR(2 * kOneWayNetworkDelay.ms(), receiver_.impl_->rtt_ms(), 1);
}
-TEST_P(RtpRtcpImpl2Test, NoSrBeforeMedia) {
+TEST_F(RtpRtcpImpl2Test, NoSrBeforeMedia) {
// Ignore fake transport delays in this test.
sender_.transport_.SimulateNetworkDelay(TimeDelta::Zero());
receiver_.transport_.SimulateNetworkDelay(TimeDelta::Zero());
@@ -512,7 +485,7 @@
EXPECT_EQ(sender_.transport_.NumRtcpSent(), 1u);
}
-TEST_P(RtpRtcpImpl2Test, RtcpPacketTypeCounter_Nack) {
+TEST_F(RtpRtcpImpl2Test, RtcpPacketTypeCounter_Nack) {
EXPECT_EQ(0U, sender_.RtcpReceived().nack_packets);
EXPECT_EQ(0U, receiver_.RtcpSent().nack_packets);
@@ -527,7 +500,7 @@
EXPECT_EQ(1U, sender_.RtcpReceived().nack_packets);
}
-TEST_P(RtpRtcpImpl2Test, AddStreamDataCounters) {
+TEST_F(RtpRtcpImpl2Test, AddStreamDataCounters) {
StreamDataCounters rtp;
const int64_t kStartTimeMs = 1;
rtp.first_packet_time_ms = kStartTimeMs;
@@ -570,7 +543,7 @@
EXPECT_EQ(kStartTimeMs, sum.first_packet_time_ms); // Holds oldest time.
}
-TEST_P(RtpRtcpImpl2Test, SendsInitialNackList) {
+TEST_F(RtpRtcpImpl2Test, SendsInitialNackList) {
// Send module sends a NACK.
const uint16_t kNackLength = 1;
uint16_t nack_list[kNackLength] = {123};
@@ -582,7 +555,7 @@
EXPECT_THAT(sender_.LastNackListSent(), ElementsAre(123));
}
-TEST_P(RtpRtcpImpl2Test, SendsExtendedNackList) {
+TEST_F(RtpRtcpImpl2Test, SendsExtendedNackList) {
// Send module sends a NACK.
const uint16_t kNackLength = 1;
uint16_t nack_list[kNackLength] = {123};
@@ -606,7 +579,7 @@
EXPECT_THAT(sender_.LastNackListSent(), ElementsAre(124));
}
-TEST_P(RtpRtcpImpl2Test, ReSendsNackListAfterRttMs) {
+TEST_F(RtpRtcpImpl2Test, ReSendsNackListAfterRttMs) {
sender_.transport_.SimulateNetworkDelay(TimeDelta::Zero());
// Send module sends a NACK.
const uint16_t kNackLength = 2;
@@ -631,7 +604,7 @@
EXPECT_THAT(sender_.LastNackListSent(), ElementsAre(123, 125));
}
-TEST_P(RtpRtcpImpl2Test, UniqueNackRequests) {
+TEST_F(RtpRtcpImpl2Test, UniqueNackRequests) {
receiver_.transport_.SimulateNetworkDelay(TimeDelta::Zero());
EXPECT_EQ(0U, receiver_.RtcpSent().nack_packets);
EXPECT_EQ(0U, receiver_.RtcpSent().nack_requests);
@@ -671,7 +644,7 @@
EXPECT_EQ(75, sender_.RtcpReceived().UniqueNackRequestsInPercent());
}
-TEST_P(RtpRtcpImpl2Test, ConfigurableRtcpReportInterval) {
+TEST_F(RtpRtcpImpl2Test, ConfigurableRtcpReportInterval) {
const TimeDelta kVideoReportInterval = TimeDelta::Millis(3000);
// Recreate sender impl with new configuration, and redo setup.
@@ -709,7 +682,7 @@
EXPECT_EQ(sender_.transport_.NumRtcpSent(), 2u);
}
-TEST_P(RtpRtcpImpl2Test, RtpSenderEgressTimestampOffset) {
+TEST_F(RtpRtcpImpl2Test, RtpSenderEgressTimestampOffset) {
// RTP timestamp offset not explicitly set, default to random value.
uint16_t seqno = sender_.impl_->GetRtpState().sequence_number;
uint32_t media_rtp_ts = 1001;
@@ -739,7 +712,7 @@
ElementsAre(Field(&RtpSequenceNumberMap::Info::timestamp, media_rtp_ts)));
}
-TEST_P(RtpRtcpImpl2Test, StoresPacketInfoForSentPackets) {
+TEST_F(RtpRtcpImpl2Test, StoresPacketInfoForSentPackets) {
const uint32_t kStartTimestamp = 1u;
SetUp();
sender_.impl_->SetStartTimestamp(kStartTimestamp);
@@ -798,12 +771,12 @@
}
// Checks that the sender report stats are not available if no RTCP SR was sent.
-TEST_P(RtpRtcpImpl2Test, SenderReportStatsNotAvailable) {
+TEST_F(RtpRtcpImpl2Test, SenderReportStatsNotAvailable) {
EXPECT_THAT(receiver_.impl_->GetSenderReportStats(), Eq(absl::nullopt));
}
// Checks that the sender report stats are available if an RTCP SR was sent.
-TEST_P(RtpRtcpImpl2Test, SenderReportStatsAvailable) {
+TEST_F(RtpRtcpImpl2Test, SenderReportStatsAvailable) {
// Send a frame in order to send an SR.
EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid));
// Send an SR.
@@ -814,7 +787,7 @@
// Checks that the sender report stats are not available if an RTCP SR with an
// unexpected SSRC is received.
-TEST_P(RtpRtcpImpl2Test, SenderReportStatsNotUpdatedWithUnexpectedSsrc) {
+TEST_F(RtpRtcpImpl2Test, SenderReportStatsNotUpdatedWithUnexpectedSsrc) {
constexpr uint32_t kUnexpectedSenderSsrc = 0x87654321;
static_assert(kUnexpectedSenderSsrc != kSenderSsrc, "");
// Forge a sender report and pass it to the receiver as if an RTCP SR were
@@ -830,7 +803,7 @@
}
// Checks the stats derived from the last received RTCP SR are set correctly.
-TEST_P(RtpRtcpImpl2Test, SenderReportStatsCheckStatsFromLastReport) {
+TEST_F(RtpRtcpImpl2Test, SenderReportStatsCheckStatsFromLastReport) {
using SenderReportStats = RtpRtcpInterface::SenderReportStats;
const NtpTime ntp(/*seconds=*/1u, /*fractions=*/1u << 31);
constexpr uint32_t kPacketCount = 123u;
@@ -853,7 +826,7 @@
}
// Checks that the sender report stats count equals the number of sent RTCP SRs.
-TEST_P(RtpRtcpImpl2Test, SenderReportStatsCount) {
+TEST_F(RtpRtcpImpl2Test, SenderReportStatsCount) {
using SenderReportStats = RtpRtcpInterface::SenderReportStats;
// Send a frame in order to send an SR.
EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid));
@@ -871,7 +844,7 @@
// Checks that the sender report stats include a valid arrival time if an RTCP
// SR was sent.
-TEST_P(RtpRtcpImpl2Test, SenderReportStatsArrivalTimestampSet) {
+TEST_F(RtpRtcpImpl2Test, SenderReportStatsArrivalTimestampSet) {
// Send a frame in order to send an SR.
EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid));
// Send an SR.
@@ -884,7 +857,7 @@
// Checks that the packet and byte counters from an RTCP SR are not zero once
// a frame is sent.
-TEST_P(RtpRtcpImpl2Test, SenderReportStatsPacketByteCounters) {
+TEST_F(RtpRtcpImpl2Test, SenderReportStatsPacketByteCounters) {
using SenderReportStats = RtpRtcpInterface::SenderReportStats;
// Send a frame in order to send an SR.
EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid));
@@ -900,14 +873,14 @@
Field(&SenderReportStats::bytes_sent, Gt(0u)))));
}
-TEST_P(RtpRtcpImpl2Test, SendingVideoAdvancesSequenceNumber) {
+TEST_F(RtpRtcpImpl2Test, SendingVideoAdvancesSequenceNumber) {
const uint16_t sequence_number = sender_.impl_->SequenceNumber();
EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid));
ASSERT_THAT(sender_.transport_.rtp_packets_sent_, Gt(0));
EXPECT_EQ(sequence_number + 1, sender_.impl_->SequenceNumber());
}
-TEST_P(RtpRtcpImpl2Test, SequenceNumberNotAdvancedWhenNotSending) {
+TEST_F(RtpRtcpImpl2Test, SequenceNumberNotAdvancedWhenNotSending) {
const uint16_t sequence_number = sender_.impl_->SequenceNumber();
sender_.impl_->SetSendingMediaStatus(false);
EXPECT_FALSE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid));
@@ -915,7 +888,7 @@
EXPECT_EQ(sequence_number, sender_.impl_->SequenceNumber());
}
-TEST_P(RtpRtcpImpl2Test, PaddingNotAllowedInMiddleOfFrame) {
+TEST_F(RtpRtcpImpl2Test, PaddingNotAllowedInMiddleOfFrame) {
constexpr size_t kPaddingSize = 100;
// Can't send padding before media.
@@ -950,7 +923,7 @@
EXPECT_THAT(sender_.impl_->GeneratePadding(kPaddingSize), SizeIs(Gt(0u)));
}
-TEST_P(RtpRtcpImpl2Test, PaddingTimestampMatchesMedia) {
+TEST_F(RtpRtcpImpl2Test, PaddingTimestampMatchesMedia) {
constexpr size_t kPaddingSize = 100;
const uint32_t kTimestamp = 123;
@@ -971,7 +944,7 @@
EXPECT_EQ(sender_.last_packet().Timestamp(), kTimestamp);
}
-TEST_P(RtpRtcpImpl2Test, AssignsTransportSequenceNumber) {
+TEST_F(RtpRtcpImpl2Test, AssignsTransportSequenceNumber) {
sender_.RegisterHeaderExtension(TransportSequenceNumber::Uri(),
kTransportSequenceNumberExtensionId);
@@ -988,7 +961,7 @@
EXPECT_EQ(first_transport_seq + 1, second_transport_seq);
}
-TEST_P(RtpRtcpImpl2Test, AssignsAbsoluteSendTime) {
+TEST_F(RtpRtcpImpl2Test, AssignsAbsoluteSendTime) {
sender_.RegisterHeaderExtension(AbsoluteSendTime::Uri(),
kAbsoluteSendTimeExtensionId);
@@ -996,7 +969,7 @@
EXPECT_NE(sender_.last_packet().GetExtension<AbsoluteSendTime>(), 0u);
}
-TEST_P(RtpRtcpImpl2Test, AssignsTransmissionTimeOffset) {
+TEST_F(RtpRtcpImpl2Test, AssignsTransmissionTimeOffset) {
sender_.RegisterHeaderExtension(TransmissionOffset::Uri(),
kTransmissionOffsetExtensionId);
@@ -1012,7 +985,7 @@
kOffset.ms() * kCaptureTimeMsToRtpTimestamp);
}
-TEST_P(RtpRtcpImpl2Test, PropagatesSentPacketInfo) {
+TEST_F(RtpRtcpImpl2Test, PropagatesSentPacketInfo) {
sender_.RegisterHeaderExtension(TransportSequenceNumber::Uri(),
kTransportSequenceNumberExtensionId);
int64_t now_ms = time_controller_.GetClock()->TimeInMilliseconds();
@@ -1027,7 +1000,7 @@
Field(&RtpRtcpModule::SentPacket::ssrc, Eq(kSenderSsrc)))));
}
-TEST_P(RtpRtcpImpl2Test, GeneratesFlexfec) {
+TEST_F(RtpRtcpImpl2Test, GeneratesFlexfec) {
constexpr int kFlexfecPayloadType = 118;
constexpr uint32_t kFlexfecSsrc = 17;
const char kNoMid[] = "";
@@ -1060,7 +1033,7 @@
EXPECT_EQ(fec_packet.PayloadType(), kFlexfecPayloadType);
}
-TEST_P(RtpRtcpImpl2Test, GeneratesUlpfec) {
+TEST_F(RtpRtcpImpl2Test, GeneratesUlpfec) {
constexpr int kUlpfecPayloadType = 118;
constexpr int kRedPayloadType = 119;
UlpfecGenerator ulpfec_sender(kRedPayloadType, kUlpfecPayloadType,
@@ -1088,7 +1061,7 @@
EXPECT_EQ(fec_packet.payload()[0], kUlpfecPayloadType);
}
-TEST_P(RtpRtcpImpl2Test, RtpStateReflectsCurrentState) {
+TEST_F(RtpRtcpImpl2Test, RtpStateReflectsCurrentState) {
// Verify that that each of the field of GetRtpState actually reflects
// the current state.
@@ -1136,7 +1109,7 @@
EXPECT_EQ(state.ssrc_has_acked, true);
}
-TEST_P(RtpRtcpImpl2Test, RtxRtpStateReflectsCurrentState) {
+TEST_F(RtpRtcpImpl2Test, RtxRtpStateReflectsCurrentState) {
// Enable RTX.
sender_.impl_->SetStorePacketsStatus(/*enable=*/true, /*number_to_store=*/10);
sender_.impl_->SetRtxSendPayloadType(kRtxPayloadType, kPayloadType);
@@ -1181,9 +1154,4 @@
EXPECT_EQ(rtx_state.sequence_number, rtx_packet.SequenceNumber() + 1);
}
-INSTANTIATE_TEST_SUITE_P(WithAndWithoutOverhead,
- RtpRtcpImpl2Test,
- ::testing::Values(TestConfig{false},
- TestConfig{true}));
-
} // namespace webrtc
diff --git a/modules/rtp_rtcp/source/rtp_sender_egress.cc b/modules/rtp_rtcp/source/rtp_sender_egress.cc
index e81ea8d..c211b5a 100644
--- a/modules/rtp_rtcp/source/rtp_sender_egress.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_egress.cc
@@ -28,14 +28,6 @@
constexpr size_t kRtpSequenceNumberMapMaxEntries = 1 << 13;
constexpr TimeDelta kUpdateInterval =
TimeDelta::Millis(kBitrateStatisticsWindowMs);
-
-bool IsTrialSetTo(const FieldTrialsView* field_trials,
- absl::string_view name,
- absl::string_view value) {
- FieldTrialBasedConfig default_trials;
- auto& trials = field_trials ? *field_trials : default_trials;
- return absl::StartsWith(trials.Lookup(name), value);
-}
} // namespace
RtpSenderEgress::NonPacedPacketSender::NonPacedPacketSender(
@@ -81,10 +73,6 @@
flexfec_ssrc_(config.fec_generator ? config.fec_generator->FecSsrc()
: absl::nullopt),
populate_network2_timestamp_(config.populate_network2_timestamp),
- send_side_bwe_with_overhead_(
- !IsTrialSetTo(config.field_trials,
- "WebRTC-SendSideBwe-WithOverhead",
- "Disabled")),
clock_(config.clock),
packet_history_(packet_history),
transport_(config.outgoing_transport),
@@ -422,15 +410,10 @@
const RtpPacketToSend& packet,
const PacedPacketInfo& pacing_info) {
if (transport_feedback_observer_) {
- size_t packet_size = packet.payload_size() + packet.padding_size();
- if (send_side_bwe_with_overhead_) {
- packet_size = packet.size();
- }
-
RtpPacketSendInfo packet_info;
packet_info.transport_sequence_number = packet_id;
packet_info.rtp_timestamp = packet.Timestamp();
- packet_info.length = packet_size;
+ packet_info.length = packet.size();
packet_info.pacing_info = pacing_info;
packet_info.packet_type = packet.packet_type();
diff --git a/modules/rtp_rtcp/source/rtp_sender_egress.h b/modules/rtp_rtcp/source/rtp_sender_egress.h
index c46f6ae..ab62edd 100644
--- a/modules/rtp_rtcp/source/rtp_sender_egress.h
+++ b/modules/rtp_rtcp/source/rtp_sender_egress.h
@@ -137,7 +137,6 @@
const absl::optional<uint32_t> rtx_ssrc_;
const absl::optional<uint32_t> flexfec_ssrc_;
const bool populate_network2_timestamp_;
- const bool send_side_bwe_with_overhead_;
Clock* const clock_;
RtpPacketHistory* const packet_history_;
Transport* const transport_;
diff --git a/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc
index 30e0c64..cc1c8fe 100644
--- a/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc
@@ -26,6 +26,7 @@
#include "modules/rtp_rtcp/source/rtp_packet_history.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
#include "modules/rtp_rtcp/source/rtp_packet_to_send.h"
+#include "test/explicit_key_value_config.h"
#include "test/gmock.h"
#include "test/gtest.h"
#include "test/time_controller/simulated_time_controller.h"
@@ -53,11 +54,6 @@
kVideoTimingExtensionId,
};
-struct TestConfig {
- explicit TestConfig(bool with_overhead) : with_overhead(with_overhead) {}
- bool with_overhead = false;
-};
-
class MockSendPacketObserver : public SendPacketObserver {
public:
MOCK_METHOD(void, OnSendPacket, (uint16_t, int64_t, uint32_t), (override));
@@ -85,24 +81,6 @@
MOCK_METHOD(void, SendSideDelayUpdated, (int, int, uint32_t), (override));
};
-class FieldTrialConfig : public FieldTrialsRegistry {
- public:
- FieldTrialConfig() : overhead_enabled_(false) {}
- ~FieldTrialConfig() override {}
-
- void SetOverHeadEnabled(bool enabled) { overhead_enabled_ = enabled; }
-
- private:
- std::string GetValue(absl::string_view key) const override {
- if (key == "WebRTC-SendSideBwe-WithOverhead") {
- return overhead_enabled_ ? "Enabled" : "Disabled";
- }
- return "";
- }
-
- bool overhead_enabled_;
-};
-
struct TransmittedPacket {
TransmittedPacket(rtc::ArrayView<const uint8_t> data,
const PacketOptions& packet_options,
@@ -139,16 +117,15 @@
} // namespace
-class RtpSenderEgressTest : public ::testing::TestWithParam<TestConfig> {
+class RtpSenderEgressTest : public ::testing::Test {
protected:
RtpSenderEgressTest()
: time_controller_(kStartTime),
clock_(time_controller_.GetClock()),
transport_(&header_extensions_),
packet_history_(clock_, /*enable_rtx_padding_prioritization=*/true),
- sequence_number_(kStartSequenceNumber) {
- trials_.SetOverHeadEnabled(GetParam().with_overhead);
- }
+ trials_(""),
+ sequence_number_(kStartSequenceNumber) {}
std::unique_ptr<RtpSenderEgress> CreateRtpSenderEgress() {
return std::make_unique<RtpSenderEgress>(DefaultConfig(), &packet_history_);
@@ -200,11 +177,11 @@
RtpHeaderExtensionMap header_extensions_;
TestTransport transport_;
RtpPacketHistory packet_history_;
- FieldTrialConfig trials_;
+ test::ExplicitKeyValueConfig trials_;
uint16_t sequence_number_;
};
-TEST_P(RtpSenderEgressTest, TransportFeedbackObserverGetsCorrectByteCount) {
+TEST_F(RtpSenderEgressTest, TransportFeedbackObserverGetsCorrectByteCount) {
constexpr size_t kRtpOverheadBytesPerPacket = 12 + 8;
constexpr size_t kPayloadSize = 1400;
const uint16_t kTransportSequenceNumber = 17;
@@ -212,9 +189,7 @@
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::Uri());
- const size_t expected_bytes = GetParam().with_overhead
- ? kPayloadSize + kRtpOverheadBytesPerPacket
- : kPayloadSize;
+ const size_t expected_bytes = kPayloadSize + kRtpOverheadBytesPerPacket;
EXPECT_CALL(
feedback_observer_,
@@ -234,7 +209,7 @@
sender->SendPacket(packet.get(), PacedPacketInfo());
}
-TEST_P(RtpSenderEgressTest, PacketOptionsIsRetransmitSetByPacketType) {
+TEST_F(RtpSenderEgressTest, PacketOptionsIsRetransmitSetByPacketType) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
std::unique_ptr<RtpPacketToSend> media_packet = BuildRtpPacket();
@@ -250,7 +225,7 @@
EXPECT_TRUE(transport_.last_packet()->options.is_retransmit);
}
-TEST_P(RtpSenderEgressTest, DoesnSetIncludedInAllocationByDefault) {
+TEST_F(RtpSenderEgressTest, DoesnSetIncludedInAllocationByDefault) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket();
@@ -259,7 +234,7 @@
EXPECT_FALSE(transport_.last_packet()->options.included_in_allocation);
}
-TEST_P(RtpSenderEgressTest,
+TEST_F(RtpSenderEgressTest,
SetsIncludedInFeedbackWhenTransportSequenceNumberExtensionIsRegistered) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
@@ -270,7 +245,7 @@
EXPECT_TRUE(transport_.last_packet()->options.included_in_feedback);
}
-TEST_P(
+TEST_F(
RtpSenderEgressTest,
SetsIncludedInAllocationWhenTransportSequenceNumberExtensionIsRegistered) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
@@ -282,7 +257,7 @@
EXPECT_TRUE(transport_.last_packet()->options.included_in_allocation);
}
-TEST_P(RtpSenderEgressTest,
+TEST_F(RtpSenderEgressTest,
SetsIncludedInAllocationWhenForcedAsPartOfAllocation) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
sender->ForceIncludeSendPacketsInAllocation(true);
@@ -293,7 +268,7 @@
EXPECT_TRUE(transport_.last_packet()->options.included_in_allocation);
}
-TEST_P(RtpSenderEgressTest, OnSendSideDelayUpdated) {
+TEST_F(RtpSenderEgressTest, OnSendSideDelayUpdated) {
StrictMock<MockSendSideDelayObserver> send_side_delay_observer;
RtpRtcpInterface::Configuration config = DefaultConfig();
config.send_side_delay_observer = &send_side_delay_observer;
@@ -335,7 +310,7 @@
PacedPacketInfo());
}
-TEST_P(RtpSenderEgressTest, WritesPacerExitToTimingExtension) {
+TEST_F(RtpSenderEgressTest, WritesPacerExitToTimingExtension) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
header_extensions_.RegisterByUri(kVideoTimingExtensionId,
VideoTimingExtension::Uri());
@@ -355,7 +330,7 @@
EXPECT_EQ(video_timing.pacer_exit_delta_ms, kStoredTimeInMs);
}
-TEST_P(RtpSenderEgressTest, WritesNetwork2ToTimingExtension) {
+TEST_F(RtpSenderEgressTest, WritesNetwork2ToTimingExtension) {
RtpRtcpInterface::Configuration rtp_config = DefaultConfig();
rtp_config.populate_network2_timestamp = true;
auto sender = std::make_unique<RtpSenderEgress>(rtp_config, &packet_history_);
@@ -381,7 +356,7 @@
EXPECT_EQ(video_timing.pacer_exit_delta_ms, kPacerExitMs);
}
-TEST_P(RtpSenderEgressTest, OnSendPacketUpdated) {
+TEST_F(RtpSenderEgressTest, OnSendPacketUpdated) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::Uri());
@@ -395,7 +370,7 @@
sender->SendPacket(packet.get(), PacedPacketInfo());
}
-TEST_P(RtpSenderEgressTest, OnSendPacketNotUpdatedForRetransmits) {
+TEST_F(RtpSenderEgressTest, OnSendPacketNotUpdatedForRetransmits) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::Uri());
@@ -409,7 +384,7 @@
sender->SendPacket(packet.get(), PacedPacketInfo());
}
-TEST_P(RtpSenderEgressTest, ReportsFecRate) {
+TEST_F(RtpSenderEgressTest, ReportsFecRate) {
constexpr int kNumPackets = 10;
constexpr TimeDelta kTimeBetweenPackets = TimeDelta::Millis(33);
@@ -437,7 +412,7 @@
(total_fec_data_sent / (kTimeBetweenPackets * kNumPackets)).bps(), 500);
}
-TEST_P(RtpSenderEgressTest, BitrateCallbacks) {
+TEST_F(RtpSenderEgressTest, BitrateCallbacks) {
class MockBitrateStaticsObserver : public BitrateStatisticsObserver {
public:
MOCK_METHOD(void, Notify, (uint32_t, uint32_t, uint32_t), (override));
@@ -484,7 +459,7 @@
}
}
-TEST_P(RtpSenderEgressTest, DoesNotPutNotRetransmittablePacketsInHistory) {
+TEST_F(RtpSenderEgressTest, DoesNotPutNotRetransmittablePacketsInHistory) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
packet_history_.SetStorePacketsStatus(
RtpPacketHistory::StorageMode::kStoreAndCull, 10);
@@ -495,7 +470,7 @@
EXPECT_FALSE(packet_history_.GetPacketState(packet->SequenceNumber()));
}
-TEST_P(RtpSenderEgressTest, PutsRetransmittablePacketsInHistory) {
+TEST_F(RtpSenderEgressTest, PutsRetransmittablePacketsInHistory) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
packet_history_.SetStorePacketsStatus(
RtpPacketHistory::StorageMode::kStoreAndCull, 10);
@@ -506,7 +481,7 @@
EXPECT_TRUE(packet_history_.GetPacketState(packet->SequenceNumber()));
}
-TEST_P(RtpSenderEgressTest, DoesNotPutNonMediaInHistory) {
+TEST_F(RtpSenderEgressTest, DoesNotPutNonMediaInHistory) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
packet_history_.SetStorePacketsStatus(
RtpPacketHistory::StorageMode::kStoreAndCull, 10);
@@ -535,7 +510,7 @@
EXPECT_FALSE(packet_history_.GetPacketState(padding->SequenceNumber()));
}
-TEST_P(RtpSenderEgressTest, UpdatesSendStatusOfRetransmittedPackets) {
+TEST_F(RtpSenderEgressTest, UpdatesSendStatusOfRetransmittedPackets) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
packet_history_.SetStorePacketsStatus(
RtpPacketHistory::StorageMode::kStoreAndCull, 10);
@@ -559,7 +534,7 @@
EXPECT_TRUE(packet_history_.GetPacketState(media_packet->SequenceNumber()));
}
-TEST_P(RtpSenderEgressTest, StreamDataCountersCallbacks) {
+TEST_F(RtpSenderEgressTest, StreamDataCountersCallbacks) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
const RtpPacketCounter kEmptyCounter;
@@ -644,7 +619,7 @@
time_controller_.AdvanceTime(TimeDelta::Zero());
}
-TEST_P(RtpSenderEgressTest, StreamDataCountersCallbacksFec) {
+TEST_F(RtpSenderEgressTest, StreamDataCountersCallbacksFec) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
const RtpPacketCounter kEmptyCounter;
@@ -694,7 +669,7 @@
time_controller_.AdvanceTime(TimeDelta::Zero());
}
-TEST_P(RtpSenderEgressTest, UpdatesDataCounters) {
+TEST_F(RtpSenderEgressTest, UpdatesDataCounters) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
const RtpPacketCounter kEmptyCounter;
@@ -735,7 +710,7 @@
EXPECT_EQ(rtx_stats.fec, kEmptyCounter);
}
-TEST_P(RtpSenderEgressTest, SendPacketUpdatesExtensions) {
+TEST_F(RtpSenderEgressTest, SendPacketUpdatesExtensions) {
header_extensions_.RegisterByUri(kVideoTimingExtensionId,
VideoTimingExtension::Uri());
header_extensions_.RegisterByUri(kAbsoluteSendTimeExtensionId,
@@ -764,7 +739,7 @@
EXPECT_EQ(timing.pacer_exit_delta_ms, kDiffMs);
}
-TEST_P(RtpSenderEgressTest, SendPacketSetsPacketOptions) {
+TEST_F(RtpSenderEgressTest, SendPacketSetsPacketOptions) {
const uint16_t kPacketId = 42;
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
@@ -791,7 +766,7 @@
EXPECT_TRUE(transport_.last_packet()->options.is_retransmit);
}
-TEST_P(RtpSenderEgressTest, SendPacketUpdatesStats) {
+TEST_F(RtpSenderEgressTest, SendPacketUpdatesStats) {
const size_t kPayloadSize = 1000;
StrictMock<MockSendSideDelayObserver> send_side_delay_observer;
@@ -856,7 +831,7 @@
EXPECT_EQ(rtx_stats.retransmitted.packets, 1u);
}
-TEST_P(RtpSenderEgressTest, TransportFeedbackObserverWithRetransmission) {
+TEST_F(RtpSenderEgressTest, TransportFeedbackObserverWithRetransmission) {
const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::Uri());
@@ -878,7 +853,7 @@
sender->SendPacket(retransmission.get(), PacedPacketInfo());
}
-TEST_P(RtpSenderEgressTest, TransportFeedbackObserverWithRtxRetransmission) {
+TEST_F(RtpSenderEgressTest, TransportFeedbackObserverWithRtxRetransmission) {
const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::Uri());
@@ -902,7 +877,7 @@
sender->SendPacket(rtx_retransmission.get(), PacedPacketInfo());
}
-TEST_P(RtpSenderEgressTest, TransportFeedbackObserverPadding) {
+TEST_F(RtpSenderEgressTest, TransportFeedbackObserverPadding) {
const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::Uri());
@@ -920,7 +895,7 @@
sender->SendPacket(padding.get(), PacedPacketInfo());
}
-TEST_P(RtpSenderEgressTest, TransportFeedbackObserverRtxPadding) {
+TEST_F(RtpSenderEgressTest, TransportFeedbackObserverRtxPadding) {
const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::Uri());
@@ -940,7 +915,7 @@
sender->SendPacket(rtx_padding.get(), PacedPacketInfo());
}
-TEST_P(RtpSenderEgressTest, TransportFeedbackObserverFec) {
+TEST_F(RtpSenderEgressTest, TransportFeedbackObserverFec) {
const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::Uri());
@@ -965,7 +940,7 @@
sender->SendPacket(fec_packet.get(), PacedPacketInfo());
}
-TEST_P(RtpSenderEgressTest, SupportsAbortingRetransmissions) {
+TEST_F(RtpSenderEgressTest, SupportsAbortingRetransmissions) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
packet_history_.SetStorePacketsStatus(
RtpPacketHistory::StorageMode::kStoreAndCull, 10);
@@ -992,9 +967,4 @@
EXPECT_TRUE(packet_history_.GetPacketAndMarkAsPending(media_sequence_number));
}
-INSTANTIATE_TEST_SUITE_P(WithAndWithoutOverhead,
- RtpSenderEgressTest,
- ::testing::Values(TestConfig(false),
- TestConfig(true)));
-
} // namespace webrtc
diff --git a/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc
index 3eacda8..8b41e5b 100644
--- a/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_video_unittest.cc
@@ -153,9 +153,7 @@
class FieldTrials : public FieldTrialsRegistry {
public:
- explicit FieldTrials(bool use_send_side_bwe_with_overhead)
- : use_send_side_bwe_with_overhead_(use_send_side_bwe_with_overhead),
- include_capture_clock_offset_(false) {}
+ FieldTrials() : include_capture_clock_offset_(false) {}
void set_include_capture_clock_offset(bool include_capture_clock_offset) {
include_capture_clock_offset_ = include_capture_clock_offset;
@@ -163,23 +161,19 @@
private:
std::string GetValue(absl::string_view key) const override {
- if (key == "WebRTC-SendSideBwe-WithOverhead") {
- return use_send_side_bwe_with_overhead_ ? "Enabled" : "";
- } else if (key == "WebRTC-IncludeCaptureClockOffset") {
+ if (key == "WebRTC-IncludeCaptureClockOffset") {
return include_capture_clock_offset_ ? "" : "Disabled";
}
return "";
}
- bool use_send_side_bwe_with_overhead_;
bool include_capture_clock_offset_;
};
-class RtpSenderVideoTest : public ::testing::TestWithParam<bool> {
+class RtpSenderVideoTest : public ::testing::Test {
public:
RtpSenderVideoTest()
- : field_trials_(GetParam()),
- fake_clock_(kStartTime),
+ : fake_clock_(kStartTime),
retransmission_rate_limiter_(&fake_clock_, 1000),
rtp_module_(ModuleRtpRtcpImpl2::Create([&] {
RtpRtcpInterface::Configuration config;
@@ -212,7 +206,7 @@
std::unique_ptr<TestRtpSenderVideo> rtp_sender_video_;
};
-TEST_P(RtpSenderVideoTest, KeyFrameHasCVO) {
+TEST_F(RtpSenderVideoTest, KeyFrameHasCVO) {
uint8_t kFrame[kMaxPacketLength];
rtp_module_->RegisterRtpHeaderExtension(VideoOrientation::Uri(),
kVideoRotationExtensionId);
@@ -229,7 +223,7 @@
EXPECT_EQ(kVideoRotation_0, rotation);
}
-TEST_P(RtpSenderVideoTest, TimingFrameHasPacketizationTimstampSet) {
+TEST_F(RtpSenderVideoTest, TimingFrameHasPacketizationTimstampSet) {
uint8_t kFrame[kMaxPacketLength];
const int64_t kPacketizationTimeMs = 100;
const int64_t kEncodeStartDeltaMs = 10;
@@ -257,7 +251,7 @@
EXPECT_EQ(kEncodeFinishDeltaMs, timing.encode_finish_delta_ms);
}
-TEST_P(RtpSenderVideoTest, DeltaFrameHasCVOWhenChanged) {
+TEST_F(RtpSenderVideoTest, DeltaFrameHasCVOWhenChanged) {
uint8_t kFrame[kMaxPacketLength];
rtp_module_->RegisterRtpHeaderExtension(VideoOrientation::Uri(),
kVideoRotationExtensionId);
@@ -281,7 +275,7 @@
EXPECT_EQ(kVideoRotation_0, rotation);
}
-TEST_P(RtpSenderVideoTest, DeltaFrameHasCVOWhenNonZero) {
+TEST_F(RtpSenderVideoTest, DeltaFrameHasCVOWhenNonZero) {
uint8_t kFrame[kMaxPacketLength];
rtp_module_->RegisterRtpHeaderExtension(VideoOrientation::Uri(),
kVideoRotationExtensionId);
@@ -306,7 +300,7 @@
// Make sure rotation is parsed correctly when the Camera (C) and Flip (F) bits
// are set in the CVO byte.
-TEST_P(RtpSenderVideoTest, SendVideoWithCameraAndFlipCVO) {
+TEST_F(RtpSenderVideoTest, SendVideoWithCameraAndFlipCVO) {
// Test extracting rotation when Camera (C) and Flip (F) bits are zero.
EXPECT_EQ(kVideoRotation_0, ConvertCVOByteToVideoRotation(0));
EXPECT_EQ(kVideoRotation_90, ConvertCVOByteToVideoRotation(1));
@@ -325,7 +319,7 @@
ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3));
}
-TEST_P(RtpSenderVideoTest, RetransmissionTypesGeneric) {
+TEST_F(RtpSenderVideoTest, RetransmissionTypesGeneric) {
RTPVideoHeader header;
header.codec = kVideoCodecGeneric;
@@ -340,7 +334,7 @@
kDefaultExpectedRetransmissionTimeMs));
}
-TEST_P(RtpSenderVideoTest, RetransmissionTypesH264) {
+TEST_F(RtpSenderVideoTest, RetransmissionTypesH264) {
RTPVideoHeader header;
header.video_type_header.emplace<RTPVideoHeaderH264>().packetization_mode =
H264PacketizationMode::NonInterleaved;
@@ -357,7 +351,7 @@
kDefaultExpectedRetransmissionTimeMs));
}
-TEST_P(RtpSenderVideoTest, RetransmissionTypesVP8BaseLayer) {
+TEST_F(RtpSenderVideoTest, RetransmissionTypesVP8BaseLayer) {
RTPVideoHeader header;
header.codec = kVideoCodecVP8;
auto& vp8_header = header.video_type_header.emplace<RTPVideoHeaderVP8>();
@@ -380,7 +374,7 @@
kDefaultExpectedRetransmissionTimeMs));
}
-TEST_P(RtpSenderVideoTest, RetransmissionTypesVP8HigherLayers) {
+TEST_F(RtpSenderVideoTest, RetransmissionTypesVP8HigherLayers) {
RTPVideoHeader header;
header.codec = kVideoCodecVP8;
@@ -400,7 +394,7 @@
}
}
-TEST_P(RtpSenderVideoTest, RetransmissionTypesVP9) {
+TEST_F(RtpSenderVideoTest, RetransmissionTypesVP9) {
RTPVideoHeader header;
header.codec = kVideoCodecVP9;
@@ -420,7 +414,7 @@
}
}
-TEST_P(RtpSenderVideoTest, ConditionalRetransmit) {
+TEST_F(RtpSenderVideoTest, ConditionalRetransmit) {
const int64_t kFrameIntervalMs = 33;
const int64_t kRttMs = (kFrameIntervalMs * 3) / 2;
const uint8_t kSettings =
@@ -478,7 +472,7 @@
rtp_sender_video_->AllowRetransmission(header, kSettings, kRttMs));
}
-TEST_P(RtpSenderVideoTest, ConditionalRetransmitLimit) {
+TEST_F(RtpSenderVideoTest, ConditionalRetransmitLimit) {
const int64_t kFrameIntervalMs = 200;
const int64_t kRttMs = (kFrameIntervalMs * 3) / 2;
const int32_t kSettings =
@@ -511,7 +505,7 @@
rtp_sender_video_->AllowRetransmission(header, kSettings, kRttMs));
}
-TEST_P(RtpSenderVideoTest, SendsDependencyDescriptorWhenVideoStructureIsSet) {
+TEST_F(RtpSenderVideoTest, SendsDependencyDescriptorWhenVideoStructureIsSet) {
const int64_t kFrameId = 100000;
uint8_t kFrame[100];
rtp_module_->RegisterRtpHeaderExtension(
@@ -579,7 +573,7 @@
ElementsAre(1, 501));
}
-TEST_P(RtpSenderVideoTest,
+TEST_F(RtpSenderVideoTest,
SkipsDependencyDescriptorOnDeltaFrameWhenFailedToAttachToKeyFrame) {
const int64_t kFrameId = 100000;
uint8_t kFrame[100];
@@ -633,7 +627,7 @@
.HasExtension<RtpDependencyDescriptorExtension>());
}
-TEST_P(RtpSenderVideoTest, PropagatesChainDiffsIntoDependencyDescriptor) {
+TEST_F(RtpSenderVideoTest, PropagatesChainDiffsIntoDependencyDescriptor) {
const int64_t kFrameId = 100000;
uint8_t kFrame[100];
rtp_module_->RegisterRtpHeaderExtension(
@@ -666,7 +660,7 @@
ContainerEq(generic.chain_diffs));
}
-TEST_P(RtpSenderVideoTest,
+TEST_F(RtpSenderVideoTest,
PropagatesActiveDecodeTargetsIntoDependencyDescriptor) {
const int64_t kFrameId = 100000;
uint8_t kFrame[100];
@@ -700,7 +694,7 @@
EXPECT_EQ(descriptor_key.active_decode_targets_bitmask, 0b01u);
}
-TEST_P(RtpSenderVideoTest,
+TEST_F(RtpSenderVideoTest,
SetDiffentVideoStructureAvoidsCollisionWithThePreviousStructure) {
const int64_t kFrameId = 100000;
uint8_t kFrame[100];
@@ -774,7 +768,7 @@
descriptor_key2.attached_structure.get(), &descriptor_delta));
}
-TEST_P(RtpSenderVideoTest,
+TEST_F(RtpSenderVideoTest,
AuthenticateVideoHeaderWhenDependencyDescriptorExtensionIsUsed) {
static constexpr size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize] = {1, 2, 3, 4};
@@ -817,7 +811,7 @@
.HasExtension<RtpDependencyDescriptorExtension>());
}
-TEST_P(RtpSenderVideoTest, PopulateGenericFrameDescriptor) {
+TEST_F(RtpSenderVideoTest, PopulateGenericFrameDescriptor) {
const int64_t kFrameId = 100000;
uint8_t kFrame[100];
rtp_module_->RegisterRtpHeaderExtension(
@@ -874,17 +868,17 @@
EXPECT_EQ(transport_.last_sent_packet().payload_size(), 1 + kFrameSize);
}
-TEST_P(RtpSenderVideoTest,
+TEST_F(RtpSenderVideoTest,
UsesMinimalVp8DescriptorWhenGenericFrameDescriptorExtensionIsUsed00) {
UsesMinimalVp8DescriptorWhenGenericFrameDescriptorExtensionIsUsed(0);
}
-TEST_P(RtpSenderVideoTest,
+TEST_F(RtpSenderVideoTest,
UsesMinimalVp8DescriptorWhenGenericFrameDescriptorExtensionIsUsed01) {
UsesMinimalVp8DescriptorWhenGenericFrameDescriptorExtensionIsUsed(1);
}
-TEST_P(RtpSenderVideoTest, VideoLayersAllocationWithResolutionSentOnKeyFrames) {
+TEST_F(RtpSenderVideoTest, VideoLayersAllocationWithResolutionSentOnKeyFrames) {
const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize];
rtp_module_->RegisterRtpHeaderExtension(
@@ -920,7 +914,7 @@
.GetExtension<RtpVideoLayersAllocationExtension>(&sent_allocation));
}
-TEST_P(RtpSenderVideoTest,
+TEST_F(RtpSenderVideoTest,
VideoLayersAllocationWithoutResolutionSentOnDeltaWhenUpdated) {
const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize];
@@ -968,7 +962,7 @@
SizeIs(1));
}
-TEST_P(RtpSenderVideoTest,
+TEST_F(RtpSenderVideoTest,
VideoLayersAllocationWithResolutionSentOnDeltaWhenSpatialLayerAdded) {
const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize];
@@ -1014,7 +1008,7 @@
EXPECT_TRUE(sent_allocation.resolution_and_frame_rate_is_valid);
}
-TEST_P(RtpSenderVideoTest,
+TEST_F(RtpSenderVideoTest,
VideoLayersAllocationWithResolutionSentOnLargeFrameRateChange) {
const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize];
@@ -1056,7 +1050,7 @@
EXPECT_EQ(sent_allocation.active_spatial_layers[0].frame_rate_fps, 20);
}
-TEST_P(RtpSenderVideoTest,
+TEST_F(RtpSenderVideoTest,
VideoLayersAllocationWithoutResolutionSentOnSmallFrameRateChange) {
const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize];
@@ -1097,7 +1091,7 @@
EXPECT_FALSE(sent_allocation.resolution_and_frame_rate_is_valid);
}
-TEST_P(RtpSenderVideoTest, VideoLayersAllocationSentOnDeltaFramesOnlyOnUpdate) {
+TEST_F(RtpSenderVideoTest, VideoLayersAllocationSentOnDeltaFramesOnlyOnUpdate) {
const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize];
rtp_module_->RegisterRtpHeaderExtension(
@@ -1139,7 +1133,7 @@
.GetExtension<RtpVideoLayersAllocationExtension>(&sent_allocation));
}
-TEST_P(RtpSenderVideoTest, VideoLayersAllocationNotSentOnHigherTemporalLayers) {
+TEST_F(RtpSenderVideoTest, VideoLayersAllocationNotSentOnHigherTemporalLayers) {
const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize];
rtp_module_->RegisterRtpHeaderExtension(
@@ -1175,7 +1169,7 @@
.HasExtension<RtpVideoLayersAllocationExtension>());
}
-TEST_P(RtpSenderVideoTest, AbsoluteCaptureTime) {
+TEST_F(RtpSenderVideoTest, AbsoluteCaptureTime) {
constexpr int64_t kAbsoluteCaptureTimestampMs = 12345678;
uint8_t kFrame[kMaxPacketLength];
rtp_module_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::Uri(),
@@ -1212,7 +1206,7 @@
// Essentially the same test as AbsoluteCaptureTime but with a field trial.
// After the field trial is experimented, we will remove AbsoluteCaptureTime.
-TEST_P(RtpSenderVideoTest, AbsoluteCaptureTimeWithCaptureClockOffset) {
+TEST_F(RtpSenderVideoTest, AbsoluteCaptureTimeWithCaptureClockOffset) {
field_trials_.set_include_capture_clock_offset(true);
rtp_sender_video_ = std::make_unique<TestRtpSenderVideo>(
&fake_clock_, rtp_module_->RtpSender(), field_trials_);
@@ -1250,7 +1244,7 @@
EXPECT_EQ(absolute_capture_time->estimated_capture_clock_offset, 0);
}
-TEST_P(RtpSenderVideoTest, AbsoluteCaptureTimeWithExtensionProvided) {
+TEST_F(RtpSenderVideoTest, AbsoluteCaptureTimeWithExtensionProvided) {
constexpr AbsoluteCaptureTime kAbsoluteCaptureTime = {
123,
absl::optional<int64_t>(456),
@@ -1283,7 +1277,7 @@
EXPECT_EQ(absolute_capture_time, kAbsoluteCaptureTime);
}
-TEST_P(RtpSenderVideoTest, PopulatesPlayoutDelay) {
+TEST_F(RtpSenderVideoTest, PopulatesPlayoutDelay) {
// Single packet frames.
constexpr size_t kPacketSize = 123;
uint8_t kFrame[kPacketSize];
@@ -1340,7 +1334,7 @@
EXPECT_EQ(received_delay, kExpectedDelay);
}
-TEST_P(RtpSenderVideoTest, SendGenericVideo) {
+TEST_F(RtpSenderVideoTest, SendGenericVideo) {
const uint8_t kPayloadType = 127;
const VideoCodecType kCodecType = VideoCodecType::kVideoCodecGeneric;
const uint8_t kPayload[] = {47, 11, 32, 93, 89};
@@ -1373,7 +1367,7 @@
EXPECT_THAT(sent_payload.subview(1), ElementsAreArray(kDeltaPayload));
}
-TEST_P(RtpSenderVideoTest, SendRawVideo) {
+TEST_F(RtpSenderVideoTest, SendRawVideo) {
const uint8_t kPayloadType = 111;
const uint8_t kPayload[] = {11, 22, 33, 44, 55};
@@ -1389,10 +1383,6 @@
EXPECT_THAT(sent_payload, ElementsAreArray(kPayload));
}
-INSTANTIATE_TEST_SUITE_P(WithAndWithoutOverhead,
- RtpSenderVideoTest,
- ::testing::Bool());
-
class RtpSenderVideoWithFrameTransformerTest : public ::testing::Test {
public:
RtpSenderVideoWithFrameTransformerTest()
diff --git a/sdk/objc/api/peerconnection/RTCFieldTrials.h b/sdk/objc/api/peerconnection/RTCFieldTrials.h
index a42a961..3e8fcc8 100644
--- a/sdk/objc/api/peerconnection/RTCFieldTrials.h
+++ b/sdk/objc/api/peerconnection/RTCFieldTrials.h
@@ -13,8 +13,7 @@
#import "RTCMacros.h"
/** The only valid value for the following if set is kRTCFieldTrialEnabledValue. */
-RTC_EXTERN NSString * const kRTCFieldTrialAudioForceABWENoTWCCKey;
-RTC_EXTERN NSString * const kRTCFieldTrialSendSideBweWithOverheadKey;
+RTC_EXTERN NSString *const kRTCFieldTrialAudioForceABWENoTWCCKey;
RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03AdvertisedKey;
RTC_EXTERN NSString * const kRTCFieldTrialFlexFec03Key;
RTC_EXTERN NSString * const kRTCFieldTrialH264HighProfileKey;
diff --git a/sdk/objc/api/peerconnection/RTCFieldTrials.mm b/sdk/objc/api/peerconnection/RTCFieldTrials.mm
index e16d39e..193da9e 100644
--- a/sdk/objc/api/peerconnection/RTCFieldTrials.mm
+++ b/sdk/objc/api/peerconnection/RTCFieldTrials.mm
@@ -16,8 +16,7 @@
#include "system_wrappers/include/field_trial.h"
-NSString * const kRTCFieldTrialAudioForceABWENoTWCCKey = @"WebRTC-Audio-ABWENoTWCC";
-NSString * const kRTCFieldTrialSendSideBweWithOverheadKey = @"WebRTC-SendSideBwe-WithOverhead";
+NSString *const kRTCFieldTrialAudioForceABWENoTWCCKey = @"WebRTC-Audio-ABWENoTWCC";
NSString * const kRTCFieldTrialFlexFec03AdvertisedKey = @"WebRTC-FlexFEC-03-Advertised";
NSString * const kRTCFieldTrialFlexFec03Key = @"WebRTC-FlexFEC-03";
NSString * const kRTCFieldTrialH264HighProfileKey = @"WebRTC-H264HighProfile";
diff --git a/test/scenario/audio_stream.cc b/test/scenario/audio_stream.cc
index ea170bc..891ef4b 100644
--- a/test/scenario/audio_stream.cc
+++ b/test/scenario/audio_stream.cc
@@ -129,10 +129,8 @@
sender_->SendTask([&] {
send_stream_ = sender_->call_->CreateAudioSendStream(send_config);
- if (field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")) {
- sender->call_->OnAudioTransportOverheadChanged(
- sender_->transport_->packet_overhead().bytes());
- }
+ sender->call_->OnAudioTransportOverheadChanged(
+ sender_->transport_->packet_overhead().bytes());
});
}
diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc
index 958d04e..923c318 100644
--- a/video/video_send_stream_tests.cc
+++ b/video/video_send_stream_tests.cc
@@ -2694,9 +2694,7 @@
// bitrates than expected by this test, due to encoder pushback and subtracted
// overhead.
webrtc::test::ScopedKeyValueConfig field_trials(
- field_trials_,
- "WebRTC-VideoRateControl/bitrate_adjuster:false/"
- "WebRTC-SendSideBwe-WithOverhead/Disabled/");
+ field_trials_, "WebRTC-VideoRateControl/bitrate_adjuster:false/");
class EncoderBitrateThresholdObserver : public test::SendTest,
public VideoBitrateAllocatorFactory,
@@ -2722,8 +2720,8 @@
EXPECT_LE(codec.startBitrate, codec.maxBitrate);
if (num_rate_allocator_creations_ == 0) {
EXPECT_EQ(static_cast<unsigned int>(kMinBitrateKbps), codec.minBitrate);
- EXPECT_EQ(static_cast<unsigned int>(kStartBitrateKbps),
- codec.startBitrate);
+ EXPECT_NEAR(static_cast<unsigned int>(kStartBitrateKbps),
+ codec.startBitrate, 10);
EXPECT_EQ(static_cast<unsigned int>(kMaxBitrateKbps), codec.maxBitrate);
} else if (num_rate_allocator_creations_ == 1) {
EXPECT_EQ(static_cast<unsigned int>(kLowerMaxBitrateKbps),
@@ -2749,8 +2747,8 @@
EXPECT_EQ(0, num_encoder_initializations_);
EXPECT_EQ(static_cast<unsigned int>(kMinBitrateKbps),
codecSettings->minBitrate);
- EXPECT_EQ(static_cast<unsigned int>(kStartBitrateKbps),
- codecSettings->startBitrate);
+ EXPECT_NEAR(static_cast<unsigned int>(kStartBitrateKbps),
+ codecSettings->startBitrate, 10);
EXPECT_EQ(static_cast<unsigned int>(kMaxBitrateKbps),
codecSettings->maxBitrate);
@@ -2775,14 +2773,18 @@
FakeEncoder::SetRates(parameters);
}
- void WaitForSetRates(uint32_t expected_bitrate) {
+ void WaitForSetRates(uint32_t expected_bitrate, int abs_error) {
// Wait for the expected rate to be set. In some cases there can be
// more than one update pending, in which case we keep waiting
// until the correct value has been observed.
+ // The target_bitrate_ is reduced by the calculated packet overhead.
const int64_t start_time = rtc::TimeMillis();
do {
MutexLock lock(&mutex_);
- if (target_bitrate_ == expected_bitrate) {
+
+ int error = target_bitrate_ - expected_bitrate;
+ if ((error < 0 && error >= -abs_error) ||
+ (error >= 0 && error <= abs_error)) {
return;
}
} while (bitrate_changed_event_.Wait(
@@ -2790,7 +2792,7 @@
VideoSendStreamTest::kDefaultTimeout -
TimeDelta::Millis(rtc::TimeMillis() - start_time))));
MutexLock lock(&mutex_);
- EXPECT_EQ(target_bitrate_, expected_bitrate)
+ EXPECT_NEAR(target_bitrate_, expected_bitrate, abs_error)
<< "Timed out while waiting encoder rate to be set.";
}
@@ -2832,7 +2834,7 @@
<< "Timed out while waiting for rate allocator to be created.";
ASSERT_TRUE(init_encode_event_.Wait(VideoSendStreamTest::kDefaultTimeout))
<< "Timed out while waiting for encoder to be configured.";
- WaitForSetRates(kStartBitrateKbps);
+ WaitForSetRates(kStartBitrateKbps, 80);
BitrateConstraints bitrate_config;
bitrate_config.start_bitrate_bps = kIncreasedStartBitrateKbps * 1000;
bitrate_config.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000;
@@ -2841,7 +2843,7 @@
bitrate_config);
});
// Encoder rate is capped by EncoderConfig max_bitrate_bps.
- WaitForSetRates(kMaxBitrateKbps);
+ WaitForSetRates(kMaxBitrateKbps, 10);
encoder_config_.max_bitrate_bps = kLowerMaxBitrateKbps * 1000;
SendTask(task_queue_, [&]() {
send_stream_->ReconfigureVideoEncoder(encoder_config_.Copy());
@@ -2851,7 +2853,7 @@
EXPECT_EQ(2, num_rate_allocator_creations_)
<< "Rate allocator should have been recreated.";
- WaitForSetRates(kLowerMaxBitrateKbps);
+ WaitForSetRates(kLowerMaxBitrateKbps, 10);
EXPECT_EQ(1, num_encoder_initializations_);
encoder_config_.max_bitrate_bps = kIncreasedMaxBitrateKbps * 1000;
@@ -2865,7 +2867,7 @@
// Expected target bitrate is the start bitrate set in the call to
// call_->GetTransportControllerSend()->SetSdpBitrateParameters.
- WaitForSetRates(kIncreasedStartBitrateKbps);
+ WaitForSetRates(kIncreasedStartBitrateKbps, 10);
EXPECT_EQ(1, num_encoder_initializations_);
}
@@ -3701,8 +3703,6 @@
// testing that the maximum possible target payload rate is smaller than the
// maximum bandwidth estimate by the overhead rate.
TEST_F(VideoSendStreamTest, RemoveOverheadFromBandwidth) {
- test::ScopedFieldTrials override_field_trials(
- "WebRTC-SendSideBwe-WithOverhead/Enabled/");
class RemoveOverheadFromBandwidthTest : public test::EndToEndTest,
public test::FakeEncoder {
public: