diff --git a/src/daemon/media-session.d/alsa-monitor.conf b/src/daemon/media-session.d/alsa-monitor.conf index a6090c9b2..d35546f42 100644 --- a/src/daemon/media-session.d/alsa-monitor.conf +++ b/src/daemon/media-session.d/alsa-monitor.conf @@ -19,86 +19,86 @@ rules = [ # matches work, the actions are executed for the object. matches = [ { - # This matches all cards. These are regular expressions - # so "." matches one character and ".*" matches many. + # This matches all cards. These are regular expressions + # so "." matches one character and ".*" matches many. device.name = "~alsa_card.*" } ] actions = { # Actions can update properties on the matched object. update-props = { - # Use ALSA-Card-Profile devices. They use UCM or - # the profile configuration to configure the device - # and mixer settings. - api.alsa.use-acp = true + # Use ALSA-Card-Profile devices. They use UCM or + # the profile configuration to configure the device + # and mixer settings. + api.alsa.use-acp = true - # Use UCM instead of profile when available. Can be - # disabled to skip trying to use the UCM profile. - #api.alsa.use-ucm = true + # Use UCM instead of profile when available. Can be + # disabled to skip trying to use the UCM profile. + #api.alsa.use-ucm = true - # Don't use the hardware mixer for volume control. It - # will only use software volume. The mixer is still used - # to mute unused paths based on the selected port. - #api.alsa.soft-mixer = false + # Don't use the hardware mixer for volume control. It + # will only use software volume. The mixer is still used + # to mute unused paths based on the selected port. + #api.alsa.soft-mixer = false # Ignore decibel settings of the driver. Can be used to - # work around buggy drivers that report wrong values. - #api.alsa.ignore-dB = false + # work around buggy drivers that report wrong values. + #api.alsa.ignore-dB = false # The profile set to use for the device. Usually this - # "default.conf" but can be changed with a udev rule - # or here. - #device.profile-set = "profileset-name" + # "default.conf" but can be changed with a udev rule + # or here. + #device.profile-set = "profileset-name" - # The default active profile. Is by default set to "Off". - #device.profile = "default profile name" + # The default active profile. Is by default set to "Off". + #device.profile = "default profile name" - # Automatically select the best profile. This is the - # highest priority available profile. This is disabled - # here and instead implemented in the session manager - # where it can save and load previous preferences. - api.acp.auto-profile = false + # Automatically select the best profile. This is the + # highest priority available profile. This is disabled + # here and instead implemented in the session manager + # where it can save and load previous preferences. + api.acp.auto-profile = false - # Automatically switch to the highest priority available - # port. This is disabled here and implemented in the - # session manager instead. - api.acp.auto-port = false + # Automatically switch to the highest priority available + # port. This is disabled here and implemented in the + # session manager instead. + api.acp.auto-port = false - # Other properties can be set here. - #device.nick = "My Device" + # Other properties can be set here. + #device.nick = "My Device" } } } { matches = [ { - # Matches all sinks. These are regular expressions - # so "." matches one character and ".*" matches many. + # Matches all sinks. These are regular expressions + # so "." matches one character and ".*" matches many. node.name = "~alsa_input.*" } { - # Matches all sources. + # Matches all sources. node.name = "~alsa_output.*" } ] actions = { update-props = { - #node.nick = "My Node" - #node.nick = null - #priority.driver = 100 - #priority.session = 100 - node.pause-on-idle = false - #resample.quality = 4 - #channelmix.normalize = false - #channelmix.mix-lfe = false - #audio.channels = 2 - #audio.format = "S16LE" - #audio.rate = 44100 - #audio.position = "FL,FR" - #api.alsa.period-size = 1024 - #api.alsa.headroom = 0 - #api.alsa.disable-mmap = false - #api.alsa.disable-batch = false + #node.nick = "My Node" + #node.nick = null + #priority.driver = 100 + #priority.session = 100 + node.pause-on-idle = false + #resample.quality = 4 + #channelmix.normalize = false + #channelmix.mix-lfe = false + #audio.channels = 2 + #audio.format = "S16LE" + #audio.rate = 44100 + #audio.position = "FL,FR" + #api.alsa.period-size = 1024 + #api.alsa.headroom = 0 + #api.alsa.disable-mmap = false + #api.alsa.disable-batch = false } } } diff --git a/src/daemon/media-session.d/bluez-monitor.conf b/src/daemon/media-session.d/bluez-monitor.conf index 713946d44..f1bcb4fff 100644 --- a/src/daemon/media-session.d/bluez-monitor.conf +++ b/src/daemon/media-session.d/bluez-monitor.conf @@ -2,19 +2,19 @@ properties = { # MSBC is not expected to work on all headset + adapter combinations. - #bluez5.msbc-support = true + #bluez5.msbc-support = true #bluez5.sbc-xq-support = true - # Enabled headset roles (default: [ hsp_hs hfp_ag ]), this + # Enabled headset roles (default: [ hsp_hs hfp_ag ]), this # property only applies to native backend. Currently some headsets - # (Sony WH-1000XM3) are not working with both hsp_ag and hfp_ag + # (Sony WH-1000XM3) are not working with both hsp_ag and hfp_ag # enabled, disable either hsp_ag or hfp_ag to work around it. # # Supported headset roles: hsp_hs (HSP Headset), # hsp_ag (HSP Audio Gateway), # hfp_ag (HFP Audio Gateway) #bluez5.headset-roles = [ hsp_hs hsp_ag hfp_ag ] - + # Enabled A2DP codecs (default: all). #bluez5.codecs = [ sbc aac ldac aptx aptx_hd ] } @@ -27,38 +27,38 @@ rules = [ # matches work, the actions are executed for the object. matches = [ { - # This matches all cards. + # This matches all cards. device.name = "~bluez_card.*" } ] actions = { # Actions can update properties on the matched object. update-props = { - #device.nick = "My Device" + #device.nick = "My Device" } } } { matches = [ { - # Matches all sinks. + # Matches all sinks. node.name = "~bluez_input.*" } { - # Matches all sources. + # Matches all sources. node.name = "~bluez_output.*" } ] actions = { update-props = { - #node.nick = "My Node" - #node.nick = null - #priority.driver = 100 - #priority.session = 100 - node.pause-on-idle = false - #resample.quality = 4 - #channelmix.normalize = false - #channelmix.mix-lfe = false + #node.nick = "My Node" + #node.nick = null + #priority.driver = 100 + #priority.session = 100 + node.pause-on-idle = false + #resample.quality = 4 + #channelmix.normalize = false + #channelmix.mix-lfe = false } } } diff --git a/src/daemon/media-session.d/media-session.conf b/src/daemon/media-session.d/media-session.conf index 9f1617c46..1aaf1f9ce 100644 --- a/src/daemon/media-session.d/media-session.conf +++ b/src/daemon/media-session.d/media-session.conf @@ -3,18 +3,17 @@ properties = { # Properties to configure the session and some # modules. - #mem.mlock-all = false + #mem.mlock-all = false #context.profile.modules = default,rtkit - #dbus = true + #dbus = true } spa-libs = { # Mapping from factory name to library. - - api.bluez5.* = bluez5/libspa-bluez5 - api.alsa.* = alsa/libspa-alsa - api.v4l2.* = v4l2/libspa-v4l2 - api.libcamera.* = libcamera/libspa-libcamera + api.bluez5.* = bluez5/libspa-bluez5 + api.alsa.* = alsa/libspa-alsa + api.v4l2.* = v4l2/libspa-v4l2 + api.libcamera.* = libcamera/libspa-libcamera } modules = { @@ -23,21 +22,21 @@ modules = { # the default bundle is always enabled. default = [ - flatpak # manages flatpak access - portal # manage portal permissions - v4l2 # video for linux udev detection - #libcamera # libcamera udev detection - suspend-node # suspend inactive nodes - policy-node # configure and link nodes - #metadata # export metadata API - #default-nodes # restore default nodes - #default-profile # restore default profiles - #default-routes # restore default route - #streams-follow-default # move streams when default changes - #alsa-seq # alsa seq midi support - #alsa-monitor # alsa udev detection - #bluez5 # bluetooth support - #restore-stream # restore stream settings + flatpak # manages flatpak access + portal # manage portal permissions + v4l2 # video for linux udev detection + #libcamera # libcamera udev detection + suspend-node # suspend inactive nodes + policy-node # configure and link nodes + #metadata # export metadata API + #default-nodes # restore default nodes + #default-profile # restore default profiles + #default-routes # restore default route + #streams-follow-default # move streams when default changes + #alsa-seq # alsa seq midi support + #alsa-monitor # alsa udev detection + #bluez5 # bluetooth support + #restore-stream # restore stream settings ] with-audio = [ metadata diff --git a/src/daemon/media-session.d/v4l2-monitor.conf b/src/daemon/media-session.d/v4l2-monitor.conf index 397ead2de..1b0b4aa23 100644 --- a/src/daemon/media-session.d/v4l2-monitor.conf +++ b/src/daemon/media-session.d/v4l2-monitor.conf @@ -1,7 +1,6 @@ # V4L2 monitor config file # -properties = { -} +properties = { } rules = [ # An array of matches/actions to evaluate. @@ -11,35 +10,35 @@ rules = [ # matches work, the actions are executed for the object. matches = [ { - # This matches all devices. + # This matches all devices. device.name = "~v4l2_device.*" } ] actions = { # Actions can update properties on the matched object. update-props = { - #device.nick = "My Device" + #device.nick = "My Device" } } } { matches = [ { - # Matches all sinks. + # Matches all sinks. node.name = "~v4l2_input.*" } { - # Matches all sources. + # Matches all sources. node.name = "~v4l2_output.*" } ] actions = { update-props = { - #node.nick = "My Node" - #node.nick = null - #priority.driver = 100 - #priority.session = 100 - node.pause-on-idle = false + #node.nick = "My Node" + #node.nick = null + #priority.driver = 100 + #priority.session = 100 + node.pause-on-idle = false } } } diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in index aaa5c5fd9..cf3c06402 100644 --- a/src/daemon/pipewire.conf.in +++ b/src/daemon/pipewire.conf.in @@ -2,48 +2,50 @@ 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.warn-mlock = false - #mem.allow-mlock = true - #mem.mlock-all = false - #log.level = 2 + #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.warn-mlock = false + #mem.allow-mlock = true + #mem.mlock-all = false + #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 + #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 } spa-libs = { - ## = + # = # # 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 + 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 } modules = { - ## = { [args = { = ... }] - # [flags = [ [ifexists] [nofail] ]} + # = { + # [ args = { = ... } ] + # [ flags = [ [ ifexists ] [ nofail ] ] + #} # # Loads a module with the given parameters. # If ifexists is given, the module is ignored when it is not found. @@ -51,13 +53,13 @@ modules = { # # Uses RTKit to boost the data thread priority. - libpipewire-module-rtkit = { + libpipewire-module-rtkit = { args = { - #nice.level = -11 - #rt.prio = 20 + #nice.level = -11 + #rt.prio = 20 #rt.time.soft = 200000 #rt.time.hard = 200000 - } + } flags = [ ifexists nofail ] } @@ -129,25 +131,27 @@ modules = { } objects = { - ## = { [args = { = ... } ] - # [flags = [ [nofail] ] } + # = { + # [ args = { = ... } ] + # [ 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 = 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 } } # 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. spa-node-factory = { args = { - factory.name = support.node.driver - node.name = Dummy-Driver + factory.name = support.node.driver + node.name = Dummy-Driver priority.driver = 8000 } } @@ -165,14 +169,14 @@ objects = { } exec = { - ## = { [args = ""] } + # = { [ args = "" ] } # # Execute the given program with arguments. # # Start the session manager. Run the session manager with -h for # options. # - "@media_session_path@" = { args = ""} + "@media_session_path@" = { args = "" } # # You can optionally start the pulseaudio-server here as well # but it better to start it as a systemd service.