pcm/Interleave: add stereo optimization
This commit is contained in:
parent
16639f9d71
commit
b4fc2e38ab
@ -36,12 +36,31 @@ GenericPcmInterleave(uint8_t *gcc_restrict dest,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
static void
|
||||||
|
PcmInterleaveStereo(T *gcc_restrict dest,
|
||||||
|
const T *gcc_restrict src1,
|
||||||
|
const T *gcc_restrict src2,
|
||||||
|
size_t n_frames)
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i != n_frames; ++i) {
|
||||||
|
*dest++ = *src1++;
|
||||||
|
*dest++ = *src2++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
static void
|
static void
|
||||||
PcmInterleaveT(T *gcc_restrict dest,
|
PcmInterleaveT(T *gcc_restrict dest,
|
||||||
const ConstBuffer<const T *> src,
|
const ConstBuffer<const T *> src,
|
||||||
size_t n_frames)
|
size_t n_frames)
|
||||||
{
|
{
|
||||||
|
switch (src.size) {
|
||||||
|
case 2:
|
||||||
|
PcmInterleaveStereo(dest, src[0], src[1], n_frames);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (const auto *s : src) {
|
for (const auto *s : src) {
|
||||||
auto *d = dest++;
|
auto *d = dest++;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user