mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-15 07:00:05 -05:00
daemon: rework config parsing
Replace config parsing for something more flexible based on json.
This commit is contained in:
parent
1bd90dc666
commit
49d11acde0
7 changed files with 458 additions and 905 deletions
|
|
@ -1,90 +1,101 @@
|
|||
#daemon config file for PipeWire version @VERSION@
|
||||
{
|
||||
properties = {
|
||||
## configure properties in the system
|
||||
#library.name.system = support/libspa-support
|
||||
#context.data-loop.library.name.system = support/libspa-support
|
||||
#link.max-buffers = 64
|
||||
link.max-buffers = 16 # version < 3 clients can't handle more
|
||||
#mem.allow-mlock = true
|
||||
#log.level = 2
|
||||
|
||||
## set-prop is used to configure properties in the system
|
||||
#
|
||||
#set-prop library.name.system support/libspa-support
|
||||
#set-prop context.data-loop.library.name.system support/libspa-support
|
||||
#set-prop link.max-buffers 64
|
||||
set-prop link.max-buffers 16 # version < 3 clients can't handle more
|
||||
#set-prop mem.allow-mlock true
|
||||
#set-prop log.level 2
|
||||
## Properties for the DSP configuration
|
||||
#default.clock.rate = 48000
|
||||
#default.clock.quantum = 1024
|
||||
#default.clock.min-quantum = 32
|
||||
#default.clock.max-quantum = 8192
|
||||
#default.video.width = 640
|
||||
#default.video.height = 480
|
||||
#default.video.rate.num = 25
|
||||
#default.video.rate.denom = 1
|
||||
}
|
||||
|
||||
## Properties for the DSP configuration
|
||||
#
|
||||
#set-prop default.clock.rate 48000
|
||||
#set-prop default.clock.quantum 1024
|
||||
#set-prop default.clock.min-quantum 32
|
||||
#set-prop default.clock.max-quantum 8192
|
||||
#set-prop default.video.width 640
|
||||
#set-prop default.video.height 480
|
||||
#set-prop default.video.rate.num 25
|
||||
#set-prop default.video.rate.denom 1
|
||||
spa-libs = {
|
||||
## <factory-name regex> = <library-name>
|
||||
#
|
||||
# used to find spa factory names. It maps an spa factory name
|
||||
# regular expression to a library name that should contain
|
||||
# that factory.
|
||||
#
|
||||
audio.convert* = audioconvert/libspa-audioconvert
|
||||
api.alsa.* = alsa/libspa-alsa
|
||||
api.v4l2.* = v4l2/libspa-v4l2
|
||||
api.libcamera.* = libcamera/libspa-libcamera
|
||||
api.bluez5.* = bluez5/libspa-bluez5
|
||||
api.vulkan.* = vulkan/libspa-vulkan
|
||||
api.jack.* = jack/libspa-jack
|
||||
support.* = support/libspa-support
|
||||
#videotestsrc = videotestsrc/libspa-videotestsrc
|
||||
#audiotestsrc = audiotestsrc/libspa-audiotestsrc
|
||||
}
|
||||
|
||||
## add-spa-lib <factory-name regex> <library-name>
|
||||
#
|
||||
# used to find spa factory names. It maps an spa factory name
|
||||
# regular expression to a library name that should contain
|
||||
# that factory.
|
||||
#
|
||||
add-spa-lib audio.convert* audioconvert/libspa-audioconvert
|
||||
add-spa-lib api.alsa.* alsa/libspa-alsa
|
||||
add-spa-lib api.v4l2.* v4l2/libspa-v4l2
|
||||
add-spa-lib api.libcamera.* libcamera/libspa-libcamera
|
||||
add-spa-lib api.bluez5.* bluez5/libspa-bluez5
|
||||
add-spa-lib api.vulkan.* vulkan/libspa-vulkan
|
||||
add-spa-lib api.jack.* jack/libspa-jack
|
||||
add-spa-lib support.* support/libspa-support
|
||||
#add-spa-lib videotestsrc videotestsrc/libspa-videotestsrc
|
||||
#add-spa-lib audiotestsrc audiotestsrc/libspa-audiotestsrc
|
||||
modules = {
|
||||
## <module-name> = { [args = "<key>=<value> ..."]
|
||||
# [flags = ifexists] }
|
||||
#
|
||||
# Loads a module with the given parameters. Normally failure is
|
||||
# fatal if the module is not found, unless -ifexists is given.
|
||||
#
|
||||
libpipewire-module-rtkit = { "#args" = "rt.prio=20 rt.time.soft=200000 rt.time.hard=200000" flags=ifexists }
|
||||
libpipewire-module-protocol-native = null
|
||||
libpipewire-module-profiler = null
|
||||
libpipewire-module-metadata = null
|
||||
libpipewire-module-spa-device-factory = null
|
||||
libpipewire-module-spa-node-factory = null
|
||||
libpipewire-module-client-node = null
|
||||
libpipewire-module-client-device = null
|
||||
libpipewire-module-portal = null
|
||||
libpipewire-module-access = { "#args" = "access.allowed=@media_session_path@ access.force=flatpak" }
|
||||
libpipewire-module-adapter = null
|
||||
libpipewire-module-link-factory = null
|
||||
libpipewire-module-session-manager = null
|
||||
}
|
||||
|
||||
## load-module [-ifexists] <module-name> [<key>=<value> ...]
|
||||
#
|
||||
# Loads a module with the given parameters. Normally failure is
|
||||
# fatal if the module is not found, unless -ifexists is given.
|
||||
#
|
||||
load-module libpipewire-module-rtkit # rt.prio=20 rt.time.soft=200000 rt.time.hard=200000
|
||||
load-module libpipewire-module-protocol-native
|
||||
load-module libpipewire-module-profiler
|
||||
load-module libpipewire-module-metadata
|
||||
load-module libpipewire-module-spa-device-factory
|
||||
load-module libpipewire-module-spa-node-factory
|
||||
load-module libpipewire-module-client-node
|
||||
load-module libpipewire-module-client-device
|
||||
load-module libpipewire-module-portal
|
||||
load-module libpipewire-module-access # access.allowed=@media_session_path@ access.force=flatpak
|
||||
load-module libpipewire-module-adapter
|
||||
load-module libpipewire-module-link-factory
|
||||
load-module libpipewire-module-session-manager
|
||||
objects = {
|
||||
## <factory-name> = { [args = "<key>=<value> ..."]
|
||||
# [flags = nofail] }
|
||||
#
|
||||
# Creates an object from a PipeWire factory with the given parameters.
|
||||
# If nofail is given, errors are ignored (and no object is created)
|
||||
#
|
||||
#spa-node-factory = { args = "factory.name=videotestsrc node.name=videotestsrc Spa:Pod:Object:Param:Props:patternType=1" }
|
||||
#spa-device-factory = { args = "factory.name=api.jack.device foo=bar" flags = nofail }
|
||||
#spa-device-factory = { args = "factory.name=api.alsa.enum.udev" }
|
||||
#spa-device-factory = { args = "factory.name=api.alsa.seq.bridge node.name=Internal-MIDI-Bridge" }
|
||||
#adapter = { args = "factory.name=audiotestsrc node.name=my-test" }
|
||||
#spa-node-factory = { args = "factory.name=api.vulkan.compute.source node.name=my-compute-source" }
|
||||
spa-node-factory = { args = "factory.name=support.node.driver node.name=Dummy priority.driver=8000" }
|
||||
}
|
||||
|
||||
## create-object [-nofail] <factory-name> [<key>=<value> ...]
|
||||
#
|
||||
# Creates an object from a PipeWire factory with the given parameters.
|
||||
# If -nofail is given, errors are ignored (and no object is created)
|
||||
#
|
||||
#create-object spa-node-factory factory.name=videotestsrc node.name=videotestsrc Spa:Pod:Object:Param:Props:patternType=1
|
||||
#create-object -nofail spa-device-factory factory.name=api.jack.device foo=bar
|
||||
#create-object spa-device-factory factory.name=api.alsa.enum.udev
|
||||
#create-object spa-device-factory factory.name=api.alsa.seq.bridge node.name=Internal-MIDI-Bridge
|
||||
#create-object adapter factory.name=audiotestsrc node.name=my-test
|
||||
#create-object spa-node-factory factory.name=api.vulkan.compute.source node.name=my-compute-source
|
||||
create-object spa-node-factory factory.name=support.node.driver node.name=Dummy priority.driver=8000
|
||||
|
||||
## exec <program-name>
|
||||
#
|
||||
# Execute the given program.
|
||||
#
|
||||
# Start the session manager. Run the session manager with -h for
|
||||
# options.
|
||||
#
|
||||
# The bluetooth module is disabled by default because it causes
|
||||
# conflicts with PulseAudio. If you disable PulseAudio or don't
|
||||
# load its bluetooth module, you can enable it here with -e bluez5
|
||||
#
|
||||
exec @media_session_path@
|
||||
#
|
||||
# You can optionally start the pulseaudio-server here as well
|
||||
# but it better to start it as a systemd service.
|
||||
# It can be interesting to start another daemon here that listens
|
||||
# on another address with the -a option (eg. -a tcp:4713)
|
||||
#
|
||||
#exec @pipewire_pulse_path@
|
||||
exec = {
|
||||
## <program-name> = { [args = "<arguments>"] }
|
||||
#
|
||||
# Execute the given program with arguments.
|
||||
#
|
||||
# Start the session manager. Run the session manager with -h for
|
||||
# options.
|
||||
#
|
||||
# The bluetooth module is disabled by default because it causes
|
||||
# conflicts with PulseAudio. If you disable PulseAudio or don't
|
||||
# load its bluetooth module, you can enable it here with -e bluez5
|
||||
#
|
||||
"@media_session_path@" = { args = ""}
|
||||
#
|
||||
# You can optionally start the pulseaudio-server here as well
|
||||
# but it better to start it as a systemd service.
|
||||
# It can be interesting to start another daemon here that listens
|
||||
# on another address with the -a option (eg. -a tcp:4713)
|
||||
#
|
||||
#"@pipewire_pulse_path@" = { "#args" = "-a tcp:4713" }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue