AO/PipeWire: Multichannel output forces fixed 48kHz and breaks automatic sample rate switching
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- c, linux
- Domain
- audio-video-rtc, backend
Research direction
Start by reading the PipeWire audio output implementation and its channel and sample rate configuration; the issue does not name specific files or tests. Reproduce with --ao=pipewire using a high sample rate stereo file, then compare stereo output with multichannel or upmixing enabled. Done means multichannel routing works while the output can switch to the file's sample rate.
Written by the indexing model from the issue text.
Description
mpv Information
Other Information
- Linux version:
- Kernel Version:
- GPU Model:
- Mesa/GPU Driver Version:
- Window Manager and Version:
- Source of mpv:
- Latest known working version:
- Issue started after the following happened:
Reproduction Steps
mpv v0.41.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
libplacebo version: v7.360.1
FFmpeg version: 8.0.1 (runtime 8.1.2)
FFmpeg library versions:
libavcodec 62.11.100 (runtime 62.28.102)
libavdevice 62.1.100 (runtime 62.3.102)
libavfilter 11.4.100 (runtime 11.14.102)
libavformat 62.3.100 (runtime 62.12.102)
libavutil 60.8.100 (runtime 60.26.102)
libswresample 6.1.100 (runtime 6.3.102)
libswscale 9.1.100 (runtime 9.5.102)
- Linux version:Fedora 44
Title:
AO/PipeWire: Multichannel output / upmixing forces fixed 48kHz and breaks automatic sample rate switching (Bitperfect)
Description:
When using the native --ao=pipewire output module, there is a conflict between multichannel audio rendering and automatic sample rate switching.
• Behavior 1: If a stereo file (e.g., 96kHz) is played via direct PipeWire output, the sample rate switches perfectly to 96kHz, but the audio is strictly limited to 2 channels (no automatic multichannel routing or duplication to other outputs of my Audient iD44).
• Behavior 2: If multichannel audio or upmixing is triggered, PipeWire locks the entire audio interface down to a fixed 48kHz, completely ignoring the original Hi-Res sample rate of the file.
Currently, the only way to achieve proper channel replication across all 8 outputs of the audio interface is by falling back to the legacy jack wrapper, which unfortunately completely sacrifices the on-the-fly sample rate switching capability.
Expected behavior:
The native PipeWire audio output module should support full multichannel streaming (including stereo duplication/upmixing to available hardware ports) while maintaining native, unrestricted sample rate switching (Bitperfect) under the hood.
Expected Behavior
Actual Behavior
Log File
Sample Files
No response
I carefully read all instruction and confirm that I did the following:
- I tested and confirmed that the issue exists with the latest release version or newer.
- I provided all required information including system and mpv version.
- I produced the log file with the exact same set of files, parameters, and conditions used in "Reproduction Steps", with the addition of
--log-file=output.txt. - I produced the log file while the behaviors described in "Actual Behavior" were actively observed.
- I attached the full, untruncated log file.
- I attached the backtrace in the case of a crash.
- Dominant language
- C
- Stars
- 37.5k
- Forks
- 3.6k
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 55
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from mpv-player/mpv
-
Subtitle delay value displays "-0ms"Possibly taken @masonliiu claimed this 1 day ago. Openos:linux
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
mpv-player/mpv#18649 ·
Maintainers usually reply within 1 day
-
meta:feature-request
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
mpv-player/mpv#18464 ·
Maintainers usually reply within 1 day
-
Keyboard shortcut next and previous secondary subtitle filePossibly taken @ravarnax claimed this 197 days ago. Openmeta:feature-request
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
mpv-player/mpv#17693 · 5 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
ao/pulse: ao_drain() hangs forever on LoongArch when PulseAudio underrun produces negative buf_diffOpenos:linux
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
mpv-player/mpv#17651 · 1 comment ·
Maintainers usually reply within 1 day
-
autocrop.lua:209: attempt to index local 'hwdec_current'Possibly taken A pull request linked to this issue is open or already merged. Openos:linux
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
mpv-player/mpv#16739 · 9 comments ·
Maintainers usually reply within 1 day
Similar issues
-
TLS: a stale OpenSSL error makes non-blocking reads fail with "Resource temporarily unavailable"Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
bigtreetech/BIGTREETECH-TouchScreenFirmware#3056 ·
Maintainers usually reply within 1 day
-
Allow pillow 13Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
[pico][astrocade] emu/apply.sh edits src/mame/midway/astrohome.cpp, which current MAME has in bally/Open
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
FujiNetWIFI/fujinet-firmware#2120 ·
Maintainers usually reply within 1 day