Skip to content

Merge WebRTC M148 (branch-head 7778)#98

Open
ipavlidakis wants to merge 5273 commits into
developfrom
merge-webrtc-m148
Open

Merge WebRTC M148 (branch-head 7778)#98
ipavlidakis wants to merge 5273 commits into
developfrom
merge-webrtc-m148

Conversation

@ipavlidakis

@ipavlidakis ipavlidakis commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Issues

Resolves https://linear.app/stream/issue/IOS-1876/webrtcmigrate-to-m148

Summary

Upgrades the Stream WebRTC fork to official WebRTC M148 (refs/branch-heads/7778, baseline f393199440) using the merge-forward model from the Migration Guide 2026. Full write-up: M148 Migration.

Merge strategy — restored M145 ancestry

M145 was previously squashed into develop (not merged), so Git's 3-way base with M148 fell back to ~M124 (April 2024) and a naive merge produced 1931 conflicted files. Recording the clean M145 baseline as an ancestor without changing the tree moved the base to M145 and dropped the conflict set to 26:

git merge -s ours b47e68e6966d5a5a0e4bc861ff364221600f31c3   # M145 baseline, tree unchanged
git merge --no-ff webrtc/m148

This also fixes the ancestry going forward, so M149+ merges stay small.

Conflict resolution (26 files)

  • Stream carry-forward (kept behavior + adopted M148 APIs): video_rtp_receiver (should_receive() start/stop + M148 RtpReceiverBase/deferred restart), audio_device_mac (kept guid param, ArrayViewstd::span), H265 bitstream parser & nalu_rewriter helpers, RTCTracing (kept RTC_OBJC_TYPE wrap + M148 Environment), api/BUILD.gn (kept Stream yuv_helper/video deps).
  • Took M148 (upstream refactor/format): media_engine.cc (dropped Stream scalability-mode debug logs), RTCConfiguration/RTCEncodedImage, Metal renderers (clang-format), sdk/android/BUILD.gn deps unions.
  • Honored deletions: RTCMTLNSVideoView.m stays removed.

M148 toolchain / API adaptations

  • ArrayView is now std::span: .subview.subspan (frame_crypto_transformer, RTCVideoDecoderH265), added api/array_view.h include to nalu_rewriter.h.
  • BitrateAdjuster now needs a Clock (H265 encoder); honored Stream's removal of it from the H264 encoder.
  • AECM removed upstream → RTCAudioProcessingConfig.mobile_mode stubbed (public property preserved, inert).
  • Grandfathered Stream-only files in unsafe_buffers_paths.txt (M148's clang unsafe-buffers plugin).
  • Restored develop's swizzle-based RTCPeerConnectionFactoryBuilderTest (M148's OCMock rewrite is incompatible with the move-only deps type); swapped removed rtc_base/gunit.htest/gtest.h.

Test plan

  • macOS framework builds + links (sdk:mac_framework_objc)
  • macOS peerconnection_unittests — 72 passed, 1 skipped
  • iOS framework builds + links — simulator arm64 (debug) and device arm64 (release)
  • iOS sdk_unittests181 passed, 0 failures (iPhone 16 / iOS 26.5)
  • Android — validated via CI

⚠️ How to merge this PR

Land as a merge commit — do not squash or rebase (that flattens the M145/M148 ancestry and forces a manual re-graft next milestone). Preferred: local fast-forward.

git checkout develop && git pull --ff-only origin develop
git merge --ff-only merge-webrtc-m148
git push origin develop

UI fallback: "Create a merge commit" only.

Follow-ups

  • Decide whether to restore mobile AEC (currently inert) or drop it; modules/audio_processing/aecm/ is now orphaned.
  • Migrate the grandfathered unsafe_buffers_paths.txt entries to bounds-safe spans over time.

Harald Alvestrand and others added 30 commits March 10, 2026 01:35
This works around the inability of some parsers to handle wildcards.

Bug: webrtc:489794442
Change-Id: I4633e1d27139e13ec571bbd169ed38c324922248
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455280
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47096}
This removes some folk who are not that active in libwebrtc anymore.

Bug: None
Change-Id: I798a5c079ab8cb9119ac8708caa59597c16dbe01
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/453260
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47097}
Following the split of the two-way video channel into separate send and
receive channels, several members and methods became unused or redundant.

This CL:
- Removes unused private methods Construct and
  FillBandwidthEstimationStats from WebRtcVideoSendChannel.
- Removes unused member variables last_unsignalled_ssrc_creation_time_ms_
  and rtp_config_ from WebRtcVideoSendChannel.
- Removes unused member variable rtp_config_ from
  WebRtcVideoReceiveChannel.
- Removes redundant initialization of rtcp_mode in
  WebRtcVideoReceiveChannel::ConfigureReceiverRtp.

Bug: None
Change-Id: Ice3aa1788f60a2c192c271e42d503e17fc4c649c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/454702
Auto-Submit: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47098}
This was blocking chromium->webrtc roll.

Bug: None
Change-Id: Ie9833da682303b08331ab48867e5065b55f23b96
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455282
Auto-Submit: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47099}
pw_deinit() was not reetrant in old PipeWire versions and it only got
fixed with PipeWire 3.49. This is causing a crash for old Ubuntu 22.04
with PipeWire 3.48 when sharing screen multiple times.

This also moves all the PipeWire version parsing logic to pipewire_utils
from screencast_utils as it makes more sense and is used from there now.

Bug: chromium:490340738
Change-Id: I62ec7adfcba040b4ab99bf535b3f16b5e4b27c1a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455180
Commit-Queue: Jan Grulich <grulja@gmail.com>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Andreas Pehrson <apehrson@mozilla.com>
Reviewed-by: Alexander Cooper <alcooper@chromium.org>
Reviewed-by: Mark Foltz <mfoltz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#47100}
…P packet

Bug: chromium:488803429
Change-Id: Iaf6204c1f3bce1a8786c00ecfa7faabe78bb9021
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/454280
Auto-Submit: Tony Herre <herre@google.com>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47101}
The referenced test no longer exists.

Bug: webrtc:42232319
Change-Id: I74ff70955f2220d776b6fa1eadd045d897d22987
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455140
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47102}
Search&Replace MakeArrayView and ArrayView with std::span
Search&Replace include "api/array_view.h" with include <span>
Remove build dependencies on array_view target

In rtp_utils_unittest remove unnecessary span constants touched by rename above.

Bug: webrtc:439801349
Change-Id: I7cf2dd49622dd457455474aedc9bede3262d5df5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455281
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47103}
Change log: https://chromium.googlesource.com/chromium/src/+log/c22ce439a0..07798bc2eb
Full diff: https://chromium.googlesource.com/chromium/src/+/c22ce439a0..07798bc2eb

Changed dependencies
* siso_version: git_revision:a4a219a47e8a8d1a4a2fe306ffa70d65ab4b23b8..git_revision:bea0f245b6973702ddcb457090706d03145855f8
* src/build: https://chromium.googlesource.com/chromium/src/build/+log/4e55723cd7..98d6658ed1
* src/ios: https://chromium.googlesource.com/chromium/src/ios/+log/8da238cb7e..632417adc3
* src/testing: https://chromium.googlesource.com/chromium/src/testing/+log/cbc3c0cf69..07d5e4bcb0
* src/third_party: https://chromium.googlesource.com/chromium/src/third_party/+log/0c56ed891b..cca29c0f05
* src/third_party/android_build_tools/error_prone/cipd: zUmV9Nh4JfIOMh9QU7LhIhPvodo_Aka-0IAIPIcLKVcC..Y-wIN3nTyykC3fwieDSmffv26BOT2wXRVPktZSw_oLUC
* src/third_party/android_build_tools/lint/cipd: Ow8jpaRkHsJyhElyBOWWKBWl0KKNNuqbAE-cYWSPwQAC..1N_9yErKkcZgqyxBghA0bb5L5AFEPZCt36Gv2o8_OAwC
* src/third_party/android_build_tools/manifest_merger/cipd: tu2pGdrcOsdBnUbmZgzOgxIrZh-YJhlAL7ICIZRTjH4C..xT8A6Q_b44_iYKqAMvRkWmvID-ps-I6uBDfRTQv68bcC
* src/third_party/android_deps/autorolled/cipd: gOFPZuLmUt7S4rnhusfD5p-Fhy3qllnFyNIwDbThlusC..umaYTBt4Vsa5QZYp57rLJDNzoXalsR2hPGwfYbpZYfwC
* src/third_party/androidx/cipd: G93sLsFQ30pYjUz4kY55FggeIFragvakLDCkWrLtbOEC.._YK_XyeZvkOivG1aqms80wS3mgx5K-L9yHOhZDzvlI4C
* src/third_party/boringssl/src: https://boringssl.googlesource.com/boringssl.git/+log/5bf54f4ac7..476f483518
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/d903007eb7..e0ebf38a01
* src/third_party/compiler-rt/src: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt.git/+log/568f6a9253..338a5c004c
* src/third_party/dav1d/libdav1d: https://chromium.googlesource.com/external/github.com/videolan/dav1d.git/+log/b546257f77..241a6b236a
* src/third_party/eigen3/src: https://chromium.googlesource.com/external/gitlab.com/libeigen/eigen.git/+log/d8c8ee6fb2..81550faea4
* src/third_party/freetype/src: https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+log/aa8ca27f9b..1c6e43ab90
* src/third_party/fuzztest/src: https://chromium.googlesource.com/external/github.com/google/fuzztest.git/+log/1f7726d61f..e58f8dd957
* src/third_party/grpc/src: https://chromium.googlesource.com/external/github.com/grpc/grpc.git/+log/a18875d1df..5a3a5d5314
* src/third_party/kotlin_stdlib/cipd: 9ldUaVxyYClDj9QDPGLyxhrrLE40VxHjm65wiU_4xaoC..KABHiJiUrNNzDUFrZt5xyABtjqZCS-xG3fIdF-pe19IC
* src/third_party/libaom/source/libaom: https://aomedia.googlesource.com/aom.git/+log/39606bf4ba..98ce0d2a61
* src/third_party/llvm-libc/src: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git/+log/4e2524f6ae..8df8a70a83
* src/third_party/perfetto: https://chromium.googlesource.com/external/github.com/google/perfetto.git/+log/7d3fdf89c3..5268fe512e
* src/third_party/siso/cipd: git_revision:a4a219a47e8a8d1a4a2fe306ffa70d65ab4b23b8..git_revision:bea0f245b6973702ddcb457090706d03145855f8
* src/tools: https://chromium.googlesource.com/chromium/src/tools/+log/6870c91a2b..9e8a98181c
DEPS diff: https://chromium.googlesource.com/chromium/src/+/c22ce439a0..07798bc2eb/DEPS

BUG=None

Change-Id: Idfae4c90b0336f6cbec2d23eb5f68c9447a70725
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455520
Bot-Commit: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#47104}
`input_aecdump` and `processed_capture_samples` are never used,
so the code related to those variables, can be removed.

Bug: none
Change-Id: I4f0b7db01f1e218f62e732ab9a247dd0b9708666
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356542
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47105}
which requires clobbering on the ios bots. Also remove _temp suffix
from base64 benchmark.

Bug: webrtc:467294026
Change-Id: I4d1fe493c41438ab2f83bc1c3acbecc024b15128
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/443384
Commit-Queue: Philipp Hancke <philipp.hancke@googlemail.com>
Reviewed-by: Jeremy Leconte <jleconte@google.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47106}
Search&Replace MakeArrayView and ArrayView with std::span
Search&Replace include "api/array_view.h" with include <span>
Remove build dependencies on array_view target
Rename tests that were named PrefixArrayView
 from "Prefixstd::span" to "PrefixSpan"

Bug: webrtc:439801349
Change-Id: Iad951423733c8676c7356047f115eb3fcf2e885d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/454241
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47107}
Bug: webrtc:42233500
Change-Id: I31fc6151e38087436227ed21f4a219d784b9f651
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455241
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47108}
Change log: https://chromium.googlesource.com/chromium/src/+log/07798bc2eb..5a3b6f09e6
Full diff: https://chromium.googlesource.com/chromium/src/+/07798bc2eb..5a3b6f09e6

Changed dependencies
* src/build: https://chromium.googlesource.com/chromium/src/build/+log/98d6658ed1..7d29c62736
* src/ios: https://chromium.googlesource.com/chromium/src/ios/+log/632417adc3..6ef5c9aa5d
* src/testing: https://chromium.googlesource.com/chromium/src/testing/+log/07d5e4bcb0..4d76c99bba
* src/third_party: https://chromium.googlesource.com/chromium/src/third_party/+log/cca29c0f05..272f0dea53
* src/third_party/androidx/cipd: _YK_XyeZvkOivG1aqms80wS3mgx5K-L9yHOhZDzvlI4C..o4DXbfi661jCyVTmGyk5pLrrimnXDqgV-d8-dxfdZ_AC
* src/third_party/freetype/src: https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+log/1c6e43ab90..dc17b79e1a
* src/third_party/fuzztest/src: https://chromium.googlesource.com/external/github.com/google/fuzztest.git/+log/e58f8dd957..b6d8465706
* src/third_party/perfetto: https://chromium.googlesource.com/external/github.com/google/perfetto.git/+log/5268fe512e..8464e2906a
* src/tools: https://chromium.googlesource.com/chromium/src/tools/+log/9e8a98181c..d3a6eb533e
DEPS diff: https://chromium.googlesource.com/chromium/src/+/07798bc2eb..5a3b6f09e6/DEPS

BUG=None

Change-Id: I36885b98fdf13ffe35bc4c3bcb65ef5e6b571645
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455580
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Bot-Commit: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#47109}
Bug: None
Change-Id: I94b81acb1a93329d3c680cb88be9e524b2261cd7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455680
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#47110}
Change log: https://chromium.googlesource.com/chromium/src/+log/5a3b6f09e6..a5382cea3d
Full diff: https://chromium.googlesource.com/chromium/src/+/5a3b6f09e6..a5382cea3d

Changed dependencies
* src/ios: https://chromium.googlesource.com/chromium/src/ios/+log/6ef5c9aa5d..76aa1c78ed
* src/testing: https://chromium.googlesource.com/chromium/src/testing/+log/4d76c99bba..e7a1e88ecc
* src/third_party: https://chromium.googlesource.com/chromium/src/third_party/+log/272f0dea53..256d17dbe5
* src/third_party/androidx/cipd: o4DXbfi661jCyVTmGyk5pLrrimnXDqgV-d8-dxfdZ_AC..uw8FaVpFdPaFx2Y4c1mBUMRwGB52J-PturMUyulx_hkC
* src/third_party/compiler-rt/src: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt.git/+log/338a5c004c..c8a5676846
* src/third_party/eigen3/src: https://chromium.googlesource.com/external/gitlab.com/libeigen/eigen.git/+log/81550faea4..4387e32481
* src/third_party/freetype/src: https://chromium.googlesource.com/chromium/src/third_party/freetype2.git/+log/dc17b79e1a..99b479dc34
* src/third_party/fuzztest/src: https://chromium.googlesource.com/external/github.com/google/fuzztest.git/+log/b6d8465706..54ed362692
* src/third_party/grpc/src: https://chromium.googlesource.com/external/github.com/grpc/grpc.git/+log/5a3a5d5314..50957c5c47
* src/third_party/kotlinc/current: JEwTOoywRjDr5YoLIeG8Qzb3nT7OauqHdhfL6tIbyP0C..rZVNs6pgsRU0LupGqWhLJwl508-H7iam-fnzDW6X37MC
* src/third_party/libunwind/src: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git/+log/78884e23fe..db838d9185
* src/third_party/perfetto: https://chromium.googlesource.com/external/github.com/google/perfetto.git/+log/8464e2906a..4cead1b0fc
* src/tools: https://chromium.googlesource.com/chromium/src/tools/+log/d3a6eb533e..0510739a11
DEPS diff: https://chromium.googlesource.com/chromium/src/+/5a3b6f09e6..a5382cea3d/DEPS

BUG=None

Change-Id: I78152428d945cabaf9dd25aa00ec6791f675bb44
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455720
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Bot-Commit: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#47111}
Search&Replace MakeArrayView and ArrayView with std::span
Search&Replace include "api/array_view.h" with include <span>
Remove build dependencies on array_view target

Bug: webrtc:439801349
Change-Id: I9bdaea50fd34abff83cc7571a7fadc55a940df1d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455500
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47112}
This CL addresses several issues identified while enabling the
WebRTC-PayloadTypesInTransport field trial:
- Enforce media type equality in codec matching to prevent Audio/Video
RED collisions.
- Relax RED matching rules to allow negotiation with unlinked RED codecs.
- Validate media type during MID recycling in CodecVendor to prevent
incorrect codec merging.
- Update documentation with the video implementation strategy.

Bug: webrtc:360058654
Change-Id: I1ecbdad2179d346b3682875d823889aa076e353e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/453001
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47113}
Change log: https://chromium.googlesource.com/chromium/src/+log/a5382cea3d..b937d39273
Full diff: https://chromium.googlesource.com/chromium/src/+/a5382cea3d..b937d39273

Changed dependencies
* src/buildtools/linux64: git_revision:d8c2f07d653520568da7cace755a87dad241b72d..git_revision:129ce6b9af1a93143acd8f8dea6fb8c6cb65abc9
* src/buildtools/mac: git_revision:d8c2f07d653520568da7cace755a87dad241b72d..git_revision:129ce6b9af1a93143acd8f8dea6fb8c6cb65abc9
* src/buildtools/win: git_revision:d8c2f07d653520568da7cace755a87dad241b72d..git_revision:129ce6b9af1a93143acd8f8dea6fb8c6cb65abc9
* src/ios: https://chromium.googlesource.com/chromium/src/ios/+log/76aa1c78ed..94f693fcb6
* src/third_party: https://chromium.googlesource.com/chromium/src/third_party/+log/256d17dbe5..a133c94b51
* src/third_party/androidx/cipd: uw8FaVpFdPaFx2Y4c1mBUMRwGB52J-PturMUyulx_hkC..Hi79Lu6qQ-Fbcjwgf_f-NEYJweP4QdZqjJ0lXwc0PpcC
* src/third_party/boringssl/src: https://boringssl.googlesource.com/boringssl.git/+log/476f483518..eedf10c1f4
* src/third_party/grpc/src: https://chromium.googlesource.com/external/github.com/grpc/grpc.git/+log/50957c5c47..260c6fd37c
* src/third_party/llvm-libc/src: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git/+log/8df8a70a83..044963a253
* src/tools: https://chromium.googlesource.com/chromium/src/tools/+log/0510739a11..9765576870
DEPS diff: https://chromium.googlesource.com/chromium/src/+/a5382cea3d..b937d39273/DEPS

BUG=None

Change-Id: Ifcf8deb472e0d2cf1d96b4446f007b2c84f36ec8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455781
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Bot-Commit: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#47114}
…cling."

This reverts commit 9e33813.

Reason for revert: Breaks webrtc-importer

Original change's description:
> Fix payload type allocation issues for Audio RED and MID recycling.
>
> This CL addresses several issues identified while enabling the
> WebRTC-PayloadTypesInTransport field trial:
> - Enforce media type equality in codec matching to prevent Audio/Video
> RED collisions.
> - Relax RED matching rules to allow negotiation with unlinked RED codecs.
> - Validate media type during MID recycling in CodecVendor to prevent
> incorrect codec merging.
> - Update documentation with the video implementation strategy.
>
> Bug: webrtc:360058654
> Change-Id: I1ecbdad2179d346b3682875d823889aa076e353e
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/453001
> Reviewed-by: Henrik Boström <hbos@webrtc.org>
> Commit-Queue: Harald Alvestrand <hta@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#47113}

Bug: webrtc:360058654
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: I5f7c642e936c1b06781b78f10293837d1262d450
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455820
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Owners-Override: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47115}
Search&Replace MakeArrayView and ArrayView with std::span
Search&Replace include "api/array_view.h" with include <span>
Remove build dependencies on array_view target

Bug: webrtc:439801349
Change-Id: Ib1f7d5f042ed1b1d331cb3171259340e391870e7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/454303
Commit-Queue: Victor Boivie <boivie@webrtc.org>
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Victor Boivie <boivie@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47116}
Search&Replace MakeArrayView and ArrayView with std::span
Search&Replace include "api/array_view.h" with include <span>
Remove <span> include where std::span is not mentioned in the file
Remove build dependencies on array_view target

No-Iwyu: suggested missing includes are questionable, and such question is out of scope of this change.
Bug: webrtc:439801349
Change-Id: Iaa233c972c1420563862f43530ed354cddbcaf8c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455800
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47117}
Change log: https://chromium.googlesource.com/chromium/src/+log/b937d39273..8fdfcb5d76
Full diff: https://chromium.googlesource.com/chromium/src/+/b937d39273..8fdfcb5d76

Changed dependencies
* src/build: https://chromium.googlesource.com/chromium/src/build/+log/7d29c62736..c9202dd8ca
* src/ios: https://chromium.googlesource.com/chromium/src/ios/+log/94f693fcb6..00efde9573
* src/testing: https://chromium.googlesource.com/chromium/src/testing/+log/e7a1e88ecc..bacbfe72d8
* src/third_party: https://chromium.googlesource.com/chromium/src/third_party/+log/a133c94b51..22a76fe23b
* src/third_party/androidx/cipd: Hi79Lu6qQ-Fbcjwgf_f-NEYJweP4QdZqjJ0lXwc0PpcC..A6oLcxGdFmfrPoaAcVYoVYHlkB3InvLKiIKnIgmGJVcC
* src/third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/e0ebf38a01..a2f6285fa5
* src/third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+log/4ce8ba39a3..a4e677522d
* src/third_party/eigen3/src: https://chromium.googlesource.com/external/gitlab.com/libeigen/eigen.git/+log/4387e32481..c4eb3c4f4c
* src/third_party/grpc/src: https://chromium.googlesource.com/external/github.com/grpc/grpc.git/+log/260c6fd37c..3ca09e4818
* src/third_party/perfetto: https://chromium.googlesource.com/external/github.com/google/perfetto.git/+log/4cead1b0fc..c0a3840504
* src/tools: https://chromium.googlesource.com/chromium/src/tools/+log/9765576870..82543c0c7f
DEPS diff: https://chromium.googlesource.com/chromium/src/+/b937d39273..8fdfcb5d76/DEPS

BUG=None

Change-Id: Ica2e37fd2735bac28e9c7b69c9539b487e5666d2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455900
Bot-Commit: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#47118}
This CL moves the usage of receive_time_calculator_ in Call from the
worker thread to the network thread. It extracts the worker thread logic
of DeliverRtpPacket into DeliverRtpPacket_w to allow clearer thread
annotations.

Also includes new g3doc for a simple overview of the RTP receive flow.

Bug: webrtc:11993
Change-Id: I143a548888474b4ebd14a9041d5cb649738e0775
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/454304
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47119}
SendCodecsHaLntf, SendCodecRtxTime and SendCodecRtcpMode
were introduced during the send/receive split.
Refactoring has removed the need for them. They can be deleted.

Bug: None
Change-Id: I328a8f8dfcc89743270f87c307a558276bb730a3
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455240
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47120}
Change log: https://chromium.googlesource.com/chromium/src/+log/8fdfcb5d76..94ef474520
Full diff: https://chromium.googlesource.com/chromium/src/+/8fdfcb5d76..94ef474520

Changed dependencies
* src/build: https://chromium.googlesource.com/chromium/src/build/+log/c9202dd8ca..08d96365cc
* src/ios: https://chromium.googlesource.com/chromium/src/ios/+log/00efde9573..c82693e275
* src/testing: https://chromium.googlesource.com/chromium/src/testing/+log/bacbfe72d8..ff008b8125
* src/third_party: https://chromium.googlesource.com/chromium/src/third_party/+log/22a76fe23b..6fd21700ca
* src/third_party/compiler-rt/src: https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt.git/+log/c8a5676846..e1e57b8776
* src/third_party/fuzztest/src: https://chromium.googlesource.com/external/github.com/google/fuzztest.git/+log/54ed362692..2145ac8a75
* src/third_party/grpc/src: https://chromium.googlesource.com/external/github.com/grpc/grpc.git/+log/3ca09e4818..a2bf3f10d5
* src/third_party/perfetto: https://chromium.googlesource.com/external/github.com/google/perfetto.git/+log/c0a3840504..08b509bdad
* src/third_party/r8/cipd: CoaQUbD7pDX3OuETi_O5wkv_Y198RVIUaSobSEx9zfoC..6BLixpU9eIdUBP0egFPaRGM00adKPdziwUcg5ThtXFYC
* src/tools: https://chromium.googlesource.com/chromium/src/tools/+log/82543c0c7f..cf631c2a37
DEPS diff: https://chromium.googlesource.com/chromium/src/+/8fdfcb5d76..94ef474520/DEPS

BUG=None

Change-Id: Ib35a4e1539cdbe95349933a6993aeac9dcfb9311
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/455960
Bot-Commit: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#47121}
Bug: None
Change-Id: Ib5a517a68d06a7b7f9c468b5e058ef4c8cda3092
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/456021
Commit-Queue: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Bot-Commit: webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com <webrtc-version-updater@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#47123}
Change log: https://chromium.googlesource.com/chromium/src/+log/68ba4ea02a..42535d5df1
Full diff: https://chromium.googlesource.com/chromium/src/+/68ba4ea02a..42535d5df1

Changed dependencies
* src/build: https://chromium.googlesource.com/chromium/src/build/+log/08d96365cc..59b2d010a9
* src/buildtools/linux64: git_revision:129ce6b9af1a93143acd8f8dea6fb8c6cb65abc9..git_revision:83c605e5dcc3db2945291da1760ca9abd6343338
* src/buildtools/mac: git_revision:129ce6b9af1a93143acd8f8dea6fb8c6cb65abc9..git_revision:83c605e5dcc3db2945291da1760ca9abd6343338
* src/buildtools/win: git_revision:129ce6b9af1a93143acd8f8dea6fb8c6cb65abc9..git_revision:83c605e5dcc3db2945291da1760ca9abd6343338
* src/ios: https://chromium.googlesource.com/chromium/src/ios/+log/73655355dd..93aa68ef77
* src/third_party: https://chromium.googlesource.com/chromium/src/third_party/+log/1df9fda10d..3aceea1e90
* src/third_party/androidx/cipd: A6oLcxGdFmfrPoaAcVYoVYHlkB3InvLKiIKnIgmGJVcC..Mn6UxK4fOcnps2oJ1ikX7T1Nf93dtMBkX68uqIyoQ0sC
* src/third_party/cpuinfo/src: https://chromium.googlesource.com/external/github.com/pytorch/cpuinfo.git/+log/7364b490b5..7607ca5004
* src/third_party/eigen3/src: https://chromium.googlesource.com/external/gitlab.com/libeigen/eigen.git/+log/c4eb3c4f4c..2a2456c873
* src/third_party/grpc/src: https://chromium.googlesource.com/external/github.com/grpc/grpc.git/+log/ee2aee8b5e..4d052614c1
* src/third_party/r8/cipd: 6BLixpU9eIdUBP0egFPaRGM00adKPdziwUcg5ThtXFYC..AVViRP05v8_iDI-43CYldqOEnoNz2SUTr_nBxP_z-NwC
* src/third_party/tflite/src: https://chromium.googlesource.com/external/github.com/tensorflow/tensorflow.git/+log/f920077085..d20369f4f2
* src/third_party/xnnpack/src: https://chromium.googlesource.com/external/github.com/google/XNNPACK.git/+log/26feacc3eb..15e04ff8b6
* src/tools: https://chromium.googlesource.com/chromium/src/tools/+log/a9a47e61f4..a06f75e8e5
DEPS diff: https://chromium.googlesource.com/chromium/src/+/68ba4ea02a..42535d5df1/DEPS

BUG=None

Change-Id: Ia5cba7a6e2796ccdfa654b372fe6c348be7c42f0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/456080
Commit-Queue: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Bot-Commit: Autoroller <chromium-webrtc-autoroll@webrtc-ci.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#47124}
Change-Id: Id8fbe6d5476c1c7559a72afa79c658d514932813
Bug: webrtc:467294026
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/456061
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/heads/main@{#47125}
markafoltz and others added 14 commits April 28, 2026 14:22
Original change's description:
> [Pipewire] Fix mouse cursor data race.
>
> This addresses a potential data race when the mouse cursor is updated
> on the Pipewire thread and read by the capture thread.
>
> Bug: chromium:504551032
> Change-Id: I1afb9febe8bb41ce62c63872e2cb5514e908dd38
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/465440
> Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
> Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
> Auto-Submit: Mark Foltz <mfoltz@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#47502}

(cherry picked from commit 90b22181ec922900e26de71463b8e0ed47a5c2dd)

Bug: chromium:505447260,chromium:504551032
Change-Id: I1afb9febe8bb41ce62c63872e2cb5514e908dd38
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/468140
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/7778@{#6}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
Original change's description:
> Always release VideoEncoders before destruction.
>
> Without a `Release()` call there is a potential for race conditions
> between asynchronous encoder callbacks and the destructor sequence.
>
> Bug: chromium:504620824
> Change-Id: I1fba23ef3a4a238503cdf8d2ea5831e815d7b902
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/465582
> Auto-Submit: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#47495}

(cherry picked from commit 21d9744bd599d106da9171fbb1ed09047d7178ca)

Bug: chromium:505251595,chromium:504620824
Change-Id: I1fba23ef3a4a238503cdf8d2ea5831e815d7b902
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/468940
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/7778@{#7}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
…nd shared.

Original change's description:
> Refactor RTP header extension ID allocation to be persistent and shared.
>
> - Introduced RtpHeaderExtensionRecorder and RtpHeaderExtensionPicker in
> call/payload_type_picker.
> - Added SuggestRtpHeaderExtensionId and AddRtpHeaderExtensionMapping to
> PayloadTypeSuggester interface.
> - Implemented persistent RTP header extension ID mapping in
> SdpPayloadTypeSuggester.
> - Refactored pc/media_session.cc to use PayloadTypeSuggester for all
> RTP header extension ID allocations, replacing UsedRtpHeaderExtensionIds.
> - Ensured shared mapping between local and remote extensions for the
> same transport.
> - Maintained RFC 8285 compliance for one-byte and two-byte ID allocation.
> - Updated tests to explicitly allow mixed extensions when two-byte IDs
> are expected.
> - Removed obsolete UsedRtpHeaderExtensionIds and its unit test.
>
> Bug: webrtc:503013383
> Change-Id: Ic98522b1eec52c736a73bd034493f19ac6524b5a
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/465300
> Auto-Submit: Harald Alvestrand <hta@webrtc.org>
> Commit-Queue: Harald Alvestrand <hta@webrtc.org>
> Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#47492}

(cherry picked from commit d1ae1e9ad4d183f4b00ad0962b35bba90162f038)

Bug: webrtc:503013383
Bug: chromium:513880244
Fixed: chromium:514078702
No-Try: true
Change-Id: If466bf7fa67e1277bcdd6b8af8c4f175ad0c9df7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/472720
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Jeremy Leconte <jleconte@google.com>
Cr-Commit-Position: refs/branch-heads/7778@{#8}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
Original change's description:
> Validate CGImage dimensions in MouseCursorMonitorMac
>
> This adds missing height checks alongside the existing width checks
> when processing and scaling the cursor image.
>
> Fixed: chromium:513268100
> Change-Id: Ida1e58334a9d3bda429819e4af51b33afbd0a95d
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/472700
> Reviewed-by: Alexander Cooper <alcooper@chromium.org>
> Auto-Submit: Johannes Kron <kron@webrtc.org>
> Commit-Queue: Alexander Cooper <alcooper@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#47715}

(cherry picked from commit b343cd4e280980f26b4feb80684f57d5b4324e12)

Bug: chromium:514925120,chromium:513268100
Change-Id: Ida1e58334a9d3bda429819e4af51b33afbd0a95d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/473980
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/7778@{#9}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
Original change's description:
> Guard RestoreTokenManager add/reads with Mutex
>
> The RestoreTokenManager is a singleton who's adds and reads could be
> accessed by multiple threads simultaneously. To prevent any potential
> issues/collisions, ensure that such accesses happen behind a lock.
>
> Bug: chromium:513049286
> Change-Id: I44c1c7977a6d02e1ac3fbe00e6ffc7bc22e41e46
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/472480
> Reviewed-by: Mark Foltz <mfoltz@chromium.org>
> Auto-Submit: Alexander Cooper <alcooper@chromium.org>
> Commit-Queue: Mark Foltz <mfoltz@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#47711}

(cherry picked from commit b9f0b184cb5a487fcb4910efaf4f84483ddba284)

Bug: chromium:514926739,chromium:513049286
Change-Id: I44c1c7977a6d02e1ac3fbe00e6ffc7bc22e41e46
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/474060
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/7778@{#10}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
…apturer.

Original change's description:
> [desktop capture] Fix TOCTOU race condition in CroppingWindowCapturer.
>
> Crop the frame using the window rectangle captured when the capture
> was initiated, rather than re-querying the rectangle after the capture
> finishes.
>
> Bug: chromium:504557432
> Change-Id: I459d528ac343163fde9a9dbf6c40a542c1a04c61
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/467820
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Reviewed-by: Alexander Cooper <alcooper@chromium.org>
> Commit-Queue: Mark Foltz <mfoltz@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#47575}

(cherry picked from commit 22f071a33eb46cbabcbf05961127dde7a2e3d908)

Bug: chromium:514924157,chromium:504557432
Change-Id: I459d528ac343163fde9a9dbf6c40a542c1a04c61
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/474160
Reviewed-by: Alexander Cooper <alcooper@chromium.org>
Commit-Queue: Alexander Cooper <alcooper@chromium.org>
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Reviewed-by: Mark Foltz <mfoltz@chromium.org>
Cr-Commit-Position: refs/branch-heads/7778@{#11}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
Original change's description:
> In SctpDataChannel use plain bool as safety flag.
>
> SctpDataChannel can be destroyed on various threads and thus safety flag
> couldn't be properly invalidated in the destructor. Instead of relying
> on it when posting async send, rely on reference counting of the full
> object
>
> Bug: chromium:504716948
> Change-Id: I1246fecac26d0761be006b069658d072183546bf
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/469980
> Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#47635}

(cherry picked from commit 9b4ffb3281c02327968ed07389082fcb2dd77baa)

Bug: chromium:514923643,chromium:504716948
Change-Id: I1246fecac26d0761be006b069658d072183546bf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/474800
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/branch-heads/7778@{#12}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
Original change's description:
> [WGC] Fix frame size synchronization
>
> Fixes a scenario where the mapped_texture_ and frame_pool_ sizes of the
> WGC capturer could get out of sync and potentially bypass their
> reconciliation on the following frame.
>
> Fixed: chromium:517727318
> Change-Id: Ie4e951bbdf41491200b7ba1289f85e4c02bc22d1
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/476860
> Commit-Queue: Mark Foltz <mfoltz@chromium.org>
> Auto-Submit: Alexander Cooper <alcooper@chromium.org>
> Reviewed-by: Mark Foltz <mfoltz@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#47898}

(cherry picked from commit b5cf1fa607113788cf894d5b6895c72fba1d9254)

Bug: chromium:520651879,chromium:517727318
Change-Id: Ie4e951bbdf41491200b7ba1289f85e4c02bc22d1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/479880
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/7778@{#13}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
Original change's description:
> Fix OOB write in RotateDesktopFrame and DXGI size mismatch
>
> Upgrade RTC_DCHECK to RTC_CHECK in RotateDesktopFrame to enforce
> bounds checks in release builds. Validate captured frame size against
> expected unrotated size in DxgiOutputDuplicator::Duplicate to fail
> gracefully on resolution changes.
>
> Fixed: chromium:520199394
> Change-Id: Iad22c89cf3ef900b0ac58a72ec3a9f8d2e96123b
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/479000
> Auto-Submit: Alexander Cooper <alcooper@chromium.org>
> Commit-Queue: Alexander Cooper <alcooper@chromium.org>
> Reviewed-by: Mark Foltz <mfoltz@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#47937}

(cherry picked from commit 15644107234aa9bc7a4bf7e9f9a2157a8a9415b4)

Bug: chromium:522133348,chromium:520199394
Change-Id: Iad22c89cf3ef900b0ac58a72ec3a9f8d2e96123b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/480620
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: rubber-stamper@appspot.gserviceaccount.com <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/7778@{#14}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
…eAdjuster.

Original change's description:
> Add better checks for temporal/spatial bounds in EncoderBitrateAdjuster.
>
> Bug: webrtc:514671098
> Change-Id: If3cfb55bdc03d57760a5d30fc63ca63ed321fad1
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/474681
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Auto-Submit: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#47775}

(cherry picked from commit 1ad94cdd43c06cbf1cfcdec665b83671fd287a5b)

Bug: chromium:516658498,webrtc:514671098
Change-Id: If3cfb55bdc03d57760a5d30fc63ca63ed321fad1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/481400
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/branch-heads/7778@{#15}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
AllocateSctpSids iterates over newly assigned channels using raw
pointers and calls OnTransportReady on each one. OnTransportReady
can synchronously fail (e.g. if sending the DCEP OPEN message
fails), which may cause the channel to close and be deleted,
leaving the controller with a dangling pointer.

This change ensures the channels are kept alive during the loop by
using scoped_refptr for the temporary collection. This fixes the
UAF for any failure mode that prevents synchronous sending of the
initialization message.

(cherry picked from commit 13fdb6e802e5c326533445aa15f9717f2fc26004)

No-Try: true
Bug: chromium:503422316
Fixed: chromium:514924244
Change-Id: I1b927386fb4ed4279036835a244320aba6acf875
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/465701
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Auto-Submit: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Original-Commit-Position: refs/heads/main@{#47503}
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/485860
Cr-Commit-Position: refs/branch-heads/7778@{#16}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
Original change's description:
> Remove audio stream from old sync group on update.
>
> If the sync group for an audio receive stream is updated, it must be
> removed from the old sync group as well so that the old group does not
> have an invalid reference.
>
> Bug: chromium:504599749
> Change-Id: I548e194d4f8ac6461388d639836e1f62f6b7f7e7
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/465663
> Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
> Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
> Cr-Commit-Position: refs/heads/main@{#47504}

(cherry picked from commit b5bd19b75c8c417d9e4d5a25ce55eea6b17b9c94)

Disabling try bots to work around ios_dbg_simulator infra failure.

No-Try: true
Bug: chromium:514925053,chromium:504599749
Change-Id: I548e194d4f8ac6461388d639836e1f62f6b7f7e7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/481180
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Auto-Submit: Chrome Cherry Picker <chrome-cherry-picker@chops-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/branch-heads/7778@{#17}
Cr-Branched-From: ca896b7-refs/heads/main@{#47319}
Upgrades the Stream fork to official WebRTC M148 using the merge-forward
model. The clean M145 baseline was grafted as an ancestor (merge -s ours)
so the 3-way merge base is M145 instead of ~M124, reducing the conflict
set from ~1931 files to 26.

Resolved 26 conflicts as Stream carry-forward (kept Stream behavior while
adopting M148 APIs) and applied follow-on adaptations for M148's newer
toolchain/APIs:
- ArrayView is now std::span: .subview -> .subspan; add api/array_view.h
  include to nalu_rewriter.h
- BitrateAdjuster requires a Clock; kept it in the H265 encoder and honored
  Stream's removal of it from the H264 encoder
- AECM removed upstream: RTCAudioProcessingConfig mobile_mode stubbed
  (public property preserved, inert)
- grandfathered Stream-only files in unsafe_buffers_paths.txt
- restored develop's swizzle-based RTCPeerConnectionFactoryBuilder test
  (M148 OCMock rewrite is incompatible with the move-only deps type)

Verified locally: iOS + macOS framework build and unit tests pass
(sdk_unittests 181/181, peerconnection_unittests 72 pass / 1 skip).
Android validated via CI.

Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 65b6c307-66a7-410c-8db5-3bf3d60b0911

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch merge-webrtc-m148

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ipavlidakis ipavlidakis added the enhancement New feature or request label Jul 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.