diff options
author | Chris Robinson <[email protected]> | 2009-12-07 04:19:33 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2009-12-07 04:19:33 -0800 |
commit | 9286e3984c3276dd720629a1ee4615d6f9acca73 (patch) | |
tree | ecc23fe412639ad28a817361213034cd38cb2389 /Alc/ALc.c | |
parent | 88f3d747b7af1322e19a01e56e466992bfe226bf (diff) |
Move default channel order setting out of the header
Diffstat (limited to 'Alc/ALc.c')
-rw-r--r-- | Alc/ALc.c | 79 |
1 files changed, 79 insertions, 0 deletions
@@ -1537,6 +1537,85 @@ ALCboolean ALCAPIENTRY alcMakeCurrent(ALCcontext *context) } +// Sets the default channel order used by most non-WaveFormatEx-based APIs +void SetDefaultChannelOrder(ALCdevice *device) +{ + switch(aluChannelsFromFormat(device->Format)) + { + case 1: /* Mono is rendered as stereo; fall-through... */ + case 2: device->DevChannels[0] = FRONT_LEFT; + device->DevChannels[1] = FRONT_RIGHT; break; + + case 4: device->DevChannels[0] = FRONT_LEFT; + device->DevChannels[1] = FRONT_RIGHT; + device->DevChannels[2] = BACK_LEFT; + device->DevChannels[3] = BACK_RIGHT; break; + + case 6: device->DevChannels[0] = FRONT_LEFT; + device->DevChannels[1] = FRONT_RIGHT; + device->DevChannels[2] = BACK_LEFT; + device->DevChannels[3] = BACK_RIGHT; + device->DevChannels[4] = FRONT_CENTER; + device->DevChannels[5] = LFE; break; + + case 7: device->DevChannels[0] = FRONT_LEFT; + device->DevChannels[1] = FRONT_RIGHT; + device->DevChannels[2] = FRONT_CENTER; + device->DevChannels[3] = LFE; + device->DevChannels[4] = BACK_CENTER; + device->DevChannels[5] = SIDE_LEFT; + device->DevChannels[6] = SIDE_RIGHT; break; + + case 8: device->DevChannels[0] = FRONT_LEFT; + device->DevChannels[1] = FRONT_RIGHT; + device->DevChannels[2] = BACK_LEFT; + device->DevChannels[3] = BACK_RIGHT; + device->DevChannels[4] = FRONT_CENTER; + device->DevChannels[5] = LFE; + device->DevChannels[6] = SIDE_LEFT; + device->DevChannels[7] = SIDE_RIGHT; break; + } +} +// Sets the default order used by WaveFormatEx +void SetDefaultWFXChannelOrder(ALCdevice *device) +{ + switch(aluChannelsFromFormat(device->Format)) + { + case 1: /* Mono is rendered as stereo; fall-through... */ + case 2: device->DevChannels[0] = FRONT_LEFT; + device->DevChannels[1] = FRONT_RIGHT; break; + + case 4: device->DevChannels[0] = FRONT_LEFT; + device->DevChannels[1] = FRONT_RIGHT; + device->DevChannels[2] = BACK_LEFT; + device->DevChannels[3] = BACK_RIGHT; break; + + case 6: device->DevChannels[0] = FRONT_LEFT; + device->DevChannels[1] = FRONT_RIGHT; + device->DevChannels[2] = FRONT_CENTER; + device->DevChannels[3] = LFE; + device->DevChannels[4] = BACK_LEFT; + device->DevChannels[5] = BACK_RIGHT; break; + + case 7: device->DevChannels[0] = FRONT_LEFT; + device->DevChannels[1] = FRONT_RIGHT; + device->DevChannels[2] = FRONT_CENTER; + device->DevChannels[3] = LFE; + device->DevChannels[4] = BACK_CENTER; + device->DevChannels[5] = SIDE_LEFT; + device->DevChannels[6] = SIDE_RIGHT; break; + + case 8: device->DevChannels[0] = FRONT_LEFT; + device->DevChannels[1] = FRONT_RIGHT; + device->DevChannels[2] = FRONT_CENTER; + device->DevChannels[3] = LFE; + device->DevChannels[4] = BACK_LEFT; + device->DevChannels[5] = BACK_RIGHT; + device->DevChannels[6] = SIDE_LEFT; + device->DevChannels[7] = SIDE_RIGHT; break; + } +} + static ALenum GetFormatFromString(const char *str) { if(strcasecmp(str, "AL_FORMAT_MONO32") == 0) return AL_FORMAT_MONO_FLOAT32; |