From 2111fad92fb6c4ab5cea91a43d543a6f9680e8ed Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 23 Nov 2014 23:45:30 -0800 Subject: [PATCH] Use a macro to reduce code duplication --- Alc/ALu.c | 26 ++++++++++++-------------- 1 file 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; -- 2.11.4.GIT