cEFXFunctions.h

00001 // Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones
00002 // This file is part of the "cAudio Engine"
00003 // For conditions of distribution and use, see copyright notice in cAudio.h
00004 
00005 #ifndef CEFXFUNCTIONS_H
00006 #define CEFXFUNCTIONS_H
00007 
00008 #include "../include/cAudioDefines.h"
00009 
00010 #ifdef CAUDIO_EFX_ENABLED
00011 
00012 #include <AL/al.h>
00013 #include <AL/alc.h>
00014 #include <AL/efx.h>
00015 #include <AL/efx-creative.h>
00016 
00017 #include "../Headers/cMutex.h"
00018 
00019 //To use EFX in linux.
00020 #ifndef ALC_EXT_EFX
00021 #define AL_FILTER_TYPE                                     0x8001
00022 #define AL_EFFECT_TYPE                                     0x8001
00023 #define AL_FILTER_NULL                                     0x0000
00024 #define AL_FILTER_LOWPASS                                  0x0001
00025 #define AL_FILTER_HIGHPASS                                 0x0002
00026 #define AL_FILTER_BANDPASS                                 0x0003
00027 #define AL_EFFECT_NULL                                     0x0000
00028 #define AL_EFFECT_EAXREVERB                                0x8000
00029 #define AL_EFFECT_REVERB                                   0x0001
00030 #define AL_EFFECT_CHORUS                                   0x0002
00031 #define AL_EFFECT_DISTORTION                               0x0003
00032 #define AL_EFFECT_ECHO                                     0x0004
00033 #define AL_EFFECT_FLANGER                                  0x0005
00034 #define AL_EFFECT_FREQUENCY_SHIFTER                        0x0006
00035 #define AL_EFFECT_VOCAL_MORPHER                            0x0007
00036 #define AL_EFFECT_PITCH_SHIFTER                            0x0008
00037 #define AL_EFFECT_RING_MODULATOR                           0x0009
00038 #define AL_EFFECT_AUTOWAH                                  0x000A
00039 #define AL_EFFECT_COMPRESSOR                               0x000B
00040 #define AL_EFFECT_EQUALIZER                                0x000C
00041 #define ALC_EFX_MAJOR_VERSION                              0x20001
00042 #define ALC_EFX_MINOR_VERSION                              0x20002
00043 #define ALC_MAX_AUXILIARY_SENDS                            0x20003
00044 #endif  
00045 
00046 namespace cAudio
00047 {
00049         struct cEFXFunctions
00050         {
00051                 cEFXFunctions::cEFXFunctions()
00052                 {
00053                         alGenEffects = NULL;
00054                         alDeleteEffects = NULL;
00055                         alIsEffect = NULL;
00056                         alEffecti = NULL;
00057                         alEffectiv = NULL;
00058                         alEffectf = NULL;
00059                         alEffectfv = NULL;
00060                         alGetEffecti = NULL;
00061                         alGetEffectiv = NULL;
00062                         alGetEffectf = NULL;
00063                         alGetEffectfv = NULL;
00064 
00065                         alGenFilters = NULL;
00066                         alDeleteFilters = NULL;
00067                         alIsFilter = NULL;
00068                         alFilteri = NULL;
00069                         alFilteriv = NULL;
00070                         alFilterf = NULL;
00071                         alFilterfv = NULL;
00072                         alGetFilteri = NULL;
00073                         alGetFilteriv = NULL;
00074                         alGetFilterf = NULL;
00075                         alGetFilterfv = NULL;
00076 
00077                         alGenAuxiliaryEffectSlots = NULL;
00078                         alDeleteAuxiliaryEffectSlots = NULL;
00079                         alIsAuxiliaryEffectSlot = NULL;
00080                         alAuxiliaryEffectSloti = NULL;
00081                         alAuxiliaryEffectSlotiv = NULL;
00082                         alAuxiliaryEffectSlotf = NULL;
00083                         alAuxiliaryEffectSlotfv = NULL;
00084                         alGetAuxiliaryEffectSloti = NULL;
00085                         alGetAuxiliaryEffectSlotiv = NULL;
00086                         alGetAuxiliaryEffectSlotf = NULL;
00087                         alGetAuxiliaryEffectSlotfv = NULL;
00088 
00089                         Supported = false;
00090                 }
00091 
00092                 // Effect objects
00093                 LPALGENEFFECTS alGenEffects;
00094                 LPALDELETEEFFECTS alDeleteEffects;
00095                 LPALISEFFECT alIsEffect;
00096                 LPALEFFECTI alEffecti;
00097                 LPALEFFECTIV alEffectiv;
00098                 LPALEFFECTF alEffectf;
00099                 LPALEFFECTFV alEffectfv;
00100                 LPALGETEFFECTI alGetEffecti;
00101                 LPALGETEFFECTIV alGetEffectiv;
00102                 LPALGETEFFECTF alGetEffectf;
00103                 LPALGETEFFECTFV alGetEffectfv;
00104 
00105                 // Filter objects
00106                 LPALGENFILTERS alGenFilters;
00107                 LPALDELETEFILTERS alDeleteFilters;
00108                 LPALISFILTER alIsFilter;
00109                 LPALFILTERI alFilteri;
00110                 LPALFILTERIV alFilteriv;
00111                 LPALFILTERF alFilterf;
00112                 LPALFILTERFV alFilterfv;
00113                 LPALGETFILTERI alGetFilteri;
00114                 LPALGETFILTERIV alGetFilteriv;
00115                 LPALGETFILTERF alGetFilterf;
00116                 LPALGETFILTERFV alGetFilterfv;
00117 
00118                 // Auxiliary slot object
00119                 LPALGENAUXILIARYEFFECTSLOTS alGenAuxiliaryEffectSlots;
00120                 LPALDELETEAUXILIARYEFFECTSLOTS alDeleteAuxiliaryEffectSlots;
00121                 LPALISAUXILIARYEFFECTSLOT alIsAuxiliaryEffectSlot;
00122                 LPALAUXILIARYEFFECTSLOTI alAuxiliaryEffectSloti;
00123                 LPALAUXILIARYEFFECTSLOTIV alAuxiliaryEffectSlotiv;
00124                 LPALAUXILIARYEFFECTSLOTF alAuxiliaryEffectSlotf;
00125                 LPALAUXILIARYEFFECTSLOTFV alAuxiliaryEffectSlotfv;
00126                 LPALGETAUXILIARYEFFECTSLOTI alGetAuxiliaryEffectSloti;
00127                 LPALGETAUXILIARYEFFECTSLOTIV alGetAuxiliaryEffectSlotiv;
00128                 LPALGETAUXILIARYEFFECTSLOTF alGetAuxiliaryEffectSlotf;
00129                 LPALGETAUXILIARYEFFECTSLOTFV alGetAuxiliaryEffectSlotfv;
00130 
00131                 cAudioMutex Mutex;
00132 
00133                 bool Supported;
00134 
00135                 bool CheckEFXSupport(ALCdevice* device)
00136                 {
00137                         Supported = false;
00138                         if (alcIsExtensionPresent(device, "ALC_EXT_EFX"))
00139                         {
00140                                 // Get function pointers
00141                                 alGenEffects = (LPALGENEFFECTS)alGetProcAddress("alGenEffects");
00142                                 alDeleteEffects = (LPALDELETEEFFECTS )alGetProcAddress("alDeleteEffects");
00143                                 alIsEffect = (LPALISEFFECT )alGetProcAddress("alIsEffect");
00144                                 alEffecti = (LPALEFFECTI)alGetProcAddress("alEffecti");
00145                                 alEffectiv = (LPALEFFECTIV)alGetProcAddress("alEffectiv");
00146                                 alEffectf = (LPALEFFECTF)alGetProcAddress("alEffectf");
00147                                 alEffectfv = (LPALEFFECTFV)alGetProcAddress("alEffectfv");
00148                                 alGetEffecti = (LPALGETEFFECTI)alGetProcAddress("alGetEffecti");
00149                                 alGetEffectiv = (LPALGETEFFECTIV)alGetProcAddress("alGetEffectiv");
00150                                 alGetEffectf = (LPALGETEFFECTF)alGetProcAddress("alGetEffectf");
00151                                 alGetEffectfv = (LPALGETEFFECTFV)alGetProcAddress("alGetEffectfv");
00152                                 alGenFilters = (LPALGENFILTERS)alGetProcAddress("alGenFilters");
00153                                 alDeleteFilters = (LPALDELETEFILTERS)alGetProcAddress("alDeleteFilters");
00154                                 alIsFilter = (LPALISFILTER)alGetProcAddress("alIsFilter");
00155                                 alFilteri = (LPALFILTERI)alGetProcAddress("alFilteri");
00156                                 alFilteriv = (LPALFILTERIV)alGetProcAddress("alFilteriv");
00157                                 alFilterf = (LPALFILTERF)alGetProcAddress("alFilterf");
00158                                 alFilterfv = (LPALFILTERFV)alGetProcAddress("alFilterfv");
00159                                 alGetFilteri = (LPALGETFILTERI )alGetProcAddress("alGetFilteri");
00160                                 alGetFilteriv= (LPALGETFILTERIV )alGetProcAddress("alGetFilteriv");
00161                                 alGetFilterf = (LPALGETFILTERF )alGetProcAddress("alGetFilterf");
00162                                 alGetFilterfv= (LPALGETFILTERFV )alGetProcAddress("alGetFilterfv");
00163                                 alGenAuxiliaryEffectSlots = (LPALGENAUXILIARYEFFECTSLOTS)alGetProcAddress("alGenAuxiliaryEffectSlots");
00164                                 alDeleteAuxiliaryEffectSlots = (LPALDELETEAUXILIARYEFFECTSLOTS)alGetProcAddress("alDeleteAuxiliaryEffectSlots");
00165                                 alIsAuxiliaryEffectSlot = (LPALISAUXILIARYEFFECTSLOT)alGetProcAddress("alIsAuxiliaryEffectSlot");
00166                                 alAuxiliaryEffectSloti = (LPALAUXILIARYEFFECTSLOTI)alGetProcAddress("alAuxiliaryEffectSloti");
00167                                 alAuxiliaryEffectSlotiv = (LPALAUXILIARYEFFECTSLOTIV)alGetProcAddress("alAuxiliaryEffectSlotiv");
00168                                 alAuxiliaryEffectSlotf = (LPALAUXILIARYEFFECTSLOTF)alGetProcAddress("alAuxiliaryEffectSlotf");
00169                                 alAuxiliaryEffectSlotfv = (LPALAUXILIARYEFFECTSLOTFV)alGetProcAddress("alAuxiliaryEffectSlotfv");
00170                                 alGetAuxiliaryEffectSloti = (LPALGETAUXILIARYEFFECTSLOTI)alGetProcAddress("alGetAuxiliaryEffectSloti");
00171                                 alGetAuxiliaryEffectSlotiv = (LPALGETAUXILIARYEFFECTSLOTIV)alGetProcAddress("alGetAuxiliaryEffectSlotiv");
00172                                 alGetAuxiliaryEffectSlotf = (LPALGETAUXILIARYEFFECTSLOTF)alGetProcAddress("alGetAuxiliaryEffectSlotf");
00173                                 alGetAuxiliaryEffectSlotfv = (LPALGETAUXILIARYEFFECTSLOTFV)alGetProcAddress("alGetAuxiliaryEffectSlotfv");
00174 
00175                                 if (alGenEffects &&     alDeleteEffects && alIsEffect && alEffecti && alEffectiv &&     alEffectf &&
00176                                         alEffectfv && alGetEffecti && alGetEffectiv && alGetEffectf && alGetEffectfv && alGenFilters &&
00177                                         alDeleteFilters && alIsFilter && alFilteri && alFilteriv &&     alFilterf && alFilterfv &&
00178                                         alGetFilteri && alGetFilteriv && alGetFilterf && alGetFilterfv && alGenAuxiliaryEffectSlots &&
00179                                         alDeleteAuxiliaryEffectSlots && alIsAuxiliaryEffectSlot && alAuxiliaryEffectSloti &&
00180                                         alAuxiliaryEffectSlotiv && alAuxiliaryEffectSlotf && alAuxiliaryEffectSlotfv &&
00181                                         alGetAuxiliaryEffectSloti && alGetAuxiliaryEffectSlotiv && alGetAuxiliaryEffectSlotf &&
00182                                         alGetAuxiliaryEffectSlotfv)
00183                                         Supported = true;
00184                         }
00185 
00186                         return Supported;
00187                 }
00188         };
00189 };
00190 
00191 #endif
00192 
00193 #endif 
 All Classes Namespaces Functions Variables Enumerations

Generated on Sat Feb 20 22:55:07 2010 for cAudio by  doxygen 1.6.2