Roadmap

Basic features

  • ☑️ Real-time streaming with guaranteed latency

  • ☑️ Latency tuning and clock drift compensation driven by receiver

  • ☑️ Latency tuning and clock drift compensation driven by sender

  • ☑️ Packet loss recovery using FEC

  • ☑️ Session multiplexing

  • ☑️ Stream breakage detection

  • ☑️ Multiple slots on sender and receiver

  • ⬜ Configurable network encoding

  • ☑️ Automatic channel and rate conversions

  • ⬜ Automatic encoding conversions

  • ☑️ Metrics reporting

  • ⬜ State reporting

Advanced features

  • ⬜ End-to-end latency estimation

  • ⬜ Dynamic latency adjustment (requires RTCP)

  • ⬜ Dynamic adjustment of FEC block size (requires RTCP)

  • ⬜ Dynamic adjustment of FEC code rate (requires RTCP and XRs from RFC 5725)

  • ⬜ Dynamic audio bitrate adjustment

  • ⬜ Dynamic payload type switch

  • ⬜ Encryption support (SRTP and DTLS)

  • ⬜ QoS support

  • ⬜ Packet loss concealment (PLC)

  • ⬜ Lip sync support

  • ☑️ Multicast support

  • ⬜ Multi-room support (synchronized playback)

  • ⬜ Surround sound

  • ⬜ Congestion control

  • ⬜ Retransmission (probably RFC 4588 and RFC 4585)

  • ⬜ Video support

  • ⬜ Hardware acceleration (maybe OpenMAX)

Extensibility

  • ☑️ Provide custom logger

  • ⬜ Provide custom allocator

  • ☑️ Register custom payload types

  • ⬜ Register custom codecs

  • ⬜ Register custom PLC

  • ⬜ Register custom mixer

Protocols

  • ☑️ RTP/AVPF

  • ☑️ FECFRAME (Reed-Solomon and LDPC-Staircase FEC codes based on OpenFEC)

  • ☑️ RTCP

  • ☑️ RTCP XR (extended reports)

  • ⬜ SDP

  • ⬜ RTSP

  • ⬜ SRTP

  • ⬜ DTLS

Codecs

  • ☑️ PCM

  • ⬜ FLAC

  • ⬜ Vorbis

  • ⬜ Opus

  • ☑️ Reed-Solomon FEC

  • ☑️ LDPC-Staircase FEC

  • ⬜ RaptorQ FEC

  • ⬜ Convolutional FEC

Audio backends

  • ☑️ PulseAudio

  • ⬜ PipeWire

  • ⬜ ALSA

  • ⬜ JACK

  • ⬜ CoreAudio (macOS and iOS)

  • ⬜ Oboe (Android)

  • ⬜ WASAPI (Windows)

  • ☑️ SoX (universal)

  • ⬜ FFmpeg

  • ☑️ libsndfile

  • ☑️ WAV

API

  • ☑️ Single-stream transport API (roc_sender / roc_receiver)

  • ⬜ Multi-stream transport API (roc_transceiver)

  • ☑️ Codec API (roc_sender_encoder / roc_receiver_decoder)

  • ⬜ Discovery API (roc_publisher / roc_explorer)

Tools

  • ☑️ Sender (roc-send)

  • ☑️ Receiver (roc-recv)

  • ☑️ Loopback (roc-copy)

  • ⬜ Daemon (rocd)

Integrations

  • ☑️ Roc-based transport for PulseAudio (roc-pulse)

  • ☑️ Roc-based transport for PipeWire (roc-source, roc-sink)

  • ☑️ Virtual audio device for macOS (roc-vad)

  • ⬜ Virtual audio device for Windows

Bindings

  • ☑️ Java (roc-java)

  • ☑️ Go (roc-go)

  • ⬜ Rust

Portability

  • ☑️ Linux

  • ☑️ GNU/Hurd

  • ☑️ Other *nix systems

  • ☑️ macOS

  • ☑️ Android

  • ⬜ iOS

  • ⬜ Windows

  • ⬜ Zephyr