Add a specialized path for deinterleaving u8 samples.

This is not yet optimized.
This commit is contained in:
David Reid
2026-02-01 11:04:07 +10:00
parent 53fce8453c
commit d929fafb34
+13
View File
@@ -52450,6 +52450,19 @@ MA_API void ma_deinterleave_pcm_frames(ma_format format, ma_uint32 channels, ma_
/* For efficiency we do this per format. */ /* For efficiency we do this per format. */
switch (format) { switch (format) {
case ma_format_u8:
{
const ma_uint8* pSrcU8 = (const ma_uint8*)pInterleavedPCMFrames;
ma_uint64 iPCMFrame;
for (iPCMFrame = 0; iPCMFrame < frameCount; ++iPCMFrame) {
ma_uint32 iChannel;
for (iChannel = 0; iChannel < channels; ++iChannel) {
ma_uint8* pDstU8 = (ma_uint8*)ppDeinterleavedPCMFrames[iChannel];
pDstU8[iPCMFrame] = pSrcU8[iPCMFrame*channels+iChannel];
}
}
} break;
case ma_format_s16: case ma_format_s16:
{ {
const ma_int16* pSrcS16 = (const ma_int16*)pInterleavedPCMFrames; const ma_int16* pSrcS16 = (const ma_int16*)pInterleavedPCMFrames;