diff options
Diffstat (limited to 'OpenAL32/alBuffer.c')
-rw-r--r-- | OpenAL32/alBuffer.c | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/OpenAL32/alBuffer.c b/OpenAL32/alBuffer.c index bbab73d2..4f102439 100644 --- a/OpenAL32/alBuffer.c +++ b/OpenAL32/alBuffer.c @@ -1358,6 +1358,100 @@ void DecomposeInputFormat(ALenum format, enum SrcFmtType *type, } } +void DecomposeFormat(ALenum format, enum FmtType *type, enum FmtChannels *order) +{ + switch(format) + { + case AL_FORMAT_MONO8: + *type = FmtUByte; + *order = FmtMono; + break; + case AL_FORMAT_MONO16: + *type = FmtShort; + *order = FmtMono; + break; + case AL_FORMAT_MONO_FLOAT32: + *type = FmtFloat; + *order = FmtMono; + break; + case AL_FORMAT_MONO_DOUBLE_EXT: + *type = FmtDouble; + *order = FmtMono; + break; + case AL_FORMAT_STEREO8: + *type = FmtUByte; + *order = FmtStereo; + break; + case AL_FORMAT_STEREO16: + *type = FmtShort; + *order = FmtStereo; + break; + case AL_FORMAT_STEREO_FLOAT32: + *type = FmtFloat; + *order = FmtStereo; + break; + case AL_FORMAT_STEREO_DOUBLE_EXT: + *type = FmtDouble; + *order = FmtStereo; + break; + case AL_FORMAT_QUAD8_LOKI: + case AL_FORMAT_QUAD8: + *type = FmtUByte; + *order = FmtQuad; + break; + case AL_FORMAT_QUAD16_LOKI: + case AL_FORMAT_QUAD16: + *type = FmtShort; + *order = FmtQuad; + break; + case AL_FORMAT_QUAD32: + *type = FmtFloat; + *order = FmtQuad; + break; + case AL_FORMAT_51CHN8: + *type = FmtUByte; + *order = Fmt51ChanWFX; + break; + case AL_FORMAT_51CHN16: + *type = FmtShort; + *order = Fmt51ChanWFX; + break; + case AL_FORMAT_51CHN32: + *type = FmtFloat; + *order = Fmt51ChanWFX; + break; + case AL_FORMAT_61CHN8: + *type = FmtUByte; + *order = Fmt61ChanWFX; + break; + case AL_FORMAT_61CHN16: + *type = FmtShort; + *order = Fmt61ChanWFX; + break; + case AL_FORMAT_61CHN32: + *type = FmtFloat; + *order = Fmt61ChanWFX; + break; + case AL_FORMAT_71CHN8: + *type = FmtUByte; + *order = Fmt71ChanWFX; + break; + case AL_FORMAT_71CHN16: + *type = FmtShort; + *order = Fmt71ChanWFX; + break; + case AL_FORMAT_71CHN32: + *type = FmtFloat; + *order = Fmt71ChanWFX; + break; + + default: + AL_PRINT("Unhandled format specified: 0x%X\n", format); + abort(); + } +} + + /* * ReleaseALBuffers() * |