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
⬜ 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