From e234b901731ef88df22fff5ed710757e2ea73377 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 19 Mar 2012 00:49:52 -0700 Subject: [PATCH] Use a loop to find the OpenAL format from the decoder format --- apps/openmw/mwsound/openal_output.cpp | 34 +++++++++++++-------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/apps/openmw/mwsound/openal_output.cpp b/apps/openmw/mwsound/openal_output.cpp index 556c1bb64..71cf33b75 100644 --- a/apps/openmw/mwsound/openal_output.cpp +++ b/apps/openmw/mwsound/openal_output.cpp @@ -25,26 +25,24 @@ static void throwALerror() static ALenum getALFormat(ChannelConfig chans, SampleType type) { - if(chans == ChannelConfig_Mono) + static const struct { + ALenum format; + ChannelConfig chans; + SampleType type; + } fmtlist[] = { + { AL_FORMAT_MONO16, ChannelConfig_Mono, SampleType_Int16 }, + { AL_FORMAT_MONO8, ChannelConfig_Mono, SampleType_UInt8 }, + { AL_FORMAT_STEREO16, ChannelConfig_Stereo, SampleType_Int16 }, + { AL_FORMAT_STEREO8, ChannelConfig_Stereo, SampleType_UInt8 }, + }; + static const size_t fmtlistsize = sizeof(fmtlist)/sizeof(fmtlist[0]); + + for(size_t i = 0;i < fmtlistsize;i++) { - if(type == SampleType_Int16) - return AL_FORMAT_MONO16; - else if(type == SampleType_UInt8) - return AL_FORMAT_MONO8; - else - fail("Unsupported sample type"); + if(fmtlist[i].chans == chans && fmtlist[i].type == type) + return fmtlist[i].format; } - else if(chans == ChannelConfig_Stereo) - { - if(type == SampleType_Int16) - return AL_FORMAT_STEREO16; - else if(type == SampleType_UInt8) - return AL_FORMAT_STEREO8; - else - fail("Unsupported sample type"); - } - else - fail("Unsupported channel config"); + fail("Unsupported sound format"); return AL_NONE; }