summaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2014-11-23 23:45:30 -0800
committerChris Robinson <[email protected]>2014-11-23 23:45:30 -0800
commit2111fad92fb6c4ab5cea91a43d543a6f9680e8ed (patch)
tree26c42281817f8a550c7c2996102d9bba1b9eb88b /Alc
parent391ab19b028220da6563beceec2fe2261661951c (diff)
Use a macro to reduce code duplication
Diffstat (limited to 'Alc')
-rw-r--r--Alc/ALu.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/Alc/ALu.c b/Alc/ALu.c
index c4292833..393740ad 100644
--- a/Alc/ALu.c
+++ b/Alc/ALu.c
@@ -1290,37 +1290,35 @@ ALvoid aluMixData(ALCdevice *device, ALvoid *buffer, ALsizei size)
if(buffer)
{
+#define WRITE(T, a, b, c, d) do { \
+ Write_##T((a), (b), (c), (d)); \
+ buffer = (char*)buffer + (c)*(d)*sizeof(T); \
+} while(0)
switch(device->FmtType)
{
case DevFmtByte:
- Write_ALbyte(&device->DryBuffer[outchanoffset], buffer, SamplesToDo, outchancount);
- buffer = (char*)buffer + SamplesToDo*outchancount*sizeof(ALbyte);
+ WRITE(ALbyte, device->DryBuffer+outchanoffset, buffer, SamplesToDo, outchancount);
break;
case DevFmtUByte:
- Write_ALubyte(&device->DryBuffer[outchanoffset], buffer, SamplesToDo, outchancount);
- buffer = (char*)buffer + SamplesToDo*outchancount*sizeof(ALubyte);
+ WRITE(ALubyte, device->DryBuffer+outchanoffset, buffer, SamplesToDo, outchancount);
break;
case DevFmtShort:
- Write_ALshort(&device->DryBuffer[outchanoffset], buffer, SamplesToDo, outchancount);
- buffer = (char*)buffer + SamplesToDo*outchancount*sizeof(ALshort);
+ WRITE(ALshort, device->DryBuffer+outchanoffset, buffer, SamplesToDo, outchancount);
break;
case DevFmtUShort:
- Write_ALushort(&device->DryBuffer[outchanoffset], buffer, SamplesToDo, outchancount);
- buffer = (char*)buffer + SamplesToDo*outchancount*sizeof(ALushort);
+ WRITE(ALushort, device->DryBuffer+outchanoffset, buffer, SamplesToDo, outchancount);
break;
case DevFmtInt:
- Write_ALint(&device->DryBuffer[outchanoffset], buffer, SamplesToDo, outchancount);
- buffer = (char*)buffer + SamplesToDo*outchancount*sizeof(ALint);
+ WRITE(ALint, device->DryBuffer+outchanoffset, buffer, SamplesToDo, outchancount);
break;
case DevFmtUInt:
- Write_ALuint(&device->DryBuffer[outchanoffset], buffer, SamplesToDo, outchancount);
- buffer = (char*)buffer + SamplesToDo*outchancount*sizeof(ALuint);
+ WRITE(ALuint, device->DryBuffer+outchanoffset, buffer, SamplesToDo, outchancount);
break;
case DevFmtFloat:
- Write_ALfloat(&device->DryBuffer[outchanoffset], buffer, SamplesToDo, outchancount);
- buffer = (char*)buffer + SamplesToDo*outchancount*sizeof(ALfloat);
+ WRITE(ALfloat, device->DryBuffer+outchanoffset, buffer, SamplesToDo, outchancount);
break;
}
+#undef WRITE
}
size -= SamplesToDo;