mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
OpenAL Mac
Cleanup print functions cos mac hates them. All these functions did was print what was capable on openal anyway end user doesn't really get any benefit from this. Will save these for the refactor.
This commit is contained in:
parent
282678c28d
commit
5b1e20f28c
|
|
@ -28,7 +28,7 @@
|
|||
#endif
|
||||
|
||||
#if defined(TORQUE_OS_MAC)
|
||||
//#define AL_ALEXT_PROTOTYPES true
|
||||
#undef AL_ALEXT_PROTOTYPES
|
||||
# include <OpenAL/al.h>
|
||||
# include <OpenAL/alc.h>
|
||||
#elif defined(TORQUE_OS_LINUX)
|
||||
|
|
@ -267,12 +267,11 @@ typedef struct
|
|||
LPALGETAUXILIARYEFFECTSLOTIV alGetAuxiliaryEffectSlotiv;
|
||||
LPALGETAUXILIARYEFFECTSLOTF alGetAuxiliaryEffectSlotf;
|
||||
LPALGETAUXILIARYEFFECTSLOTFV alGetAuxiliaryEffectSlotfv;
|
||||
#endif
|
||||
LPALGENFILTERS alGenFilters;
|
||||
LPALDELETEFILTERS alDeleteFilters;
|
||||
LPALFILTERI alFilteri;
|
||||
|
||||
LPALCGETSTRINGISOFT alcGetStringiSOFT;
|
||||
#endif
|
||||
|
||||
} OPENALFNTABLE, *LPOPENALFNTABLE;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -83,17 +83,23 @@ ALDeviceList::ALDeviceList( const OPENALFNTABLE &oalft )
|
|||
dMemset(&ALDeviceInfo, 0, sizeof(ALDEVICEINFO));
|
||||
ALDeviceInfo.bSelected = true;
|
||||
dStrncpy(ALDeviceInfo.strInternalDeviceName, devices, sizeof(ALDeviceInfo.strInternalDeviceName));
|
||||
char* openFind = dStrchr(devices, '(');
|
||||
char deviceExternal[256];
|
||||
dStrcpy(deviceExternal, devices, 256);
|
||||
char* openFind = dStrchr(deviceExternal, '(');
|
||||
if (openFind)
|
||||
{
|
||||
devices = openFind + 1;
|
||||
char* closeFind = dStrchr(devices, ')');
|
||||
char* deviceName = openFind + 1;
|
||||
char* closeFind = dStrchr(deviceName, ')');
|
||||
if (closeFind)
|
||||
(*closeFind) = '\0';
|
||||
|
||||
dStrncpy(ALDeviceInfo.strDeviceName, devices, sizeof(ALDeviceInfo.strDeviceName));
|
||||
dStrncpy(ALDeviceInfo.strDeviceName, deviceName, sizeof(ALDeviceInfo.strDeviceName));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
dStrncpy(ALDeviceInfo.strDeviceName, devices, sizeof(ALDeviceInfo.strDeviceName));
|
||||
}
|
||||
|
||||
vDeviceInfo.push_back(ALDeviceInfo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,161 +62,13 @@ void SFXALDevice::printALInfo(ALCdevice* device)
|
|||
|
||||
}
|
||||
|
||||
void SFXALDevice::printHRTFInfo(ALCdevice* device)
|
||||
{
|
||||
if (mOpenAL.alcIsExtensionPresent(device, "ALC_SOFT_HRTF") == AL_FALSE)
|
||||
{
|
||||
Con::printf("HRTF Extensions not compatible");
|
||||
return;
|
||||
}
|
||||
|
||||
ALCint numHrtfs;
|
||||
|
||||
mOpenAL.alcGetIntegerv(device, ALC_NUM_HRTF_SPECIFIERS_SOFT, 1, &numHrtfs);
|
||||
if (!numHrtfs)
|
||||
Con::printf("No HRTFs Found");
|
||||
else
|
||||
{
|
||||
Con::printf("Available HRTFs");
|
||||
for (U32 i = 0; i < numHrtfs; ++i)
|
||||
{
|
||||
const ALCchar* name = mOpenAL.alcGetStringiSOFT(device, ALC_HRTF_SPECIFIER_SOFT, i);
|
||||
printf(" %s", name);
|
||||
}
|
||||
}
|
||||
|
||||
U32 err = mOpenAL.alcGetError(device);
|
||||
if (err != ALC_NO_ERROR)
|
||||
Con::errorf("SFXALDevice - Error Retrieving HRTF info: %s", mOpenAL.alcGetString(device, err));
|
||||
|
||||
}
|
||||
|
||||
void SFXALDevice::getEFXInfo(ALCdevice *device)
|
||||
{
|
||||
static const ALint filters[] = {
|
||||
AL_FILTER_LOWPASS, AL_FILTER_HIGHPASS, AL_FILTER_BANDPASS,
|
||||
AL_FILTER_NULL
|
||||
};
|
||||
|
||||
char filterNames[] = "Low-pass,High-pass,Band-pass,";
|
||||
static const ALint effects[] = {
|
||||
AL_EFFECT_EAXREVERB, AL_EFFECT_REVERB, AL_EFFECT_CHORUS,
|
||||
AL_EFFECT_DISTORTION, AL_EFFECT_ECHO, AL_EFFECT_FLANGER,
|
||||
AL_EFFECT_FREQUENCY_SHIFTER, AL_EFFECT_VOCAL_MORPHER,
|
||||
AL_EFFECT_PITCH_SHIFTER, AL_EFFECT_RING_MODULATOR,
|
||||
AL_EFFECT_AUTOWAH, AL_EFFECT_COMPRESSOR, AL_EFFECT_EQUALIZER,
|
||||
AL_EFFECT_NULL
|
||||
};
|
||||
static const ALint dedeffects[] = {
|
||||
AL_EFFECT_DEDICATED_DIALOGUE, AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT,
|
||||
AL_EFFECT_NULL
|
||||
};
|
||||
char effectNames[] = "EAX Reverb,Reverb,Chorus,Distortion,Echo,Flanger,"
|
||||
"Frequency Shifter,Vocal Morpher,Pitch Shifter,Ring Modulator,Autowah,"
|
||||
"Compressor,Equalizer,Dedicated Dialog,Dedicated LFE,";
|
||||
|
||||
ALCint major, minor, sends;
|
||||
ALuint obj;
|
||||
|
||||
char* current;
|
||||
U32 i;
|
||||
|
||||
if (mOpenAL.alcIsExtensionPresent(device, "ALC_EXT_EFX") == AL_FALSE)
|
||||
{
|
||||
Con::printf("SFXALDevice - EFX Not available.");
|
||||
return;
|
||||
}
|
||||
|
||||
mOpenAL.alcGetIntegerv(device, ALC_EFX_MAJOR_VERSION, 1, &major);
|
||||
mOpenAL.alcGetIntegerv(device, ALC_EFX_MINOR_VERSION, 1, &minor);
|
||||
U32 err = mOpenAL.alcGetError(device);
|
||||
if (err != ALC_NO_ERROR)
|
||||
Con::errorf("SFXALDevice - Error Retrieving EFX Version: %s", mOpenAL.alcGetString(device, err));
|
||||
else
|
||||
{
|
||||
Con::printf("| EFX Version: %d.%d", major, minor);
|
||||
}
|
||||
|
||||
mOpenAL.alcGetIntegerv(device, ALC_MAX_AUXILIARY_SENDS, 1, &sends);
|
||||
err = mOpenAL.alcGetError(device);
|
||||
if (err != ALC_NO_ERROR)
|
||||
Con::errorf("SFXALDevice - Error Retrieving Auxiliary Sends: %s", mOpenAL.alcGetString(device, err));
|
||||
else
|
||||
{
|
||||
Con::printf("| Max Aux Sends: %d", sends);
|
||||
}
|
||||
|
||||
mOpenAL.alGenFilters(1, &obj);
|
||||
err = mOpenAL.alcGetError(device);
|
||||
if (err != ALC_NO_ERROR)
|
||||
Con::errorf("SFXALDevice - Error Generating filter: %s", mOpenAL.alcGetString(device, err));
|
||||
|
||||
current = filterNames;
|
||||
for (i = 0; filters[i] != AL_FILTER_NULL; i++)
|
||||
{
|
||||
char* next = dStrchr(current, ',');
|
||||
|
||||
mOpenAL.alFilteri(obj, AL_FILTER_TYPE, filters[i]);
|
||||
if (mOpenAL.alGetError() != AL_NO_ERROR)
|
||||
dMemmove(current, next + 1, strlen(next));
|
||||
else
|
||||
current = next + 1;
|
||||
}
|
||||
|
||||
Con::printf("| Supported Filters: %s", filterNames);
|
||||
|
||||
mOpenAL.alDeleteFilters(1, &obj);
|
||||
|
||||
mOpenAL.alGenEffects(1, &obj);
|
||||
err = mOpenAL.alcGetError(device);
|
||||
if (err != ALC_NO_ERROR)
|
||||
Con::errorf("SFXALDevice - Error Generating effects: %s", mOpenAL.alcGetString(device, err));
|
||||
|
||||
current = effectNames;
|
||||
for (i = 0; effects[i] != AL_EFFECT_NULL; i++)
|
||||
{
|
||||
char* next = dStrchr(current, ',');
|
||||
mOpenAL.alEffecti(obj, AL_FILTER_TYPE, effects[i]);
|
||||
if (mOpenAL.alGetError() != AL_NO_ERROR)
|
||||
dMemmove(current, next + 1, strlen(next));
|
||||
else
|
||||
current = next + 1;
|
||||
}
|
||||
|
||||
if (mOpenAL.alcIsExtensionPresent(device, "ALC_EXT_DEDICATED"))
|
||||
{
|
||||
for (i = 0; dedeffects[i] != AL_EFFECT_NULL; i++)
|
||||
{
|
||||
char* next = dStrchr(current, ',');
|
||||
mOpenAL.alEffecti(obj, AL_FILTER_TYPE, dedeffects[i]);
|
||||
if (mOpenAL.alGetError() != AL_NO_ERROR)
|
||||
dMemmove(current, next + 1, strlen(next));
|
||||
else
|
||||
current = next + 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; dedeffects[i] != AL_EFFECT_NULL; i++)
|
||||
{
|
||||
char* next = dStrchr(current, ',');
|
||||
dMemmove(current, next + 1, strlen(next));
|
||||
}
|
||||
}
|
||||
|
||||
Con::printf("| Supported Effects: %s", effectNames);
|
||||
|
||||
mOpenAL.alDeleteEffects(1, &obj);
|
||||
}
|
||||
|
||||
S32 SFXALDevice::getMaxSources()
|
||||
{
|
||||
// Clear AL Error Code
|
||||
mOpenAL.alGetError();
|
||||
|
||||
|
||||
ALCint nummono;
|
||||
mOpenAL.alcGetIntegerv(mDevice, ALC_MONO_SOURCES, 1, &nummono);
|
||||
|
||||
|
||||
return nummono;
|
||||
}
|
||||
|
||||
|
|
@ -292,8 +144,7 @@ SFXALDevice::SFXALDevice( SFXProvider *provider,
|
|||
#endif
|
||||
|
||||
printALInfo(mDevice);
|
||||
printHRTFInfo(mDevice);
|
||||
getEFXInfo(mDevice);
|
||||
|
||||
|
||||
mMaxBuffers = getMaxSources();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue