Open kinetiknz opened 6 years ago
My only concern here is libswresample is lgpl for resampling, there is the bsd licensed https://github.com/erikd/libsamplerate as an alternative.
libswresample does much more than resampling,, it can upmix, downmix perform conversions from any format to another etc...
Currently libcubeb uses libspeexdsp for resampling and in-house code for up/down-mixing and format conversion. The remixing code is limited to 5.1 -> 2 and minor variations and is about to be replaced with something more complete (derived/simplified from libswresample) in PR #421.
Longer term, we're rewriting the backends in Rust. As part of that, we'd like to investigate replacing our in-house remixing and libspeexdsp for resampling with using libswresample directly. That works well with our desire to revisit the libcubeb resampler API and improve the efficiency of all types of format conversions by applying them in the most appropriate order.
We'll need to confirm that libswresample's resampler is suitable for low latency/real time conversion on lower powered platforms (i.e. Android), and potentially retain the ability to use libspeexdsp for resampling if libswresample turns out not to be appropriate in that situation.