00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef IAUDIOEXT_H__
00012 #define IAUDIOEXT_H__
00013
00014 #include "3dl2.h"
00015 #include "3dl2help.h"
00016 #include "eax.h"
00017 #include "ZoomFX.h"
00018
00019 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00020 namespace Audio
00021 {
00022 #endif
00023
00025
00027
00036 struct EAXListenerProps : public _EAXLISTENERPROPERTIES
00037 {
00039 EAXListenerProps()
00040 { Clear(); }
00042 void Clear()
00043 {
00044 lRoom = EAXLISTENER_DEFAULTROOM;
00045 lRoomHF = EAXLISTENER_DEFAULTROOMHF;
00046 flRoomRolloffFactor = EAXLISTENER_DEFAULTROOMROLLOFFFACTOR;
00047 flDecayTime = EAXLISTENER_DEFAULTDECAYTIME;
00048 flDecayHFRatio = EAXLISTENER_DEFAULTDECAYHFRATIO;
00049 lReflections = EAXLISTENER_DEFAULTREFLECTIONS;
00050 flReflectionsDelay = EAXLISTENER_DEFAULTREFLECTIONSDELAY;
00051 lReverb = EAXLISTENER_DEFAULTREVERB;
00052 flReverbDelay = EAXLISTENER_DEFAULTREVERBDELAY;
00053 dwEnvironment = EAXLISTENER_DEFAULTENVIRONMENT;
00054 flEnvironmentSize = EAXLISTENER_DEFAULTENVIRONMENTSIZE;
00055 flEnvironmentDiffusion = EAXLISTENER_DEFAULTENVIRONMENTDIFFUSION;
00056 flAirAbsorptionHF = EAXLISTENER_DEFAULTAIRABSORPTIONHF;
00057 dwFlags = EAXLISTENER_DEFAULTFLAGS;
00058 }
00059 };
00060
00062
00072 class IEAXListener
00073 {
00074 public:
00075
00080 virtual void SetRoom(int32 iRoom) = 0;
00085 virtual void SetRoomHF(int32 iRoomHF) = 0;
00090 virtual void SetRoomRolloffFactor(float fRoomRolloffFactor) = 0;
00095 virtual void SetDecayTime(float fDecayTime) = 0;
00100 virtual void SetDecayHFRatio(float fDecayHFRatio) = 0;
00105 virtual void SetReflections(int32 iReflections) = 0;
00110 virtual void SetReflectionsDelay(float fReflectionsDelay) = 0;
00115 virtual void SetReverb(int32 iReverb) = 0;
00121 virtual void SetReverbDelay(float fReverbDelay) = 0;
00126 virtual void SetEnvironment(uint32 nEnvironment) = 0;
00131 virtual void SetEnvironmentSize(float fEnvironmentSize) = 0;
00136 virtual void SetEnvironmentDiffusion(float fEnvironmentDiffusion) = 0;
00141 virtual void SetAirAbsorptionHF(float fAirAbsorption) = 0;
00146 virtual void SetFlags(uint32 nFlags) = 0;
00151 virtual void SetProperties(const EAXListenerProps& props) = 0;
00156 virtual void GetProperties(EAXListenerProps& props) = 0;
00157 };
00158
00160
00169 struct EAXBufferProps : public _EAXBUFFERPROPERTIES
00170 {
00172 EAXBufferProps()
00173 { Clear(); }
00175 void Clear()
00176 {
00177 lDirect = EAXBUFFER_DEFAULTDIRECT;
00178 lDirectHF = EAXBUFFER_DEFAULTDIRECTHF;
00179 lRoom = EAXBUFFER_DEFAULTROOM;
00180 lRoomHF = EAXBUFFER_DEFAULTROOMHF;
00181 flRoomRolloffFactor = EAXBUFFER_DEFAULTROOMROLLOFFFACTOR;
00182 lObstruction = EAXBUFFER_DEFAULTOBSTRUCTION;
00183 flObstructionLFRatio = EAXBUFFER_DEFAULTOBSTRUCTIONLFRATIO;
00184 lOcclusion = EAXBUFFER_DEFAULTOCCLUSION;
00185 flOcclusionLFRatio = EAXBUFFER_DEFAULTOCCLUSIONLFRATIO;
00186 flOcclusionRoomRatio = EAXBUFFER_DEFAULTOCCLUSIONROOMRATIO;
00187 lOutsideVolumeHF = EAXBUFFER_DEFAULTOUTSIDEVOLUMEHF;
00188 flAirAbsorptionFactor = EAXBUFFER_DEFAULTAIRABSORPTIONFACTOR;
00189 dwFlags = EAXBUFFER_DEFAULTFLAGS;
00190 }
00191 };
00192
00193
00195
00205 class IEAXBuffer
00206 {
00207 public:
00212 virtual void SetDirect(int32 iDirect) = 0;
00217 virtual void SetDirectHF(int32 iDirectHF) = 0;
00222 virtual void SetRoom(int32 iRoom) = 0;
00227 virtual void SetRoomHF(int32 iRoomHF) = 0;
00232 virtual void SetRoomRolloffFactor(float fRoomRolloffFactor) = 0;
00237 virtual void SetObstruction(int32 iObstruction) = 0;
00242 virtual void SetObstructionLFRatio(float fObstructionLFRatio) = 0;
00247 virtual void SetOcclusion(int32 iOcclusion) = 0;
00252 virtual void SetOcclusionLFRatio(float fOcclusionLFRatio) = 0;
00257 virtual void SetOcclusionRoomRatio(float fOcclusionRoomRatio) = 0;
00262 virtual void SetOutsideVolumeHF(int32 iOutsideVolumeHF) = 0;
00267 virtual void SetAirAbsorptionFactor(float fAirAbsorptionFactor) = 0;
00272 virtual void SetFlags(uint32 nFlags) = 0;
00277 virtual void SetProperties(const EAXBufferProps& props) = 0;
00282 virtual void GetProperties(EAXBufferProps& props) = 0;
00283 };
00284
00285
00287
00296 struct ZoomFXBox : public ZOOMFX_BOX
00297 {
00299 ZoomFXBox() { Clear(); }
00301 void Clear()
00302 {
00303 vMin.x = 0.0f;
00304 vMin.y = 0.0f;
00305 vMin.z = 0.0f;
00306 vMax.x = 0.0f;
00307 vMax.y = 0.0f;
00308 vMax.z = 0.0f;
00309 }
00310 };
00311
00313
00322 struct ZoomFXOrientation : public ZOOMFX_ORIENTATION
00323 {
00325 ZoomFXOrientation() { Clear(); }
00327 void Clear()
00328 {
00329 vFront.x = 0.0f;
00330 vFront.y = 0.0f;
00331 vFront.z = 1.0f;
00332 vTop.x = 0.0f;
00333 vTop.y = 1.0f;
00334 vTop.z = 0.0f;
00335 }
00336 };
00337
00339
00348 struct ZoomFXProps : public ZOOMFX_BUFFERPROPERTIES
00349 {
00351 ZoomFXProps() { Clear(); }
00353 void Clear()
00354 {
00355 box.vMin.x = 0.0f;
00356 box.vMin.y = 0.0f;
00357 box.vMin.z = 0.0f;
00358 box.vMax.x = 0.0f;
00359 box.vMax.y = 0.0f;
00360 box.vMax.z = 0.0f;
00361 orientation.vFront.x = 0.0f;
00362 orientation.vFront.y = 0.0f;
00363 orientation.vFront.z = 1.0f;
00364 orientation.vTop.x = 0.0f;
00365 orientation.vTop.y = 1.0f;
00366 orientation.vTop.z = 0.0f;
00367 lMacroFx = ZOOMFXBUFFER_MACROFX_DEFAULT;
00368 }
00369 };
00370
00371
00372
00373
00374
00376 class IZoomFX
00377 {
00378 public:
00384 virtual void SetBox(const ZoomFXBox& box) = 0;
00390 virtual void SetOrientation(const ZoomFXOrientation& orientation) = 0;
00395 virtual void SetMacroFX(uint32 nMacroFX) = 0;
00400 virtual void SetProperties(const ZoomFXProps& props) = 0;
00405 virtual void GetProperties(ZoomFXProps& props) = 0;
00406
00407 };
00408
00409 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00410 };
00411 #endif
00412
00413
00414 #endif // IAUDIOEXT_H__