pcm/Interleave: add optimization for 32 bit samples

Move code from the "vorbis" decoder.
This commit is contained in:
Max Kellermann
2015-06-22 14:45:59 +02:00
parent fdf92c5f3b
commit 69476b4f21
3 changed files with 51 additions and 12 deletions

View File

@@ -24,6 +24,7 @@
#include "../DecoderAPI.hxx"
#include "input/InputStream.hxx"
#include "OggCodec.hxx"
#include "pcm/Interleave.hxx"
#include "util/Error.hxx"
#include "util/Macros.hxx"
#include "CheckAudioFormat.hxx"
@@ -181,13 +182,8 @@ static void
vorbis_interleave(float *dest, const float *const*src,
unsigned nframes, unsigned channels)
{
for (const float *const*src_end = src + channels;
src != src_end; ++src, ++dest) {
float *gcc_restrict d = dest;
for (const float *gcc_restrict s = *src, *s_end = s + nframes;
s != s_end; ++s, d += channels)
*d = *s;
}
PcmInterleaveFloat(dest, ConstBuffer<const float *>(src, channels),
nframes);
}
#endif