Skip to content

Instantly share code, notes, and snippets.

struct spa_pod *
makevolumepod() {
char buf[1024];
struct spa_pod_builder b = SPA_POD_BUILDER_INIT(buf, sizeof(buf));
struct spa_pod_frame f[1];
struct spa_pod *pod;
float vol[2];
vol[0] = vol[1] = .5f;
$ systemctl --user mask pulseaudio.socket
Created symlink /home/saivert/.config/systemd/user/pulseaudio.socket → /dev/null.
$ systemctl --user enable pipewire.socket pipewire-pulse.socket
Created symlink /home/saivert/.config/systemd/user/sockets.target.wants/pipewire.socket → /usr/lib/systemd/user/pipewire.socket.
Created symlink /home/saivert/.config/systemd/user/sockets.target.wants/pipewire-pulse.socket → /usr/lib/systemd/user/pipewire-pulse.socket.
[saivert@fedoravmw ~]$ systemctl --user status pipewire-pulse.socket
● pipewire-pulse.socket - PipeWire PulseAudio
Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.socket; enabled; vendor preset: disabled)
Active: active (running) since Fri 2020-12-04 19:53:35 CET; 14min ago
Triggers: ● pipewire-pulse.service
Listen: /run/user/1001/pulse/native (Stream)
CGroup: /user.slice/user-1001.slice/[email protected]/pipewire-pulse.socket
Dec 04 19:53:35 fedoravmw.saivert.lan systemd[1556]: Listening on PipeWire PulseAudio.
[saivert@fedoravmw ~]$ systemctl --user status pipewire-pulse.service
const char *desc, *name;
desc = spa_dict_lookup(props, PW_KEY_NODE_DESCRIPTION);
name = spa_dict_lookup(props, PW_KEY_NODE_NAME);
if (!name) {
char buf[64];
snprintf(buf, sizeof(buf), "%d", id);
name = buf;
}
if (!desc) desc = name;
{
matches = [
{
node.name = "alsa_output.pci-0000:02:02.0.analog-stereo"
}
]
actions = {
update-props = {
node.nick = "Onboard audio output"
node.latency = "4096/48000"
$ pw-cli dump short Node|grep unknown
42: Node s="running" i=2/64 n="alsa_output.pci-0000:02:02.0.unknown" p="alsa:pcm:AudioPCI:0:playback"
43: Node s="suspended" o=2/64 n="alsa_input.pci-0000:02:02.0.unknown" p="alsa:pcm:AudioPCI:0:capture"
44: Node s="suspended" i=2/64 n="alsa_output.pci-0000:02:02.0.unknown" p="alsa:pcm:AudioPCI:1:playback"
42 and 44 have identical names.
acp is disabled for device otherwise unknown would be "analog-stereo" (the profile name basically) and
device 44 would be missing as the profile disables it (it is a secondary DAC for the device).
$ spa-acp-tool -c1 list-profiles
profile 0: name:"off" prio:0 (available: yes)
* profile 1: name:"input:analog-stereo" prio:65 (available: unknown)
$ spa-acp-tool -c1 list-profiles
profile 0: name:"off" prio:0 (available: yes)
* profile 1: name:"output:analog-stereo+input:analog-stereo" prio:6565 (available: unknown)
profile 2: name:"output:analog-stereo" prio:6500 (available: unknown)
profile 3: name:"input:analog-stereo" prio:65 (available: unknown)
$ spa-acp-tool -c1 list-profiles
profile 0: name:"off" prio:0 (available: yes)
[saivert@fedoravmw builddir (master)]$ PIPEWIRE_DEBUG=4 deadbeef
starting deadbeef devel
server_start
searching for GUI plugins in /home/saivert/.local/lib64/deadbeef
load_plugin_dir /home/saivert/.local/lib64/deadbeef: scandir found 10 files
found gui plugin ddb_gui_console.so
added console gui plugin
found gui plugin ddb_gui_prompt.so
added prompt gui plugin
searching for GUI plugins in /home/saivert/.local/lib/deadbeef
-- WirePlumber
--
-- Copyright © 2021 Collabora Ltd.
-- @author George Kiagiadakis <[email protected]>
--
-- SPDX-License-Identifier: MIT
Config = {
use_acp = true,
use_device_reservation = true,
iff --git a/lollypop/player_bin.py b/lollypop/player_bin.py
index 400f9f7d3..709c7b69f 100644
--- a/lollypop/player_bin.py
+++ b/lollypop/player_bin.py
@@ -44,11 +44,13 @@ class BinPlayer:
self._playbin = self._playbin1 = Gst.ElementFactory.make(
"playbin", "player")
self._playbin2 = Gst.ElementFactory.make("playbin", "player")
+ self._pwsink = Gst.ElementFactory.make("pipewiresink", "thesink")
self._plugins = self._plugins1 = PluginsPlayer(self._playbin1)