145.6.0
Official WebRTC M137..M145 changes
Stream release comparison
This release merges the WebRTC M145 baseline into main from develop, on top of the existing Stream fork at M137. The upstream integration landed via PR #81 (iliaspavlidakis/merge-webrtc-m145 → develop); this document covers the combined delta ready for main, including post-M145 fork work in #90.
The upstream WebRTC baseline update contains 2,171 commits by 102 authors. The Stream-side integration squash touches 20 files; the full develop → main delta is 30 files across the M145 integration and adaptive simulcast enhancement.
Summary
- Upstream WebRTC baseline (M137 → M145): Brings broad changes across media pipelines, transport, PeerConnection/SDP, desktop capture, stats/metrics, security hardening, API cleanup, and build infrastructure—plus 542 Chromium rolls and 130 reverts/relands that move the depot to the M145 snapshot.
- Media pipeline: Scream V2 and TWCC/L4S congestion-control work, capture-signal mixing/remixing, NetEq/codec construction without
CodecPairId, corruption-detectionFrameSelectortrials, AV1/simulcast stability fixes, and frame instrumentation refactors. - Transport and PeerConnection: RTP/RTCP/ICE/DTLS/SCTP updates, DTLS-in-STUN and PQC benchmarking, expanded SDP munging detection, transceiver/channel lifecycle improvements, and
Environment-based factory construction. - Stream SDK and Apple integration: Preserves ObjC frame crypto, desktop capture bridges, audio device module wiring, Darwin framework/build rules, and CI publish workflows across the new baseline.
- Frame crypto compatibility: Aligns C++ and ObjC E2EE paths with upstream buffer and
SetFrameTransformerAPIs. - Audio device modernization: Moves test/native ADM construction to
const Environment&andenv.task_queue_factory(). - Adaptive simulcast (develop-only, #90): Extends
SimulcastEncoderAdapterandVideoStreamEncoderresource management for adaptive streaming on top of M145.
Categories
| Category | Changes |
|---|---|
| Audio | 74 |
| Video and Codecs | 102 |
| Desktop Capture | 27 |
| PeerConnection and SDP | 63 |
| Transport and Networking | 339 |
| Stats and Metrics | 63 |
| Security and Robustness | 24 |
| API and SDK | 3 |
| Tests and Reliability | 108 |
| Build and Infrastructure | 38 |
| Cleanup and Modernization | 245 |
| Reverts and Relands | 130 |
| Rolls and Versioning | 542 |
| General | 413 |
Category counts are based on upstream commit subjects in webrtc/m137..b47e68e6966d (cec4daea7ed5..b47e68e6966d); routine Chromium rolls and version updates are counted separately so they do not obscure functional changes.
Upstream WebRTC Highlights
Audio
- Continues Scream V2 bandwidth-estimation work: receiver-delay compensation, loss-response fixes, REMB integration, L4S alpha updates, TWCC pairing, traffic policing tests, and crash fixes when replaying BWE scenarios.
- Adds capture-signal mixing/remixing infrastructure and related signal-analysis components for capture pipelines.
- Modernizes NetEq and audio coding APIs: stricter config validation,
opus_redpayload support in tests, decoder factory helpers, and removal ofAudioCodecPairIdfrom NetEq surfaces. - Extends frame transformer interfaces with
CaptureTime,PayloadType, andAudioLevelsetters; allows CSRC configuration on senders. - Propagates
Environmentclocks into Android audio record and related JNI paths.
Video and Codecs
- Wires corruption-detection frame selection through
FrameSelector(field trials and utility class). - Improves codec construction so codecs/decoders can be created without
CodecPairId; adds mixed-codec simulcast support inSimulcastEncoderAdapter. - Fixes AV1 simulcast timing/scalability handling and strengthens simulcast/integration tests.
- Adds file-based encoder/decoder utilities,
VideoFrameSampler, and software-codec picture-pair helpers for tests and tooling. - Moves frame instrumentation generator implementation toward
video/and exposes refactored instrumentation data inapi/.
Desktop Capture
- Improves capture behavior, including editor-window capture when slideshow mode is selected and stronger PowerPoint fullscreen detection tests.
- Updates Wayland screencast plumbing (D-Bus unsubscribe, portal behavior, redundant prefix cleanup).
- Adds FourCC pixel format support on
DesktopFrameand HMONITOR caching for performance. - Addresses ScreencastResult crash speculation and removes legacy pixel-format checks from frame construction.
PeerConnection and SDP
- Expands SDP munging detection (transceiver direction, SCTP/data-channel fields, restricted candidates, codec preferences, parse failures) with dedicated metrics and unit-test coverage.
- Improves SCTP/SDP handling, ICE candidate removal APIs, and transceiver receptive-state modeling.
- Allows injecting a prebuilt
EnvironmentintoPeerConnectionFactoryconstruction; adds ObjCsetAudioDeviceModuleBuilder. - Refactors RtpTransceiver and PeerConnection dependency graphs ahead of API slimming.
Transport and Networking
- Adds RTP/RTCP send options (
PacketOptionsonSendRtcp), CSRC lists on encodings, and richerRtpHeaderExtensionstringifiers. - Improves DTLS visibility (version, connection-time metrics) and continues DTLS-in-STUN / PQC encapsulation benchmarks and cleanups.
- Advances Scream + TWCC + L4S experiments, probing, and integration tests (including RFC 8888 / transport-cc combinations).
- Updates SCTP/dcSCTP behavior (pull-mode message consumption, compile-time SCTP guards, error messaging).
- Refactors jitter estimation,
RtpToNtpEstimatorplacement, and Android ADM creation via injectedEnvironment.
Stats and Metrics
- Adds and fixes SDP munging outcome metrics; instruments blocking thread calls in SDP classes.
- Implements L4S send/inbound-rtp stats and RFC 8888 support in parsed event logs.
- Fixes simulcast stats gaps for missing
outbound-rtpentries; adds mixed-codec simulcast stats info. - Expands RtcEventLog driver/examples and RTP transport UMA coverage.
Security and Robustness
- Adds SSL error clearing before
SSL_get_errorand extends certificate verification paths (including chain validation and PQC group reporting). - Improves thread-safety (
RTC_GUARDED_BY, voice-engine checks, mutex-backed socket picker proxy). - Fixes crashes in H265 packetization, custom SSL verifiers, encoder speed control, and Scream BWE replay.
- Tightens SDP direction validation and hardens DTLS-in-STUN certificate restrictions.
Build, Infrastructure, and Cleanup
- Migrates standalone infra toward Siso/Reclient (
use_siso=true, gn logs, bot property updates) and refreshes DEPS autorolling (GCS deps,libpfm4, fuzzer checkout cleanup). - Runs broad GN dependency and clang-tidy hygiene (
modernize-use-std-numbers, include-cleaner/IWYU sweeps). - Removes deprecated targets/APIs (
MOCK_METHODn, legacy field-trial helpers, redundantwebrtc::qualifiers) acrosspc,p2p,audio, and tests. - Large Chromium roll + WebRTC version bump volume (542 + 130 reverts/relands) provides the underlying M137→M145 depot movement.
Stream Integration Highlights
ObjC SDK and Apple Frameworks
- Preserves Stream's ObjC frame crypto APIs across M145:
RTCFrameCryptorRTCFrameCryptorKeyProvider
- Updates desktop capture ObjC bridges (
objc_desktop_capture,objc_desktop_media_list) for upstream type/thread API changes. - Adjusts native audio device module entry (
audio_device_module.mm) for M145 construction patterns. - Extends
sdk/BUILD.gnandwebrtc.gnifor framework exports, test dependencies, and Catalyst/macOS header layout rules.
Frame Crypto
- Updates
frame_crypto_transformer.ccbuffer handling to use upstream-compatibleBuffer::CreateUninitializedWithSizepatterns. - Adapts ObjC frame cryptor setup to upstream
SetFrameTransformerand modernwebrtc::scoped_refptrusage while keeping Stream delegate behavior.
Audio Device
- Updates
test_audio_device.ccandaudio_statepaths to useconst Environment&instead of rawTaskQueueFactory*. - Aligns unit tests in
audio_state_unittest.ccwith upstream ADM construction and task-queue access viaenv.task_queue_factory().
Desktop Capture
- Refreshes ObjC desktop capture/list headers and implementations for M145 API compatibility (thread creation, typing, and lifecycle).
- Keeps Stream screen/window listing, thumbnail, and frame-delivery behavior while matching upstream style changes.
Tests
- Hardens
RTCCameraVideoCapturerTeststeardown (explicit stop/clear of capture session mocks). - Reworks
RTCPeerConnectionFactoryBuilderTestto avoid brittle OCMock allocation hooks; uses temporary method replacement forinitWithMediaAndDependencies:with restoration after each test. - Updates
mock_transformable_video_frame.hfor upstream test API changes.
CI and Publish Workflows
- Expands
.github/workflows/manual-platform-tests.ymlandpublish.ymlfor M145 validation and release artifact packaging. - Updates
prepare-androidandprepare-applecomposite actions for the new baseline build matrix.
Additional changes on develop (post-M145 merge)
Video encoding — adaptive simulcast (#90)
66ce11d526cb[Enhancement] Extend SimulcastEncoderAdapter to support adaptive streaming (#90)- Adds adaptive streaming support in
SimulcastEncoderAdapterwith expanded unit coverage. - Updates
VideoStreamEncoderandVideoStreamEncoderResourceManagerto coordinate layer/resource adaptation under load. - Adjusts
encoder_stream_factory,objc_video_encoder_factory, and related tests for the new adaptation behavior.