Skip to content

145.6.0

Choose a tag to compare

@github-actions github-actions released this 21 May 20:14
· 18 commits to main since this release
205a310

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-m145develop); 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 developmain 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-detection FrameSelector trials, 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 SetFrameTransformer APIs.
  • Audio device modernization: Moves test/native ADM construction to const Environment& and env.task_queue_factory().
  • Adaptive simulcast (develop-only, #90): Extends SimulcastEncoderAdapter and VideoStreamEncoder resource 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_red payload support in tests, decoder factory helpers, and removal of AudioCodecPairId from NetEq surfaces.
  • Extends frame transformer interfaces with CaptureTime, PayloadType, and AudioLevel setters; allows CSRC configuration on senders.
  • Propagates Environment clocks 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 in SimulcastEncoderAdapter.
  • 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 in api/.

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 DesktopFrame and 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 Environment into PeerConnectionFactory construction; adds ObjC setAudioDeviceModuleBuilder.
  • Refactors RtpTransceiver and PeerConnection dependency graphs ahead of API slimming.

Transport and Networking

  • Adds RTP/RTCP send options (PacketOptions on SendRtcp), CSRC lists on encodings, and richer RtpHeaderExtension stringifiers.
  • 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, RtpToNtpEstimator placement, and Android ADM creation via injected Environment.

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-rtp entries; 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_error and 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, redundant webrtc:: qualifiers) across pc, 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:
    • RTCFrameCryptor
    • RTCFrameCryptorKeyProvider
  • 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.gn and webrtc.gni for framework exports, test dependencies, and Catalyst/macOS header layout rules.

Frame Crypto

  • Updates frame_crypto_transformer.cc buffer handling to use upstream-compatible Buffer::CreateUninitializedWithSize patterns.
  • Adapts ObjC frame cryptor setup to upstream SetFrameTransformer and modern webrtc::scoped_refptr usage while keeping Stream delegate behavior.

Audio Device

  • Updates test_audio_device.cc and audio_state paths to use const Environment& instead of raw TaskQueueFactory*.
  • Aligns unit tests in audio_state_unittest.cc with upstream ADM construction and task-queue access via env.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 RTCCameraVideoCapturerTests teardown (explicit stop/clear of capture session mocks).
  • Reworks RTCPeerConnectionFactoryBuilderTest to avoid brittle OCMock allocation hooks; uses temporary method replacement for initWithMediaAndDependencies: with restoration after each test.
  • Updates mock_transformable_video_frame.h for upstream test API changes.

CI and Publish Workflows

  • Expands .github/workflows/manual-platform-tests.yml and publish.yml for M145 validation and release artifact packaging.
  • Updates prepare-android and prepare-apple composite 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 SimulcastEncoderAdapter with expanded unit coverage.
  • Updates VideoStreamEncoder and VideoStreamEncoderResourceManager to coordinate layer/resource adaptation under load.
  • Adjusts encoder_stream_factory, objc_video_encoder_factory, and related tests for the new adaptation behavior.