Clean up WebRTC-Pacer-KeyframeFlushing trial. This makes the "Enabled" path the new behavior, and removes all references to the launched field trial. Bug: webrtc:42221435 Change-Id: Icd32d0a5a464e63c30d43e35957add6b56f097d7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/489060 Commit-Queue: Erik Språng <sprang@webrtc.org> Reviewed-by: Zoé Lepaul <zlep@webrtc.org> Auto-Submit: Erik Språng <sprang@webrtc.org> Commit-Queue: Zoé Lepaul <zlep@webrtc.org> Cr-Commit-Position: refs/heads/main@{#48186}
diff --git a/experiments/field_trials.py b/experiments/field_trials.py index a429fec..9ce3485 100755 --- a/experiments/field_trials.py +++ b/experiments/field_trials.py
@@ -170,9 +170,6 @@ FieldTrial('WebRTC-Pacer-FastRetransmissions', 40235589, date(2024, 4, 1)), - FieldTrial('WebRTC-Pacer-KeyframeFlushing', - 42221435, - date(2024, 4, 1)), FieldTrial('WebRTC-PayloadTypesInTransport', 360058654, date(2025, 9, 11)),
diff --git a/modules/pacing/pacing_controller.cc b/modules/pacing/pacing_controller.cc index 833879d..11c0af2 100644 --- a/modules/pacing/pacing_controller.cc +++ b/modules/pacing/pacing_controller.cc
@@ -68,9 +68,6 @@ field_trials.IsEnabled("WebRTC-Pacer-IgnoreTransportOverhead")), fast_retransmissions_( field_trials.IsEnabled("WebRTC-Pacer-FastRetransmissions")), - keyframe_flushing_( - configuration.keyframe_flushing || - field_trials.IsEnabled("WebRTC-Pacer-KeyframeFlushing")), transport_overhead_per_packet_(DataSize::Zero()), send_burst_interval_(configuration.initial_pacer_config ? configuration.initial_pacer_config->time_window @@ -202,8 +199,7 @@ << "SetPacingRate must be called before InsertPacket."; RTC_CHECK(packet->packet_type()); - if (keyframe_flushing_ && - packet->packet_type() == RtpPacketMediaType::kVideo && + if (packet->packet_type() == RtpPacketMediaType::kVideo && packet->is_key_frame() && packet->is_first_packet_of_frame() && !packet_queue_.HasKeyframePackets(packet->Ssrc())) { // First packet of a keyframe (and no keyframe packets currently in the
diff --git a/modules/pacing/pacing_controller.h b/modules/pacing/pacing_controller.h index 724ceae..b918d61 100644 --- a/modules/pacing/pacing_controller.h +++ b/modules/pacing/pacing_controller.h
@@ -102,9 +102,8 @@ // SetPacingRates() so that this limit will be upheld if // `drain_large_queues` is set. TimeDelta queue_time_limit = kMaxExpectedQueueLength; - // If the first packet of a keyframe is enqueued on a RTP stream, pacer - // skips forward to that packet and drops other enqueued packets on that - // stream, unless a keyframe is already being paced. + // TODO(bugs.webrtc.org/42221435): Remove when downstream usage is gone. + [[deprecated("Keyframe flushing is now always enabled.")]] bool keyframe_flushing = false; // Audio retransmission is prioritized before video retransmission packets. bool prioritize_audio_retransmission = false; @@ -249,7 +248,6 @@ const bool pace_audio_; const bool ignore_transport_overhead_; const bool fast_retransmissions_; - const bool keyframe_flushing_; DataSize transport_overhead_per_packet_; TimeDelta send_burst_interval_;
diff --git a/modules/pacing/pacing_controller_unittest.cc b/modules/pacing/pacing_controller_unittest.cc index 0370248..416ccf1 100644 --- a/modules/pacing/pacing_controller_unittest.cc +++ b/modules/pacing/pacing_controller_unittest.cc
@@ -2482,9 +2482,7 @@ const uint32_t kSsrc = 12345; const uint32_t kRtxSsrc = 12346; - const FieldTrials trials = - CreateTestFieldTrials("WebRTC-Pacer-KeyframeFlushing/Enabled/"); - auto pacer = std::make_unique<PacingController>(&clock_, &callback_, trials); + auto pacer = std::make_unique<PacingController>(&clock_, &callback_, trials_); EXPECT_CALL(callback_, GetRtxSsrcForMedia(kSsrc)) .WillRepeatedly(Return(kRtxSsrc)); pacer->SetPacerConfig(