mozilla / cubeb

Cross platform audio library
ISC License
439 stars 124 forks source link

Investigate libswresample for all format conversion #423

Open kinetiknz opened 6 years ago

kinetiknz commented 6 years ago

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.

mdsitton commented 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.

jyavenard commented 6 years ago

libswresample does much more than resampling,, it can upmix, downmix perform conversions from any format to another etc...