High-level features

  • streaming CD-quality audio using RTP
  • maintaining pre-configured target latency
  • restoring lost packets using Forward Erasure Correction codes
    • communicating redundant packets using FECFRAME
    • encoding and decoding using OpenFEC
  • resampling
    • converting between the sender and receiver clock domains (on receiver)
    • converting between the network and input/output sample rates (on receiver and sender)
    • configurable resampler profiles for different CPU and quality requirements
  • multiplexing
    • mixing simultaneous streams from multiple senders on the receiver
    • binding receiver to multiple ports with different protocols
  • interleaving packets to increase chances of successful loss recovery
  • session watchdog
    • detecting session shutdown and removing the session
    • detecting playback problems and restarting the session

Protocols and encodings

  • RTP
    • RTP AVP L16 encoding (lossless 44100Hz PCM 16-bit stereo)
    • Reed-Solomon (m=8) FEC scheme (lower latency, lower rates)
    • LDPC-Staircase FEC scheme (higher latency, higher rates)

API and tools

  • transport API
    • roc_sender --- send audio stream to receiver
    • roc_receiver --- receive and mix audio streams from senders
  • command-line tools
    • roc-send --- read audio stream from audio device or file and send to receiver
    • roc-recv --- receive and mix audio streams from senders and write to audio device or file
    • roc-conv --- run Roc resampler from command-line
  • PulseAudio modules
    • module-roc-sink --- send audio stream written to the sink to receiver
    • module-roc-sink-input --- receive and mix audio streams from senders and write to the connected sink


  • supported operating systems
    • GNU/Linux
    • macOS
    • Android (work in progress)
  • tested hardware architectures
    • x86_64
    • ARMv6
    • ARMv7 (Cortex-A 32-bit)
    • ARMv8 (Cortex-A 64-bit)