pipewire issueshttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues2024-03-28T21:36:42Zhttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3938pipewire failure to setup 5.1 with Realtek ALC897 Analog2024-03-28T21:36:42ZPeter Saundersonpipewire failure to setup 5.1 with Realtek ALC897 AnalogUbuntu 23.10 ASUS PRIME B760-PLUS D4 LGA1700 ATX Motherboard
This motherboard is supposed to have an option for 5.1 surround sound but all the seems to work is stereo.
0. Audio/Sink alsa_output.pci-0000_00_1f.3.iec958-stereo.7
pavu...Ubuntu 23.10 ASUS PRIME B760-PLUS D4 LGA1700 ATX Motherboard
This motherboard is supposed to have an option for 5.1 surround sound but all the seems to work is stereo.
0. Audio/Sink alsa_output.pci-0000_00_1f.3.iec958-stereo.7
pavucontrol shows the HDMI surround sound, but I am using Analogue and surround sound does not show up in the list.
Any idea about how to debug this? BIOS shows only an option to enable HDA. Previous PC used "Generic" snd_hda_intel.. perhaps I should try generic rather than ALC897 Analog??
[pw-info-superu.txt](/uploads/9ab6f0f2104e753f562e74bfd6b66963/pw-info-superu.txt) [alsa-info-log-superu.txt](/uploads/7ae7c62da408708a184b9a375de3fa06/alsa-info-log-superu.txt)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3937impl-node: The CrewChief app (and probably others) started having a lot of cr...2024-03-28T19:11:35ZIvo Ivanovimpl-node: The CrewChief app (and probably others) started having a lot of crackling and distortion since Pipewire 0.3.72+.- PipeWire version (`pipewire --version`): pipewire compiled and linked with libpipewire 1.0.4
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Manjaro Linux (Arch Linux)
- Desktop Environment: XFCE
- Kerne...- PipeWire version (`pipewire --version`): pipewire compiled and linked with libpipewire 1.0.4
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Manjaro Linux (Arch Linux)
- Desktop Environment: XFCE
- Kernel version (`uname -r`): 6.8.1-273-tkg-eevdf
## Description of Problem:
CrewChief (Wine/Proton) is an utility that emulates the speech of a race engineer (or crew chief) in various sim racing games. It reads game telemetry through shared memory or network packets, etc, so speech is context sensitive (pre-recorded, not synthesized).
The problem usually happens after 2-3 minutes of game play, leaving the "crew chief" say different things. It usually appears as a 1-2 sec. "shhhhhhhh" sound at words ending with "sh", etc. It seems like a prolonged word end, but very distorted and with a lot of crackling.
I couldn't find the time to do a regression test till now, but after Wireplumber 0.5.0 couldn't resolve some symbols with Pipewire 0.3.71, realized it was time to report this, and try to help resolve it.
After doing a bisect, found out that commit f085a1fa49fac5b28da34e94a59944548bdb60e0 was responsible for this. To confirm it is the only commit causing the issue, compiled pipewire as further as the commit can be cleanly reverted (de7883024b657a46f855318147d54ebfb4d49870), and the app sound played without issues.
Seeing as there are a lot of changes made to the impl-node.c "node_ready" function since 0.3.71, and the issue is still present, there must be something introduced by that very first commit, that persists throughout all the changes.
At first glance the condition of the "if" statement has been changed from "if (SPA_UNLIKELY(state->pending > 0))" to "if (SPA_UNLIKELY(a->status != PW_NODE_ACTIVATION_FINISHED))" and the entire "else" block has been removed, which changes the logic somewhat. Also the "node_trigger(node)" call has been omitted.
I plan to do some testing with "node_trigger" or it's current replacement, when time permits.
Also I feel there are some pops and cracks in game sound (Wine mostly) since 0.3.72. This is purely subjective of course.
## How Reproducible:
It's always reproducible, but takes some time ~2-3 minutes for the issue to appear.
### Steps to Reproduce:
1. Install CrewChief in a Wine prefix (needs dotnet48).
2. Install a racing game that is supported - Automobilista 2, rFactor 2, etc.
3. Start the CrewChief app followed by the game.
4. Start playing the game, doing some laps and letting the "crew chief" say various things.
### Actual Results:
After 2-3 minutes the CrewChief audio becomes distorted with a lot of crackling.
### Expected Results:
The CrewChief audio plays without distortion or crackling through the entire game session.
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`: [pw-dump.log](/uploads/71ff8d09be0d921486521838b69ab1aa/pw-dump.log)
- pw-top: ![pw-top](/uploads/0d335094242915964fea03d72aece213/pw-top.png)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3934All mic in system stop working after connecting HSP/HFP enabled headset in A2...2024-03-27T16:44:38ZDenis RyabyyAll mic in system stop working after connecting HSP/HFP enabled headset in A2DP mode# Environment
```
$ pipewire --version
pipewire
Compiled with libpipewire 1.0.4
Linked with libpipewire 1.0.4
```
```
$ cat /etc/os-release
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"...# Environment
```
$ pipewire --version
pipewire
Compiled with libpipewire 1.0.4
Linked with libpipewire 1.0.4
```
```
$ cat /etc/os-release
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo
```
Gnome 46.0
```
$ uname -r
6.8.1-arch1-1
```
# Description of Problem
I have webcam `Logitech, Inc. C922 Pro Stream Webcam` with integrated microphone. My usual scenario is to use that microphone with my Sony WH-1000XM5 headset ( A2DP/LDAC profile ).
To get it I'm using
```
cat ~/.config/wireplumber/policy.lua.d/11-bluetooth-policy.lua
bluetooth_policy.policy["media-role.use-headset-profile"] = false
```
All was great until I've got pipewire update. Now webcam mic only works if headset is disconnected or headset is switched to HFP/HSP mode ( in this way my webcam mic starts working and headset mic starts working too ).
If headset on any of A2DP profile, I can select webcam mic for use, but its absolutely no sound from it.
# How to reproduce
1. Check that mic from webcam working
2. Connect bluetooth headset
3. Check that mic stops working
4. Switch to HSP/HFP profile
5. Check that both mics working
# Actual Results
Any mics stop working after headset connected in A2DP profile
# Expected Results
Any mic working when headset connected in A2DP profile ( excluding headset one )
# Other
Please let me know if you need some additional debbuging info. Can't find any template to fill bug report, so used one from side issues.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3931channelmix.disable not working?2024-03-28T21:07:31ZDavid Boulanger Latourchannelmix.disable not working?Not sure if I am confused here but I'd expect "channelmix.disable" to allow disabling channel mixing completely.
Yet adding `channelmix.disable = true` to `client.conf` results in a failure:
```
[I][77863.804503] spa.audioconvert | [ ...Not sure if I am confused here but I'd expect "channelmix.disable" to allow disabling channel mixing completely.
Yet adding `channelmix.disable = true` to `client.conf` results in a failure:
```
[I][77863.804503] spa.audioconvert | [ audioconvert.c: 851 parse_prop_params()] key:'channelmix.disable' val:'true'
...
[D][77863.839207] spa.audioadapter | [ audioadapter.c: 377 negotiate_buffers()] 0x5573370ecc48: n_buffers:2
[D][77863.839211] spa.audioconvert | [ audioconvert.c: 1468 setup_convert()] 0x5573370ed148: setup:0 in_format:1 out_format:1
[I][77863.839215] spa.audioconvert | [ audioconvert.c: 1132 setup_in_convert()] 0x5573370ed148: Spa:Enum:AudioFormat:F32P/2@48000->Spa:Enum:AudioFormat:F32P/2@48000
[D][77863.839219] spa.audioconvert | [ audioconvert.c: 1151 setup_in_convert()] 0x5573370ed148: channel 0 (0) -> 0 (FL -> FL)
[D][77863.839222] spa.audioconvert | [ audioconvert.c: 1151 setup_in_convert()] 0x5573370ed148: channel 1 (1) -> 1 (FR -> FR)
[D][77863.839227] spa.audioconvert | [ audioconvert.c: 1173 setup_in_convert()] 0x5573370ed148: got converter features 0007cbdb:00000000 passthrough:1 remap:0 conv_copy32d_c
[I][77863.839231] spa.audioconvert | [ audioconvert.c: 1295 setup_channelmix()] in FL FR (0000000000000018)
[I][77863.839235] spa.audioconvert | [ audioconvert.c: 1297 setup_channelmix()] out MONO (0000000000000004)
[I][77863.839238] spa.audioconvert | [ audioconvert.c: 1300 setup_channelmix()] 0x5573370ed148: Spa:Enum:AudioFormat:F32P/2@48000->Spa:Enum:AudioFormat:F32P/1@48000 00000018:00000004
[E][77863.839243] spa.audioadapter | [ audioadapter.c: 870 impl_node_send_command()] 0x5573370ecc48: can't send command 2: Operation not permitted
[E][77863.839246] pw.node | [ impl-node.c: 281 start_node()] (ALSA Capture-0) start node error -1: Operation not permitted
[W][77863.839252] mod.client-node | [ remote-node.c: 526 client_node_command()] node 0x55733710b5b0: start failed
```
Is there a way to actually disable channel mixing? I'm trying to avoid all these volumes applied which I do not want.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3929no sound2024-03-25T18:36:14ZMarc Debruyneno sound<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`):
pipewire
Compiled with libpipewire 1.1.0
Linked with libpipewire 1.1.0
-...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`):
pipewire
Compiled with libpipewire 1.1.0
Linked with libpipewire 1.1.0
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Gentoo Linux
- Desktop Environment: gnome
- Kernel version (`uname -r`):6.8.1-gentoo-x86_64
## Description of Problem:
no sound no outputs visible in qpwgraph
## How Reproducible:
always
### Steps to Reproduce:
1.
2.
3.
### Actual Results:
no sound
### Expected Results:
sound
# Additional Info (as attachments):
- `pw-dump > pw-dump.log[pw-dump.log](/uploads/76a4830b9087fb0baeb6e193850f15e5/pw-dump.log)`:https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3926PipeWire suddenly breaks2024-03-26T17:57:12ZDADA30000PipeWire suddenly breaks<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): compiled and linked with libpipewire 1.0.4
- Distribution and distribution version (...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): compiled and linked with libpipewire 1.0.4
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): NixOS 24.05 (Uakari)
- Desktop Environment: Hyprland
- Kernel version (`uname -r`): 6.6.22
## Description of Problem:
PipeWire sometimes, usually under load just suddenly stops playing audio, if I try to kill, restart it, it just hangs in D state (uninterruptible sleep) and I can't even reboot system after that, I need to use SysRq or just press button on my pc
## How Reproducible:
idk
### Steps to Reproduce:
Easiest way is to
1. Download a lot of maps in osu!lazer
2. Go into menu where you choose beatmap
3. No sound
### Actual Results:
PipeWire goes into D state
### Expected Results:
I expect it to just work
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`:
pw-dump hangshttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3925DSD Playback Not Working2024-03-25T14:47:18ZlimahuliDSD Playback Not WorkingTrying to play DSD64 audio and receiving an error.
```
pw-dsdplay -v /home/me/music/aj.dsf
dsffile: opened file "/home/me/music/aj.dsf" channels:2 rate:2822400 samples:861297592 bitorder:lsb
rate:0 latency:0 (0.000s)
connecting playbac...Trying to play DSD64 audio and receiving an error.
```
pw-dsdplay -v /home/me/music/aj.dsf
dsffile: opened file "/home/me/music/aj.dsf" channels:2 rate:2822400 samples:861297592 bitorder:lsb
rate:0 latency:0 (0.000s)
connecting playback stream; target=(null)
stream state changed unconnected -> connecting
stream param change: Spa:Enum:ParamId:Props
stream properties:
application.name = "pw-dsdplay"
node.name = "pw-dsdplay"
media.type = "Audio"
media.category = "Playback"
media.role = "Music"
media.filename = "/home/me/music/aj.dsf"
media.name = "/home/me/music/aj.dsf"
stream.is-live = "true"
node.want-driver = "true"
node.autoconnect = "true"
media.class = "Stream/Output/Audio"
remote 0 is named "pipewire-0"
stream state changed connecting -> paused
stream param change: Spa:Enum:ParamId:Props
stream state changed paused -> error
stream node 76 error: no node available
remote error: id=2 seq:7 res:-2 (No such file or directory): no node available
```
The DAC supports native DSD as seen here:
```
cat /proc/asound/card0/stream0
MUSICIAN USB HiRes Audio at usb-xhci-hcd.0-1, high speed : USB Audio
Playback:
Status: Stop
Interface 1
Altset 1
Format: S32_LE
Channels: 2
Endpoint: 0x01 (1 OUT) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000, 1411200, 1536000
Data packet interval: 125 us
Bits: 32
Channel map: FL FR
Sync Endpoint: 0x81 (1 IN)
Sync EP Interface: 1
Sync EP Altset: 1
Implicit Feedback Mode: No
Interface 1
Altset 2
Format: SPECIAL DSD_U32_BE
Channels: 2
Endpoint: 0x01 (1 OUT) (ASYNC)
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000, 1411200, 1536000
Data packet interval: 125 us
Bits: 32
DSD raw: DOP=0, bitrev=0
Channel map: FL FR
Sync Endpoint: 0x81 (1 IN)
Sync EP Interface: 1
Sync EP Altset: 2
Implicit Feedback Mode: No
```https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3923Virtual Loopback Auto Sample Rate2024-03-22T15:19:13ZlimahuliVirtual Loopback Auto Sample RateIs it possible to have a virtual loopback interface adjust to the incoming sample rate and output that rate as well?
I'm using this as my virtual:
```
context.modules = [
{ name = libpipewire-module-loopback
args = {
...Is it possible to have a virtual loopback interface adjust to the incoming sample rate and output that rate as well?
I'm using this as my virtual:
```
context.modules = [
{ name = libpipewire-module-loopback
args = {
audio.position = [ FL FR ]
capture.props = {
media.class = Audio/Sink
node.name = my_sink
node.description = "my-sink"
#node.latency = 1024/48000
#audio.rate = 44100
#audio.channels = 2
#audio.position = [ FL FR ]
#target.object = "my-default-sink"
}
playback.props = {
#media.class = Audio/Source
node.name = my_source
node.description = "my-source"
#node.latency = 1024/48000
#audio.rate = 44100
#audio.channels = 2
#audio.position = [ FL FR ]
target.object = "my-default-source"
}
}
}
]
```
I'm accepting this in a DSP app, and outputting from that app to a physical interface. My issue is that all the audio is coming into the DSP app at the same sample rate.
Ii have the following set, and it works if I don't use the virtual interface.
```
default.clock.rate = 48000
default.clock.allowed-rates = [ 44100 48000 88200 96000 176400 192000 352800 384000 ]
```
How can I get auto sample rate adjustments to work with a virtual loopback?https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3920Proposed implementation on how to configure the BAP Broadcast Source from Pip...2024-03-27T18:09:02ZsilviubarbulescuProposed implementation on how to configure the BAP Broadcast Source from PipeWireHi, we would like to add support in PipeWire to configure the BAP Broadcast Source.
The implementation we propose is:
In WirePlumber Bluetooth configuration under monitor.bluez.properties we add the property
“bluez5.bcast_source.confi...Hi, we would like to add support in PipeWire to configure the BAP Broadcast Source.
The implementation we propose is:
In WirePlumber Bluetooth configuration under monitor.bluez.properties we add the property
“bluez5.bcast_source.config” which will define the BISes configuration.
Example:
```
bluez5.bcast_source.config = [
{
"broadcast_code" : [1, 2, 104, 5, 83, 241, 65, 90, 162, 101, 187, 175, 198, 234, 3, 184],
"presentation_delay" : 40000,
"bis": [
{
"codec_capability" : [2, 1, 3, 2, 2, 1, 3, 4, 40, 0, 5, 3, 1, 0, 0, 0],
"qos" : {
"sync_factor" : 1,
....
},
"metadata" : [3, 2, 2, 0]
}
]
}
]
```
In BlueZ after the broadcast source endpoint is registered, an endpoint is created on D-Bus. To configure the BISes of the broadcast source SetConfiguration with information like codec capabilities, metadata, qos, etc.. must be called on this endpoint. Each call represents the configuration of a new BIS.
When the endpoint is detected (over DBus) by Pipewire and it has a broadcast sink UUID, we will start calling se “SetConfiguration” with the data read from the configuration file (or default configuration)
After each SetConfiguration BlueZ will create a transport with the data from SetConfiguration that will be used by PipeWire.
Thanks for the support.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3918node.name and object.serial are not being consistant when pluggging and unplu...2024-03-22T10:06:40Zbeh 1694node.name and object.serial are not being consistant when pluggging and unplugging jack port using an alsa-card-profile![image.png](/uploads/d85ba07e2b0dc64037fd8693687cc2c2/image.png){width="278" height="354"}
so i am using this alsa-card-profile its in my .config
```
[General]
auto-profiles = yes[Mapping headphones]
device-strings= hw:0,2
channel-map...![image.png](/uploads/d85ba07e2b0dc64037fd8693687cc2c2/image.png){width="278" height="354"}
so i am using this alsa-card-profile its in my .config
```
[General]
auto-profiles = yes[Mapping headphones]
device-strings= hw:0,2
channel-map = left,right
paths-output = behe-headphones
paths-input = analog-input-headphone-mic analog-input-headset-mic
priority = 20
[Mapping speaker]
device-strings= hw:0,0
channel-map = left,right
paths-output = behe-speaker
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic
priority = 18
[Profile help]
input-mappings = speaker headphones
output-mappings = speaker headphones
description = both_both_is_good
skip-probe = yes
priority = 100
.include 9999-custom.conf
```
anyway I don't really know when this stopped working correctly but I bet thats not the expected behaviour since well aren't those variables supposed to be the only constant
to make loopback virtual devices
also are node.name and object.serial supposed to change when I change profiles
like between these
https://gitlab.freedesktop.org/pipewire/pipewire/uploads/65633d093eba7dbfdfd369f3334ed206/2024-03-20_15-51-400864293.jpghttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3912Unpredictable pw-JACK port naming with second/subsequent instances of same US...2024-03-22T22:09:29ZDavid McNabUnpredictable pw-JACK port naming with second/subsequent instances of same USB audio deviceIs there any way to configure pipewire's JACK layer to assign predictable port names, when second/subsequent instances of the same type of USB audio devices are inserted, then auto-bridged from pipewire/ALSA to JACK?
I'm trying to auto-...Is there any way to configure pipewire's JACK layer to assign predictable port names, when second/subsequent instances of the same type of USB audio devices are inserted, then auto-bridged from pipewire/ALSA to JACK?
I'm trying to auto-persist a JACK connection graph in an environment where there are multiple instances of the exact same USB audio device (same USB vendorID:deviceID, differing only in serial number).
When I insert the first instance of the device, it is auto-detected, and the JACK layer assigns sensible client names and port names, then creates the ALSA/pw-JACK bridges. That is great.
But when the second instance of the device is inserted, pw-JACK allocates the same client name as the first instance (which is fine), but for the port names, it allocates same names as the first instance, suffixed by an arbitrary, non-predictable number (which creates big problems).
This makes it very difficult to auto-persist a JACK connection graph, with tools like `aj-snapshot`, which are completely reliant on the assigned JACK client and port names.
I've worked around it by writing a program which:
1. uses `jack_lsp` to enumerate all the current JACK clients and ports
2. pattern-matches these to get the 'new allocated port names' of the second device
3. patches the graph file previously saved by `aj-snapshot` to update the port names to those now allocated by pw-JACK
4. starts `aj-snapshot` with the patched file, so aj-snapshot knows what to connect to what
This works well, as long as I plug in the first and second instances of the USB device in the same order each time. But it will become much harder if I ever want third and more instances.
Auto-persisting JACK graphs would be much simpler if there was a straightforward way to configure pw-JACK to assign predictable JACK port names for second/subsequent instances of the same vendor:device USB audio device.
Ideally, it would be great if it could assign port name suffixes based on a short hash of each device's USB serial number. But if that's not possible, even auto-allocating suffixes of `_1`, `_2` etc would be fine.
Can anyone please help, or point me to a resource which can resolve this?https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3911Network display sinks2024-03-25T16:01:59ZDark DragonNetwork display sinksWould be great if Pipewire would offer an easy way to add network displays (Miracast, DLNA, ...) as sinks such that applications can easily cast content like video streams to them.
Could be as easy as copying some functionality from [GN...Would be great if Pipewire would offer an easy way to add network displays (Miracast, DLNA, ...) as sinks such that applications can easily cast content like video streams to them.
Could be as easy as copying some functionality from [GNOME Network Displays](https://gitlab.gnome.org/GNOME/gnome-network-displays).https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3910gst pipewiresrc has major delay compared to v4l2src on some cameras2024-03-26T14:21:51ZRobert Madergst pipewiresrc has major delay compared to v4l2src on some camerasThis *might* be a duplicate of https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/30 and is frequently seen with Gnome apps making use of `pipewiresrc` but does *not* occur when using PW directly (with e.g. https://gitlab.gnome.or...This *might* be a duplicate of https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/30 and is frequently seen with Gnome apps making use of `pipewiresrc` but does *not* occur when using PW directly (with e.g. https://gitlab.gnome.org/GNOME/pipewire-media-stream).
STR: compare
```
gst-launch-1.0 pipewiresrc ! image/jpeg,width=1280,height=720 ! decodebin3 ! videoconvert ! gtksink
```
with
```
gst-launch-1.0 v4l2src ! image/jpeg,width=1280,height=720 ! decodebin3 ! videoconvert ! gtksink
```
If somebody knows what's the issue already (e.g. https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/30) I can give it a go and try fixing things.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3907Buld fails with LC3Plus2024-03-21T18:54:11ZiconoclastheroBuld fails with LC3Plus<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): git from 2023.03.10
- Distribution and distribution version (`PRETTY_NAME` from `/et...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): git from 2023.03.10
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Rhino/PRETTY_NAME="Ubuntu Noble Numbat (development branch)"
- Desktop Environment: GNOME
- Kernel version (`uname -r`): Linux 6.7.6-060706-generic
## Description of Problem:
Build fails:
```
../spa/plugins/bluez5/a2dp-codec-lc3plus.c: In function ‘codec_init’:
../spa/plugins/bluez5/a2dp-codec-lc3plus.c:374:13: error: too few arguments to function ‘lc3plus_enc_init’
374 | if (lc3plus_enc_init(this->enc, this->samplerate, this->channels) != LC3PLUS_OK) {
| ^~~~~~~~~~~~~~~~
In file included from ../spa/plugins/bluez5/a2dp-codec-lc3plus.c:18:
../lc3plus.h:174:15: note: declared here
174 | LC3PLUS_Error lc3plus_enc_init(LC3PLUS_Enc* encoder, int samplerate, int channels, int hrmode, int32_t lfe_channel_array[]);
| ^~~~~~~~~~~~~~~~
../spa/plugins/bluez5/a2dp-codec-lc3plus.c:378:13: error: implicit declaration of function ‘lc3plus_enc_set_frame_ms’; did you mean ‘lc3plus_enc_set_frame_dms’? [-Werror=implicit-function-declaration]
378 | if (lc3plus_enc_set_frame_ms(this->enc, this->frame_dms/10.0f) != LC3PLUS_OK) {
| ^~~~~~~~~~~~~~~~~~~~~~~~
| lc3plus_enc_set_frame_dms
../spa/plugins/bluez5/a2dp-codec-lc3plus.c:382:13: error: implicit declaration of function ‘lc3plus_enc_set_hrmode’; did you mean ‘lc3plus_enc_set_ep_mode’? [-Werror=implicit-function-declaration]
382 | if (lc3plus_enc_set_hrmode(this->enc, 1) != LC3PLUS_OK) {
| ^~~~~~~~~~~~~~~~~~~~~~
| lc3plus_enc_set_ep_mode
../spa/plugins/bluez5/a2dp-codec-lc3plus.c:403:13: error: too few arguments to function ‘lc3plus_dec_init’
403 | if (lc3plus_dec_init(this->dec, this->samplerate, this->channels, LC3PLUS_PLC_ADVANCED) != LC3PLUS_OK) {
| ^~~~~~~~~~~~~~~~
../lc3plus.h:365:15: note: declared here
365 | LC3PLUS_Error lc3plus_dec_init(LC3PLUS_Dec* decoder, int samplerate, int channels, LC3PLUS_PlcMode plc_mode, int hrmode);
| ^~~~~~~~~~~~~~~~
../spa/plugins/bluez5/a2dp-codec-lc3plus.c:407:13: error: implicit declaration of function ‘lc3plus_dec_set_frame_ms’; did you mean ‘lc3plus_dec_set_frame_dms’? [-Werror=implicit-function-declaration]
407 | if (lc3plus_dec_set_frame_ms(this->dec, this->frame_dms/10.0f) != LC3PLUS_OK) {
| ^~~~~~~~~~~~~~~~~~~~~~~~
| lc3plus_dec_set_frame_dms
../spa/plugins/bluez5/a2dp-codec-lc3plus.c:411:13: error: implicit declaration of function ‘lc3plus_dec_set_hrmode’; did you mean ‘lc3plus_enc_set_ep_mode’? [-Werror=implicit-function-declaration]
411 | if (lc3plus_dec_set_hrmode(this->dec, 1) != LC3PLUS_OK) {
| ^~~~~~~~~~~~~~~~~~~~~~
| lc3plus_enc_set_ep_mode
../spa/plugins/bluez5/a2dp-codec-lc3plus.c: In function ‘codec_encode’:
../spa/plugins/bluez5/a2dp-codec-lc3plus.c:583:23: error: too few arguments to function ‘lc3plus_enc24’
583 | res = lc3plus_enc24(this->enc, inputs, dst, &size);
| ^~~~~~~~~~~~~
../lc3plus.h:202:15: note: declared here
202 | LC3PLUS_Error lc3plus_enc24(LC3PLUS_Enc* encoder, int32_t** input_samples, void* output_bytes, int* num_bytes
| ^~~~~~~~~~~~~
../spa/plugins/bluez5/a2dp-codec-lc3plus.c:588:23: error: too few arguments to function ‘lc3plus_enc24’
588 | res = lc3plus_enc24(this->enc, inputs, dst, &size);
| ^~~~~~~~~~~~~
../lc3plus.h:202:15: note: declared here
202 | LC3PLUS_Error lc3plus_enc24(LC3PLUS_Enc* encoder, int32_t** input_samples, void* output_bytes, int* num_bytes
| ^~~~~~~~~~~~~
../spa/plugins/bluez5/a2dp-codec-lc3plus.c: In function ‘codec_decode’:
../spa/plugins/bluez5/a2dp-codec-lc3plus.c:714:23: error: too few arguments to function ‘lc3plus_dec24’
714 | res = lc3plus_dec24(this->dec, (void *)src, src_size, outputs, 0);
| ^~~~~~~~~~~~~
../lc3plus.h:401:15: note: declared here
401 | LC3PLUS_Error lc3plus_dec24(LC3PLUS_Dec* decoder, void* input_bytes, int num_bytes, int32_t** output_samples,
| ^~~~~~~~~~~~~
../spa/plugins/bluez5/a2dp-codec-lc3plus.c:718:23: error: too few arguments to function ‘lc3plus_dec24’
718 | res = lc3plus_dec24(this->dec, (void *)src, src_size, outputs, 0);
| ^~~~~~~~~~~~~
../lc3plus.h:401:15: note: declared here
401 | LC3PLUS_Error lc3plus_dec24(LC3PLUS_Dec* decoder, void* input_bytes, int num_bytes, int32_t** output_samples,
| ^~~~~~~~~~~~~
cc1: some warnings being treated as errors
[208/1268] Compiling C object spa/plugins/bluez5/libspa-codec-bluez5-opus.so.p/a2dp-codec-opus.c.o
ninja: build stopped: subcommand failed.
```
It would be fantastic if the build documentation was better.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3905Documentation for build options2024-03-11T19:21:22ZiconoclastheroDocumentation for build optionsI've looked for this and except for ../gits/pipewire/meson-options.txt, there appears to be no information on what the options are and do. The [documentation](https://pipewire.pages.freedesktop.org/pipewire/) has no results for the opti...I've looked for this and except for ../gits/pipewire/meson-options.txt, there appears to be no information on what the options are and do. The [documentation](https://pipewire.pages.freedesktop.org/pipewire/) has no results for the option I'm interested in, "systemd-system-service" nor does it have any results for "build options" so I'm not sure how I am supposed to understand how to select options.
Please provide some amount of documentation for these in the actual documentation so that one doesn't have to attempt to track this down on google...as it doesn't exist in most cases: https://www.google.com/search?q=%22systemd-system-service%22+pipewire+documentationhttps://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3903Cannot Output Audio Over HDMI2024-03-09T17:51:50ZpossiblynealCannot Output Audio Over HDMI<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 1.0.3
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`)...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`): 1.0.3
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`): Debian GNU/Linux trixie/sid
- Desktop Environment: KDA Plasma 5.27.10
- Kernel version (`uname -r`): 6.6.15-amd64
## Description of Problem:
Audio not auto transferring when HDMI is plugged in. It is also not selectable in system settings nor pavucontrol. Running aplay -l in terminal shows that the HDMI is detected and the TV is detected, but I am not able to switch audio output to the TV.
## How Reproducible:
It has never worked for me even on a fresh install. I've also tried with Debian 12 Stable and it still doesn't work
### Steps to Reproduce:
1. Plugin HDMI cable to laptop and TV
2. Play video
3.
### Actual Results:
Video transfers but audio plays on laptop
### Expected Results:
Audio and video to play through tv
# Additional Info (as attachments):
- `pw-dump > pw-dump.log`:[pw-dump.log](/uploads/2d0491400f26b55ae8d20ef455c05f65/pw-dump.log)https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3898spa-inspect libspa-libcamera.so results2024-03-09T02:05:04ZJoel Winarskespa-inspect libspa-libcamera.so resultsRunning spa-inspect on tip of tree ( f3d9b823b) and ( 6ab86209f - 1.0.3) produces incorrect results.
```
[joel@air build]$ ./spa/tools/spa-inspect spa/plugins/libcamera/libspa-libcamera.so
factory version: 1
factory name: 'api.libcame...Running spa-inspect on tip of tree ( f3d9b823b) and ( 6ab86209f - 1.0.3) produces incorrect results.
```
[joel@air build]$ ./spa/tools/spa-inspect spa/plugins/libcamera/libspa-libcamera.so
factory version: 1
factory name: 'api.libcamera.enum.manager'
factory info:
none
factory interfaces:
interface: 'Spa:Pointer:Interface:Device'
[E] spa.libcamera [libcamera-manager.cpp:423 impl_init()] a Spa:Pointer:Interface:LoopUtils is needed
can't make factory instance: -22
factory version: 1
factory name: 'api.libcamera.device'
factory info:
none
factory interfaces:
interface: 'Spa:Pointer:Interface:Device'
[1:52:52.936605405] [66474] INFO Camera camera_manager.cpp:284 libcamera v0.2.0
[E] spa.libcamera [libcamera-device.cpp:302 impl_init()] unknown camera id
can't make factory instance: -2
factory version: 1
factory name: 'api.libcamera.source'
factory info:
none
factory interfaces:
interface: 'Spa:Pointer:Interface:Node'
[E] spa.libcamera [libcamera-source.cpp:1013 impl_init()] a system is needed
can't make factory instance: -22
```
Linux air 6.7.7-200.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Mar 1 16:53:59 UTC 2024 x86_64 GNU/Linux
libcamera v0.2.0
Pipewire 1.0.3
Fedora package: `pipewire.x86_64 1.0.3-1.fc39`https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3895spa.alsa: set_hw_params: Cannot allocate memory2024-03-11T16:18:59ZEvan Harrisspa.alsa: set_hw_params: Cannot allocate memory<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`):
```
pipewire
Compiled with libpipewire 0.3.65
Linked with libpipewire 0.3.65
```
- D...<!-- If you are filing this issue with a regular release please try master as it might already be fixed. -->
- PipeWire version (`pipewire --version`):
```
pipewire
Compiled with libpipewire 0.3.65
Linked with libpipewire 0.3.65
```
- Distribution and distribution version (`PRETTY_NAME` from `/etc/os-release`):
```
Debian GNU/Linux 12 (bookworm)
```
- Desktop Environment:
```
KDE
```
- Kernel version (`uname -r`):
```
6.1.0-14-amd64
```
## Description of Problem:
When running applications that play sounds, they will sometimes hang and produce error messages from pipewire in syslog.
Example messages:
```
pipewire[2777460]: spa.alsa: set_hw_params: Cannot allocate memory
pipewire[2777460]: pw.node: (alsa_output.pci-0000_00_14.2.analog-stereo-41) suspended -> error (Start error: Cannot allocate memory)
pipewire[2777460]: pw.link: 0x5650d88ba360: one of the nodes is in error out:suspended in:error
pipewire[2777460]: pw.link: 0x5650d877dc10: one of the nodes is in error out:suspended in:error
```
## How Reproducible:
Problem occurs randomly, but seems to become more prevalent with high memory pressure.
Once it starts occurring, it happens fairly often.
I've tried the workaround found in searching for these error messages of echoing 2048 into the /proc/asound/card*/pcm*/sub*/prealloc files, but it doesn't seem to help.
Found similar issue #2272, but that one says it was fixed in an earlier kernel version than I'm using.https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3891If roc source module is used, audio device is not detected after switching us...2024-03-24T12:57:42ZStrangiatoIf roc source module is used, audio device is not detected after switching user accountsHi
I use roc module to stream audio over network, both client and server machines run pipewire 1:1.0.3-1 on Arch Linux.
Audio device is not detected in the machine running roc source module after the following steps:
1. have two or ...Hi
I use roc module to stream audio over network, both client and server machines run pipewire 1:1.0.3-1 on Arch Linux.
Audio device is not detected in the machine running roc source module after the following steps:
1. have two or more user accounts on your system running roc source module
2. boot
3. log in with userA - the sound device is detected with this user
4. logout
5. log in with userB - the sound device is not detected anymore
Here is the journal log after the steps above:
https://0x0.st/H7oq.txt
Here are some lines about roc module from the log linked above:
```
mar 02 11:42:06 Arch-PC pipewire[1998]: 11:42:06.925 [2011] [err] roc_netio: udp receiver: <udprecv 0x76cd68000b88 bind=0.0.0.0:10001>: uv_udp_bind(): [EADDRINUSE] address already in use
mar 02 11:42:06 Arch-PC pipewire[1998]: 11:42:06.925 [2011] [err] roc_netio: network loop: can't add udp receiver port 0.0.0.0:10001: can't start udp receiver
mar 02 11:42:06 Arch-PC pipewire[1998]: 11:42:06.925 [1998] [err] roc_node: receiver node: can't bind audiosrc interface of slot 0: can't bind interface to local port
mar 02 11:42:06 Arch-PC pipewire[1998]: 11:42:06.925 [1998] [err] roc_node: receiver node: marking slot 0 as broken, it needs to be unlinked
mar 02 11:42:06 Arch-PC pipewire[1998]: 11:42:06.925 [1998] [err] roc_api: roc_receiver_bind(): operation failed
mar 02 11:42:06 Arch-PC pipewire[1998]: mod.roc-source: can't connect roc receiver to local source address
mar 02 11:42:06 Arch-PC rtkit-daemon[845]: Successfully made thread 1998 of process 1998 owned by '1003' high priority at nice level -11.
mar 02 11:42:06 Arch-PC rtkit-daemon[845]: Supervising 9 threads of 5 processes of 2 users.
mar 02 11:42:06 Arch-PC pipewire[1998]: pw.conf: 0x651e6468ecd0: could not load mandatory module "libpipewire-module-roc-source": Invalid argument
mar 02 11:42:06 Arch-PC rtkit-daemon[845]: Supervising 9 threads of 5 processes of 2 users.
mar 02 11:42:06 Arch-PC pipewire[1998]: default: failed to create context: Invalid argument
mar 02 11:42:06 Arch-PC rtkit-daemon[845]: Supervising 9 threads of 5 processes of 2 users.
mar 02 11:42:06 Arch-PC rtkit-daemon[845]: Supervising 9 threads of 5 processes of 2 users.
mar 02 11:42:06 Arch-PC systemd[1824]: pipewire.service: Main process exited, code=exited, status=234/n/a
```https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3890Audio normalization with ladspa and a filter chain2024-03-02T23:24:51ZHaden PikeAudio normalization with ladspa and a filter chain* PipeWire version: libpipewire 1.0.3
* Distribution: Arch Linux
* Desktop Environment: Stump WM
* Kernel version: 6.7.6
## Description of Problem:
I am new to filter chains. When attempting to setup volume normalizing using ladspa in ...* PipeWire version: libpipewire 1.0.3
* Distribution: Arch Linux
* Desktop Environment: Stump WM
* Kernel version: 6.7.6
## Description of Problem:
I am new to filter chains. When attempting to setup volume normalizing using ladspa in a filter chain, the Sink gets created, but the Sink does nothing.
Running:
```
pactl load-module module-ladspa-sink sink_name=Normalizer plugin=sc4_1882 label=sc4 control=1,1.5,401,-12,6,5,12
pactl load-module module-ladspa-sink sink_name=Normalized master=Normalizer plugin=fast_lookahead_limiter_1913 label=fastLookaheadLimiter control=5,-10,0.8
```
works as expected.
PIPEWIRE_DEBUG=3 doesnt give me any errors. Am I missing something, or is this a bug?
## How to Reproduce:
Put normalize.conf in pipewire.conf.d.
normalize.conf:
```
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Normalize Sink"
media.name = "Normalize Sink"
filter.graph = {
nodes = [
{
type = ladspa
name = sc4
plugin = sc4_1882
label = sc4
control = { "RMS/peak" = 1 "Attack time (ms)" = 1.5 "Release time (ms)" = 401 "Threshold level (dB)" = -12 "Ratio (1:n)" = 6 "Knee radius (dB)" = 5 "Makeup gain (dB)" = 12 }
}
{
type = ladspa
name = limiter
plugin = fast_lookahead_limiter_1913
label = fastLookaheadLimiter
control = { "Input gain (dB)" = 5 "Limit (dB)" = -10 "Release time (s)" = 0.8 }
}
]
links = [
{ output = "sc4:Left output" input = "limiter:Input 1" }
{ output = "sc4:Right output" input = "limiter:Input 2" }
]
inputs = [ "sc4:Left input" "sc4:Right input"]
outputs = [ "limiter:Output 1" "limiter:Output 2" ]
}
capture.props = {
node.name = "effect_input.normalize"
media.class = "Audio/Sink"
audio.channels = 2
audio.position = [ FL FR ]
}
playback.props = {
node.name = "effect_output.normalize"
node.passive = true
audio.channels = 2
audio.position = [ FL FR ]
}
}
}
]
```
Set audio output sink to the Normalize Sink and play sound to test output.
## Actual Results:
Audio will play, but fails to normalize/process the audio and simply works exactly like setting the normal output sink with no change.
## Expected Results:
Audio gets normalized.