File: roadmap.rst

package info (click to toggle)
roc-toolkit 0.4.0%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 9,684 kB
  • sloc: cpp: 102,987; ansic: 8,959; python: 6,125; sh: 942; makefile: 16; javascript: 9
file content (131 lines) | stat: -rw-r--r-- 4,674 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
Roadmap
*******

Basic features
==============

- |:ballot_box_with_check:| Real-time streaming with guaranteed latency
- |:ballot_box_with_check:| Latency tuning and clock drift compensation driven by receiver
- |:ballot_box_with_check:| Latency tuning and clock drift compensation driven by sender
- |:ballot_box_with_check:| Packet loss recovery using FEC
- |:ballot_box_with_check:| Session multiplexing
- |:ballot_box_with_check:| Stream breakage detection
- |:ballot_box_with_check:| Multiple slots on sender and receiver
- |:white_large_square:| Configurable network encoding
- |:ballot_box_with_check:| Automatic channel and rate conversions
- |:white_large_square:| Automatic encoding conversions
- |:ballot_box_with_check:| Metrics reporting
- |:white_large_square:| State reporting

Advanced features
=================

- |:white_large_square:| End-to-end latency estimation
- |:white_large_square:| Dynamic latency adjustment (requires RTCP)
- |:white_large_square:| Dynamic adjustment of FEC block size (requires RTCP)
- |:white_large_square:| Dynamic adjustment of FEC code rate (requires RTCP and XRs from `RFC 5725 <https://tools.ietf.org/html/rfc5725>`_)
- |:white_large_square:| Dynamic audio bitrate adjustment
- |:white_large_square:| Dynamic payload type switch
- |:white_large_square:| Encryption support (SRTP and DTLS)
- |:white_large_square:| QoS support
- |:white_large_square:| Packet loss concealment (PLC)
- |:white_large_square:| Lip sync support
- |:ballot_box_with_check:| Multicast support
- |:white_large_square:| Multi-room support (synchronized playback)
- |:white_large_square:| Surround sound
- |:white_large_square:| Congestion control
- |:white_large_square:| Retransmission (probably `RFC 4588 <https://tools.ietf.org/html/rfc4588>`_ and `RFC 4585 <https://tools.ietf.org/html/rfc4585>`_)
- |:white_large_square:| Video support
- |:white_large_square:| Hardware acceleration (maybe OpenMAX)

Extensibility
=============

- |:ballot_box_with_check:| Provide custom logger
- |:white_large_square:| Provide custom allocator
- |:ballot_box_with_check:| Register custom payload types
- |:white_large_square:| Register custom codecs
- |:white_large_square:| Register custom PLC
- |:white_large_square:| Register custom mixer

Protocols
=========

- |:ballot_box_with_check:| RTP/AVPF
- |:ballot_box_with_check:| FECFRAME (Reed-Solomon and LDPC-Staircase FEC codes based on `OpenFEC <http://openfec.org/>`_)
- |:ballot_box_with_check:| RTCP
- |:ballot_box_with_check:| RTCP XR (extended reports)
- |:white_large_square:| SDP
- |:white_large_square:| RTSP
- |:white_large_square:| SRTP
- |:white_large_square:| DTLS

Codecs
======

- |:ballot_box_with_check:| PCM
- |:white_large_square:| FLAC
- |:white_large_square:| Vorbis
- |:white_large_square:| Opus
- |:ballot_box_with_check:| Reed-Solomon FEC
- |:ballot_box_with_check:| LDPC-Staircase FEC
- |:white_large_square:| RaptorQ FEC
- |:white_large_square:| Convolutional FEC

Audio backends
==============

- |:ballot_box_with_check:| PulseAudio
- |:white_large_square:| PipeWire
- |:white_large_square:| ALSA
- |:white_large_square:| JACK
- |:white_large_square:| CoreAudio (macOS and iOS)
- |:white_large_square:| Oboe (Android)
- |:white_large_square:| WASAPI (Windows)
- |:ballot_box_with_check:| SoX (universal)
- |:white_large_square:| FFmpeg
- |:ballot_box_with_check:| libsndfile
- |:ballot_box_with_check:| WAV

API
===

- |:ballot_box_with_check:| Single-stream transport API (roc_sender / roc_receiver)
- |:white_large_square:| Multi-stream transport API (roc_transceiver)
- |:ballot_box_with_check:| Codec API (roc_sender_encoder / roc_receiver_decoder)
- |:white_large_square:| Discovery API (roc_publisher / roc_explorer)

Tools
=====

- |:ballot_box_with_check:| Sender (roc-send)
- |:ballot_box_with_check:| Receiver (roc-recv)
- |:ballot_box_with_check:| Loopback (roc-copy)
- |:white_large_square:| Daemon (rocd)

Integrations
============

- |:ballot_box_with_check:| Roc-based transport for PulseAudio (roc-pulse)
- |:ballot_box_with_check:| Roc-based transport for PipeWire (roc-source, roc-sink)
- |:ballot_box_with_check:| Virtual audio device for macOS (roc-vad)
- |:white_large_square:| Virtual audio device for Windows

Bindings
========

- |:ballot_box_with_check:| Java (roc-java)
- |:ballot_box_with_check:| Go (roc-go)
- |:white_large_square:| Rust

Portability
===========

- |:ballot_box_with_check:| Linux
- |:ballot_box_with_check:| GNU/Hurd
- |:ballot_box_with_check:| Other \*nix systems
- |:ballot_box_with_check:| macOS
- |:ballot_box_with_check:| Android
- |:white_large_square:| iOS
- |:white_large_square:| Windows
- |:white_large_square:| Zephyr