diff options
Diffstat (limited to '3rdparty/dxsdk/Include/xact3d3.h')
-rw-r--r-- | 3rdparty/dxsdk/Include/xact3d3.h | 275 |
1 files changed, 0 insertions, 275 deletions
diff --git a/3rdparty/dxsdk/Include/xact3d3.h b/3rdparty/dxsdk/Include/xact3d3.h deleted file mode 100644 index f17e1e56a51..00000000000 --- a/3rdparty/dxsdk/Include/xact3d3.h +++ /dev/null @@ -1,275 +0,0 @@ -/*-========================================================================-_ - | - XACT3D3 - | - | Copyright (c) Microsoft Corporation. All rights reserved. | - |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| - |VERSION: 0.1 MODEL: Unmanaged User-mode | - |CONTRACT: N / A EXCEPT: No Exceptions | - |PARENT: N / A MINREQ: Win2000, Xbox360 | - |PROJECT: XACT3D DIALECT: MS Visual C++ 7.0 | - |>------------------------------------------------------------------------<| - | DUTY: XACT 3D support | - ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ - NOTES: - 1. See X3DAudio.h for information regarding X3DAudio types. */ - - -#ifndef __XACT3D3_H__ -#define __XACT3D3_H__ - -//--------------<D-E-F-I-N-I-T-I-O-N-S>-------------------------------------// - #include <x3daudio.h> - #include <xact3.h> - - #pragma warning(push) - #pragma warning(disable: 4701) // disable "local variable may be used without having been initialized" compile warning - - // Supported speaker positions, represented as azimuth angles. - // - // Here's a picture of the azimuth angles for the 8 cardinal points, - // seen from above. The emitter's base position is at the origin 0. - // - // FRONT - // | 0 <-- azimuth - // | - // 7pi/4 \ | / pi/4 - // \ | / - // LEFT \|/ RIGHT - // 3pi/2-------0-------pi/2 - // /|\ - // / | \ - // 5pi/4 / | \ 3pi/4 - // | - // | pi - // BACK - // - #define LEFT_AZIMUTH (3*X3DAUDIO_PI/2) - #define RIGHT_AZIMUTH (X3DAUDIO_PI/2) - #define FRONT_LEFT_AZIMUTH (7*X3DAUDIO_PI/4) - #define FRONT_RIGHT_AZIMUTH (X3DAUDIO_PI/4) - #define FRONT_CENTER_AZIMUTH 0.0f - #define LOW_FREQUENCY_AZIMUTH X3DAUDIO_2PI - #define BACK_LEFT_AZIMUTH (5*X3DAUDIO_PI/4) - #define BACK_RIGHT_AZIMUTH (3*X3DAUDIO_PI/4) - #define BACK_CENTER_AZIMUTH X3DAUDIO_PI - #define FRONT_LEFT_OF_CENTER_AZIMUTH (15*X3DAUDIO_PI/8) - #define FRONT_RIGHT_OF_CENTER_AZIMUTH (X3DAUDIO_PI/8) - - -//--------------<D-A-T-A---T-Y-P-E-S>---------------------------------------// - // Supported emitter channel layouts: - static const float aStereoLayout[] = - { - LEFT_AZIMUTH, - RIGHT_AZIMUTH - }; - static const float a2Point1Layout[] = - { - LEFT_AZIMUTH, - RIGHT_AZIMUTH, - LOW_FREQUENCY_AZIMUTH - }; - static const float aQuadLayout[] = - { - FRONT_LEFT_AZIMUTH, - FRONT_RIGHT_AZIMUTH, - BACK_LEFT_AZIMUTH, - BACK_RIGHT_AZIMUTH - }; - static const float a4Point1Layout[] = - { - FRONT_LEFT_AZIMUTH, - FRONT_RIGHT_AZIMUTH, - LOW_FREQUENCY_AZIMUTH, - BACK_LEFT_AZIMUTH, - BACK_RIGHT_AZIMUTH - }; - static const float a5Point1Layout[] = - { - FRONT_LEFT_AZIMUTH, - FRONT_RIGHT_AZIMUTH, - FRONT_CENTER_AZIMUTH, - LOW_FREQUENCY_AZIMUTH, - BACK_LEFT_AZIMUTH, - BACK_RIGHT_AZIMUTH - }; - static const float a7Point1Layout[] = - { - FRONT_LEFT_AZIMUTH, - FRONT_RIGHT_AZIMUTH, - FRONT_CENTER_AZIMUTH, - LOW_FREQUENCY_AZIMUTH, - BACK_LEFT_AZIMUTH, - BACK_RIGHT_AZIMUTH, - LEFT_AZIMUTH, - RIGHT_AZIMUTH - }; - - -//--------------<F-U-N-C-T-I-O-N-S>-----------------------------------------// - //// - // DESCRIPTION: - // Initializes the 3D API's: - // - // REMARKS: - // This method only needs to be called once. - // X3DAudio will be initialized such that its speaker channel mask - // matches the format of the given XACT engine's final mix. - // - // PARAMETERS: - // pEngine - [in] XACT engine - // X3DInstance - [out] X3DAudio instance handle - // - // RETURN VALUE: - // HResult error code - //// - EXTERN_C HRESULT inline XACT3DInitialize (__in IXACT3Engine* pEngine, __in X3DAUDIO_HANDLE X3DInstance) - { - HRESULT hr = S_OK; - if (pEngine == NULL) { - hr = E_POINTER; - } - - XACTVARIABLEVALUE nSpeedOfSound; - if (SUCCEEDED(hr)) { - XACTVARIABLEINDEX xactSpeedOfSoundID = pEngine->GetGlobalVariableIndex("SpeedOfSound"); - hr = pEngine->GetGlobalVariable(xactSpeedOfSoundID, &nSpeedOfSound); - } - - if (SUCCEEDED(hr)) { - WAVEFORMATEXTENSIBLE wfxFinalMixFormat; - hr = pEngine->GetFinalMixFormat(&wfxFinalMixFormat); - if (SUCCEEDED(hr)) { - X3DAudioInitialize(wfxFinalMixFormat.dwChannelMask, nSpeedOfSound, X3DInstance); - } - } - return hr; - } - - - //// - // DESCRIPTION: - // Calculates DSP settings with respect to 3D parameters: - // - // REMARKS: - // Note the following flags are always specified for XACT3D calculation: - // X3DAUDIO_CALCULATE_MATRIX | X3DAUDIO_CALCULATE_DOPPLER | X3DAUDIO_CALCULATE_EMITTER_ANGLE - // - // This means the caller must set at least the following fields: - // X3DAUDIO_LISTENER.OrientFront - // X3DAUDIO_LISTENER.OrientTop - // X3DAUDIO_LISTENER.Position - // X3DAUDIO_LISTENER.Velocity - // - // X3DAUDIO_EMITTER.OrientFront - // X3DAUDIO_EMITTER.OrientTop, if emitter is multi-channel - // X3DAUDIO_EMITTER.Position - // X3DAUDIO_EMITTER.Velocity - // X3DAUDIO_EMITTER.InnerRadius - // X3DAUDIO_EMITTER.InnerRadiusAngle - // X3DAUDIO_EMITTER.ChannelCount - // X3DAUDIO_EMITTER.CurveDistanceScaler - // X3DAUDIO_EMITTER.DopplerScaler - // - // X3DAUDIO_DSP_SETTINGS.pMatrixCoefficients, the caller need only allocate space for SrcChannelCount*DstChannelCount elements - // X3DAUDIO_DSP_SETTINGS.SrcChannelCount - // X3DAUDIO_DSP_SETTINGS.DstChannelCount - // - // If X3DAUDIO_EMITTER.pChannelAzimuths is left NULL for multi-channel emitters, - // a default channel radius and channel azimuth array will be applied below. - // Distance curves such as X3DAUDIO_EMITTER.pVolumeCurve should be - // left NULL as XACT's native RPCs will be used to define DSP behaviour - // with respect to normalized distance. - // - // See X3DAudio.h for information regarding X3DAudio types. - // - // PARAMETERS: - // X3DInstance - [in] X3DAudio instance handle, returned from XACT3DInitialize() - // pListener - [in] point of 3D audio reception - // pEmitter - [in] 3D audio source - // pDSPSettings - [out] receives calculation results, applied to an XACT cue via XACT3DApply() - // - // RETURN VALUE: - // HResult error code - //// - EXTERN_C HRESULT inline XACT3DCalculate (__in X3DAUDIO_HANDLE X3DInstance, __in const X3DAUDIO_LISTENER* pListener, __inout X3DAUDIO_EMITTER* pEmitter, __inout X3DAUDIO_DSP_SETTINGS* pDSPSettings) - { - HRESULT hr = S_OK; - if (pListener == NULL || pEmitter == NULL || pDSPSettings == NULL) { - hr = E_POINTER; - } - - if (SUCCEEDED(hr)) { - if (pEmitter->ChannelCount > 1 && pEmitter->pChannelAzimuths == NULL) { - pEmitter->ChannelRadius = 1.0f; - - switch (pEmitter->ChannelCount) { - case 2: pEmitter->pChannelAzimuths = (float*)&aStereoLayout[0]; break; - case 3: pEmitter->pChannelAzimuths = (float*)&a2Point1Layout[0]; break; - case 4: pEmitter->pChannelAzimuths = (float*)&aQuadLayout[0]; break; - case 5: pEmitter->pChannelAzimuths = (float*)&a4Point1Layout[0]; break; - case 6: pEmitter->pChannelAzimuths = (float*)&a5Point1Layout[0]; break; - case 8: pEmitter->pChannelAzimuths = (float*)&a7Point1Layout[0]; break; - default: hr = E_FAIL; break; - } - } - } - - if (SUCCEEDED(hr)) { - static X3DAUDIO_DISTANCE_CURVE_POINT DefaultCurvePoints[2] = { 0.0f, 1.0f, 1.0f, 1.0f }; - static X3DAUDIO_DISTANCE_CURVE DefaultCurve = { (X3DAUDIO_DISTANCE_CURVE_POINT*)&DefaultCurvePoints[0], 2 }; - if (pEmitter->pVolumeCurve == NULL) { - pEmitter->pVolumeCurve = &DefaultCurve; - } - if (pEmitter->pLFECurve == NULL) { - pEmitter->pLFECurve = &DefaultCurve; - } - - X3DAudioCalculate(X3DInstance, pListener, pEmitter, (X3DAUDIO_CALCULATE_MATRIX | X3DAUDIO_CALCULATE_DOPPLER | X3DAUDIO_CALCULATE_EMITTER_ANGLE), pDSPSettings); - } - - return hr; - } - - - //// - // DESCRIPTION: - // Applies results from a call to XACT3DCalculate() to a cue. - // - // PARAMETERS: - // pDSPSettings - [in] calculation results generated by XACT3DCalculate() - // pCue - [in] cue to which to apply pDSPSettings - // - // RETURN VALUE: - // HResult error code - //// - EXTERN_C HRESULT inline XACT3DApply (__in const X3DAUDIO_DSP_SETTINGS* pDSPSettings, __in IXACT3Cue* pCue) - { - HRESULT hr = S_OK; - if (pDSPSettings == NULL || pCue == NULL) { - hr = E_POINTER; - } - - if (SUCCEEDED(hr)) { - hr = pCue->SetMatrixCoefficients(pDSPSettings->SrcChannelCount, pDSPSettings->DstChannelCount, pDSPSettings->pMatrixCoefficients); - } - if (SUCCEEDED(hr)) { - XACTVARIABLEINDEX xactDistanceID = pCue->GetVariableIndex("Distance"); - hr = pCue->SetVariable(xactDistanceID, pDSPSettings->EmitterToListenerDistance); - } - if (SUCCEEDED(hr)) { - XACTVARIABLEINDEX xactDopplerID = pCue->GetVariableIndex("DopplerPitchScalar"); - hr = pCue->SetVariable(xactDopplerID, pDSPSettings->DopplerFactor); - } - if (SUCCEEDED(hr)) { - XACTVARIABLEINDEX xactOrientationID = pCue->GetVariableIndex("OrientationAngle"); - hr = pCue->SetVariable(xactOrientationID, pDSPSettings->EmitterToListenerAngle * (180.0f / X3DAUDIO_PI)); - } - - return hr; - } - - - #pragma warning(pop) - -#endif // __XACT3D3_H__ -//---------------------------------<-EOF->----------------------------------// |