Two C API improvements recently landed develop branch of #roctoolkit
- You can remove slots on the fly. "Slots" represent connected peers, so this is useful when peers enter and leave session dynamically.
- There is a new packet encoder/decoder API, similar to sender/receiver, but networkless. You push raw frames and get encoded packets, or vice versa, and you should deliver packets by yourself. This allows using roc with third-party transports like libjuice and libdatachannel.
Recently spent some time optimizing #roctoolkit latency over Ethernet.
So far, achieved 7ms for transport + 12ms for two USB sound cards.
This is the photo of my test bench for measurements.
Legend: R1, R2 - #raspberrypi; S0, S1, S2 - sound cards; L1, L3 - jack cables; L2 - ethernet cable.
Roc runs on R1 and R2 and streams sound from S1 to S2.
On PC, I run #signalestimator that writes sound to S0 output, reads it back from S0 input, and measures latency.
#roctoolkit #raspberrypi #signalestimator #linuxaudio #audioprogramming
I had a lot of fun last weekend, adding surround sound support to #roctoolkit, with conversion between surround layouts (downmixing and upmixing).
(E.g. if network layout is surround 7.1, but sound card is 5.1, it's automatically downmixed)
Learned lots of new things. First considered simpler remixing algorithm from pulseaudio[1], but ended up using downmixing tables from dolby[2][3].
Also added support for large multitrack channel sets up to 1024 channels.
#roctoolkit #linuxaudio #audioprogramming
Received new #sbc for #roctoolkit test stand: OpenEmbed SOM9331 with MIPS32 and OpenWRT.
I know that people are running roc on mips, but never tried it by myself. Now I can include it to release regression testing 🤖
#sbc #roctoolkit #mips #openembed #openwrt #linuxaudio
We're looking for contributors for recently released #golang bindings for #roctoolkit!
https://github.com/roc-streaming/roc-go
Roc is a real-time audio streaming library. https://roc-streaming.org/
On github, you will find issues for adding tests, documentation, and minor features. We're always glad to meet new people in the project 🙂
#opensource #contribute #goodfirstissue #audioprogramming #networkprogramming
#golang #roctoolkit #opensource #contribute #goodfirstissue #audioprogramming #networkprogramming
Roc tutorial update: https://gavv.net/articles/roc-tutorial-0.2/
Added instructions on how to use PipeWire with Roc if you can't use PPA.
#roctoolkit #pipewire #linuxaudio
This little cable hell is my test stand for #roctoolkit regression testing
#roctoolkit #linuxaudio #sbc #raspberrypi #orangepi
How to install #roctoolkit from package manager (#ubuntu, #debian, #fedora, #archlinux)
https://roc-streaming.org/toolkit/docs/building/user_cookbook.html#linux-from-packages
#roctoolkit #ubuntu #debian #fedora #archlinux
Released #roctoolkit 0.2.3 with prebuilt #debian packages
https://github.com/roc-streaming/roc-toolkit/releases/tag/v0.2.3
First release of Go bindings for #roctoolkit: https://github.com/roc-streaming/roc-go
Roc started receiving donations! https://roc-streaming.org/toolkit/docs/about_project/sponsors.html
Also I'm now receiving donations for my other projects https://gavv.net/about/
#roctoolkit #opensource #opencollective #liberapay