# AES67 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@/pipewire-aes67.conf.d/ for system-wide changes or in # ~/.config/pipewire/pipewire-aes67.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 = 2 #default.clock.quantum-limit = 8192 } context.spa-libs = { support.* = support/libspa-support } context.objects = [ # An example clock reading from /dev/ptp0. You can also specify the network interface name, # pipewire will query the interface for the current active PHC index. Another option is to # sync the ptp clock to CLOCK_TAI and then set clock.id = tai, keep in mind that tai may # also be synced by a NTP client. # The precedence is: device, interface, id { factory = spa-node-factory args = { factory.name = support.node.driver node.name = PTP0-Driver node.group = pipewire.ptp0 # This driver should only be used for network nodes marked with group priority.driver = 100000 clock.name = "clock.system.ptp0" ### please select the PTP hardware clock here # Interface name is the preferred method of specifying the PHC clock.interface = "eth0" #clock.device = "/dev/ptp0" #clock.id = tai object.export = true } } ] context.modules = [ { name = libpipewire-module-rt args = { nice.level = -11 #rt.prio = 88 #rt.time.soft = -1 #rt.time.hard = -1 } flags = [ ifexists nofail ] } { name = libpipewire-module-protocol-native } { name = libpipewire-module-client-node } { name = libpipewire-module-spa-node-factory } { name = libpipewire-module-adapter } { name = libpipewire-module-rtp-sap args = { ### please select the interface here local.ifname = eth0 sap.ip = 239.255.255.255 sap.port = 9875 net.ttl = 32 net.loop = false stream.rules = [ { matches = [ { rtp.session = "~.*" } ] actions = { create-stream = { node.virtual = false media.class = "Audio/Source" device.api = aes67 sess.latency.msec = 3 node.group = pipewire.ptp0 } } }, { matches = [ { sess.sap.announce = true } ] actions = { announce-stream = {} } } ] } }, { name = libpipewire-module-rtp-sink args = { ### please select the interface here local.ifname = eth0 # if you want to create multiple output streams, please copy the # whole module-rtp-sink, but change this multicast IP to another unused one destination.ip = 239.69.150.243 destination.port = 5004 net.mtu = 1280 net.ttl = 32 net.loop = false # These should typically be equal sess.min-ptime = 1 sess.max-ptime = 1 # please change this, especially for multiple streams sess.name = "PipeWire RTP stream" sess.media = "audio" ### please select the PTP grandmaster ID here sess.ts-refclk = "ptp=traceable" sess.ts-offset = 0 sess.latency.msec = 3 audio.format = "S24BE" audio.rate = 48000 audio.channels = 2 # These channel names will be visible both to applications and AES67 receivers node.channel-names = ["CH1", "CH2"] stream.props = { node.name = "rtp-sink" media.class = "Audio/Sink" node.virtual = false device.api = aes67 sess.sap.announce = true node.always-process = true node.group = pipewire.ptp0 } } }, ]