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:
marauder2k7 2022-08-29 18:04:55 +01:00
parent 282678c28d
commit 5b1e20f28c
3 changed files with 15 additions and 159 deletions

View file

@ -28,7 +28,7 @@
#endif #endif
#if defined(TORQUE_OS_MAC) #if defined(TORQUE_OS_MAC)
//#define AL_ALEXT_PROTOTYPES true #undef AL_ALEXT_PROTOTYPES
# include <OpenAL/al.h> # include <OpenAL/al.h>
# include <OpenAL/alc.h> # include <OpenAL/alc.h>
#elif defined(TORQUE_OS_LINUX) #elif defined(TORQUE_OS_LINUX)
@ -267,12 +267,11 @@ typedef struct
LPALGETAUXILIARYEFFECTSLOTIV alGetAuxiliaryEffectSlotiv; LPALGETAUXILIARYEFFECTSLOTIV alGetAuxiliaryEffectSlotiv;
LPALGETAUXILIARYEFFECTSLOTF alGetAuxiliaryEffectSlotf; LPALGETAUXILIARYEFFECTSLOTF alGetAuxiliaryEffectSlotf;
LPALGETAUXILIARYEFFECTSLOTFV alGetAuxiliaryEffectSlotfv; LPALGETAUXILIARYEFFECTSLOTFV alGetAuxiliaryEffectSlotfv;
#endif
LPALGENFILTERS alGenFilters; LPALGENFILTERS alGenFilters;
LPALDELETEFILTERS alDeleteFilters; LPALDELETEFILTERS alDeleteFilters;
LPALFILTERI alFilteri; LPALFILTERI alFilteri;
LPALCGETSTRINGISOFT alcGetStringiSOFT; LPALCGETSTRINGISOFT alcGetStringiSOFT;
#endif
} OPENALFNTABLE, *LPOPENALFNTABLE; } OPENALFNTABLE, *LPOPENALFNTABLE;
#endif #endif

View file

@ -83,17 +83,23 @@ ALDeviceList::ALDeviceList( const OPENALFNTABLE &oalft )
dMemset(&ALDeviceInfo, 0, sizeof(ALDEVICEINFO)); dMemset(&ALDeviceInfo, 0, sizeof(ALDEVICEINFO));
ALDeviceInfo.bSelected = true; ALDeviceInfo.bSelected = true;
dStrncpy(ALDeviceInfo.strInternalDeviceName, devices, sizeof(ALDeviceInfo.strInternalDeviceName)); dStrncpy(ALDeviceInfo.strInternalDeviceName, devices, sizeof(ALDeviceInfo.strInternalDeviceName));
char* openFind = dStrchr(devices, '('); char deviceExternal[256];
dStrcpy(deviceExternal, devices, 256);
char* openFind = dStrchr(deviceExternal, '(');
if (openFind) if (openFind)
{ {
devices = openFind + 1; char* deviceName = openFind + 1;
char* closeFind = dStrchr(devices, ')'); char* closeFind = dStrchr(deviceName, ')');
if (closeFind) if (closeFind)
(*closeFind) = '\0'; (*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); vDeviceInfo.push_back(ALDeviceInfo);
} }

View file

@ -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() S32 SFXALDevice::getMaxSources()
{ {
// Clear AL Error Code
mOpenAL.alGetError(); mOpenAL.alGetError();
ALCint nummono; ALCint nummono;
mOpenAL.alcGetIntegerv(mDevice, ALC_MONO_SOURCES, 1, &nummono); mOpenAL.alcGetIntegerv(mDevice, ALC_MONO_SOURCES, 1, &nummono);
return nummono; return nummono;
} }
@ -292,8 +144,7 @@ SFXALDevice::SFXALDevice( SFXProvider *provider,
#endif #endif
printALInfo(mDevice); printALInfo(mDevice);
printHRTFInfo(mDevice);
getEFXInfo(mDevice);
mMaxBuffers = getMaxSources(); mMaxBuffers = getMaxSources();