Release notes for WebRTC in Chromium M148

62 views
Skip to first unread message

Harald Alvestrand

unread,
May 6, 2026, 4:59:46 AM (4 days ago) May 6
to discuss...@googlegroups.com
Attached is the AI-generated summary of changes in Chromium M148.
This is a test run for AI-generated summaries - comment if you find them useful!


m148_changelog.html

Harald Alvestrand

unread,
May 6, 2026, 6:12:18 AM (4 days ago) May 6
to discuss...@googlegroups.com
A format that might be slightly easier to read.

WebRTC Changelog M148 (7727..7778)

This release contains 159 commits by 29 authors.

Summary (AI-generated)

  • Infrastructure Modernization: Extensive migration from webrtc::ArrayView to std::span across the codebase, including api/modules/, and common_video/.
  • Test Reliability: Significant refactoring of P2P and connectivity tests to use GlobalSimulatedTimeController and RunLoop, improving test deterministic behavior and removing legacy SIMULATED_WAIT.
  • Security & Robustness: Addressed several potential out-of-bounds access and buffer overflow issues in audio channel handling, dcSCTP, and RTP packet parsing. Hardened SimpleStringBuilder and added safety checks for CSRC lists and RIDs.
  • API Refinement: Transitioned core signaling interfaces (BaseChannelChannelInterface) to use RTCError for better error propagation, replacing legacy boolean return values.
  • Media & Video Improvements: Added support for GPU textures in desktop capture and improved H.264 decoder compatibility through subset profile matching. Refactored RTP transport to centralize payload type and header extension management.
  • Audio Processing: AEC3 now supports dynamic on-the-fly configuration updates for suppressor gain computation.

Categories

CategoryChanges
API5
Audio13
General91
Infrastructure16
Peerconnection6
Security4
Stats5
Transport12
Video7

Detailed List of Changes (newest first)

Change DescriptionCategoryLinksBug
[M148] Always release VideoEncoders before destruction.General📝 🔍chromium:505251595chromium:504620824
[M148] [Pipewire] Fix mouse cursor data race.General📝 🔍chromium:505447260chromium:504551032
[M148] Fix TOCTOU race in RtpVideoSender::OnVideoLayersAllocationUpdatedTransport📝 🔍chromium:500767595
[M148] Relax RTP header extension ID reuse checks in RtpTransportTransport📝 🔍chromium:504980502webrtc:503013383
[M148] Check vector sizes when crossfading from CNG/expand to normal.General📝 🔍chromium:504500274chromium:502661101
[M148] Allow signaled SSRCs to override learned bindings in RtpDemuxerPeerconnection📝 🔍chromium:503666505webrtc:502130956
[Merge-148] Cherry pick "Move the NullVideoDecoder into a separate file and target."Video📝 🔍chromium:500960863
Fix rebase issue of two colliding CLsVideo📝 🔍None
Move payload type demuxing management to RtpTransportTransport📝 🔍webrtc:42222117
Capture channel pointers on signaling thread to fix data raceTransport📝 🔍webrtc:481443652
Use RunLoop in audio/ testsGeneral📝 🔍webrtc:469327588
Replace ArrayView with std::span in api/API📝 🔍webrtc:439801349
Allow EventLogAnalyzer to be created without a valid parsed logGeneral📝 🔍None
Use RunLoop in call/ testsGeneral📝 🔍webrtc:469327588
Use RunLoop in p2p/ testsGeneral📝 🔍webrtc:469327588
Use real Thread in examples/ instead of AutoThreadGeneral📝 🔍webrtc:469327588
Use RunLoop in media/ testsGeneral📝 🔍webrtc:469327588
Use RunLoop in video/ testsGeneral📝 🔍webrtc:469327588
Use RunLoop in rtc_base/ testsGeneral📝 🔍webrtc:469327588
Group members in VCMTiming into a VideoDelayTimings struct.General📝 🔍b/493549134
Use RunLoop in test/ testsGeneral📝 🔍webrtc:469327588
Use RunLoop in pc/ testsPeerconnection📝 🔍webrtc:469327588
Audio: Enable dynamic on-the-fly AEC3 configuration updates for the suppressor gain computationAudio📝 🔍webrtc:442444736
Delete deprecated reinterpret_array_viewGeneral📝 🔍webrtc:439801349
Use ScopedOperationsBatcher for media description pushdownAudio📝 🔍webrtc:42222804webrtc:42223005
Add gn-check-autofix skillGeneral📝 🔍webrtc:465491622
Replace ArrayView with std::span in modules/video_coding/av1Video📝 🔍webrtc:439801349
Move the LibaomAv1Encoder V2 encoder implementation to separate file.General📝 🔍webrtc:496266459
Scream, ensure feedback contains at least one received packetGeneral📝 🔍webrtc:447037083
Synchronize final stats collection in E2E quality testsStats📝 🔍webrtc:481443652
Replace ArrayView with std::span everywhere except apiInfrastructure📝 🔍webrtc:439801349
PipeWire capture: fix camera capability enumeration race and duplicatesGeneral📝 🔍webrtc:478386505
Update ScopedOperationsBatcher tasks with finalizers to propagate errorsGeneral📝 🔍webrtc:42222804
Support custom socket server in test::RunLoopGeneral📝 🔍webrtc:469327588
Use the PayloadType class rather than uint8_t in Codec classGeneral📝 🔍webrtc:360058654
Replace ArrayView with std::span in modules/Infrastructure📝 🔍webrtc:439801349
Audio: Reduce max channels to 16 to prevent buffer overflowAudio📝 🔍webrtc:495018167
Fix potential dcSCTP NackBetweenAckBlocks OOB accessSecurity📝 🔍webrtc:495700476
p2ptc: clean up unused legacy APIGeneral📝 🔍None
Convert kMax constants in video_codec_constants to size_tGeneral📝 🔍None
Remove SIMULATED_WAITGeneral📝 🔍webrtc:381524905
More spring cleaningInfrastructure📝 🔍None
Rename methods in ScopedOperationsBatcherGeneral📝 🔍webrtc:42222804
Create include-cleaner skillGeneral📝 🔍webrtc:465491622
Add .gemini to .gitignoreGeneral📝 🔍webrtc:465491622
Refactor RTP Header Extension Management into RtpTransportTransport📝 🔍webrtc:42222117
Replace ArrayView with std::span in common_video/Infrastructure📝 🔍webrtc:439801349
Use first_ssrc() instead of ssrcs[0] in channel.ccGeneral📝 🔍None
Use GlobalSimulatedTimeController in PortTestGeneral📝 🔍webrtc:381524905webrtc:42223992webrtc:469327588
Replace ArrayView with std::span in modules/audio_processingAudio📝 🔍webrtc:439801349
Spring cleanup of WATCHLIST and OWNER filesInfrastructure📝 🔍None
Delete the AEC3 json config fuzzerAudio📝 🔍chromium:440374794chromium:441805811chromium:441805815
Truncate CSRC list in RtpPacket::SetCsrcs if too largeTransport📝 🔍chromium:486317116
Change how TimingFrameInfo is passed to ReceiveStatisticsProxy.General📝 🔍b/493549134
build: remove unnecessary targets in video_codingVideo📝 🔍webrtc:467294026
build: clean up modules audio build filesAudio📝 🔍webrtc:467294026
Initialize NetEqNetworkStatistics fields.General📝 🔍None
Add gtest-parallel skillGeneral📝 🔍webrtc:465491622
Refactor stun_port_unittest to use GlobalSimulatedTimeControllerGeneral📝 🔍webrtc:381524905webrtc:42223992webrtc:469327588
pc: rename data_channel_unittestGeneral📝 🔍None
Correct setting Scream padding end timeGeneral📝 🔍webrtc:447037083
Use GlobalSimulatedTimeController in P2PTransportChannelTestGeneral📝 🔍webrtc:469327588webrtc:42223992webrtc:381524905
Use GPU texture in desktop captureGeneral📝 🔍chromium:40929600
Use subset profile matching for H.264 decoder supportGeneral📝 🔍webrtc:347724928
Harden SimpleStringBuilder safety checksSecurity📝 🔍chromium:486536241
build: clean up api/BUILD.gn libjingle_peerconnection_api targetAPI📝 🔍webrtc:467294026
Simplify thread yielding by removing support for high-priority tasksGeneral📝 🔍webrtc:42222804
Follow-up auto -> explicit typeGeneral📝 🔍None
Refactor AddCertificateReports to prevent crashStats📝 🔍chromium:486495143
Replace LOG_AND_RETURN_ERROR with "return LOG_ERROR"General📝 🔍None
Use GlobalSimulatedTimeController in BasicPortAllocatorTestGeneral📝 🔍webrtc:469327588webrtc:381524905webrtc:42223992
snap: assert behavior when sctp-init changes due to pranswerGeneral📝 🔍webrtc:426480601
Ignore BWE expectations in ScreamTestGeneral📝 🔍webrtc:447037083
Refactor BaseChannel+ChannelInterface to return RTCError instead of boolPeerconnection📝 🔍None
Fix out-of-bounds write in SetupCodec due to excessive RIDsSecurity📝 🔍chromium:486536241
Move VCMTiming::kDefaultRenderDelay to anonymous namespace in .cc file.General📝 🔍b/493549134
Fix unsafe buffer usage error in apm_data_dumper.hGeneral📝 🔍None
build: remove unnecessary targets in video_codingVideo📝 🔍webrtc:467294026
Run simulcast adapter test ConcurrentEncodeAndOnEncodedImage on TSAN.General📝 🔍webrtc:467444018
Sframe API support for sender and receiverAPI📝 🔍webrtc:479862368
Prevent RTCStatsCollector crash for stopped transceiversStats📝 🔍b/494115682
Allow unspecified max allocatable bitrate in VideoSendStreamImplAudio📝 🔍webrtc:494350649
Use GlobalSimulatedTimeController in dtmf_sender_unittestGeneral📝 🔍webrtc:42223992
Remove unused method VCMTiming::UpdateCurrentDelay.General📝 🔍b/493549134
FrameEncodeMetadataWriter: Don't make callbacks while holding lock.General📝 🔍webrtc:467444018
build: clean up modules/congestion_controller targetsInfrastructure📝 🔍webrtc:467294026
gn_check_autofix: increase error limit for gn checkAPI📝 🔍webrtc:467294026
Allow initial BWE probing with Scream without configured mediaGeneral📝 🔍webrtc:447037083
Fix metadata for Portaudio library for macGeneral📝 🔍chromium:460543401
Remove deprecated StartSctpTransport methodGeneral📝 🔍None
Remove unused ScopedFakeClock from packet_router_unittestGeneral📝 🔍webrtc:42223992
Make Evan and Guido peer_connection/webrtc_sdp co-owners.General📝 🔍None
Make Evan co-owner of WebRTC stats directories.Stats📝 🔍None
Attempt to deflake ScreamTest.LinkCapacity2MbpsRtt50msNoEcnGeneral📝 🔍webrtc:483936079
Add yielding support to ScopedOperationsBatcherGeneral📝 🔍webrtc:42222804
Move ScopedOperationsBatcher to its own source filesPeerconnection📝 🔍webrtc:42222804
Enhance ScopedOperationsBatcher to support tasks returning tasks.Peerconnection📝 🔍webrtc:42222804
Change UMA logging to only log once for same kind of errorGeneral📝 🔍chromium:409473386
Use GlobalSimulatedTimecontroller in turn_port_unittestGeneral📝 🔍webrtc:469327588webrtc:42223992webrtc:381524905
IWYU: regenerate compile_commands.json on every runInfrastructure📝 🔍webrtc:485150285
Fix racy pending frame status in SimulcastEncoderAdapter.General📝 🔍webrtc:467444018
Ensure Scream only treat reported lost packets onceTransport📝 🔍webrtc:483936079
Update kMaxPacketBufferSize to support 50ms @ 48kHz in RtpFileReaderGeneral📝 🔍None
Remove use of ScopedFakeClock in video_encoder_software_fallback_wrapper_unittestGeneral📝 🔍webrtc:469327588webrtc:42223992
Move ssrcs_ and payload_types_ to the network threadGeneral📝 🔍webrtc:42222117
Removed the configuration options for multi_channel processingAudio📝 🔍chromium:464314991
VAD SplitFilter may overflow integerr.Audio📝 🔍webrtc:490331112
Remove WebRTC-RtcEventLogEncodeDependencyDescriptor field trialGeneral📝 🔍webrtc:42225280
Use injected clock in ssl_stream_adapter_unittestGeneral📝 🔍webrtc:469327588webrtc:42223992
Use GlobalSimulatedTimeController in local_network_access_port_unittestGeneral📝 🔍webrtc:469327588webrtc:42223992
Refactor StunRequestTest to use GlobalSimulatedTimeControllerGeneral📝 🔍webrtc:42223992webrtc:469327588webrtc:381524905
Re-adding apm_data_dumper.h to the list of unsafe buffer exceptions.General📝 🔍webrtc:478086887
Fetch sender parameters asynchronously during GetStatsTransport📝 🔍webrtc:492108787
Fix missing mediaSourceId in simulcast outbound-rtp statsStats📝 🔍webrtc:492108787
Fix integer overflow in WebRtc_CreateBufferSecurity📝 🔍None
Make max target input level for input controller -12dBGeneral📝 🔍webrtc:457791164
AEC3: Fix render buffer headroom calculation on underrunsAudio📝 🔍b:487988676webrtc:442444736
Reject frames with inconsistent U/V strides.General📝 🔍chromium:492213293
Move payload_type_demuxing_enabled_ to the network threadGeneral📝 🔍webrtc:42222117
Fix flakiness in ScreamTest.SendVideoOnlyReturnLinkWithBurstLossGeneral📝 🔍webrtc:447037083
Add encoder switch request callback to VideoMediaSendChannelTransport📝 🔍b/478050997
Increase MSS to 1280bytes to increase BWE ramp up speedGeneral📝 🔍webrtc:447037083
build: clean up api:enable_media depsInfrastructure📝 🔍webrtc:467294026
Replace RtpDemuxerCriteria member with discrete variablesGeneral📝 🔍webrtc:42222117
PipeWire capture: add CFI suppression for StopCapture()General📝 🔍chromium:491979284
build: gn_check_autofix should retain blank lines, comments and # keep tagged linesInfrastructure📝 🔍webrtc:467294026
Remove unsupported python event log analyzerGeneral📝 🔍None
Run iwyu on current CL if no files are given on command lineInfrastructure📝 🔍None
Add workaround for OpenH264 related to U/V strides.General📝 🔍chromium:491655161
Removed the AEC3 namespaceAudio📝 🔍webrtc:42233815
Make scream more resilient to delay spikesGeneral📝 🔍webrtc:447037083
Encapsulate and make RTP sequence number available in RtpPacketInfo.Transport📝 🔍b/462514208
pc: Enhance stability integration testGeneral📝 🔍webrtc:397895867
build: clean up api/BUILD.gnAPI📝 🔍webrtc:467294026
Make the targets leaking through 'libjingle_peerconnection_api' publicGeneral📝 🔍webrtc:467294026
Remove some unused calls from Video Engine classesVideo📝 🔍None
Move Call::receive_time_calculator_ to network threadTransport📝 🔍webrtc:11993
Replace ArrayView with std::span in modules/audio_processing/aec3Audio📝 🔍webrtc:439801349
Replace ArrayView with std::span in net/dcsctp/Infrastructure📝 🔍webrtc:439801349
Fix payload type allocation issues for Audio RED and MID recycling.Audio📝 🔍webrtc:360058654
Replace ArrayView with std::span in logging/Infrastructure📝 🔍webrtc:439801349
Consolidate FakeAudioStream and FakeVideoStream classes for tests.General📝 🔍webrtc:42233500
Replace ArrayView with std::span in rtc_base/Infrastructure📝 🔍webrtc:439801349
build: change more tests to use rtc_test instead of rtc_exectuableInfrastructure📝 🔍webrtc:467294026
Remove test code related to unused variablesGeneral📝 🔍None
Replace ArrayView with std::span in media/Infrastructure📝 🔍webrtc:439801349
Removed obsolete suppressionGeneral📝 🔍webrtc:42232319
Check RtcTransport payload isn't too short before checking it's an RTP packetTransport📝 🔍chromium:488803429
PipeWire: call pw_deinit() only when running against PipeWire 3.49+General📝 🔍chromium:490340738
Remove deprecated charset handling in AsyncHttpUrlConnectionGeneral📝 🔍None
Clean up unused members in WebRtcVideoEngine classesVideo📝 🔍None
Clean up some video-related OWNERS files.Infrastructure📝 🔍None
Emit CCFB parameters per codec, not wildcardGeneral📝 🔍webrtc:489794442
Use asynchronous posting for PeerConnection signaling tasksPeerconnection📝 🔍webrtc:442220720
Wayland screencast: fix data race in CaptureFrame()General📝 🔍webrtc:42223634
Remove unused members from WebRtcVoiceEngine and channelsGeneral📝 🔍None
Replace ArrayView with std::span in p2p/General📝 🔍webrtc:439801349
Remove deprecated charset handling in JniHelperGeneral📝 🔍None
Replace EncoderSwitchRequestCallback with absl::AnyInvocableGeneral📝 🔍b/478050997
Reply all
Reply to author
Forward
0 new messages