Release notes for WebRTC in Chromium M149

28 views
Skip to first unread message

Harald Alvestrand

unread,
Jun 15, 2026, 7:14:42 AM (8 days ago) Jun 15
to discuss...@googlegroups.com

WebRTC Changelog M149 (7778..7827)

This release contains 207 commits by 35 authors.

Summary (AI-generated)

  • Security: Fixed an Out-of-Bounds (OOB) write in RotateDesktopFrame / DXGI size mismatch (chromium:522134600) and added temporal/spatial bounds checks in EncoderBitrateAdjuster (webrtc:514671098).
  • Performance & Threading: Significant reduction of blocking calls on the signaling and network threads by caching ICE credentials, caching DTLS roles, and batching media channel operations using ScopedOperationsBatcher.
  • Network & Transport: DTLS 1.3 is now enabled by default. Capped RTCConfiguration certificates and enforced 32-bit overflow checks (chromium:513154132). Added initial support for Network Slices in ICE candidates and statistics.
  • API & Modernization: Continued modernization of P2P and STUN code to use std::span. Deprecated AutoThread and AutoSocketServerThread.
  • Video: Enabled post-encode frame dropping in libvpx VP9 (webrtc:500517546) and added corruption probability to video receive stream stats.

Categories

CategoryChanges
API3
Audio6
General163
Infrastructure5
Peerconnection8
Security2
Transport12
Video8

Detailed List of Changes (newest first)

Change DescriptionCategoryLinksBug
[M149] Fix OOB write in RotateDesktopFrame and DXGI size mismatchSecurity📝 🔍chromium:522134600chromium:520199394
[M149] [WGC] Fix frame size synchronizationGeneral📝 🔍chromium:520653469chromium:517727318
[M149] Add better checks for temporal/spatial bounds in EncoderBitrateAdjuster.Security📝 🔍chromium:516658686webrtc:514671098
[M149] Cap RTCConfiguration certificates and enforce 32-bit overflow checksTransport📝 🔍chromium:513154132chromium:513154132chromium:514928807
[M149] In SctpDataChannel use plain bool as safety flag.General📝 🔍chromium:514928086chromium:504716948
[M149] Guard RestoreTokenManager add/reads with MutexGeneral📝 🔍chromium:514929759chromium:513049286
[M149] Validate CGImage dimensions in MouseCursorMonitorMacGeneral📝 🔍chromium:514928856chromium:513268100
Remove dead method NeedsIceRestart_n from JsepTransportControllerGeneral📝 🔍None
Add corruption probability to video receive stream stats log.Video📝 🔍webrtc:358039777
Add cursor size validation to Wayland captureGeneral📝 🔍chromium:507743672
Add resolution query support for MediaCapabilitiesGeneral📝 🔍chromium:505034803
Fix data race on channel_ in RtpTransceiverGeneral📝 🔍webrtc:42224170
[v4l2] Ensure deviceUniqueIdUTF8 is initializedGeneral📝 🔍chromium:506921095
Fix some header includes issuesGeneral📝 🔍webrtc:251890128
Move network route change handling to RtpTransceiverTransport📝 🔍webrtc:42224170
Add an ice-option for goog-sped-v1General📝 🔍webrtc:367395350
Update plan for revising PT allocation strategyGeneral📝 🔍webrtc:360058654
Fix ASan null pointer in StartAecDumpGeneral📝 🔍webrtc:505372808
Smaller updates to VCMTiming.General📝 🔍b/493549134
add a missing include and a couple missing depsGeneral📝 🔍webrtc:251890128
Remove stringstream fallback from MakeVal in logging.hGeneral📝 🔍webrtc:42234461
[desktop capture] Fix TOCTOU race condition in CroppingWindowCapturer.General📝 🔍chromium:504557432
Add option for asynchronous corruption evaluation.General📝 🔍webrtc:358039777
Always restart Scream on route changeTransport📝 🔍webrtc:506000414
[P2P] Modernize STUN and P2P code to use std::spanAPI📝 🔍webrtc:42225170
Add helpers for converting between std::span andGeneral📝 🔍webrtc:42225170
Enable CallbackList constructor subscription and adopt in NetworkManagerGeneral📝 🔍webrtc:42222117
Prevent SetParameters from overwriting initial encodingsPeerconnection📝 🔍webrtc:500993975
[dcsctp] Ignore nacks for already acked packetsGeneral📝 🔍chromium:502356094
Remove input parameters from JitterEstimator::GetJitterEstimate.General📝 🔍b/493549134
Cleanup: Remove matured deprecated symbols with zero external usageGeneral📝 🔍webrtc:41480926
Add missing peerconnection_unittests backGeneral📝 🔍webrtc:498394143
Use injected clock when injecting clock for testing into SSL adapterGeneral📝 🔍webrtc:42223992
Fix double mapoffset application in PipeWire video captureVideo📝 🔍chromium:505647674
Fix signal subscription leak in xdg-desktop-portal callbacksGeneral📝 🔍chromium:505371989
Cleanup: Remove 4 matured deprecated symbols with zero external usageGeneral📝 🔍webrtc:9725webrtc:467444018
Fix uninitialized LogSink::min_severity_ and improve InitializeLoggingGeneral📝 🔍None
Add an alias to jni_zero::AdoptRef and CreateLeaky in webrtcGeneral📝 🔍chromium:481689330
snap: fix behavior on subsequent offer/answerGeneral📝 🔍chromium:505771664webrtc:426480601
Split video_tests out from video_engine_testsGeneral📝 🔍webrtc:498394143
Make FrameInstrumentation movable and prefer move to pass by reference.General📝 🔍webrtc:358039777
Add a compile-time test of subclassing TurnPortGeneral📝 🔍None
Refactor: Move ssrc, media_channel, SetFrameDecryptor, and SetFrameTransformer to RtpReceiverBaseGeneral📝 🔍webrtc:479862368
clobber ios botsGeneral📝 🔍None
Split resource_adaptation_tests and video_adaptation_testsGeneral📝 🔍webrtc:498394143
Remove WebRTC-Bwe-NetworkRouteConstraints and WebRTC-Bwe-NoFeedbackResetGeneral📝 🔍webrtc:42221535webrtc:42234928
Some OnDroppedFrame / OnFrameDropped cleanup.Video📝 🔍webrtc:467444018
Inject Environment instead of just field trials to OpenSSLAdapterGeneral📝 🔍webrtc:42223992
Remove SimpleStringBuilder and move StringBuilder impl to ccInfrastructure📝 🔍None
Remove VideoChannel and VoiceChannel classesGeneral📝 🔍webrtc:42224170
Remove more external auth related codeGeneral📝 🔍webrtc:487743907
Split call_tests into its own rtc_test_suiteGeneral📝 🔍webrtc:498394143
Consolidate media content setting in BaseChannelAudio📝 🔍webrtc:42224170
Update TaskQueueStdLib to use SystemTime instead of TimeMicrosGeneral📝 🔍webrtc:42223992
Update RTCError factory functions and a few usages.General📝 🔍None
Wire Sframe enable callback through sender and receiver constructors.General📝 🔍webrtc:479862368
Update organizational contributions documentation and sitemapGeneral📝 🔍b/499941987
Use injected clock in Fuchsia CapturerGeneral📝 🔍webrtc:42223992
Remove the usage of the field-trial WebRTC-Aec3DeactivateInitialStateResetKillSwitchGeneral📝 🔍webrtc:42233815
Discard unauthenticated TURN responses to unauthenticated requestsGeneral📝 🔍chromium:504572664
Prevent transceiver crash during SDP local rejectionGeneral📝 🔍chromium:504194151
Move EncodedFrame's receive time to TimestampGeneral📝 🔍webrtc:42223979
Remove the usage of the field-trial WebRTC-Aec3CoarseFilterResetHangoverKillSwitchGeneral📝 🔍webrtc:42233815
Remove the usage of the field-trial WebRTC-Aec3TransparentModeKillSwitchGeneral📝 🔍webrtc:42233815
Remove the unused RealFFT functionalityGeneral📝 🔍webrtc:505072868
Remove obsolete @CalledByNative annotation valuesGeneral📝 🔍chromium:496331306
AEC3: Refactor SubbandNearendDetector constructor to call SetConfigAudio📝 🔍webrtc:442444736
Remove the usage of the field-trial WebRTC-Aec3AecStateFullResetKillSwitchGeneral📝 🔍webrtc:42233815
Refactor waiting for timeout in PhysicalSocketServerGeneral📝 🔍webrtc:42223992
Change tests to not add attributes after STUN signatures.General📝 🔍chromium:504567957
Use injected clock in Linux CapturersGeneral📝 🔍webrtc:42223992
Split test_support_unittests into smaller targetsGeneral📝 🔍webrtc:498394143
Add support for y4m and ivf files in VideoCodecTestFixture.General📝 🔍webrtc:496266459
Fix short-circuit evaluation in RollbackTransportsGeneral📝 🔍chromium:504597736
Unify SetReceive and SetSend in media channelsVideo📝 🔍None
Use injected clock in Windows CapturersGeneral📝 🔍webrtc:42223992
Remove WebRTC-Video-Vp9FlexibleModeGeneral📝 🔍chromium:329396373
Introduce SetSsrcTask and batch SetSsrc in ApplyLocalDescriptionPeerconnection📝 🔍webrtc:42222117
Discard STUN attributes that follow MESSAGE-INTEGRITYGeneral📝 🔍chromium:504567957
Remove audio stream from old sync group on update.Audio📝 🔍chromium:504599749
pc: fix use-after-free in AllocateSctpSidsGeneral📝 🔍chromium:503422316
[Pipewire] Fix mouse cursor data race.General📝 🔍chromium:504551032
Send packets as ECT(1) after all route changesGeneral📝 🔍webrtc:447037083
Resolve dcheck due to wrong threading check in VideoCaptureV4L2General📝 🔍webrtc:504490094
Split peerconnection_unittests into smaller targetsGeneral📝 🔍webrtc:498394143
Call Release in SimulcastEncoderAdapter destructor if inited.General📝 🔍chromium:504620824
Always release VideoEncoders before destruction.General📝 🔍chromium:504620824
Ensure ECN can be read from posix socket without OPT_SEND_ECN=1General📝 🔍webrtc:504789166
Fix Data Channel encryption downgrade via BUNDLE desync in kPrAnswer.General📝 🔍webrtc:504579798
Refactor RTP header extension ID allocation to be persistent and shared.Transport📝 🔍webrtc:503013383
Batch up blocking calls when creating media channels in RtpTransceiverPeerconnection📝 🔍webrtc:42222117
Deprecate AutoThread and AutoSocketServerThreadInfrastructure📝 🔍webrtc:469327588
Use injected clock in DesktopCaptureOptionsGeneral📝 🔍webrtc:42223992
Avoid blocking calls during simulcast transceiver creationGeneral📝 🔍webrtc:42222804
Add IvfFrameReader utility class.Video📝 🔍webrtc:496266459
Update valid effort range and scaling factors for LibaomAv1EncoderV2General📝 🔍webrtc:496266459
Use test::RunLoop in sdk/objc/unittests/main.mmGeneral📝 🔍webrtc:469327588
Use test::RunLoop in rtc_base/test_client_unittest.ccGeneral📝 🔍webrtc:469327588
Use TimeController in p2p/dtls/dtls_ice_integration_fixture.hGeneral📝 🔍webrtc:469327588webrtc:42223992
Use test::RunLoop in pc/rtp_transceiver_unittest.cc and fix shadowingPeerconnection📝 🔍webrtc:469327588
Introduce StopStandardAsync in RtpTransceiverGeneral📝 🔍webrtc:42222804
Asynchronously clear media channels in RtpTransceiverGeneral📝 🔍webrtc:42222804
Relax RTP header extension ID reuse checks in RtpTransportTransport📝 🔍webrtc:503013383
Fix MSVC C2362 errors in audio_device_core_winGeneral📝 🔍None
Use RunLoop in sdk/ testsGeneral📝 🔍webrtc:469327588
Modernize WebRTC integration tests to support simulated timeGeneral📝 🔍webrtc:42223992
Fix JNI Zero's Chromium into Google3 rollGeneral📝 🔍chromium:503034881
Clarify 'issue' terminology in skills doc and emphasize use of `-m`General📝 🔍None
Reject bundles with codec collisions.General📝 🔍webrtc:42224689
Fix UAF in AndroidVideoTrackSource::SetStatePeerconnection📝 🔍b/403168866
Add hta-reviewer skillGeneral📝 🔍None
Refactor RtpTransceiver channel initialization to use ScopedOperationsBatcherGeneral📝 🔍webrtc:42222804
Check vector sizes when crossfading from CNG/expand to normal.General📝 🔍chromium:502661101
Allow signaled SSRCs to override learned bindings in RtpDemuxerPeerconnection📝 🔍webrtc:502130956
Eliminate blocking calls in NeedsIceRestartGeneral📝 🔍webrtc:42222117
Fix use-after-free in ScreenCast and Camera portal D-Bus callbacksGeneral📝 🔍chromium:491979284chromium:499587071
Cache ICE credentials and remove signaling thread blocking callsTransport📝 🔍webrtc:42222117
DTLS role caching in JsepTransportControllerTransport📝 🔍webrtc:42222117
Cleanup audio nack logic.Audio📝 🔍b/462023185
Fix deadlock in TaskQueueGcd::Delete() when called from the queue.General📝 🔍b/492945633
Introduce explicit configuration for logging initializationGeneral📝 🔍webrtc:42234107
Extract SDP bandwidth histogram reporting to a helper functionGeneral📝 🔍chromium:501883592
Add 'negative' category to SDP bandwidth UMA histogram.General📝 🔍chromium:501883592
Handle scalabilityMode in default VideoEncoderFactory::QueryCodecSupportGeneral📝 🔍webrtc:496700735
Stop using ScopedFakeClock in wrapping_active_ice_controller_unittestGeneral📝 🔍webrtc:42223992
Fix missing asm/unistd_64.h error in local Android ARM64 buildsInfrastructure📝 🔍b/502437863
Extend IP normalization to handle various IPv4-embedding formats.General📝 🔍webrtc:497635018
[AEC3] Remove unused GetConfiguration from NeuralResidualEchoEstimatorAudio📝 🔍webrtc:442444736
Increase max # of datachannels to 65535 per specGeneral📝 🔍webrtc:42228011
Remove blocking extension validity check from BaseChannel.Peerconnection📝 🔍webrtc:42222117webrtc:360058654
Update how the DTLS role is queried and reported.Transport📝 🔍None
Deprecate EncodedImageCallback::OnDroppedFrame.Video📝 🔍webrtc:467444018
Add network slice to RTCIceCandidateStats.General📝 🔍webrtc:494142581
Move .agents to agents/ and add PRESUBMIT checkGeneral📝 🔍webrtc:465491622
Remove network thread blocking call from CreateChannelTransport📝 🔍webrtc:42222804
Add UMA histogram for SDP bandwidth values.General📝 🔍chromium:501883592
Generalize RTCP-FB wildcard generation in SDP serialization.General📝 🔍webrtc:500638469
Update summarize-external-contribs to skip bot commitsGeneral📝 🔍None
Implement queryCodecSupport:scalabilityMode: on RTCDefaultVideoEncoderFactoryGeneral📝 🔍webrtc:496700735
sdp munging: fix sctp-port uma id collisionGeneral📝 🔍webrtc:414284082
Handle IPv4-mapped addresses in IP classification functions.General📝 🔍webrtc:479635018
Make sure SetSsrc clears non-empty encodings and degradation_preferenceGeneral📝 🔍webrtc:500993975
Add git-cl skill doc with specific instructions for upload.General📝 🔍webrtc:465491622
sdp: harden sctp max-message-size and sctp-port parsingTransport📝 🔍chromium:498185618
Add unit tests and smaller updates for DecodeTimePercentileFilter.General📝 🔍b/493549134
Add AbslStringify to IPAddressGeneral📝 🔍None
Sframe SDP negotiation support.General📝 🔍webrtc:479862368
Apply FieldTrial to NetEq Config within AudioIngressGeneral📝 🔍webrtc:500324590
Remove legacy callback setters from ChannelInterfaceGeneral📝 🔍webrtc:42222804
Add tools_webrtc/summarize_external_commits.pyGeneral📝 🔍None
Enable post-encode frame dropping in libvpx VP9Video📝 🔍webrtc:500517546b/500062571
Rename SetChannel to SetChannelForTest and inline logicTransport📝 🔍webrtc:42222804
Refactor RtpTransceiver::SetChannel and remove PushNewMediaChannelGeneral📝 🔍webrtc:42222804
Add logging support for task queue names (including Thread) and prefix.General📝 🔍webrtc:500769400
Fix TOCTOU race in RtpVideoSender::OnVideoLayersAllocationUpdatedTransport📝 🔍chromium:500767595
Fix the Chromium into WebRTC autorollerGeneral📝 🔍chromium:501094363
Remove unused is_dtx variable in NetEqImpl::InsertPacketGeneral📝 🔍webrtc:501115607
RtpTransceiver: Inject packet callbacks at channel construction time.General📝 🔍webrtc:42222804
Use LibvpxInterface to get PSNRGeneral📝 🔍webrtc:388070060
Delete WebRTC-LibaomAv1Encoder-PostEncodeFrameDropGeneral📝 🔍webrtc:351644568
Use scoped_refptr for RtpSenderInterface::SetEncoderSelectorGeneral📝 🔍webrtc:42224373b/419314207
Stop using ScopedFakeClock in dtls_transport_unittestGeneral📝 🔍webrtc:42223992
Modernize test styleGeneral📝 🔍None
Replace use of SimpleStringBuilder with StringBuilderAudio📝 🔍webrtc:500767594
datachannel: propagate max-message-size changesGeneral📝 🔍chromium:490588131
Add queue_name() to the TaskQueueBase interfaceGeneral📝 🔍webrtc:500769400
Update estimated_max_decode_time to hold the current estimate.General📝 🔍b/493549134
Stop using ScopedFakeClock in audio_coding testsGeneral📝 🔍webrtc:42223992
Stop using ScopedFakeClock in dtls_srtp_transport_integrationtestGeneral📝 🔍webrtc:42223992
dcsctp: Resend SHUTDOWN ACK if receiving SHUTDOWNGeneral📝 🔍webrtc:500087337
dcsctp: Ignore shutdown API while shutting downGeneral📝 🔍webrtc:500087337
Move the NullVideoDecoder into a separate file and target.Video📝 🔍chromium:500960863
Add a network slice property on Candidate.General📝 🔍webrtc:494142581
Enable git cl format for Markdown filesGeneral📝 🔍None
Stop using ScopedFakeClock in screenshare_layers_unittestGeneral📝 🔍webrtc:42223992
build: cleanup api/ depsAPI📝 🔍webrtc:467294026
Use RunLoop in rtc_tools/ testsGeneral📝 🔍webrtc:469327588
Stop using ScopedFakeClock in rtc_event_log_unittestGeneral📝 🔍webrtc:42223992
Try to fix ('isolate tests') step failures.General📝 🔍webrtc:498394143
Use EncodingOptions to control wildcard usage in SDP.General📝 🔍webrtc:500638469
[webrtc] Remove use_afl GN argInfrastructure📝 🔍chromium:492241998
Use RunLoop in modules/ testsGeneral📝 🔍webrtc:469327588
Introduce rtc_test_suite and rtc_cc_testGeneral📝 🔍webrtc:498394143
Fix getParams return type.General📝 🔍None
In Scream, ensure start bitrate is set correct if first feedback delayedGeneral📝 🔍webrtc:447037083
Move HarfBuzz from harfbuzz-ng to harfbuzzGeneral📝 🔍None
Remove unused FakeClock from data_channel_integrationtestGeneral📝 🔍webrtc:42223992
Rename two callback based methods to *Task in MediaChannelGeneral📝 🔍None
Refactor PeerConnection transceiver teardown to use batchingGeneral📝 🔍webrtc:42222804
Fix network_tester compile issue.General📝 🔍None
Notify on change of a Network's network slice.General📝 🔍webrtc:494142581
[ObjC SDK]: Fix scalability mode not found error.General📝 🔍webrtc:496700735
Allow specifying GPU adapter LUID for WGC capturerGeneral📝 🔍chromium:40929600
build: clean up rtc_base depsInfrastructure📝 🔍webrtc:467294026
Batch resetting of unsignaled receive streamsGeneral📝 🔍webrtc:42222804
dcsctp: Resend SHUTDOWN ACK on timer expirationGeneral📝 🔍webrtc:500087337
Stabilize RenegotiateManyVideoTransceiversAndWatchAudioDelay testGeneral📝 🔍webrtc:42225724
[ObjC SDK]: Added scalabilityMode to RTCRtpEncodingParametersGeneral📝 🔍webrtc:496700735
Replace task vectors with ScopedOperationsBatcherPeerconnection📝 🔍webrtc:42222804
Update thread blocking call metrics and batcher loggingGeneral📝 🔍webrtc:42222804
Merge logic from RenderTimeInternal into public RenderTime.General📝 🔍b/493549134
Move NetworkSlice enum to network_constants.API📝 🔍webrtc:494142581
Fix inlining of ArrayViewGeneral📝 🔍b/499946633webrtc:439801349
Default enable DTLS1.3General📝 🔍None
Refresh h-cc-pairs style docGeneral📝 🔍b/496861998
Reword 'how to depend on Abseil' sectionGeneral📝 🔍b/496863306
Deprecate ArrayView aliasGeneral📝 🔍webrtc:439801349
Reply all
Reply to author
Forward
0 new messages