From 16639f9d71a11f2d63df84c7ec660f2a9bd5f526 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 22 Jun 2015 17:20:37 +0200 Subject: pcm/Interleave: instantiate a 16 bit optimization --- src/pcm/Interleave.cxx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/pcm') diff --git a/src/pcm/Interleave.cxx b/src/pcm/Interleave.cxx index 9926b5f7f..1152a7070 100644 --- a/src/pcm/Interleave.cxx +++ b/src/pcm/Interleave.cxx @@ -51,6 +51,14 @@ PcmInterleaveT(T *gcc_restrict dest, } } +static void +PcmInterleave16(int16_t *gcc_restrict dest, + const ConstBuffer src, + size_t n_frames) +{ + PcmInterleaveT(dest, src, n_frames); +} + void PcmInterleave32(int32_t *gcc_restrict dest, const ConstBuffer src, @@ -65,6 +73,13 @@ PcmInterleave(void *gcc_restrict dest, size_t n_frames, size_t sample_size) { switch (sample_size) { + case 2: + PcmInterleave16((int16_t *)dest, + ConstBuffer((const int16_t *const*)src.data, + src.size), + n_frames); + break; + case 4: PcmInterleave32((int32_t *)dest, ConstBuffer((const int32_t *const*)src.data, -- cgit v1.2.3