alsa: clean up macro salsa a little.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
diff --git a/src/audio/alsa/SDL_alsa_audio.c b/src/audio/alsa/SDL_alsa_audio.c
index 7a6b734..d343efc 100644
--- a/src/audio/alsa/SDL_alsa_audio.c
+++ b/src/audio/alsa/SDL_alsa_audio.c
@@ -274,42 +274,25 @@ ALSA_WaitDevice(_THIS)
/* !!! FIXME: is there a channel swizzler in alsalib instead? */
/*
- * http://bugzilla.libsdl.org/show_bug.cgi?id=110
+ * https://bugzilla.libsdl.org/show_bug.cgi?id=110
* "For Linux ALSA, this is FL-FR-RL-RR-C-LFE
* and for Windows DirectX [and CoreAudio], this is FL-FR-C-LFE-RL-RR"
*/
-#define SWIZ6(T, buf, numframes) \
- T *ptr = (T *) buf; \
+#define SWIZ6(T) \
+static void swizzle_alsa_channels_6_##T(void *buffer, const Uint32 bufferlen) { \
+ T *ptr = (T *) buffer; \
Uint32 i; \
- for (i = 0; i < numframes; i++, ptr += 6) { \
+ for (i = 0; i < bufferlen; i++, ptr += 6) { \
T tmp; \
tmp = ptr[2]; ptr[2] = ptr[4]; ptr[4] = tmp; \
tmp = ptr[3]; ptr[3] = ptr[5]; ptr[5] = tmp; \
- }
-
-static void
-swizzle_alsa_channels_6_64bit(void *buffer, Uint32 bufferlen)
-{
- SWIZ6(Uint64, buffer, bufferlen);
-}
-
-static void
-swizzle_alsa_channels_6_32bit(void *buffer, Uint32 bufferlen)
-{
- SWIZ6(Uint32, buffer, bufferlen);
+ } \
}
-static void
-swizzle_alsa_channels_6_16bit(void *buffer, Uint32 bufferlen)
-{
- SWIZ6(Uint16, buffer, bufferlen);
-}
-
-static void
-swizzle_alsa_channels_6_8bit(void *buffer, Uint32 bufferlen)
-{
- SWIZ6(Uint8, buffer, bufferlen);
-}
+SWIZ6(Uint64)
+SWIZ6(Uint32)
+SWIZ6(Uint16)
+SWIZ6(Uint8)
#undef SWIZ6
@@ -323,10 +306,10 @@ swizzle_alsa_channels(_THIS, void *buffer, Uint32 bufferlen)
{
if (this->spec.channels == 6) {
switch (SDL_AUDIO_BITSIZE(this->spec.format)) {
- case 8: swizzle_alsa_channels_6_8bit(buffer, bufferlen); break;
- case 16: swizzle_alsa_channels_6_16bit(buffer, bufferlen); break;
- case 32: swizzle_alsa_channels_6_32bit(buffer, bufferlen); break;
- case 64: swizzle_alsa_channels_6_64bit(buffer, bufferlen); break;
+ case 8: swizzle_alsa_channels_6_Uint8(buffer, bufferlen); break;
+ case 16: swizzle_alsa_channels_6_Uint16(buffer, bufferlen); break;
+ case 32: swizzle_alsa_channels_6_Uint32(buffer, bufferlen); break;
+ case 64: swizzle_alsa_channels_6_Uint64(buffer, bufferlen); break;
default: SDL_assert(!"unhandled bitsize"); break;
}
}