From 69476b4f2193546cb72c3def9679136a182adfe3 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 22 Jun 2015 14:45:59 +0200 Subject: pcm/Interleave: add optimization for 32 bit samples Move code from the "vorbis" decoder. --- src/decoder/plugins/VorbisDecoderPlugin.cxx | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/decoder/plugins') diff --git a/src/decoder/plugins/VorbisDecoderPlugin.cxx b/src/decoder/plugins/VorbisDecoderPlugin.cxx index c6377b9ab..d7069a2f4 100644 --- a/src/decoder/plugins/VorbisDecoderPlugin.cxx +++ b/src/decoder/plugins/VorbisDecoderPlugin.cxx @@ -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(src, channels), + nframes); } #endif -- cgit v1.2.3