From 3d309c93bee0dfa06f2a5535d4a97b0bb6771102 Mon Sep 17 00:00:00 2001 From: Kpqi5858 Date: Sat, 8 Aug 2026 01:51:34 +0900 Subject: [PATCH 1/2] fix(pipewire): fix 24-bit sample format mapping --- CHANGELOG.md | 1 + src/host/pipewire/stream.rs | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb840e059..855c3f2b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **PipeWire**: Fix streams starting audio before `play()` is called. - **PipeWire**: Fix rtkit burst limit errors from repeated real-time promotion on quantum jitter. - **PipeWire**: Fix real-time promotion blocking the audio callback thread on Linux. +- **PipeWire**: Fix 24-bit sample format mapping. - **PipeWire**: Nodes with an `/Internal` media class are now enumerated as devices. - **PipeWire**: Streams for a specific device no longer auto-reroute if it disappears. - **PipeWire**: Build on 32-bit targets without native 64-bit atomics. diff --git a/src/host/pipewire/stream.rs b/src/host/pipewire/stream.rs index 601f234fa..cea6e50fa 100644 --- a/src/host/pipewire/stream.rs +++ b/src/host/pipewire/stream.rs @@ -191,13 +191,13 @@ impl From for AudioFormat { SampleFormat::U16 => Self::U16BE, #[cfg(target_endian = "little")] - SampleFormat::I24 => Self::S24LE, + SampleFormat::I24 => Self::S24_32LE, #[cfg(target_endian = "big")] - SampleFormat::I24 => Self::S24BE, + SampleFormat::I24 => Self::S24_32BE, #[cfg(target_endian = "little")] - SampleFormat::U24 => Self::U24LE, + SampleFormat::U24 => Self::U24_32LE, #[cfg(target_endian = "big")] - SampleFormat::U24 => Self::U24BE, + SampleFormat::U24 => Self::U24_32BE, #[cfg(target_endian = "little")] SampleFormat::I32 => Self::S32LE, #[cfg(target_endian = "big")] From 957cda8555b6604e5ac375b9d6da7efc08af9c89 Mon Sep 17 00:00:00 2001 From: Roderick van Domburg Date: Fri, 14 Aug 2026 19:36:59 +0200 Subject: [PATCH 2/2] fix(ci): pin mipsel to no forced frame pointers Nightly's default force-frame-pointers setting for mipsel-unknown-linux-gnu now gets forwarded by cc-rs to mipsel-linux-gnu-gcc as -mno-omit-leaf-frame-pointer, which that cross-gcc doesn't recognize, failing the libspa-sys/pipewire-sys build scripts. --- .github/workflows/platforms.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/platforms.yml b/.github/workflows/platforms.yml index 1ae102312..7b01f2ff0 100644 --- a/.github/workflows/platforms.yml +++ b/.github/workflows/platforms.yml @@ -190,6 +190,9 @@ jobs: PKG_CONFIG_ALLOW_CROSS: "1" PKG_CONFIG_PATH: /usr/lib/mipsel-linux-gnu/pkgconfig/ CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_GNU_LINKER: mipsel-linux-gnu-gcc + # Nightly's default force-frame-pointers setting for this target gets forwarded by cc-rs + # to mipsel-linux-gnu-gcc as -mno-omit-leaf-frame-pointer, which it doesn't recognize. + RUSTFLAGS: "-C force-frame-pointers=no" steps: - uses: actions/checkout@v5