From 78500e7244607bde311f8ca0f1f912b45d6acb61 Mon Sep 17 00:00:00 2001 From: ZachIR Date: Thu, 13 Oct 2022 16:03:11 -0500 Subject: update pipewire config --- pipewire/pipewire.conf | 126 +++++++++++++++++++++++++++---------------------- 1 file changed, 69 insertions(+), 57 deletions(-) diff --git a/pipewire/pipewire.conf b/pipewire/pipewire.conf index ac5f9c6..b37cf27 100644 --- a/pipewire/pipewire.conf +++ b/pipewire/pipewire.conf @@ -1,7 +1,12 @@ -# Daemon config file for PipeWire version "0.3.34" # +# Daemon config file for PipeWire version "0.3.58" # # -# Copy and edit this file in /etc/pipewire for systemwide changes +# Copy and edit this file in /etc/pipewire for system-wide changes # or in ~/.config/pipewire for local changes. +# +# It is also possible to place a file with an updated section in +# /etc/pipewire/pipewire.conf.d/ for system-wide changes or in +# ~/.config/pipewire/pipewire.conf.d/ for local changes. +# context.properties = { ## Configure properties in the system. @@ -15,24 +20,29 @@ context.properties = { #mem.mlock-all = false #clock.power-of-two-quantum = true #log.level = 2 + #cpu.zero.denormals = false - core.daemon = true # listening for socket connections - core.name = pipewire-0 # core name and socket name + core.daemon = true # listening for socket connections + core.name = pipewire-0 # core name and socket name ## Properties for the DSP configuration. #default.clock.rate = 48000 #default.clock.allowed-rates = [ 48000 ] #default.clock.quantum = 1024 - #default.clock.min-quantum = 32 - #default.clock.max-quantum = 8192 + default.clock.min-quantum = 16 + #default.clock.max-quantum = 2048 + #default.clock.quantum-limit = 8192 #default.video.width = 640 #default.video.height = 480 #default.video.rate.num = 25 #default.video.rate.denom = 1 # + #settings.check-quantum = false + #settings.check-rate = false + # # These overrides are only applied when running in a vm. vm.overrides = { - default.clock.min-quantum = 1024 + default.clock.min-quantum = 1024 } } @@ -44,6 +54,7 @@ context.spa-libs = { # that factory. # audio.convert.* = audioconvert/libspa-audioconvert + avb.* = avb/libspa-avb api.alsa.* = alsa/libspa-alsa api.v4l2.* = v4l2/libspa-v4l2 api.libcamera.* = libcamera/libspa-libcamera @@ -56,8 +67,8 @@ context.spa-libs = { } context.modules = [ - #{ name = - # [ args = { = ... } ] + #{ name = + # [ args = { = ... } ] # [ flags = [ [ ifexists ] [ nofail ] ] #} # @@ -66,67 +77,58 @@ context.modules = [ # If nofail is given, module initialization failures are ignored. # - # Uses RTKit to boost the data thread priority. - { name = libpipewire-module-rtkit + # Uses realtime scheduling to boost the audio thread priorities. This uses + # RTKit if the user doesn't have permission to use regular realtime + # scheduling. + { name = libpipewire-module-rt args = { - #nice.level = -11 + nice.level = -11 #rt.prio = 88 - #rt.time.soft = 2000000 - #rt.time.hard = 2000000 + #rt.time.soft = -1 + #rt.time.hard = -1 } 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 } + { name = libpipewire-module-protocol-native } # The profile module. Allows application to access profiler # and performance data. It provides an interface that is used # by pw-top and pw-profiler. - { name = libpipewire-module-profiler } + { name = libpipewire-module-profiler } # Allows applications to create metadata objects. It creates # a factory for Metadata objects. - { name = libpipewire-module-metadata } + { name = libpipewire-module-metadata } # Creates a factory for making devices that run in the # context of the PipeWire server. - { name = libpipewire-module-spa-device-factory } + { name = libpipewire-module-spa-device-factory } # Creates a factory for making nodes that run in the # context of the PipeWire server. - { name = libpipewire-module-spa-node-factory } + { name = libpipewire-module-spa-node-factory } # 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 } + { 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 } + { name = libpipewire-module-client-device } # The portal module monitors the PID of the portal process # and tags connections with the same PID as portal # connections. - { name = libpipewire-module-portal + { name = libpipewire-module-portal flags = [ ifexists nofail ] } # The access module can perform access checks and block # new clients. - { name = libpipewire-module-access + { name = libpipewire-module-access args = { # access.allowed to list an array of paths of allowed # apps. @@ -148,17 +150,27 @@ context.modules = [ # Makes a factory for wrapping nodes in an adapter with a # converter and resampler. - { name = libpipewire-module-adapter } + { name = libpipewire-module-adapter } # Makes a factory for creating links between ports. - { name = libpipewire-module-link-factory } + { name = libpipewire-module-link-factory } # Provides factories to make session manager objects. - { name = libpipewire-module-session-manager } + { name = libpipewire-module-session-manager } + + # Use libcanberra to play X11 Bell + #{ name = libpipewire-module-x11-bell + # args = { + # #sink.name = "" + # #sample.name = "bell-window-system" + # #x11.display = null + # #x11.xauthority = null + # } + #} ] context.objects = [ - #{ factory = + #{ factory = # [ args = { = ... } ] # [ flags = [ [ nofail ] ] #} @@ -166,7 +178,7 @@ context.objects = [ # Creates an object from a PipeWire factory with the given parameters. # If nofail is given, errors are ignored (and no object is created). # - #{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc Spa:Pod:Object:Param:Props:patternType = 1 } } + #{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc Spa:Pod:Object:Param:Props:patternType = 1 } } #{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] } #{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } } #{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } } @@ -175,7 +187,7 @@ context.objects = [ # A default dummy driver. This handles nodes marked with the "node.always-driver" # property when no other driver is currently active. JACK clients need this. - { factory = spa-node-factory + { factory = spa-node-factory args = { factory.name = support.node.driver node.name = Dummy-Driver @@ -183,7 +195,7 @@ context.objects = [ priority.driver = 20000 } } - { factory = spa-node-factory + { factory = spa-node-factory args = { factory.name = support.node.driver node.name = Freewheel-Driver @@ -194,7 +206,7 @@ context.objects = [ } # This creates a new Source node. It will have input ports # that you can link, to provide audio for this source. - #{ factory = adapter + #{ factory = adapter # args = { # factory.name = support.null-audio-sink # node.name = "my-mic" @@ -207,21 +219,21 @@ 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 + #{ 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.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" # } #} ] @@ -235,7 +247,7 @@ context.exec = [ # but it is better to start it as a systemd service. # Run the session manager with -h for options. # - { path = "/usr/bin/wireplumber" args = "-c wireplumber.conf" } + { path = "/usr/bin/pipewire-media-session" args = "" } # # You can optionally start the pulseaudio-server here as well # but it is better to start it as a systemd service. -- cgit v1.2.3