[pipewire] Add pipewire support.
This commit is contained in:
@@ -0,0 +1,58 @@
|
|||||||
|
Set thread priorities without using RTKit.
|
||||||
|
Disable v4l2 module.
|
||||||
|
|
||||||
|
Signed-off-by: Windsome Zeng <windsome.zeng@starfivetech.com>
|
||||||
|
|
||||||
|
diff -purN a/media-session.d/alsa-monitor.conf b/media-session.d/alsa-monitor.conf
|
||||||
|
--- a/media-session.d/alsa-monitor.conf 2022-10-13 16:59:41.918942274 +0800
|
||||||
|
+++ b/media-session.d/alsa-monitor.conf 2022-10-13 16:51:03.885741470 +0800
|
||||||
|
@@ -12,7 +12,7 @@ properties = {
|
||||||
|
#alsa.jack-device = false
|
||||||
|
|
||||||
|
# Reserve devices.
|
||||||
|
- #alsa.reserve = true
|
||||||
|
+ alsa.reserve = false
|
||||||
|
}
|
||||||
|
|
||||||
|
rules = [
|
||||||
|
diff -purN a/media-session.d/media-session.conf b/media-session.d/media-session.conf
|
||||||
|
--- a/media-session.d/media-session.conf 2022-10-13 16:59:41.918942274 +0800
|
||||||
|
+++ b/media-session.d/media-session.conf 2022-10-13 16:51:03.885741470 +0800
|
||||||
|
@@ -33,12 +33,23 @@ context.modules = [
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
#
|
||||||
|
# Uses RTKit to boost the data thread priority.
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
+ #{ name = libpipewire-module-rtkit
|
||||||
|
+ # args = {
|
||||||
|
+ # #nice.level = -11
|
||||||
|
+ # #rt.prio = 88
|
||||||
|
+ # #rt.time.soft = 2000000
|
||||||
|
+ # #rt.time.hard = 2000000
|
||||||
|
+ # }
|
||||||
|
+ # flags = [ ifexists nofail ]
|
||||||
|
+ #}
|
||||||
|
+
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
@@ -75,7 +86,7 @@ session.modules = {
|
||||||
|
default = [
|
||||||
|
flatpak # manages flatpak access
|
||||||
|
portal # manage portal permissions
|
||||||
|
- v4l2 # video for linux udev detection
|
||||||
|
+ #v4l2 # video for linux udev detection
|
||||||
|
#libcamera # libcamera udev detection
|
||||||
|
suspend-node # suspend inactive nodes
|
||||||
|
policy-node # configure and link nodes
|
||||||
@@ -0,0 +1,345 @@
|
|||||||
|
Set thread priorities without using RTKit.
|
||||||
|
Enable alsa node.
|
||||||
|
|
||||||
|
Signed-off-by: Windsome Zeng <windsome.zeng@starfivetech.com>
|
||||||
|
|
||||||
|
diff -purN a/src/daemon/client-rt.conf.in b/src/daemon/client-rt.conf.in
|
||||||
|
--- a/src/daemon/client-rt.conf.in 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/client-rt.conf.in 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -33,12 +33,23 @@ context.modules = [
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
#
|
||||||
|
# Uses RTKit to boost the data thread priority.
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
+ #{ name = libpipewire-module-rtkit
|
||||||
|
+ # args = {
|
||||||
|
+ # #nice.level = -11
|
||||||
|
+ # #rt.prio = 88
|
||||||
|
+ # #rt.time.soft = 2000000
|
||||||
|
+ # #rt.time.hard = 2000000
|
||||||
|
+ # }
|
||||||
|
+ # flags = [ ifexists nofail ]
|
||||||
|
+ #}
|
||||||
|
+
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
diff -purN a/src/daemon/filter-chain/demonic.conf b/src/daemon/filter-chain/demonic.conf
|
||||||
|
--- a/src/daemon/filter-chain/demonic.conf 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/filter-chain/demonic.conf 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -19,13 +19,13 @@ context.spa-libs = {
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
- # Uses RTKit to boost the data thread priority.
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
diff -purN a/src/daemon/filter-chain/sink-dolby-surround.conf b/src/daemon/filter-chain/sink-dolby-surround.conf
|
||||||
|
--- a/src/daemon/filter-chain/sink-dolby-surround.conf 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/filter-chain/sink-dolby-surround.conf 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -12,12 +12,13 @@ context.spa-libs = {
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
diff -purN a/src/daemon/filter-chain/sink-eq6.conf b/src/daemon/filter-chain/sink-eq6.conf
|
||||||
|
--- a/src/daemon/filter-chain/sink-eq6.conf 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/filter-chain/sink-eq6.conf 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -12,12 +12,13 @@ context.spa-libs = {
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
diff -purN a/src/daemon/filter-chain/sink-matrix-spatialiser.conf b/src/daemon/filter-chain/sink-matrix-spatialiser.conf
|
||||||
|
--- a/src/daemon/filter-chain/sink-matrix-spatialiser.conf 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/filter-chain/sink-matrix-spatialiser.conf 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -13,12 +13,13 @@ context.spa-libs = {
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
diff -purN a/src/daemon/filter-chain/sink-virtual-surround-5.1-kemar.conf b/src/daemon/filter-chain/sink-virtual-surround-5.1-kemar.conf
|
||||||
|
--- a/src/daemon/filter-chain/sink-virtual-surround-5.1-kemar.conf 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/filter-chain/sink-virtual-surround-5.1-kemar.conf 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -12,12 +12,13 @@ context.spa-libs = {
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
diff -purN a/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf b/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf
|
||||||
|
--- a/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/filter-chain/sink-virtual-surround-7.1-hesuvi.conf 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -12,12 +12,13 @@ context.spa-libs = {
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
diff -purN a/src/daemon/filter-chain/source-rnnoise.conf b/src/daemon/filter-chain/source-rnnoise.conf
|
||||||
|
--- a/src/daemon/filter-chain/source-rnnoise.conf 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/filter-chain/source-rnnoise.conf 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -12,12 +12,13 @@ context.spa-libs = {
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
diff -purN a/src/daemon/meson.build b/src/daemon/meson.build
|
||||||
|
--- a/src/daemon/meson.build 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/meson.build 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -13,7 +13,7 @@ conf_config.set('session_manager_path',
|
||||||
|
conf_config.set('session_manager_args', '')
|
||||||
|
conf_config.set('pipewire_path', pipewire_bindir / 'pipewire')
|
||||||
|
conf_config.set('pipewire_pulse_path', pipewire_bindir / 'pipewire-pulse')
|
||||||
|
-conf_config.set('sm_comment', '#')
|
||||||
|
+conf_config.set('sm_comment', '')
|
||||||
|
conf_config.set('pulse_comment', '#')
|
||||||
|
|
||||||
|
conf_config_uninstalled = conf_config
|
||||||
|
diff -purN a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in
|
||||||
|
--- a/src/daemon/pipewire.conf.in 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/pipewire.conf.in 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -68,27 +68,27 @@ context.modules = [
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uses RTKit to boost the data thread priority.
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
- args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
- }
|
||||||
|
- flags = [ ifexists nofail ]
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- # Set thread priorities without using RTKit.
|
||||||
|
- #{ name = libpipewire-module-rt
|
||||||
|
+ #{ name = libpipewire-module-rtkit
|
||||||
|
# args = {
|
||||||
|
- # nice.level = -11
|
||||||
|
- # rt.prio = 88
|
||||||
|
- # rt.time.soft = 2000000
|
||||||
|
- # rt.time.hard = 2000000
|
||||||
|
+ # #nice.level = -11
|
||||||
|
+ # #rt.prio = 88
|
||||||
|
+ # #rt.time.soft = 2000000
|
||||||
|
+ # #rt.time.hard = 2000000
|
||||||
|
# }
|
||||||
|
# flags = [ ifexists nofail ]
|
||||||
|
#}
|
||||||
|
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
+ args = {
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
+ }
|
||||||
|
+ flags = [ ifexists nofail ]
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
# The native communication protocol.
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
|
||||||
|
@@ -131,9 +131,9 @@ context.modules = [
|
||||||
|
args = {
|
||||||
|
# access.allowed to list an array of paths of allowed
|
||||||
|
# apps.
|
||||||
|
- #access.allowed = [
|
||||||
|
- # @session_manager_path@
|
||||||
|
- #]
|
||||||
|
+ access.allowed = [
|
||||||
|
+ @session_manager_path@
|
||||||
|
+ ]
|
||||||
|
|
||||||
|
# An array of rejected paths.
|
||||||
|
#access.rejected = [ ]
|
||||||
|
@@ -208,23 +208,41 @@ context.objects = [
|
||||||
|
# This creates a single PCM source device for the given
|
||||||
|
# alsa device path hw:0. You can change source to sink
|
||||||
|
# to make a sink in the same way.
|
||||||
|
- #{ factory = adapter
|
||||||
|
- # args = {
|
||||||
|
- # factory.name = api.alsa.pcm.source
|
||||||
|
- # node.name = "alsa-source"
|
||||||
|
- # node.description = "PCM Source"
|
||||||
|
- # media.class = "Audio/Source"
|
||||||
|
- # api.alsa.path = "hw:0"
|
||||||
|
- # api.alsa.period-size = 1024
|
||||||
|
- # api.alsa.headroom = 0
|
||||||
|
- # api.alsa.disable-mmap = false
|
||||||
|
- # api.alsa.disable-batch = false
|
||||||
|
- # audio.format = "S16LE"
|
||||||
|
- # audio.rate = 48000
|
||||||
|
- # audio.channels = 2
|
||||||
|
- # audio.position = "FL,FR"
|
||||||
|
- # }
|
||||||
|
- #}
|
||||||
|
+ { factory = adapter
|
||||||
|
+ args = {
|
||||||
|
+ factory.name = api.alsa.pcm.source
|
||||||
|
+ node.name = "alsa-source"
|
||||||
|
+ node.description = "PCM Source"
|
||||||
|
+ media.class = "Audio/Source"
|
||||||
|
+ api.alsa.path = "hw:0,0"
|
||||||
|
+ api.alsa.period-size = 1024
|
||||||
|
+ api.alsa.headroom = 0
|
||||||
|
+ api.alsa.disable-mmap = false
|
||||||
|
+ api.alsa.disable-batch = false
|
||||||
|
+ audio.format = "S16LE"
|
||||||
|
+ audio.rate = 48000
|
||||||
|
+ audio.channels = 2
|
||||||
|
+ audio.position = "FL,FR"
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ { factory = adapter
|
||||||
|
+ args = {
|
||||||
|
+ factory.name = api.alsa.pcm.sink
|
||||||
|
+ node.name = "alsa-sink"
|
||||||
|
+ node.description = "PCM Sink"
|
||||||
|
+ media.class = "Audio/Sink"
|
||||||
|
+ api.alsa.path = "hw:0,1"
|
||||||
|
+ api.alsa.period-size = 1024
|
||||||
|
+ api.alsa.headroom = 0
|
||||||
|
+ api.alsa.disable-mmap = false
|
||||||
|
+ api.alsa.disable-batch = false
|
||||||
|
+ audio.format = "S16LE"
|
||||||
|
+ audio.rate = 48000
|
||||||
|
+ audio.channels = 2
|
||||||
|
+ audio.position = "FL,FR"
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
]
|
||||||
|
|
||||||
|
context.exec = [
|
||||||
|
diff -purN a/src/daemon/pipewire-pulse.conf.in b/src/daemon/pipewire-pulse.conf.in
|
||||||
|
--- a/src/daemon/pipewire-pulse.conf.in 2022-10-13 16:54:09.376674871 +0800
|
||||||
|
+++ b/src/daemon/pipewire-pulse.conf.in 2022-10-13 16:51:39.515754495 +0800
|
||||||
|
@@ -17,12 +17,13 @@ context.spa-libs = {
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
- { name = libpipewire-module-rtkit
|
||||||
|
+ # Set thread priorities without using RTKit.
|
||||||
|
+ { name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
- #nice.level = -11
|
||||||
|
- #rt.prio = 88
|
||||||
|
- #rt.time.soft = 2000000
|
||||||
|
- #rt.time.hard = 2000000
|
||||||
|
+ nice.level = -11
|
||||||
|
+ rt.prio = 88
|
||||||
|
+ rt.time.soft = 2000000
|
||||||
|
+ rt.time.hard = 2000000
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
@@ -177,4 +177,10 @@ define PIPEWIRE_USERS
|
|||||||
pipewire -1 pipewire -1 * - - audio,video PipeWire System Daemon
|
pipewire -1 pipewire -1 * - - audio,video PipeWire System Daemon
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define PIPEWIRE_INSTALL_CONF_ON_TARGET
|
||||||
|
$(INSTALL) -D -m 0755 package/pipewire/run_pipewire.sh $(TARGET_DIR)/root/run_pipewire.sh
|
||||||
|
endef
|
||||||
|
|
||||||
|
PIPEWIRE_POST_INSTALL_TARGET_HOOKS += PIPEWIRE_INSTALL_CONF_ON_TARGET
|
||||||
|
|
||||||
$(eval $(meson-package))
|
$(eval $(meson-package))
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
mkdir -p /run/pipewire
|
||||||
|
export XDG_RUNTIME_DIR=/run/pipewire
|
||||||
|
start-stop-daemon -K -s 9 -x pipewire
|
||||||
|
start-stop-daemon -Sb -q -x dbus-run-session -- pipewire
|
||||||
|
sleep 2s
|
||||||
|
echo "Record 10s audio to pwtest.wav now ..."
|
||||||
|
rm -f pwtest.wav
|
||||||
|
pw-record pwtest.wav &
|
||||||
|
sleep 10s
|
||||||
|
killall pw-record
|
||||||
|
echo "Stop record and play it again."
|
||||||
|
pw-play pwtest.wav
|
||||||
|
start-stop-daemon -K -x pipewire
|
||||||
Reference in New Issue
Block a user