From 259fb1a38328433964f4e5a339d1417e538b33ca Mon Sep 17 00:00:00 2001 From: Alex Andres Date: Tue, 13 Oct 2026 01:42:09 +0200 Subject: [PATCH 1/2] build: update WebRTC branch from 7977 to 8059 (M155) - Set webrtc.branch to branch-heads/8059 and update the build guide. - Use the Chromium Clang that 8059 pins (llvmorg-24-init-7747-g62397f8b-27) in the Linux CI builds. - Install Windows SDK 10.0.28000.0 in the Windows CI builds; the Windows toolchain of 8059 pins it and gn fails without it. - M155 uses the network thread as the worker thread when none is supplied, and support for a distinct worker thread is being removed; update the comment in the PeerConnectionFactory accordingly. --- .github/actions/prepare-linux/action.yml | 2 +- .github/actions/prepare-windows/action.yml | 21 +++++++++++++++++++ docs/guide/build.md | 2 +- webrtc-jni/pom.xml | 2 +- .../cpp/src/JNI_PeerConnectionFactory.cpp | 5 +++-- 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/.github/actions/prepare-linux/action.yml b/.github/actions/prepare-linux/action.yml index 6d11aba6d..d53992ff1 100644 --- a/.github/actions/prepare-linux/action.yml +++ b/.github/actions/prepare-linux/action.yml @@ -43,7 +43,7 @@ runs: # tools/clang/scripts/update.py of the webrtc.branch set in # webrtc-jni/pom.xml. Update it whenever that branch changes. - name: Select the Chromium Clang package - run: echo "CLANG_PACKAGE=clang-llvmorg-23-init-19482-g53d18800-1.tar.xz" >> "$GITHUB_ENV" + run: echo "CLANG_PACKAGE=clang-llvmorg-24-init-7747-g62397f8b-27.tar.xz" >> "$GITHUB_ENV" shell: bash - name: Cache the Chromium Clang package diff --git a/.github/actions/prepare-windows/action.yml b/.github/actions/prepare-windows/action.yml index 36bb5b13a..87f07fe29 100644 --- a/.github/actions/prepare-windows/action.yml +++ b/.github/actions/prepare-windows/action.yml @@ -12,6 +12,27 @@ runs: python -m pip install meson shell: powershell + # The Windows toolchain of the WebRTC branch set in webrtc-jni/pom.xml + # only accepts the SDK pinned by SDK_VERSION in build/vs_toolchain.py of + # that branch, and gn fails without it. Update it whenever that changes. + - name: Install the Windows SDK + run: | + $version = "10.0.28000.0" + if (-not (Test-Path "${env:ProgramFiles(x86)}\Windows Kits\10\Include\$version\um")) { + $installer = "$env:RUNNER_TEMP\winsdksetup.exe" + Invoke-WebRequest -Uri "https://download.microsoft.com/download/06fc99ac-527e-451e-a536-8866695a2e7e/KIT_BUNDLE_WINDOWSSDK_MEDIACREATION/winsdksetup.exe" -OutFile $installer + if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne "02988EA51EAB2A2DB53E19735E51C97A6D221ADA74B9174FA0868870B9403BA0") { + throw "The Windows SDK installer does not match its checksum" + } + # The x64 and ARM64 libraries for both targets, and the debugging + # tools for dbghelp.dll, which the toolchain setup requires. + $process = Start-Process -FilePath $installer -Wait -PassThru -ArgumentList "/features OptionId.DesktopCPPx64 OptionId.DesktopCPParm64 OptionId.WindowsDesktopDebuggers /quiet /norestart /ceip off" + if ($process.ExitCode -ne 0) { + throw "The Windows SDK installer failed with exit code $($process.ExitCode)" + } + } + shell: powershell + - name: Install MSYS2 and the FFmpeg build tools run: | # FFmpeg's configure and makefiles are shell scripts, so building it diff --git a/docs/guide/build.md b/docs/guide/build.md index 09da81fa8..681e89b33 100644 --- a/docs/guide/build.md +++ b/docs/guide/build.md @@ -22,7 +22,7 @@ On the first run, the WebRTC source tree will be loaded into the `//w | Parameter | Description | Default Value | | ------------------ | ------------------------------------------------------ |-----------------------------| -| webrtc.branch | The WebRTC branch to checkout. | branch-heads/7977 | +| webrtc.branch | The WebRTC branch to checkout. | branch-heads/8059 | | webrtc.src.dir | The absolute checkout path for the WebRTC source tree. | /\/webrtc | | webrtc.install.dir | The install path for the compiled WebRTC library. Is also used to link against a pre-compiled WebRTC library to reduce build time. | /\/webrtc/build | diff --git a/webrtc-jni/pom.xml b/webrtc-jni/pom.xml index a8febf20e..4b0b44647 100644 --- a/webrtc-jni/pom.xml +++ b/webrtc-jni/pom.xml @@ -12,7 +12,7 @@ pom - branch-heads/7977 + branch-heads/8059 ${user.home}/webrtc ${user.home}/webrtc/build Release diff --git a/webrtc-jni/src/main/cpp/src/JNI_PeerConnectionFactory.cpp b/webrtc-jni/src/main/cpp/src/JNI_PeerConnectionFactory.cpp index 0c4a8b5ff..481493821 100644 --- a/webrtc-jni/src/main/cpp/src/JNI_PeerConnectionFactory.cpp +++ b/webrtc-jni/src/main/cpp/src/JNI_PeerConnectionFactory.cpp @@ -138,8 +138,9 @@ JNIEXPORT void JNICALL Java_dev_onvoid_webrtc_PeerConnectionFactory_initialize // send stream. auto proxy = jni::ProxyAudioDeviceModule::Create(adm); - // The worker thread is left to the factory, which creates and owns one - // when PeerConnectionFactoryDependencies::worker_thread is not set. + // No worker thread is supplied: WebRTC is removing support for one that + // is distinct from the network thread, and without one the factory + // uses the network thread as its worker thread. webrtc::PeerConnectionFactoryDependencies dependencies; dependencies.network_thread = networkThread.get(); dependencies.signaling_thread = signalingThread.get(); From 50f4121458ac8ab7c40a20ad78b9f2c2f68c4363 Mon Sep 17 00:00:00 2001 From: Alex Andres Date: Tue, 13 Oct 2026 14:21:41 +0200 Subject: [PATCH 2/2] fix: include in the V4L2 device manager The libc++ of the Clang that 8059 pins no longer pulls it in through other headers, so the Linux builds failed. --- .../main/cpp/src/media/video/linux/V4l2VideoDeviceManager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/webrtc-jni/src/main/cpp/src/media/video/linux/V4l2VideoDeviceManager.cpp b/webrtc-jni/src/main/cpp/src/media/video/linux/V4l2VideoDeviceManager.cpp index 1e19be2e9..3fb99ca29 100644 --- a/webrtc-jni/src/main/cpp/src/media/video/linux/V4l2VideoDeviceManager.cpp +++ b/webrtc-jni/src/main/cpp/src/media/video/linux/V4l2VideoDeviceManager.cpp @@ -26,6 +26,8 @@ #include #include +#include + #define UDEV_SUBSYSTEM "video4linux" #define UDEV_ADD "add" #define UDEV_REMOVE "remove"