cAudio 2.3.0
3d Audio Engine
Loading...
Searching...
No Matches
cEFXFunctions.h
1// Copyright (c) 2008-2011 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones, Murat (wolfmanfx) Sari
2// This file is part of the "cAudio Engine"
3// For conditions of distribution and use, see copyright notice in cAudio.h
4
5#pragma once
6
7#include "cAudioDefines.h"
8
9#if CAUDIO_EFX_ENABLED == 1
10
11#include <al.h>
12#include <alc.h>
13#include <efx.h>
14#include <efx-creative.h>
15
16#include "cMutex.h"
17
18//To use EFX in linux.
19#ifndef ALC_EXT_EFX
20#define AL_FILTER_TYPE 0x8001
21#define AL_EFFECT_TYPE 0x8001
22#define AL_FILTER_NULL 0x0000
23#define AL_FILTER_LOWPASS 0x0001
24#define AL_FILTER_HIGHPASS 0x0002
25#define AL_FILTER_BANDPASS 0x0003
26#define AL_EFFECT_NULL 0x0000
27#define AL_EFFECT_EAXREVERB 0x8000
28#define AL_EFFECT_REVERB 0x0001
29#define AL_EFFECT_CHORUS 0x0002
30#define AL_EFFECT_DISTORTION 0x0003
31#define AL_EFFECT_ECHO 0x0004
32#define AL_EFFECT_FLANGER 0x0005
33#define AL_EFFECT_FREQUENCY_SHIFTER 0x0006
34#define AL_EFFECT_VOCAL_MORPHER 0x0007
35#define AL_EFFECT_PITCH_SHIFTER 0x0008
36#define AL_EFFECT_RING_MODULATOR 0x0009
37#define AL_EFFECT_AUTOWAH 0x000A
38#define AL_EFFECT_COMPRESSOR 0x000B
39#define AL_EFFECT_EQUALIZER 0x000C
40#define ALC_EFX_MAJOR_VERSION 0x20001
41#define ALC_EFX_MINOR_VERSION 0x20002
42#define ALC_MAX_AUXILIARY_SENDS 0x20003
43#endif
44
45namespace cAudio
46{
48 struct cEFXFunctions
49 {
50 cEFXFunctions()
51 {
52 alGenEffects = NULL;
53 alDeleteEffects = NULL;
54 alIsEffect = NULL;
55 alEffecti = NULL;
56 alEffectiv = NULL;
57 alEffectf = NULL;
58 alEffectfv = NULL;
59 alGetEffecti = NULL;
60 alGetEffectiv = NULL;
61 alGetEffectf = NULL;
62 alGetEffectfv = NULL;
63
64 alGenFilters = NULL;
65 alDeleteFilters = NULL;
66 alIsFilter = NULL;
67 alFilteri = NULL;
68 alFilteriv = NULL;
69 alFilterf = NULL;
70 alFilterfv = NULL;
71 alGetFilteri = NULL;
72 alGetFilteriv = NULL;
73 alGetFilterf = NULL;
74 alGetFilterfv = NULL;
75
76 alGenAuxiliaryEffectSlots = NULL;
77 alDeleteAuxiliaryEffectSlots = NULL;
78 alIsAuxiliaryEffectSlot = NULL;
79 alAuxiliaryEffectSloti = NULL;
80 alAuxiliaryEffectSlotiv = NULL;
81 alAuxiliaryEffectSlotf = NULL;
82 alAuxiliaryEffectSlotfv = NULL;
83 alGetAuxiliaryEffectSloti = NULL;
84 alGetAuxiliaryEffectSlotiv = NULL;
85 alGetAuxiliaryEffectSlotf = NULL;
86 alGetAuxiliaryEffectSlotfv = NULL;
87
88 Supported = false;
89 }
90
91 // Effect objects
92 LPALGENEFFECTS alGenEffects;
93 LPALDELETEEFFECTS alDeleteEffects;
94 LPALISEFFECT alIsEffect;
95 LPALEFFECTI alEffecti;
96 LPALEFFECTIV alEffectiv;
97 LPALEFFECTF alEffectf;
98 LPALEFFECTFV alEffectfv;
99 LPALGETEFFECTI alGetEffecti;
100 LPALGETEFFECTIV alGetEffectiv;
101 LPALGETEFFECTF alGetEffectf;
102 LPALGETEFFECTFV alGetEffectfv;
103
104 // Filter objects
105 LPALGENFILTERS alGenFilters;
106 LPALDELETEFILTERS alDeleteFilters;
107 LPALISFILTER alIsFilter;
108 LPALFILTERI alFilteri;
109 LPALFILTERIV alFilteriv;
110 LPALFILTERF alFilterf;
111 LPALFILTERFV alFilterfv;
112 LPALGETFILTERI alGetFilteri;
113 LPALGETFILTERIV alGetFilteriv;
114 LPALGETFILTERF alGetFilterf;
115 LPALGETFILTERFV alGetFilterfv;
116
117 // Auxiliary slot object
118 LPALGENAUXILIARYEFFECTSLOTS alGenAuxiliaryEffectSlots;
119 LPALDELETEAUXILIARYEFFECTSLOTS alDeleteAuxiliaryEffectSlots;
120 LPALISAUXILIARYEFFECTSLOT alIsAuxiliaryEffectSlot;
121 LPALAUXILIARYEFFECTSLOTI alAuxiliaryEffectSloti;
122 LPALAUXILIARYEFFECTSLOTIV alAuxiliaryEffectSlotiv;
123 LPALAUXILIARYEFFECTSLOTF alAuxiliaryEffectSlotf;
124 LPALAUXILIARYEFFECTSLOTFV alAuxiliaryEffectSlotfv;
125 LPALGETAUXILIARYEFFECTSLOTI alGetAuxiliaryEffectSloti;
126 LPALGETAUXILIARYEFFECTSLOTIV alGetAuxiliaryEffectSlotiv;
127 LPALGETAUXILIARYEFFECTSLOTF alGetAuxiliaryEffectSlotf;
128 LPALGETAUXILIARYEFFECTSLOTFV alGetAuxiliaryEffectSlotfv;
129
130 cAudioMutex Mutex;
131
132 bool Supported;
133
134 bool CheckEFXSupport(ALCdevice* device)
135 {
136 Supported = false;
137 if (alcIsExtensionPresent(device, "ALC_EXT_EFX"))
138 {
139 // Get function pointers
140 alGenEffects = (LPALGENEFFECTS)alGetProcAddress("alGenEffects");
141 alDeleteEffects = (LPALDELETEEFFECTS )alGetProcAddress("alDeleteEffects");
142 alIsEffect = (LPALISEFFECT )alGetProcAddress("alIsEffect");
143 alEffecti = (LPALEFFECTI)alGetProcAddress("alEffecti");
144 alEffectiv = (LPALEFFECTIV)alGetProcAddress("alEffectiv");
145 alEffectf = (LPALEFFECTF)alGetProcAddress("alEffectf");
146 alEffectfv = (LPALEFFECTFV)alGetProcAddress("alEffectfv");
147 alGetEffecti = (LPALGETEFFECTI)alGetProcAddress("alGetEffecti");
148 alGetEffectiv = (LPALGETEFFECTIV)alGetProcAddress("alGetEffectiv");
149 alGetEffectf = (LPALGETEFFECTF)alGetProcAddress("alGetEffectf");
150 alGetEffectfv = (LPALGETEFFECTFV)alGetProcAddress("alGetEffectfv");
151 alGenFilters = (LPALGENFILTERS)alGetProcAddress("alGenFilters");
152 alDeleteFilters = (LPALDELETEFILTERS)alGetProcAddress("alDeleteFilters");
153 alIsFilter = (LPALISFILTER)alGetProcAddress("alIsFilter");
154 alFilteri = (LPALFILTERI)alGetProcAddress("alFilteri");
155 alFilteriv = (LPALFILTERIV)alGetProcAddress("alFilteriv");
156 alFilterf = (LPALFILTERF)alGetProcAddress("alFilterf");
157 alFilterfv = (LPALFILTERFV)alGetProcAddress("alFilterfv");
158 alGetFilteri = (LPALGETFILTERI )alGetProcAddress("alGetFilteri");
159 alGetFilteriv= (LPALGETFILTERIV )alGetProcAddress("alGetFilteriv");
160 alGetFilterf = (LPALGETFILTERF )alGetProcAddress("alGetFilterf");
161 alGetFilterfv= (LPALGETFILTERFV )alGetProcAddress("alGetFilterfv");
162 alGenAuxiliaryEffectSlots = (LPALGENAUXILIARYEFFECTSLOTS)alGetProcAddress("alGenAuxiliaryEffectSlots");
163 alDeleteAuxiliaryEffectSlots = (LPALDELETEAUXILIARYEFFECTSLOTS)alGetProcAddress("alDeleteAuxiliaryEffectSlots");
164 alIsAuxiliaryEffectSlot = (LPALISAUXILIARYEFFECTSLOT)alGetProcAddress("alIsAuxiliaryEffectSlot");
165 alAuxiliaryEffectSloti = (LPALAUXILIARYEFFECTSLOTI)alGetProcAddress("alAuxiliaryEffectSloti");
166 alAuxiliaryEffectSlotiv = (LPALAUXILIARYEFFECTSLOTIV)alGetProcAddress("alAuxiliaryEffectSlotiv");
167 alAuxiliaryEffectSlotf = (LPALAUXILIARYEFFECTSLOTF)alGetProcAddress("alAuxiliaryEffectSlotf");
168 alAuxiliaryEffectSlotfv = (LPALAUXILIARYEFFECTSLOTFV)alGetProcAddress("alAuxiliaryEffectSlotfv");
169 alGetAuxiliaryEffectSloti = (LPALGETAUXILIARYEFFECTSLOTI)alGetProcAddress("alGetAuxiliaryEffectSloti");
170 alGetAuxiliaryEffectSlotiv = (LPALGETAUXILIARYEFFECTSLOTIV)alGetProcAddress("alGetAuxiliaryEffectSlotiv");
171 alGetAuxiliaryEffectSlotf = (LPALGETAUXILIARYEFFECTSLOTF)alGetProcAddress("alGetAuxiliaryEffectSlotf");
172 alGetAuxiliaryEffectSlotfv = (LPALGETAUXILIARYEFFECTSLOTFV)alGetProcAddress("alGetAuxiliaryEffectSlotfv");
173
174 if (alGenEffects && alDeleteEffects && alIsEffect && alEffecti && alEffectiv && alEffectf &&
175 alEffectfv && alGetEffecti && alGetEffectiv && alGetEffectf && alGetEffectfv && alGenFilters &&
176 alDeleteFilters && alIsFilter && alFilteri && alFilteriv && alFilterf && alFilterfv &&
177 alGetFilteri && alGetFilteriv && alGetFilterf && alGetFilterfv && alGenAuxiliaryEffectSlots &&
178 alDeleteAuxiliaryEffectSlots && alIsAuxiliaryEffectSlot && alAuxiliaryEffectSloti &&
179 alAuxiliaryEffectSlotiv && alAuxiliaryEffectSlotf && alAuxiliaryEffectSlotfv &&
180 alGetAuxiliaryEffectSloti && alGetAuxiliaryEffectSlotiv && alGetAuxiliaryEffectSlotf &&
181 alGetAuxiliaryEffectSlotfv)
182 Supported = true;
183 }
184
185 return Supported;
186 }
187 };
188};
189
190#endif
Main namespace for the entire cAudio library.
Definition: cAudioCapture.h:16