LIBPIPEWIRE-MODULE-ROC-SOURCE(7)

πŸ’– libpipewire-module-roc-source β€” the ROC source module, bestie edition πŸ’–

okay so you found yourself a miscellaneous information manual page for libpipewire-module-roc-source... welcome to the group chat, pull up a chair 🫢


✨ NAME ✨

libpipewire-module-roc-source β€” ROC source. that's it, that's the name, short and iconic πŸ’…


🌸 DESCRIPTION 🌸

okay so the roc-source module is literally out here creating a PipeWire source that receives samples from a ROC sender and then passes those little sample babies along to whatever sink it's connected to. it's giving relay race πŸƒβ™€οΈπŸ’¨

and then?? you can connect it to any audio device. any of them. slay ✨


πŸ‘‘ MODULE NAME πŸ‘‘

libpipewire-module-roc-source

yes bestie, that's the whole name, remember it for your context.modules config πŸŽ€


πŸ’… MODULE OPTIONS πŸ’…

these are the options that are specific to how this module behaves. obsessed with how many there are πŸ¦‹

  • source.props = {} β€” properties to be passed to the source stream
  • source.name = <str> β€” the node.name of the source. name your baby ✨
  • local.ip = <str> β€” local sender ip
  • local.source.port = <str> β€” local receiver TCP/UDP port for source packets
  • local.repair.port = <str> β€” local receiver TCP/UDP port for receiver packets
  • local.control.port = <str> β€” local receiver TCP/UDP port for control packets
  • sess.latency.msec = <str> β€” target network latency in milliseconds
  • roc.resampler.backend = <str> β€” possible values: default, builtin, speex, speexdec.
  • roc.resampler.profile = <str> β€” possible values: default, high, medium, low.
  • roc.latency-tuner.backend = <str> β€” possible values: default, niq
  • roc.latency-tuner.profile = <str> β€” possible values: default, intact, responsive, gradual
  • fec.code = <str> β€” possible values: default, disable, rs8m, ldpc
  • resampler.profile = <str> β€” deprecated, use roc.resampler.profile instead 😭 (we've all been there, it's fine, just update your config)
  • log.level = <str> β€” log level for roc-toolkit. possible values: DEFAULT, NONE, ERROR, INFO, DEBUG, TRACE; DEFAULT follows the log level of the PipeWire context.
lowkey important: those "possible values" lists are exact. don't freestyle them, bestie, the module will not be amused πŸ’€

🌈 GENERAL OPTIONS 🌈

these ones have well-known behavior, so they're just vibing with the rest of PipeWire:

  • node.name
  • node.description
  • node.virtual
  • node.network
  • media.class
  • audio.position

πŸŽ€ EXAMPLE CONFIGURATION πŸŽ€

here's the moment you've been waiting for, a whole config file, ready to go, main character energy πŸ‘‘

# ~/.config/pipewire/pipewire.conf.d/my-roc-source.conf

context.modules = [
 {   name = libpipewire-module-roc-source
     args = {
         local.ip = 0.0.0.0
         #roc.resampler.backend = default
         roc.resampler.profile = medium
         #roc.latency-tuner.backend = default
         #roc.latency-tuner.profile = default
         fec.code = disable
         sess.latency.msec = 5000
         local.source.port = 10001
         local.repair.port = 10002
         local.control.port = 10003
         source.name = "ROC Source"
         source.props = {
            node.name = "roc-source"
         }
         audio.position = [ FL FR ]
         log.level = DEFAULT
     }
 }
]

see how the commented-out lines are just chillin' there with a #? uncomment them when you wanna switch that setting up. the way that audio.position = [ FL FR ] is sitting there serving stereo... iconic 🎧✨


and that's the whole page, bestie 🫢 go forth and relay those samples πŸ’–

this was PipeWire 1.6.11, dated with the manual page libpipewire-module-roc-source(7) β€” bye pookie, drink water πŸ’œπŸŒΈ

πŸ“¦ where this page comes from