mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-24 07:00:05 -05:00
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.
136 lines
4.1 KiB
Text
136 lines
4.1 KiB
Text
# Real-time 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@/client-rt.conf.d/ for system-wide changes or in
|
|
# ~/.config/pipewire/client-rt.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.
|
|
#
|
|
audio.convert.* = audioconvert/libspa-audioconvert
|
|
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.
|
|
#
|
|
# Uses realtime scheduling to boost the audio thread priorities
|
|
{ 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 creating devices that run in the context of the
|
|
# client. Is used by the session manager.
|
|
{ name = libpipewire-module-client-device }
|
|
|
|
# Makes a factory for wrapping nodes in an adapter with a
|
|
# converter and resampler.
|
|
{ name = libpipewire-module-adapter }
|
|
|
|
# Allows applications to create metadata objects. It creates
|
|
# a factory for Metadata objects.
|
|
{ name = libpipewire-module-metadata }
|
|
|
|
# Provides factories to make session manager objects.
|
|
{ name = libpipewire-module-session-manager }
|
|
]
|
|
|
|
filter.properties = {
|
|
#node.latency = 1024/48000
|
|
}
|
|
|
|
stream.properties = {
|
|
#node.latency = 1024/48000
|
|
#node.autoconnect = true
|
|
#resample.quality = 4
|
|
#channelmix.normalize = false
|
|
#channelmix.mix-lfe = true
|
|
#channelmix.upmix = true
|
|
#channelmix.upmix-method = psd # none, simple
|
|
#channelmix.lfe-cutoff = 150
|
|
#channelmix.fc-cutoff = 12000
|
|
#channelmix.rear-delay = 12.0
|
|
#channelmix.stereo-widen = 0.0
|
|
#channelmix.hilbert-taps = 0
|
|
#dither.noise = 0
|
|
}
|
|
|
|
stream.rules = [
|
|
{ matches = [
|
|
{
|
|
# all keys must match the value. ! negates. ~ starts regex.
|
|
#application.name = "pw-cat"
|
|
#node.name = "~Google Chrome$"
|
|
}
|
|
]
|
|
actions = {
|
|
update-props = {
|
|
#node.latency = 512/48000
|
|
}
|
|
}
|
|
}
|
|
]
|
|
|
|
alsa.properties = {
|
|
#alsa.deny = false
|
|
# ALSA params take a single value, an array [] of values
|
|
# or a range { min=.. max=... }
|
|
#alsa.access = [ MMAP_INTERLEAVED MMAP_NONINTERLEAVED RW_INTERLEAVED RW_NONINTERLEAVED ]
|
|
#alsa.format = [ FLOAT S32 S24 S24_3 S16 U8 ]
|
|
#alsa.rate = { min=1 max=384000 } # or [ 44100 48000 .. ]
|
|
#alsa.channels = { min=1 max=64 } # or [ 2 4 6 .. ]
|
|
#alsa.period-bytes = { min=128 max=2097152 } # or [ 128 256 1024 .. ]
|
|
#alsa.buffer-bytes = { min=256 max=4194304 } # or [ 256 512 4096 .. ]
|
|
|
|
#alsa.volume-method = cubic # linear, cubic
|
|
}
|
|
|
|
# client specific properties
|
|
alsa.rules = [
|
|
{ matches = [ { application.process.binary = "resolve" } ]
|
|
actions = {
|
|
update-props = {
|
|
alsa.buffer-bytes = 131072
|
|
}
|
|
}
|
|
}
|
|
]
|