Changelog¶
Version 0.2.5 (Jul 28, 2023)¶
Bug fixes¶
fix byte order conversion
Build system¶
fix compiler type detection when compiler is specified via
CC
orCXX
variableexport symbols of dependencies built by
--build-3rdparty
when building static library (libroc.a
), to avoid linker errors when using it
Version 0.2.4 (May 13, 2023)¶
C API¶
always set
file
andline
inroc_log_message
Command-line tools¶
support PulseAudio sources in
roc-send
support
--io-latency
option inroc-send
Bug fixes¶
fix potential race
fix byte order detection on Android
do not write to log from shared library destructor
stop using user-provided log handler after entering shared library destructor
Internals¶
improve logging
refactor scons scripts
Build system¶
fix
--build-3rdparty=sox
whensndio
is installedfix
--build-3rdparty=google-benchmark
when there ispython3
, but nopython
in PATHfix OpenSSL platform detection in
--build-3rdparty=openssl
when not cross-compilingset Android API level to
21
add
--macos-platform
and--macos-arch
scons optionsby default, set
--macos-platform
to current OS, to avoid linker warnings about incompatible macOS deployment targetssupport building macOS universal binaries by providing multiple values for
--macos-arch
propagate Android platform, macOS platform, and macOS architectures to
--build--3rdparty
unexport all symbols except
roc_*
fromlibroc.so
andlibroc.a
on Linux, andlibroc.dylib
on macOSresolve
pkg-config
absolute path
Documentation¶
minor updates
Version 0.2.3 (Mar 9, 2023)¶
C API¶
add
roc_receiver_set_reuseaddr
androc_sender_set_reuseaddr
Command-line tools¶
add
--reuseaddr
toroc-recv
androc-send
Bug fixes¶
fix formatting of endpoint URI with zero port
fix usage of multicast with RTCP in
roc-recv
Build system¶
add new dependency OpenSSL
fix work with SCons 4.5
exclude sox and libpulse from .pc file for libroc
Packaging¶
add debian packages and publish them on github
add rpm packages spec
Documentation¶
minor updates
Version 0.2.2 (Feb 27, 2023)¶
C API¶
rename
roc_get_version
toroc_version_get
Bug fixes¶
fix crash in
roc_log_set_handler
when argument is NULL
Build system¶
fix build on recent Android NDK
install
.pc
file to<libdir>/pkgconfig
instead ofPKG_CONFIG_PATH
add support for
DESTDIR
strip symbols in release build
Documentation¶
minor updates
Version 0.2.1 (Dec 26, 2022)¶
Build system¶
install to
/usr
by default (except macOS)
Documentation¶
minor updates
Version 0.2.0 (Dec 19, 2022)¶
Features¶
support multicast
support broadcast
support speex resampler and make it default
support slots (connect sender to multiple receivers and vice versa)
initial support for RTCP
C API¶
return error codes from
roc_context_open
,roc_receiver_open
,roc_sender_open
introduce
roc_endpoint
to identify endpoints using URIrename
roc_fec_code
toroc_fec_encoding
add
roc_resampler_backend
add
roc_clock_source
add
roc_version
and friends
Bindings¶
Command-line tools¶
use URIs to identify audio devices and endpoints
add
--backup
option toroc-recv
replace
--frame-size
with--frame-length
and--frame-limit
remove
--resampler-interp
and--resampler-window
Applications¶
Bug fixes¶
fix race in PRNG
fix race in mutex and semaphore on macOS
fix potential deadlock in network code
Portability¶
Linux / aarch64 build fixes
Android build fixes
macOS build fixes
FreeBSD build fixes
support generic Unix target
continuous integration for more Linux distros
continuous integration for Android
testing on Raspberry Pi 4
Internals¶
add
roc_peer
moduleadd
roc_ctl
modulesupport for asynchronous tasks in
roc_pipeline
,roc_netio
,roc_ctl
lock-free task queues
optimizations to avoid unnecessary context switches
improvements in memory pools
improvements in logger
self-profiling
start work on SDP support
preparations for RTSP support
rework project structure
lots of small improvements
Build system¶
add
--enable-static
and--disable-shared
add
--disable-soversion
optioncompatibility with recent SCons versions
compatibility with different Python versions
improve toolchain detection
generate
.pc
file for pkg-configfix build with recent PulseAudio
fix build with recent libunwind
fixes for building third-parties
Tests¶
add benchmarks
lots of small updates
Documentation¶
document Android bulding and testing
lots of small updates
Version 0.1.5 (Apr 5, 2020)¶
Portability¶
fix building on Manjaro Linux
fix building on Yocto Linux
add openSUSE to continuous integration and user cookbook
drop Xcode 7.3 from continuous integration, add Xcode 11.3
Build system¶
correctly handle arguments in environment variables like CXX/CC/LD/etc (for Yocto Linux)
correctly handle spaces in environment variables (for Yocto Linux)
fix environment overrides checks
fix building of the host tools when cross-compiling
fix warnings on Clang 11
fix sphinx invocation
explicitly disable Orc when building PulseAudio using –build-3rdparty
explicitly enable -pthread or -lpthread for libsndfile (for Manjaro Linux)
user CMake instead of autotools when building libuv for Android using
--build-3rdparty
switch to libuv 1.35.0 by default in
--build-3rdparty
check for unknown names in
--build-3rdparty
Version 0.1.4 (Feb 6, 2020)¶
Internals¶
fix logging
Build system¶
make
/usr/local
prefix default everywhere except Linuxmake default compiler consistent with CXX var
fix handling of RAGEL, GENGETOPT, DOXYGEN, SPHINX_BUILD, and BREATHE_APIDOC vars
fix SoX download URL (again)
fix CPU count calculation
Documentation¶
update PulseAudio version numbers in “User cookbook”
update CONTRIBUTING and “Coding guidelines”
update maintainers and contributors list
Version 0.1.3 (Oct 21, 2019)¶
Command-line tools¶
add
--list-drivers
optionadd git commit hash to version info
Internals¶
print backtrace on Linux and macOS using libunwind instead of glibc backtrace module
print backtrace on Android using bionic backtrace module
colored logging
Build system¶
add libunwind optional dependency (enabled by default)
add ragel required dependency
rename “uv” to “libuv” in
--build-3rdparty
don’t hide symbols in debug builds
strip symbols in release builds
fix building on recent Python versions
fix SoX download URL
fix PulseAudio version parsing
automatically apply memfd patch when building PulseAudio
automatically fix libasound includes when building PulseAudio
Version 0.1.2 (Aug 14, 2019)¶
Bug fixes¶
fix handling of inconsistent port protocols / FEC schemes
fix IPv6 support
fix incorrect usage of SO_REUSEADDR
fix panic on bind error
fix race in port removing code
fix packet flushing mechanism
fix backtrace printing on release builds
Portability¶
fix building on musl libc
continuous integration for Alpine Linux
Internals¶
rework audio codecs interfaces (preparations for Opus and read-aheads support)
minor refactoring in FEC support
improve logging
Build system¶
allow to configure installation directories
auto-detect system library directory and PulseAudio module directory
Documentation¶
extend “Forward Erasure Correction codes” page
add new pages: “Usage”, “Publications”, “Licensing”, “Contacts”, “Authors”
replace “Guidelines” page with “Contribution Guidelines”, “Coding guidelines”, and “Version control”
Version 0.1.1 (Jun 18, 2019)¶
Bug fixes¶
fix memory corruption in OpenFEC / LDPC-Staircase (fix available in our fork)
fix false positives in stream breakage detection
Portability¶
start working on Android port; Roc PulseAudio modules are now available in Termux unstable repo
continuous integration for Android / arm64 (minimal build)
docker image for aarch64-linux-android toolchain
Build system¶
fix multiple build issues on macOS
fix multiple build issues with cross-compilation and Android build
fix issues with building third-parties
fix issues with compilation db generation
set library soname/install_name and install proper symlinks
improve configuration options
improve system type detection and system tools search
improve scripts portability
better handling of build environment variables
Tests¶
fix resampler AWGN tests
add travis job to run tests under valgrind
Version 0.1.0 (May 28, 2019)¶
Features¶
streaming CD-quality audio using RTP (PCM 16-bit stereo)
maintaining pre-configured target latency
restoring lost packets using FECFRAME with Reed-Solomon and LDPC-Staircase FEC schemes
converting between the sender and receiver clock domains using resampler
converting between the network and input/output sample rates
configurable resampler profiles for different CPU and quality requirements
mixing simultaneous streams from multiple senders on the receiver
binding receiver to multiple ports with different protocols
interleaving packets to increase the chances of successful loss recovery
detecting and restarting broken streams
C API¶
initial version of transport API (roc_sender, roc_receiver)
Command-line tools¶
initial version of command-line tools (roc-send, roc-recv, roc-conv)
Applications¶
initial version of PulseAudio transport (module-roc-sink, module-roc-sink-input)
Portability¶
GNU/Linux support
macOS support
continuous integration for Ubuntu, Debian, Fedora, CentOS, Arch Linux, macOS
continuous integration for x86_64, ARMv6, ARMv7, ARMv8
toolchain docker images for arm-bcm2708hardfp-linux-gnueabi, arm-linux-gnueabihf, aarch64-linux-gnu
testing on Raspberry Pi 3 Model B, Raspberry Pi Zero W, Orange Pi Lite 2