Merge branch 'master' into efx-experiment

This commit is contained in:
Chris Robinson
2007-12-20 21:48:17 -08:00
5 changed files with 30 additions and 28 deletions
+4 -4
View File
@@ -34,7 +34,7 @@
///////////////////////////////////////////////////////
// DEBUG INFORMATION
char szDebug[256];
char _alDebug[256];
///////////////////////////////////////////////////////
@@ -206,7 +206,7 @@ static void InitAL(void)
int i;
const char *devs;
InitializeCriticalSection(&g_mutex);
InitializeCriticalSection(&_alMutex);
ALTHUNK_INIT();
ReadALConfig();
@@ -316,7 +316,7 @@ ALCvoid SetALCError(ALenum errorCode)
ALCvoid SuspendContext(ALCcontext *pContext)
{
(void)pContext;
EnterCriticalSection(&g_mutex);
EnterCriticalSection(&_alMutex);
}
@@ -328,7 +328,7 @@ ALCvoid SuspendContext(ALCcontext *pContext)
ALCvoid ProcessContext(ALCcontext *pContext)
{
(void)pContext;
LeaveCriticalSection(&g_mutex);
LeaveCriticalSection(&_alMutex);
}
+13 -15
View File
@@ -378,20 +378,7 @@ static ALvoid CalcSourceParams(ALCcontext *ALContext, ALsource *ALSource,
Matrix[2][0] = U[2]; Matrix[2][1] = V[2]; Matrix[2][2] = -N[2];
aluMatrixVector(Position, Matrix);
//6. Convert normalized position into left/right front/back pannings
if(Distance != 0.0f)
{
aluNormalize(Position);
PanningLR = 0.5f + 0.5f*Position[0];
PanningFB = 0.5f + 0.5f*Position[2];
}
else
{
PanningLR = 0.5f;
PanningFB = 0.5f;
}
//7. Apply filter gains and filters
//6. Apply filter gains and filters
switch(ALSource->DirectFilter.filter)
{
case AL_FILTER_LOWPASS:
@@ -415,8 +402,11 @@ static ALvoid CalcSourceParams(ALCcontext *ALContext, ALsource *ALSource,
*drygainhf = DryGainHF;
*wetgainhf = WetGainHF;
//8. Convert pannings into channel volumes
//7. Convert pannings into channel volumes
WetMix *= ALSource->Send[0].Slot.Gain;
//8. Convert normalized position into pannings, then into channel volumes
aluNormalize(Position);
switch(OutputFormat)
{
case AL_FORMAT_MONO8:
@@ -428,6 +418,7 @@ static ALvoid CalcSourceParams(ALCcontext *ALContext, ALsource *ALSource,
break;
case AL_FORMAT_STEREO8:
case AL_FORMAT_STEREO16:
PanningLR = 0.5f + 0.5f*Position[0];
drysend[0] = ConeVolume * ListenerGain * DryMix * aluSqrt(1.0f-PanningLR); //L Direct
drysend[1] = ConeVolume * ListenerGain * DryMix * aluSqrt( PanningLR); //R Direct
wetsend[0] = ListenerGain * WetMix * aluSqrt(1.0f-PanningLR); //L Room
@@ -435,6 +426,13 @@ static ALvoid CalcSourceParams(ALCcontext *ALContext, ALsource *ALSource,
break;
case AL_FORMAT_QUAD8:
case AL_FORMAT_QUAD16:
// Apply a scalar so each individual speaker has more weight
PanningLR = 0.5f + (0.5f*Position[0]*1.41421356f);
PanningLR = __min(1.0f, PanningLR);
PanningLR = __max(0.0f, PanningLR);
PanningFB = 0.5f + (0.5f*Position[2]*1.41421356f);
PanningFB = __min(1.0f, PanningFB);
PanningFB = __max(0.0f, PanningFB);
drysend[0] = ConeVolume * ListenerGain * DryMix * aluSqrt((1.0f-PanningLR)*(1.0f-PanningFB)); //FL Direct
drysend[1] = ConeVolume * ListenerGain * DryMix * aluSqrt(( PanningLR)*(1.0f-PanningFB)); //FR Direct
drysend[2] = ConeVolume * ListenerGain * DryMix * aluSqrt((1.0f-PanningLR)*( PanningFB)); //BL Direct
+5 -1
View File
@@ -35,8 +35,10 @@ SET(LIB_VERSION "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_BUILD_VERSION}"
IF("${WIN32}")
SET(LIBNAME openal32)
SET(TARGET_OPTS "PREFIX \"\"")
ELSE()
SET(LIBNAME openal)
SET(TARGET_OPTS "")
ENDIF()
@@ -259,7 +261,9 @@ ADD_DEFINITIONS(-DAL_BUILD_LIBRARY)
# Build a shared library
ADD_LIBRARY(${LIBNAME} SHARED ${OPENAL_OBJS} ${ALC_OBJS})
SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES VERSION ${LIB_VERSION} SOVERSION ${LIB_MAJOR_VERSION})
SET_TARGET_PROPERTIES(${LIBNAME} PROPERTIES VERSION ${LIB_VERSION}
SOVERSION ${LIB_MAJOR_VERSION}
${TARGET_OPTS})
TARGET_LINK_LIBRARIES(${LIBNAME} ${EXTRA_LIBS})
+5 -5
View File
@@ -72,18 +72,18 @@ extern "C"
{
#endif
extern CRITICAL_SECTION g_mutex;
extern CRITICAL_SECTION _alMutex;
extern char szDebug[256];
extern char _alDebug[256];
#define AL_PRINT(...) do { \
int _al_print_i; \
char *_al_print_fn = strrchr(__FILE__, '/'); \
if(!_al_print_fn) _al_print_fn = __FILE__; \
else _al_print_fn += 1; \
_al_print_i = snprintf(szDebug, sizeof(szDebug), "AL lib: %s:%d: ", _al_print_fn, __LINE__); \
snprintf(szDebug+_al_print_i, sizeof(szDebug)-_al_print_i, __VA_ARGS__); \
fprintf(stderr, "%s", szDebug); \
_al_print_i = snprintf(_alDebug, sizeof(_alDebug), "AL lib: %s:%d: ", _al_print_fn, __LINE__); \
snprintf(_alDebug+_al_print_i, sizeof(_alDebug)-_al_print_i, __VA_ARGS__); \
fprintf(stderr, "%s", _alDebug); \
} while(0)
+3 -3
View File
@@ -25,7 +25,7 @@
#include "alAuxEffectSlot.h"
#include "alThunk.h"
CRITICAL_SECTION g_mutex;
CRITICAL_SECTION _alMutex;
#ifdef _WIN32
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
@@ -43,7 +43,7 @@ BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
ReleaseALBuffers();
FreeALConfig();
ALTHUNK_EXIT();
DeleteCriticalSection(&g_mutex);
DeleteCriticalSection(&_alMutex);
break;
}
return TRUE;
@@ -63,7 +63,7 @@ static void my_deinit()
ReleaseALFilters();
FreeALConfig();
ALTHUNK_EXIT();
DeleteCriticalSection(&g_mutex);
DeleteCriticalSection(&_alMutex);
}
#endif
#endif