Hi, Here is the initial version of libavresample.
I have also included some example x86 asm functions for sample format conversion and channel mixing. The sample format conversion asm function is actually just an RFC though since it is a duplicate of ff_float_interleave6() in libavcodec/x86/fmtconvert.asm. I'll have to work out which FmtConvert functions will still be useful within libavcodec and should be shared (and how best to do that) and which functions can just be moved to libavresample (and how/when to do that). The audio FIFO feature being added to libavutil will also be used in avconv in place of the current flat audio FIFO buffer since it will also support planar formats. Near-future plans for improving libavresample include: Sample Format Conversion: - Add x86 asm for all flt/s16 combinations for at least 1, 2, and 6 channels - Implement dithering for s32/flt to s16 - Implement x86 asm for all s32/flt/s16 combinations for at least 1, 2, and 6 channels Channel Mixing: - s32p internal sample format - Implement x86 asm for common input/output combinations using 1, 2, 4, 6, and 8 channels - By-pass mixing with channel reordering when applicable Resampling: - Add support for s32p and fltp internal sample formats - Add support for choosing libsamplerate instead of the native resampler Misc: - Channel reordering The first priority will be optimized sample format conversion, after which I plan to finish planar support in libavcodec and avconv and start removing in-decoder/encoder interleaving/deinterleaving/conversion, along with the request_sample_fmt option. Patch 3 depends on the channel layout guessing patch I sent previously. Thanks, Justin Justin Ruggles (4): avutil: add audio fifo buffer Add libavresample avconv: use libavresample cosmetics: vertical alignment Makefile | 3 +- avconv.c | 129 ++++----- cmdutils.c | 16 +- configure | 7 +- libavresample/Makefile | 11 + libavresample/audio_convert.c | 344 ++++++++++++++++++++++++ libavresample/audio_convert.h | 46 ++++ libavresample/audio_data.c | 342 ++++++++++++++++++++++++ libavresample/audio_data.h | 167 ++++++++++++ libavresample/audio_mix.c | 354 +++++++++++++++++++++++++ libavresample/audio_mix.h | 69 +++++ libavresample/audio_mix_matrix.c | 353 +++++++++++++++++++++++++ libavresample/avresample-test.c | 338 ++++++++++++++++++++++++ libavresample/avresample.h | 235 +++++++++++++++++ libavresample/internal.h | 75 ++++++ libavresample/options.c | 64 +++++ libavresample/options_table.c | 45 ++++ libavresample/resample.c | 466 +++++++++++++++++++++++++++++++++ libavresample/resample.h | 35 +++ libavresample/utils.c | 400 ++++++++++++++++++++++++++++ libavresample/version.h | 42 +++ libavresample/x86/Makefile | 5 + libavresample/x86/audio_convert.asm | 112 ++++++++ libavresample/x86/audio_convert_mmx.c | 43 +++ libavresample/x86/audio_mix.asm | 73 +++++ libavresample/x86/audio_mix_mmx.c | 46 ++++ libavutil/Makefile | 2 + libavutil/audio_fifo.c | 197 ++++++++++++++ libavutil/audio_fifo.h | 140 ++++++++++ 29 files changed, 4080 insertions(+), 79 deletions(-) create mode 100644 libavresample/Makefile create mode 100644 libavresample/audio_convert.c create mode 100644 libavresample/audio_convert.h create mode 100644 libavresample/audio_data.c create mode 100644 libavresample/audio_data.h create mode 100644 libavresample/audio_mix.c create mode 100644 libavresample/audio_mix.h create mode 100644 libavresample/audio_mix_matrix.c create mode 100644 libavresample/avresample-test.c create mode 100644 libavresample/avresample.h create mode 100644 libavresample/internal.h create mode 100644 libavresample/options.c create mode 100644 libavresample/options_table.c create mode 100644 libavresample/resample.c create mode 100644 libavresample/resample.h create mode 100644 libavresample/utils.c create mode 100644 libavresample/version.h create mode 100644 libavresample/x86/Makefile create mode 100644 libavresample/x86/audio_convert.asm create mode 100644 libavresample/x86/audio_convert_mmx.c create mode 100644 libavresample/x86/audio_mix.asm create mode 100644 libavresample/x86/audio_mix_mmx.c create mode 100644 libavutil/audio_fifo.c create mode 100644 libavutil/audio_fifo.h _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
