pipewire/src/daemon/jack.conf.in
Wim Taymans f1a6fabb6c meson: add options to set server and client RT priority
Make a rtprio-server and rtprio-client option. Leave the server
priority by default to 88 but lower client priority to 83. JACK
does something similar by setting clients to rtprio-server - 5.

Make module-rt use the client priority by default and bump the server
priority explicitly in the config file.

Leave the pulse-server to the default rtprio-client, there is no reason
to lower this any further because it is really just a regular client.

Bump the ffado packetizer thread to rtprio-server + 5 because that is
also what JACK does.

88 is still much higher than the value of 60 that JACK uses in
Fedora but now this is at least configurable.
2024-02-15 11:53:32 +01:00

139 lines
4.4 KiB
Text

# JACK client config file for PipeWire version @VERSION@ #
#
# Copy and edit this file in @PIPEWIRE_CONFIG_DIR@ for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# @PIPEWIRE_CONFIG_DIR@/jack.conf.d/ for system-wide changes or in
# ~/.config/pipewire/jack.conf.d/ for local changes.
#
context.properties = {
## Configure properties in the system.
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
log.level = 0
#default.clock.quantum-limit = 8192
}
context.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.
#
support.* = support/libspa-support
}
context.modules = [
#{ name = <module-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( ifexists ) ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Loads a module with the given parameters.
# If ifexists is given, the module is ignored when it is not found.
# If nofail is given, module initialization failures are ignored.
#
#
# Boost the data thread priority.
{ name = libpipewire-module-rt
args = {
#rt.prio = @rtprio_client@
#rt.time.soft = -1
#rt.time.hard = -1
}
flags = [ ifexists nofail ]
}
# The native communication protocol.
{ name = libpipewire-module-protocol-native }
# Allows creating nodes that run in the context of the
# client. Is used by all clients that want to provide
# data to PipeWire.
{ name = libpipewire-module-client-node }
# Allows applications to create metadata objects. It creates
# a factory for Metadata objects.
{ name = libpipewire-module-metadata }
]
# global properties for all jack clients
jack.properties = {
#node.latency = 1024/48000
#node.rate = 1/48000
#node.quantum = 1024/48000
#node.lock-quantum = true
#node.force-quantum = 0
#jack.show-monitor = true
#jack.merge-monitor = true
#jack.show-midi = true
#jack.short-name = false
#jack.filter-name = false
#jack.filter-char = " "
#
# allow: Don't restrict self connect requests
# fail-external: Fail self connect requests to external ports only
# ignore-external: Ignore self connect requests to external ports only
# fail-all: Fail all self connect requests
# ignore-all: Ignore all self connect requests
#jack.self-connect-mode = allow
#
# allow: Allow connect request of other ports
# fail: Fail connect requests of other ports
# ignore: Ignore connect requests of other ports
#jack.other-connect-mode = allow
#jack.locked-process = true
#jack.default-as-system = false
#jack.fix-midi-events = true
#jack.global-buffer-size = false
#jack.max-client-ports = 768
#jack.fill-aliases = false
#jack.writable-input = true
}
# client specific properties
jack.rules = [
{ matches = [
{
# all keys must match the value. ! negates. ~ starts regex.
#client.name = "Carla"
#application.process.binary = "jack_simple_client"
#application.name = "~jack_simple_client.*"
}
]
actions = {
update-props = {
#node.latency = 512/48000
}
}
}
{ matches = [ { application.process.binary = "jack_bufsize" } ]
actions = {
update-props = {
jack.global-buffer-size = true # quantum set globally using metadata
}
}
}
{ matches = [ { application.process.binary = "qsynth" } ]
actions = {
update-props = {
node.always-process = false # makes qsynth idle
node.pause-on-idle = false # makes audio fade out when idle
node.passive = out # makes the sink and qsynth suspend
}
}
}
{ matches = [ { client.name = "Mixxx" } ]
actions = {
update-props = {
jack.merge-monitor = false
}
}
}
]