(Roc Droid logo)
What is Roc?
Roc is a toolkit for real-time streaming over unreliable networks. It works with desktop and embedded Linux, ALSA, PulseAudio, PipeWire, macOS, and Android.
Full changelog is available here.
The main focus of this release was:
- polishing C API
- creating bindings for Go and Java
- Android support
- preparing internals for control and signaling protocols
We also created a small Android app.
A huge amount of work has been done that for now remains invisible. Internals were reworked to be ready for adding control and signaling protocols. Roc has got an implementation of task-based pipeline, network, and control loops communicating via lock-free task and packet queues in a non-blocking and realtime-safe manner.
Roc also got initial support for RTCP and SDP. RTSP is coming next. We also started work on adding encryption support using OpenSSL.
Here is amount of changes since last 0.1.x release:
$ git diff --stat v0.1.5..v0.2.1 | tail -1 934 files changed, 94556 insertions(+), 24863 deletions(-)
You can find step-by-step tutorial for the new release in this article.
And of course, big thanks to all the contributors! During this release, Roc got about 20 new contributors, which is really exciting for me. They all are listed here.
And last but not least, thanks to everybody who reported issues on GitHub, mailing list, and chat!
I don’t expect significant income, however even small contributions should help; we will accumulate donated money and occasionally spend them to fund full-time work for a week or a few.
See details on this page.
See details here. Welcome to join!
I’ve tested the toolkit on 7 devices. In addition, Android app was tested on a few versions of Android.
I plan to expand the list of regularly tested devices in future: add non-ARM single board computers, add Android devices, and probably more *nix devices that are not Linux and macOS.
My plans for a few next releases are:
- first of all, push fixes for pending bug reports and feature requests
- help people who started packaging work
- finish RTCP support
- finish SDP support and implement RTSP support
- allow fully configurable local and network encodings (sample format, depth, and rate, channel layout)
- low-latency audio backends for ALSA and CoreAudio
- virtual device for macOS
- encryption support
Things that I would like to try next:
- more audio codecs (e.g. Opus, Vorbis)
- more FEC codecs (notably convolutional codecs)
- automatically adjust latency
- synchronized playback (multiroom)
If you would like to take part in development of these or other features, you’re more than welcome! Feel free to reach us on GitHub, mailing list, or chat.
Also I’m open to paid work on the project.