aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/alBuffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'OpenAL32/alBuffer.c')
-rw-r--r--OpenAL32/alBuffer.c94
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()
*