commit a5972acde92fc46b7e72bddd13202d68ba5eeb3b
parent f2ef102ef44b071e01fca36b22b70d414a7f06f0
Author: Dan Baker <dbaker@mozilla.com>
Date: Mon, 27 Oct 2025 14:44:25 -0600
Bug 1995393 - Vendor libwebrtc from b2ec6c2eb5
Upstream commit: https://webrtc.googlesource.com/src/+/b2ec6c2eb5a3b2647159032d11ee0c70ab21e708
Replace erase-remove idiom with std::erase and std::erase_if (5)
Bug: webrtc:438403372
Change-Id: I7fdc74b5c53b1713d68f1f3c59052f131478154c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/405420
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45469}
Diffstat:
8 files changed, 49 insertions(+), 89 deletions(-)
diff --git a/third_party/libwebrtc/README.mozilla.last-vendor b/third_party/libwebrtc/README.mozilla.last-vendor
@@ -1,4 +1,4 @@
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc
-libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-27T20:41:49.543935+00:00.
+libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-27T20:44:12.724304+00:00.
# base of lastest vendoring
-0deb9d6d33
+b2ec6c2eb5
diff --git a/third_party/libwebrtc/pc/codec_vendor.cc b/third_party/libwebrtc/pc/codec_vendor.cc
@@ -9,7 +9,6 @@
*/
#include "pc/codec_vendor.h"
-#include <algorithm>
#include <cstddef>
#include <map>
#include <optional>
@@ -79,11 +78,8 @@ std::optional<Codec> FindMatchingCodec(const CodecList& codecs1,
}
void StripCNCodecs(CodecList& audio_codecs) {
- audio_codecs.writable_codecs().erase(
- std::remove_if(
- audio_codecs.begin(), audio_codecs.end(),
- [](const Codec& codec) { return IsComfortNoiseCodec(codec); }),
- audio_codecs.end());
+ std::erase_if(audio_codecs.writable_codecs(),
+ [](const Codec& codec) { return IsComfortNoiseCodec(codec); });
}
bool IsMediaContentOfType(const ContentInfo* content, MediaType media_type) {
diff --git a/third_party/libwebrtc/pc/legacy_stats_collector.cc b/third_party/libwebrtc/pc/legacy_stats_collector.cc
@@ -10,7 +10,6 @@
#include "pc/legacy_stats_collector.h"
-#include <algorithm>
#include <cmath>
#include <cstddef>
#include <cstdint>
@@ -624,13 +623,11 @@ void LegacyStatsCollector::RemoveLocalAudioTrack(
AudioTrackInterface* audio_track,
uint32_t ssrc) {
RTC_DCHECK(audio_track != nullptr);
- local_audio_tracks_.erase(
- std::remove_if(
- local_audio_tracks_.begin(), local_audio_tracks_.end(),
- [audio_track, ssrc](const LocalAudioTrackVector::value_type& track) {
- return track.first == audio_track && track.second == ssrc;
- }),
- local_audio_tracks_.end());
+ std::erase_if(
+ local_audio_tracks_,
+ [audio_track, ssrc](const LocalAudioTrackVector::value_type& track) {
+ return track.first == audio_track && track.second == ssrc;
+ });
}
void LegacyStatsCollector::GetStats(MediaStreamTrackInterface* track,
diff --git a/third_party/libwebrtc/pc/media_session.cc b/third_party/libwebrtc/pc/media_session.cc
@@ -77,13 +77,10 @@ webrtc::RtpHeaderExtensions RtpHeaderExtensionsFromCapabilities(
std::vector<webrtc::RtpHeaderExtensionCapability>
UnstoppedRtpHeaderExtensionCapabilities(
std::vector<webrtc::RtpHeaderExtensionCapability> capabilities) {
- capabilities.erase(
- std::remove_if(
- capabilities.begin(), capabilities.end(),
- [](const webrtc::RtpHeaderExtensionCapability& capability) {
- return capability.direction == RtpTransceiverDirection::kStopped;
- }),
- capabilities.end());
+ std::erase_if(
+ capabilities, [](const webrtc::RtpHeaderExtensionCapability& capability) {
+ return capability.direction == RtpTransceiverDirection::kStopped;
+ });
return capabilities;
}
@@ -688,14 +685,11 @@ MediaSessionDescriptionFactory::filtered_rtp_header_extensions(
RtpHeaderExtensions extensions) const {
if (!is_unified_plan_) {
// Remove extensions only supported with unified-plan.
- extensions.erase(
- std::remove_if(extensions.begin(), extensions.end(),
- [](const webrtc::RtpExtension& extension) {
- return extension.uri == RtpExtension::kMidUri ||
- extension.uri == RtpExtension::kRidUri ||
- extension.uri == RtpExtension::kRepairedRidUri;
- }),
- extensions.end());
+ std::erase_if(extensions, [](const webrtc::RtpExtension& extension) {
+ return extension.uri == RtpExtension::kMidUri ||
+ extension.uri == RtpExtension::kRidUri ||
+ extension.uri == RtpExtension::kRepairedRidUri;
+ });
}
return extensions;
}
diff --git a/third_party/libwebrtc/pc/peer_connection_media_unittest.cc b/third_party/libwebrtc/pc/peer_connection_media_unittest.cc
@@ -12,7 +12,6 @@
// PeerConnection and the underlying media engine, as well as tests that check
// the media-related aspects of SDP.
-#include <algorithm>
#include <functional>
#include <iterator>
#include <memory>
@@ -1578,13 +1577,11 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan,
auto codecs =
caller->pc_factory()->GetRtpSenderCapabilities(MediaType::AUDIO).codecs;
auto codecs_only_rtx_red_fec = codecs;
- auto it = std::remove_if(
- codecs_only_rtx_red_fec.begin(), codecs_only_rtx_red_fec.end(),
- [](const RtpCodecCapability& codec) {
+ std::erase_if(
+ codecs_only_rtx_red_fec, [](const RtpCodecCapability& codec) {
return !(codec.name == kRtxCodecName || codec.name == kRedCodecName ||
codec.name == kUlpfecCodecName);
});
- codecs_only_rtx_red_fec.erase(it, codecs_only_rtx_red_fec.end());
ASSERT_THAT(codecs_only_rtx_red_fec.size(), Gt(0));
auto result = transceiver->SetCodecPreferences(codecs_only_rtx_red_fec);
EXPECT_EQ(RTCErrorType::INVALID_MODIFICATION, result.type());
@@ -1656,13 +1653,11 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan,
auto codecs =
caller->pc_factory()->GetRtpSenderCapabilities(MediaType::VIDEO).codecs;
auto codecs_only_rtx_red_fec = codecs;
- auto it = std::remove_if(
- codecs_only_rtx_red_fec.begin(), codecs_only_rtx_red_fec.end(),
- [](const RtpCodecCapability& codec) {
+ std::erase_if(
+ codecs_only_rtx_red_fec, [](const RtpCodecCapability& codec) {
return !(codec.name == kRtxCodecName || codec.name == kRedCodecName ||
codec.name == kUlpfecCodecName);
});
- codecs_only_rtx_red_fec.erase(it, codecs_only_rtx_red_fec.end());
auto result = transceiver->SetCodecPreferences(codecs_only_rtx_red_fec);
EXPECT_EQ(RTCErrorType::INVALID_MODIFICATION, result.type());
@@ -1749,13 +1744,10 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan, SetCodecPreferencesVideoWithRtx) {
// Check that RTX codec is properly added
auto video_codecs_vpx_rtx = sender_video_codecs;
- auto it = std::remove_if(
- video_codecs_vpx_rtx.begin(), video_codecs_vpx_rtx.end(),
- [](const RtpCodecCapability& codec) {
- return codec.name != kRtxCodecName && codec.name != kVp8CodecName &&
- codec.name != kVp9CodecName;
- });
- video_codecs_vpx_rtx.erase(it, video_codecs_vpx_rtx.end());
+ std::erase_if(video_codecs_vpx_rtx, [](const RtpCodecCapability& codec) {
+ return codec.name != kRtxCodecName && codec.name != kVp8CodecName &&
+ codec.name != kVp9CodecName;
+ });
absl::c_reverse(video_codecs_vpx_rtx);
EXPECT_EQ(video_codecs_vpx_rtx.size(), 3u); // VP8, VP9, RTX
EXPECT_TRUE(
@@ -1794,12 +1786,9 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan,
auto send_transceiver = caller->pc()->GetTransceivers().front();
auto video_codecs_vpx = video_codecs;
- auto it = std::remove_if(video_codecs_vpx.begin(), video_codecs_vpx.end(),
- [](const RtpCodecCapability& codec) {
- return codec.name != kVp8CodecName &&
- codec.name != kVp9CodecName;
- });
- video_codecs_vpx.erase(it, video_codecs_vpx.end());
+ std::erase_if(video_codecs_vpx, [](const RtpCodecCapability& codec) {
+ return codec.name != kVp8CodecName && codec.name != kVp9CodecName;
+ });
EXPECT_EQ(video_codecs_vpx.size(), 2u); // VP8, VP9
EXPECT_TRUE(send_transceiver->SetCodecPreferences(video_codecs_vpx).ok());
@@ -1815,13 +1804,10 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan,
auto recv_transceiver = callee->pc()->GetTransceivers().front();
auto video_codecs_vp8_rtx = video_codecs;
- it = std::remove_if(video_codecs_vp8_rtx.begin(), video_codecs_vp8_rtx.end(),
- [](const RtpCodecCapability& codec) {
- bool r = codec.name != kVp8CodecName &&
- codec.name != kRtxCodecName;
- return r;
- });
- video_codecs_vp8_rtx.erase(it, video_codecs_vp8_rtx.end());
+ std::erase_if(video_codecs_vp8_rtx, [](const RtpCodecCapability& codec) {
+ bool r = codec.name != kVp8CodecName && codec.name != kRtxCodecName;
+ return r;
+ });
EXPECT_EQ(video_codecs_vp8_rtx.size(), 2u); // VP8, RTX
recv_transceiver->SetCodecPreferences(video_codecs_vp8_rtx);
@@ -1859,12 +1845,9 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan,
auto send_transceiver = caller->pc()->GetTransceivers().front();
auto video_codecs_vpx = video_codecs;
- auto it = std::remove_if(video_codecs_vpx.begin(), video_codecs_vpx.end(),
- [](const RtpCodecCapability& codec) {
- return codec.name != kVp8CodecName &&
- codec.name != kVp9CodecName;
- });
- video_codecs_vpx.erase(it, video_codecs_vpx.end());
+ std::erase_if(video_codecs_vpx, [](const RtpCodecCapability& codec) {
+ return codec.name != kVp8CodecName && codec.name != kVp9CodecName;
+ });
EXPECT_EQ(video_codecs_vpx.size(), 2u); // VP8, VP9
EXPECT_TRUE(send_transceiver->SetCodecPreferences(video_codecs_vpx).ok());
@@ -2103,12 +2086,10 @@ TEST_F(PeerConnectionMediaTestUnifiedPlan, SetCodecPreferencesVideoNoRtx) {
.ok());
auto capabilities =
caller->pc_factory()->GetRtpSenderCapabilities(MediaType::VIDEO);
- auto it =
- std::remove_if(capabilities.codecs.begin(), capabilities.codecs.end(),
- [](const RtpCodecCapability& codec) {
- return codec.name == kRtxCodecName;
- });
- capabilities.codecs.erase(it, capabilities.codecs.end());
+
+ std::erase_if(capabilities.codecs, [](const RtpCodecCapability& codec) {
+ return codec.name == kRtxCodecName;
+ });
EXPECT_EQ(capabilities.codecs.size(), 2u);
EXPECT_TRUE(video_transceiver->SetCodecPreferences(capabilities.codecs).ok());
diff --git a/third_party/libwebrtc/pc/rtp_sender.cc b/third_party/libwebrtc/pc/rtp_sender.cc
@@ -84,12 +84,9 @@ bool PerSenderRtpEncodingParameterHasValue(
void RemoveEncodingLayers(const std::vector<std::string>& rids,
std::vector<RtpEncodingParameters>* encodings) {
RTC_DCHECK(encodings);
- encodings->erase(
- std::remove_if(encodings->begin(), encodings->end(),
- [&rids](const RtpEncodingParameters& encoding) {
- return absl::c_linear_search(rids, encoding.rid);
- }),
- encodings->end());
+ std::erase_if(*encodings, [&rids](const RtpEncodingParameters& encoding) {
+ return absl::c_linear_search(rids, encoding.rid);
+ });
}
RtpParameters RestoreEncodingLayers(
diff --git a/third_party/libwebrtc/pc/sdp_offer_answer.cc b/third_party/libwebrtc/pc/sdp_offer_answer.cc
@@ -3259,13 +3259,11 @@ void SdpOfferAnswerHandler::RemoveStream(MediaStreamInterface* local_stream) {
}
}
local_streams_->RemoveStream(local_stream);
- stream_observers_.erase(
- std::remove_if(
- stream_observers_.begin(), stream_observers_.end(),
- [local_stream](const std::unique_ptr<MediaStreamObserver>& observer) {
- return observer->stream()->id().compare(local_stream->id()) == 0;
- }),
- stream_observers_.end());
+ std::erase_if(
+ stream_observers_,
+ [local_stream](const std::unique_ptr<MediaStreamObserver>& observer) {
+ return observer->stream()->id().compare(local_stream->id()) == 0;
+ });
if (pc_->IsClosed()) {
return;
diff --git a/third_party/libwebrtc/pc/transceiver_list.h b/third_party/libwebrtc/pc/transceiver_list.h
@@ -11,7 +11,6 @@
#ifndef PC_TRANSCEIVER_LIST_H_
#define PC_TRANSCEIVER_LIST_H_
-#include <algorithm>
#include <cstddef>
#include <map>
#include <optional>
@@ -115,9 +114,7 @@ class TransceiverList {
}
void Remove(RtpTransceiverProxyRefPtr transceiver) {
RTC_DCHECK_RUN_ON(&sequence_checker_);
- transceivers_.erase(
- std::remove(transceivers_.begin(), transceivers_.end(), transceiver),
- transceivers_.end());
+ std::erase(transceivers_, transceiver);
}
RtpTransceiverProxyRefPtr FindBySender(
scoped_refptr<RtpSenderInterface> sender) const;