Skip to content

Instantly share code, notes, and snippets.

static int _apply_format(struct spa_loop *loop,
bool async,
uint32_t seq,
const void *_data,
size_t size,
void *user_data)
{
deadbeef->mutex_lock(mutex);
pw_stream_disconnect(data.stream);
#!/usr/bin/python3
import re
import signal
import dbus
from gi.repository import GLib
from dbus.mainloop.glib import DBusGMainLoop
import gi
gi.require_version('Gst', '1.0')
[D][pipewire.c:249 pw_load_spa_handle()] load lib:'support/libspa-support' factory-name:'support.log'
[D][pipewire.c:131 open_plugin()] loaded plugin:'/usr/lib64/spa-0.2/support/libspa-support.so'
[D][000597004.923974][logger.c:287 impl_init()] logger 0x7f6818019098: initialized
[D][000597004.923984][pipewire.c:249 pw_load_spa_handle()] load lib:'support/libspa-journal' factory-name:'support.log'
[D][000597004.924098][pipewire.c:131 open_plugin()] loaded plugin:'/usr/lib64/spa-0.2/support/libspa-journal.so'
[D][000597004.924104][journal.c:227 impl_init()] journal 0x7f6818006728: initialized
[D][000597004.924338][pipewire.c:249 pw_load_spa_handle()] load lib:'support/libspa-support' factory-name:'support.cpu'
[D][000597004.924351][cpu.c:192 impl_init()] cpu 0x7f681801d648: count:4 align:32 flags:0007cbd9
[I][000597004.924358][pipewire.c:458 pw_init()] version 0.3.20
[D][000597004.924367][pcm_pipewire.c:939 snd_pcm_pipewire_open()] alsa-plugin 0x7f681801d7b0: open default 0 0 00000000 0 none 0 0 '(null)'
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)
-- WirePlumber
--
-- Copyright © 2021 Collabora Ltd.
-- @author George Kiagiadakis <george.kiagiadakis@collabora.com>
--
-- SPDX-License-Identifier: MIT
Config = {
use_acp = true,
use_device_reservation = true,
[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
$ 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)
$ 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).
{
matches = [
{
node.name = "alsa_output.pci-0000:02:02.0.analog-stereo"
}
]
actions = {
update-props = {
node.nick = "Onboard audio output"
node.latency = "4096/48000"
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;