From: Peter Meerwald <p.meerwald@xxxxxxxxxxxxxxxxxx> patches 1 to 6 are cleanup; the remap struct (used by the resampler) now stores copies instead of references of the input/output sample specs in the resampler struct; initialization of the remap struct is done in one place when the resampler has determined the work sample format; this makes it possible to split the implementation of the remapping functions into s16 and float32 code patch 7 adds a pointer the remap struct which can be used to save state (such as pre-computed strategy data or even generated code) of the remapping function patches 8 and 9 are cleanup and add helper functions patch 10 adds special-case remapping code which can just re-arrange channels (i.e. each output channels is either zero or copies exactly one input channel) patch 11 adds special-case remapping code for mono-to-stereo, stereo-to-mono, mono-to-4-channel, 4-channel-to-mono benchmark results are provided for ARM Cortex-A8 and x86-64 Peter Meerwald (11): remap: Don't use PA_VOLUME_NORM remap: Rename pa_init_remap() to pa_init_remap_func() remap: Refactor channel remap table computation calc_map_table() remap: Make resampler's remap structure more self-contained remap: Split remapping functions into s16 and float implementation remap: Use float constant instead of double remap: Add (optional) state to remap struct remap: Add helper function to setup channel arrangement information remap: Cleanup remap function selection, add pa_set_remap_func() helper remap: Add special remapping case which just re-arranges channels remap: Add stereo to mono and 4-channel special case remapping src/pulsecore/remap.c | 425 ++++++++++++++++++++++++++++++++++----------- src/pulsecore/remap.h | 20 ++- src/pulsecore/remap_mmx.c | 52 +++--- src/pulsecore/remap_sse.c | 52 +++--- src/pulsecore/resampler.c | 38 ++-- src/tests/cpu-test.c | 22 +-- 6 files changed, 415 insertions(+), 194 deletions(-) -- 1.7.9.5