Features¶
High-level features¶
streaming CD-quality audio using RTP
maintaining pre-configured fixed 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 backends and 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
connecting sender to multiple receivers with different protocols
support for unicast, multicast, and broadcast
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¶
See also
RTP
RTP AVP L16 encoding (lossless 44100Hz PCM 16-bit stereo)
RTCP
FECFRAME
Reed-Solomon (m=8) FEC scheme (lower latency, lower rates)
LDPC-Staircase FEC scheme (higher latency, higher rates)
API and tools¶
See also
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
PipeWire modules
roc-sink — send audio stream written to the sink to receiver
roc-source — receive and mix audio streams from senders and write to the connected apps
Mobile apps
Roc Droid – Android app that connects your phone to other Roc senders and receivers
Bindings¶
See also
supported languages:
C and C++
Go
Java
Portability¶
See also
supported operating systems
GNU/Linux
macOS
Android
tested hardware architectures
x86_64
i686
ARMv6
ARMv7 (Cortex-A 32-bit)
ARMv8 (Cortex-A 64-bit)