Move Xbox DSound types into its own header file.
This commit is contained in:
parent
cd442dbf8d
commit
55132da6a7
|
@ -220,6 +220,7 @@
|
|||
<ClInclude Include="..\..\src\common\win32\AlignPrefix1.h" />
|
||||
<ClInclude Include="..\..\src\common\xdvdfs-tools\buffered_io.h" />
|
||||
<ClInclude Include="..\..\src\common\xdvdfs-tools\xdvdfs.h" />
|
||||
<ClInclude Include="..\..\src\core\hle\DSOUND\XbDSoundTypes.h" />
|
||||
<ClInclude Include="..\..\src\core\kernel\exports\EmuKrnlKe.h" />
|
||||
<ClInclude Include="..\..\src\Cxbx.h" />
|
||||
<ClInclude Include="..\..\src\core\kernel\init\CxbxKrnl.h" />
|
||||
|
|
|
@ -818,6 +818,9 @@
|
|||
<ClInclude Include="..\..\src\common\util\CPUID.h">
|
||||
<Filter>Cross Platform</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\core\hle\DSOUND\XbDSoundTypes.h">
|
||||
<Filter>core\HLE\DSOUND</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\src\devices\video\nv2a_regs.h">
|
||||
|
|
|
@ -38,8 +38,8 @@
|
|||
#undef FIELD_OFFSET // prevent macro redefinition warnings
|
||||
|
||||
#include <dsound.h>
|
||||
#include "core\kernel\init\CxbxKrnl.h"
|
||||
#include "Emu.h"
|
||||
#include "core\kernel\init\CxbxKrnl.h"
|
||||
#include "..\XbDSoundTypes.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -51,301 +51,6 @@ void CxbxInitAudio();
|
|||
}
|
||||
#endif
|
||||
|
||||
// EmuIDirectSoundBuffer_Play flags
|
||||
#define X_DSBPLAY_LOOPING 0x00000001
|
||||
#define X_DSBPLAY_FROMSTART 0x00000002
|
||||
#define X_DSBPLAY_SYNCHPLAYBACK 0x00000004
|
||||
|
||||
// EmuIDirectSoundBuffer_Pause flags
|
||||
#define X_DSBPAUSE_RESUME 0x00000000
|
||||
#define X_DSBPAUSE_PAUSE 0x00000001
|
||||
#define X_DSBPAUSE_SYNCHPLAYBACK 0x00000002
|
||||
|
||||
// EmuIDirectSoundStream_Pause flags
|
||||
#define X_DSSPAUSE_RESUME 0x00000000
|
||||
#define X_DSSPAUSE_PAUSE 0x00000001
|
||||
#define X_DSSPAUSE_SYNCHPLAYBACK 0x00000002
|
||||
#define X_DSSPAUSE_PAUSENOACTIVATE 0x00000003
|
||||
|
||||
// EmuIDirectSoundStream_FlushEx flags
|
||||
#define X_DSSFLUSHEX_IMMEDIATE 0x00000000
|
||||
#define X_DSSFLUSHEX_ASYNC 0x00000001
|
||||
#define X_DSSFLUSHEX_ENVELOPE 0x00000002
|
||||
#define X_DSSFLUSHEX_ENVELOPE2 0x00000004
|
||||
|
||||
// EmuIDirectSoundStream_GetStatus flags
|
||||
#define X_DSSSTATUS_READY 0x00000001
|
||||
#define X_DSSSTATUS_PLAYING 0x00010000
|
||||
#define X_DSSSTATUS_PAUSED 0x00020000
|
||||
#define X_DSSSTATUS_STARVED 0x00040000
|
||||
#define X_DSSSTATUS_ENVELOPECOMPLETE 0x00080000
|
||||
|
||||
// EmuIDirectSoundBuffer_GetStatus flags
|
||||
#define X_DSBSTATUS_PLAYING 0x00000001
|
||||
#define X_DSBSTATUS_PAUSED 0x00000002
|
||||
#define X_DSBSTATUS_LOOPING 0x00000004
|
||||
|
||||
// EmuIDirectSoundBuffer_StopEx flags
|
||||
#define X_DSBSTOPEX_IMMEDIATE 0x00000000
|
||||
#define X_DSBSTOPEX_ENVELOPE 0x00000001
|
||||
#define X_DSBSTOPEX_RELEASEWAVEFORM 0x00000002
|
||||
#define X_DSBSTOPEX_ALL (X_DSBSTOPEX_ENVELOPE | X_DSBSTOPEX_RELEASEWAVEFORM)
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSBUFFERDESC
|
||||
// ******************************************************************
|
||||
struct X_DSBUFFERDESC
|
||||
{
|
||||
DWORD dwSize;
|
||||
DWORD dwFlags;
|
||||
DWORD dwBufferBytes;
|
||||
LPWAVEFORMATEX lpwfxFormat;
|
||||
LPVOID lpMixBins; // TODO: Implement
|
||||
DWORD dwInputMixBin;
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSENVELOPEDESC
|
||||
// ******************************************************************
|
||||
struct X_DSENVOLOPEDESC
|
||||
{
|
||||
DWORD dwEnvelopGenerator;
|
||||
DWORD dwMode;
|
||||
DWORD dwDelay;
|
||||
DWORD dwAttack;
|
||||
DWORD dwHold;
|
||||
DWORD dwDecay;
|
||||
DWORD dwRelease;
|
||||
DWORD dwSustain;
|
||||
LONG lPitchScale;
|
||||
LONG lFilterCutOff;
|
||||
};
|
||||
|
||||
typedef VOID(CALLBACK *LPFNXMOCALLBACK)(LPVOID pStreamContext, LPVOID pPacketContext, DWORD dwStatus);
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSSTREAMDESC
|
||||
// ******************************************************************
|
||||
struct X_DSSTREAMDESC
|
||||
{
|
||||
DWORD dwFlags;
|
||||
DWORD dwMaxAttachedPackets;
|
||||
LPWAVEFORMATEX lpwfxFormat;
|
||||
LPFNXMOCALLBACK lpfnCallback;
|
||||
LPVOID lpvContext;
|
||||
PVOID lpMixBins; // TODO: Implement
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * REFERENCE_TIME
|
||||
// ******************************************************************
|
||||
typedef LONGLONG REFERENCE_TIME, *PREFERENCE_TIME, *LPREFERENCE_TIME;
|
||||
|
||||
// ******************************************************************
|
||||
// * XMEDIAPACKET
|
||||
// ******************************************************************
|
||||
typedef struct _XMEDIAPACKET
|
||||
{
|
||||
LPVOID pvBuffer;
|
||||
DWORD dwMaxSize;
|
||||
PDWORD pdwCompletedSize;
|
||||
PDWORD pdwStatus;
|
||||
union {
|
||||
HANDLE hCompletionEvent;
|
||||
PVOID pContext;
|
||||
};
|
||||
PREFERENCE_TIME prtTimestamp; // Not supported in xbox
|
||||
}
|
||||
XMEDIAPACKET, *PXMEDIAPACKET, *LPXMEDIAPACKET;
|
||||
|
||||
#define XMP_STATUS_SUCCESS S_OK
|
||||
#define XMP_STATUS_PENDING E_PENDING
|
||||
#define XMP_STATUS_FLUSHED E_ABORT
|
||||
#define XMP_STATUS_FAILURE E_FAIL
|
||||
#define XMP_STATUS_RELEASE_CXBXR 0xFFFFFFFF
|
||||
|
||||
// ******************************************************************
|
||||
// * XMEDIAINFO
|
||||
// ******************************************************************
|
||||
typedef struct _XMEDIAINFO
|
||||
{
|
||||
DWORD dwFlags;
|
||||
DWORD dwInputSize;
|
||||
DWORD dwOutputSize;
|
||||
DWORD dwMaxLookahead;
|
||||
}
|
||||
XMEDIAINFO, *PXEIDIAINFO, *LPXMEDIAINFO;
|
||||
|
||||
// XMEDIAINFO Flags
|
||||
#define XMO_STREAMF_FIXED_SAMPLE_SIZE 0x00000001 // The object supports only a fixed sample size
|
||||
#define XMO_STREAMF_FIXED_PACKET_ALIGNMENT 0x00000002 // The object supports only a fixed packet alignment
|
||||
#define XMO_STREAMF_INPUT_ASYNC 0x00000004 // The object supports receiving input data asynchronously
|
||||
#define XMO_STREAMF_OUTPUT_ASYNC 0x00000008 // The object supports providing output data asynchronously
|
||||
#define XMO_STREAMF_IN_PLACE 0x00000010 // The object supports in-place modification of data
|
||||
#define XMO_STREAMF_MASK 0x0000001F
|
||||
|
||||
// XDSMIXBIN Flags
|
||||
#define XDSMIXBIN_FRONT_LEFT 0
|
||||
#define XDSMIXBIN_FRONT_RIGHT 1
|
||||
#define XDSMIXBIN_FRONT_CENTER 2
|
||||
#define XDSMIXBIN_LOW_FREQUENCY 3
|
||||
#define XDSMIXBIN_BACK_LEFT 4
|
||||
#define XDSMIXBIN_BACK_RIGHT 5
|
||||
#define XDSMIXBIN_SPEAKERS_MAX 6 // Max count for speakers
|
||||
// Other flags are used
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSMIXBINVOLUMEPAIR
|
||||
// ******************************************************************
|
||||
typedef struct _XDSMIXBINSVOLUMEPAIR {
|
||||
DWORD dwMixBin;
|
||||
LONG lVolume;
|
||||
} X_DSMIXBINSVOLUMEPAIR, *X_LPDSMIXBINSVOLUMEPAIR;
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSMB
|
||||
// ******************************************************************
|
||||
typedef struct _XDSMIXBINS {
|
||||
DWORD dwCount;
|
||||
X_LPDSMIXBINSVOLUMEPAIR lpMixBinVolumePairs;
|
||||
} X_DSMIXBINS, *X_LPDSMIXBINS;
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSFILTERDESC
|
||||
// ******************************************************************
|
||||
struct X_DSFILTERDESC
|
||||
{
|
||||
DWORD dwMode;
|
||||
DWORD dwQCoefficient;
|
||||
DWORD adwCoefficients[4];
|
||||
};
|
||||
|
||||
// X_DSFILTERDESC modes
|
||||
#define DSFILTER_MODE_BYPASS 0x00000000 // The filter is bypassed
|
||||
#define DSFILTER_MODE_DLS2 0x00000001 // DLS2 mode
|
||||
#define DSFILTER_MODE_PARAMEQ 0x00000002 // Parametric equalizer mode
|
||||
#define DSFILTER_MODE_MULTI 0x00000003 // Multifunction mode
|
||||
|
||||
// ******************************************************************
|
||||
// * DSLFODESC
|
||||
// ******************************************************************
|
||||
typedef struct _DSLFODESC
|
||||
{
|
||||
DWORD dwLFO;
|
||||
DWORD dwDelay;
|
||||
DWORD dwDelta;
|
||||
LONG lPitchModulation;
|
||||
LONG lFilterCutOffRange;
|
||||
LONG lAmplitudeModulation;
|
||||
}
|
||||
DSLFODESC, *LPCDSLFODESC;
|
||||
|
||||
// ******************************************************************
|
||||
// * XBOXADPCMWAVEFORMAT
|
||||
// ******************************************************************
|
||||
typedef struct xbox_adpcmwaveformat_tag
|
||||
{
|
||||
WAVEFORMATEX wfx; // WAVEFORMATEX data
|
||||
WORD wSamplesPerBlock; // Number of samples per encoded block. It must be 64.
|
||||
}
|
||||
XBOXADPCMWAVEFORMAT, *PXBOXADPCMWAVEFORMAT, *LPXBOXADPCMWAVEFORMAT;
|
||||
|
||||
typedef const XBOXADPCMWAVEFORMAT *LPCXBOXADPCMWAVEFORMAT;
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSOUTPUTLEVELS
|
||||
// ******************************************************************
|
||||
struct X_DSOUTPUTLEVELS
|
||||
{
|
||||
DWORD dwAnalogLeftTotalPeak; // analog peak
|
||||
DWORD dwAnalogRightTotalPeak;
|
||||
DWORD dwAnalogLeftTotalRMS; // analog RMS
|
||||
DWORD dwAnalogRightTotalRMS;
|
||||
DWORD dwDigitalFrontLeftPeak; // digital peak levels
|
||||
DWORD dwDigitalFrontCenterPeak;
|
||||
DWORD dwDigitalFrontRightPeak;
|
||||
DWORD dwDigitalBackLeftPeak;
|
||||
DWORD dwDigitalBackRightPeak;
|
||||
DWORD dwDigitalLowFrequencyPeak;
|
||||
DWORD dwDigitalFrontLeftRMS; // digital RMS levels
|
||||
DWORD dwDigitalFrontCenterRMS;
|
||||
DWORD dwDigitalFrontRightRMS;
|
||||
DWORD dwDigitalBackLeftRMS;
|
||||
DWORD dwDigitalBackRightRMS;
|
||||
DWORD dwDigitalLowFrequencyRMS;
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSCAPS
|
||||
// ******************************************************************
|
||||
struct X_DSCAPS
|
||||
{
|
||||
DWORD dwFree2DBuffers;
|
||||
DWORD dwFree3DBuffers;
|
||||
DWORD dwFreeBufferSGEs;
|
||||
DWORD dwMemoryAllocated;
|
||||
};
|
||||
|
||||
#define X_DSSPEAKER_STEREO 0x00000000
|
||||
#define X_DSSPEAKER_MONO 0x00000001
|
||||
#define X_DSSPEAKER_SURROUND 0x00000002
|
||||
#define X_DSSPEAKER_ENABLE_AC3 0x00010000
|
||||
#define X_DSSPEAKER_ENABLE_DTS 0x00020000
|
||||
|
||||
struct X_DS3DBUFFER {
|
||||
DWORD dwSize;
|
||||
D3DXVECTOR3 vPosition;
|
||||
D3DXVECTOR3 vVelocity;
|
||||
DWORD dwInsideConeAngle;
|
||||
DWORD dwOutsideConeAngle;
|
||||
D3DXVECTOR3 vConeOrientation;
|
||||
LONG lConeOutsideVolume;
|
||||
FLOAT flMinDistance;
|
||||
FLOAT flMaxDistance;
|
||||
DWORD dwMode;
|
||||
FLOAT flDistanceFactor;
|
||||
FLOAT flRolloffFactor;
|
||||
FLOAT flDopplerFactor;
|
||||
};
|
||||
|
||||
struct X_DSI3DL2LISTENER {
|
||||
LONG lRoom;
|
||||
LONG lRoomHF;
|
||||
FLOAT flRoomRolloffFactor;
|
||||
FLOAT flDecayTime;
|
||||
FLOAT flDecayHFRatio;
|
||||
LONG lReflections;
|
||||
FLOAT flReflectionsDelay;
|
||||
LONG lReverb;
|
||||
FLOAT flReverbDelay;
|
||||
FLOAT flDiffusion;
|
||||
FLOAT flDensity;
|
||||
FLOAT flHFReference;
|
||||
};
|
||||
|
||||
struct X_DSI3DL2OBSTRUCTION {
|
||||
LONG lHFLevel;
|
||||
FLOAT flLFRatio;
|
||||
};
|
||||
|
||||
struct X_DSI3DL2OCCLUSION {
|
||||
LONG lHFLevel;
|
||||
FLOAT flLFRatio;
|
||||
};
|
||||
|
||||
struct X_DSI3DL2BUFFER {
|
||||
LONG lDirect;
|
||||
LONG lDirectHF;
|
||||
LONG lRoom;
|
||||
LONG lRoomHF;
|
||||
FLOAT flRoomRolloffFactor;
|
||||
X_DSI3DL2OBSTRUCTION Obstruction;
|
||||
X_DSI3DL2OCCLUSION Occlusion;
|
||||
};
|
||||
|
||||
typedef struct IDirectSoundStream IDirectSoundStream;
|
||||
typedef IDirectSoundStream *LPDIRECTSOUNDSTREAM;
|
||||
|
||||
// ******************************************************************
|
||||
// * X_CDirectSound
|
||||
// ******************************************************************
|
||||
|
|
|
@ -0,0 +1,338 @@
|
|||
// ******************************************************************
|
||||
// *
|
||||
// * .,-::::: .,:: .::::::::. .,:: .:
|
||||
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
|
||||
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
|
||||
// * $$$ Y$$$P $$""""Y$$ Y$$$P
|
||||
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
|
||||
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
|
||||
// *
|
||||
// * src->core->HLE->DSound->XbDSoundTypes.h
|
||||
// *
|
||||
// * This file is part of the Cxbx project.
|
||||
// *
|
||||
// * Cxbx and Cxbe are free software; you can redistribute them
|
||||
// * and/or modify them under the terms of the GNU General Public
|
||||
// * License as published by the Free Software Foundation; either
|
||||
// * version 2 of the license, or (at your option) any later version.
|
||||
// *
|
||||
// * This program is distributed in the hope that it will be useful,
|
||||
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// * GNU General Public License for more details.
|
||||
// *
|
||||
// * You should have recieved a copy of the GNU General Public License
|
||||
// * along with this program; see the file COPYING.
|
||||
// * If not, write to the Free Software Foundation, Inc.,
|
||||
// * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
// *
|
||||
// * (c) 2002-2003 Aaron Robinson <caustik@caustik.com>
|
||||
// * (c) 2017-2019 RadWolfie
|
||||
// *
|
||||
// * All rights reserved
|
||||
// *
|
||||
// ******************************************************************
|
||||
#ifndef XBDSOUNDTYPES_H
|
||||
#define XBDSOUNDTYPES_H
|
||||
|
||||
#include <dsound.h> // TODO: FIXME after global XTL namespace issue is resolved.
|
||||
// TODO: Port PC dsound.h to xbox edition here base on preivous research.
|
||||
// TODO: Also need to use fixed size to able support cross-platform without extra work.
|
||||
// Such as uint32_t, uint16_t, etc.
|
||||
|
||||
// EmuIDirectSoundBuffer_Play flags
|
||||
#define X_DSBPLAY_LOOPING 0x00000001
|
||||
#define X_DSBPLAY_FROMSTART 0x00000002
|
||||
#define X_DSBPLAY_SYNCHPLAYBACK 0x00000004
|
||||
|
||||
// EmuIDirectSoundBuffer_Pause flags
|
||||
#define X_DSBPAUSE_RESUME 0x00000000
|
||||
#define X_DSBPAUSE_PAUSE 0x00000001
|
||||
#define X_DSBPAUSE_SYNCHPLAYBACK 0x00000002
|
||||
|
||||
// EmuIDirectSoundStream_Pause flags
|
||||
#define X_DSSPAUSE_RESUME 0x00000000
|
||||
#define X_DSSPAUSE_PAUSE 0x00000001
|
||||
#define X_DSSPAUSE_SYNCHPLAYBACK 0x00000002
|
||||
#define X_DSSPAUSE_PAUSENOACTIVATE 0x00000003
|
||||
|
||||
// EmuIDirectSoundStream_FlushEx flags
|
||||
#define X_DSSFLUSHEX_IMMEDIATE 0x00000000
|
||||
#define X_DSSFLUSHEX_ASYNC 0x00000001
|
||||
#define X_DSSFLUSHEX_ENVELOPE 0x00000002
|
||||
#define X_DSSFLUSHEX_ENVELOPE2 0x00000004
|
||||
|
||||
// EmuIDirectSoundStream_GetStatus flags
|
||||
#define X_DSSSTATUS_READY 0x00000001
|
||||
#define X_DSSSTATUS_PLAYING 0x00010000
|
||||
#define X_DSSSTATUS_PAUSED 0x00020000
|
||||
#define X_DSSSTATUS_STARVED 0x00040000
|
||||
#define X_DSSSTATUS_ENVELOPECOMPLETE 0x00080000
|
||||
|
||||
// EmuIDirectSoundBuffer_GetStatus flags
|
||||
#define X_DSBSTATUS_PLAYING 0x00000001
|
||||
#define X_DSBSTATUS_PAUSED 0x00000002
|
||||
#define X_DSBSTATUS_LOOPING 0x00000004
|
||||
|
||||
// EmuIDirectSoundBuffer_StopEx flags
|
||||
#define X_DSBSTOPEX_IMMEDIATE 0x00000000
|
||||
#define X_DSBSTOPEX_ENVELOPE 0x00000001
|
||||
#define X_DSBSTOPEX_RELEASEWAVEFORM 0x00000002
|
||||
#define X_DSBSTOPEX_ALL (X_DSBSTOPEX_ENVELOPE | X_DSBSTOPEX_RELEASEWAVEFORM)
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSBUFFERDESC
|
||||
// ******************************************************************
|
||||
struct X_DSBUFFERDESC
|
||||
{
|
||||
DWORD dwSize;
|
||||
DWORD dwFlags;
|
||||
DWORD dwBufferBytes;
|
||||
LPWAVEFORMATEX lpwfxFormat;
|
||||
LPVOID lpMixBins; // TODO: Implement
|
||||
DWORD dwInputMixBin;
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSENVELOPEDESC
|
||||
// ******************************************************************
|
||||
struct X_DSENVOLOPEDESC
|
||||
{
|
||||
DWORD dwEnvelopGenerator;
|
||||
DWORD dwMode;
|
||||
DWORD dwDelay;
|
||||
DWORD dwAttack;
|
||||
DWORD dwHold;
|
||||
DWORD dwDecay;
|
||||
DWORD dwRelease;
|
||||
DWORD dwSustain;
|
||||
LONG lPitchScale;
|
||||
LONG lFilterCutOff;
|
||||
};
|
||||
|
||||
typedef VOID(CALLBACK *LPFNXMOCALLBACK)(LPVOID pStreamContext, LPVOID pPacketContext, DWORD dwStatus);
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSSTREAMDESC
|
||||
// ******************************************************************
|
||||
struct X_DSSTREAMDESC
|
||||
{
|
||||
DWORD dwFlags;
|
||||
DWORD dwMaxAttachedPackets;
|
||||
LPWAVEFORMATEX lpwfxFormat;
|
||||
LPFNXMOCALLBACK lpfnCallback;
|
||||
LPVOID lpvContext;
|
||||
PVOID lpMixBins; // TODO: Implement
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * REFERENCE_TIME
|
||||
// ******************************************************************
|
||||
typedef LONGLONG REFERENCE_TIME, *PREFERENCE_TIME, *LPREFERENCE_TIME;
|
||||
|
||||
// ******************************************************************
|
||||
// * XMEDIAPACKET
|
||||
// ******************************************************************
|
||||
typedef struct _XMEDIAPACKET
|
||||
{
|
||||
LPVOID pvBuffer;
|
||||
DWORD dwMaxSize;
|
||||
PDWORD pdwCompletedSize;
|
||||
PDWORD pdwStatus;
|
||||
union {
|
||||
HANDLE hCompletionEvent;
|
||||
PVOID pContext;
|
||||
};
|
||||
PREFERENCE_TIME prtTimestamp; // Not supported in xbox
|
||||
}
|
||||
XMEDIAPACKET, *PXMEDIAPACKET, *LPXMEDIAPACKET;
|
||||
|
||||
#define XMP_STATUS_SUCCESS S_OK
|
||||
#define XMP_STATUS_PENDING E_PENDING
|
||||
#define XMP_STATUS_FLUSHED E_ABORT
|
||||
#define XMP_STATUS_FAILURE E_FAIL
|
||||
#define XMP_STATUS_RELEASE_CXBXR 0xFFFFFFFF
|
||||
|
||||
// ******************************************************************
|
||||
// * XMEDIAINFO
|
||||
// ******************************************************************
|
||||
typedef struct _XMEDIAINFO
|
||||
{
|
||||
DWORD dwFlags;
|
||||
DWORD dwInputSize;
|
||||
DWORD dwOutputSize;
|
||||
DWORD dwMaxLookahead;
|
||||
}
|
||||
XMEDIAINFO, *PXEIDIAINFO, *LPXMEDIAINFO;
|
||||
|
||||
// XMEDIAINFO Flags
|
||||
#define XMO_STREAMF_FIXED_SAMPLE_SIZE 0x00000001 // The object supports only a fixed sample size
|
||||
#define XMO_STREAMF_FIXED_PACKET_ALIGNMENT 0x00000002 // The object supports only a fixed packet alignment
|
||||
#define XMO_STREAMF_INPUT_ASYNC 0x00000004 // The object supports receiving input data asynchronously
|
||||
#define XMO_STREAMF_OUTPUT_ASYNC 0x00000008 // The object supports providing output data asynchronously
|
||||
#define XMO_STREAMF_IN_PLACE 0x00000010 // The object supports in-place modification of data
|
||||
#define XMO_STREAMF_MASK 0x0000001F
|
||||
|
||||
// XDSMIXBIN Flags
|
||||
#define XDSMIXBIN_FRONT_LEFT 0
|
||||
#define XDSMIXBIN_FRONT_RIGHT 1
|
||||
#define XDSMIXBIN_FRONT_CENTER 2
|
||||
#define XDSMIXBIN_LOW_FREQUENCY 3
|
||||
#define XDSMIXBIN_BACK_LEFT 4
|
||||
#define XDSMIXBIN_BACK_RIGHT 5
|
||||
#define XDSMIXBIN_SPEAKERS_MAX 6 // Max count for speakers
|
||||
// Other flags are used
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSMIXBINVOLUMEPAIR
|
||||
// ******************************************************************
|
||||
typedef struct _XDSMIXBINSVOLUMEPAIR {
|
||||
DWORD dwMixBin;
|
||||
LONG lVolume;
|
||||
} X_DSMIXBINSVOLUMEPAIR, *X_LPDSMIXBINSVOLUMEPAIR;
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSMB
|
||||
// ******************************************************************
|
||||
typedef struct _XDSMIXBINS {
|
||||
DWORD dwCount;
|
||||
X_LPDSMIXBINSVOLUMEPAIR lpMixBinVolumePairs;
|
||||
} X_DSMIXBINS, *X_LPDSMIXBINS;
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSFILTERDESC
|
||||
// ******************************************************************
|
||||
struct X_DSFILTERDESC
|
||||
{
|
||||
DWORD dwMode;
|
||||
DWORD dwQCoefficient;
|
||||
DWORD adwCoefficients[4];
|
||||
};
|
||||
|
||||
// X_DSFILTERDESC modes
|
||||
#define DSFILTER_MODE_BYPASS 0x00000000 // The filter is bypassed
|
||||
#define DSFILTER_MODE_DLS2 0x00000001 // DLS2 mode
|
||||
#define DSFILTER_MODE_PARAMEQ 0x00000002 // Parametric equalizer mode
|
||||
#define DSFILTER_MODE_MULTI 0x00000003 // Multifunction mode
|
||||
|
||||
// ******************************************************************
|
||||
// * DSLFODESC
|
||||
// ******************************************************************
|
||||
typedef struct _DSLFODESC
|
||||
{
|
||||
DWORD dwLFO;
|
||||
DWORD dwDelay;
|
||||
DWORD dwDelta;
|
||||
LONG lPitchModulation;
|
||||
LONG lFilterCutOffRange;
|
||||
LONG lAmplitudeModulation;
|
||||
}
|
||||
DSLFODESC, *LPCDSLFODESC;
|
||||
|
||||
// ******************************************************************
|
||||
// * XBOXADPCMWAVEFORMAT
|
||||
// ******************************************************************
|
||||
typedef struct xbox_adpcmwaveformat_tag
|
||||
{
|
||||
WAVEFORMATEX wfx; // WAVEFORMATEX data
|
||||
WORD wSamplesPerBlock; // Number of samples per encoded block. It must be 64.
|
||||
}
|
||||
XBOXADPCMWAVEFORMAT, *PXBOXADPCMWAVEFORMAT, *LPXBOXADPCMWAVEFORMAT;
|
||||
|
||||
typedef const XBOXADPCMWAVEFORMAT *LPCXBOXADPCMWAVEFORMAT;
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSOUTPUTLEVELS
|
||||
// ******************************************************************
|
||||
struct X_DSOUTPUTLEVELS
|
||||
{
|
||||
DWORD dwAnalogLeftTotalPeak; // analog peak
|
||||
DWORD dwAnalogRightTotalPeak;
|
||||
DWORD dwAnalogLeftTotalRMS; // analog RMS
|
||||
DWORD dwAnalogRightTotalRMS;
|
||||
DWORD dwDigitalFrontLeftPeak; // digital peak levels
|
||||
DWORD dwDigitalFrontCenterPeak;
|
||||
DWORD dwDigitalFrontRightPeak;
|
||||
DWORD dwDigitalBackLeftPeak;
|
||||
DWORD dwDigitalBackRightPeak;
|
||||
DWORD dwDigitalLowFrequencyPeak;
|
||||
DWORD dwDigitalFrontLeftRMS; // digital RMS levels
|
||||
DWORD dwDigitalFrontCenterRMS;
|
||||
DWORD dwDigitalFrontRightRMS;
|
||||
DWORD dwDigitalBackLeftRMS;
|
||||
DWORD dwDigitalBackRightRMS;
|
||||
DWORD dwDigitalLowFrequencyRMS;
|
||||
};
|
||||
|
||||
// ******************************************************************
|
||||
// * X_DSCAPS
|
||||
// ******************************************************************
|
||||
struct X_DSCAPS
|
||||
{
|
||||
DWORD dwFree2DBuffers;
|
||||
DWORD dwFree3DBuffers;
|
||||
DWORD dwFreeBufferSGEs;
|
||||
DWORD dwMemoryAllocated;
|
||||
};
|
||||
|
||||
#define X_DSSPEAKER_STEREO 0x00000000
|
||||
#define X_DSSPEAKER_MONO 0x00000001
|
||||
#define X_DSSPEAKER_SURROUND 0x00000002
|
||||
#define X_DSSPEAKER_ENABLE_AC3 0x00010000
|
||||
#define X_DSSPEAKER_ENABLE_DTS 0x00020000
|
||||
|
||||
struct X_DS3DBUFFER {
|
||||
DWORD dwSize;
|
||||
D3DVECTOR vPosition;
|
||||
D3DVECTOR vVelocity;
|
||||
DWORD dwInsideConeAngle;
|
||||
DWORD dwOutsideConeAngle;
|
||||
D3DVECTOR vConeOrientation;
|
||||
LONG lConeOutsideVolume;
|
||||
FLOAT flMinDistance;
|
||||
FLOAT flMaxDistance;
|
||||
DWORD dwMode;
|
||||
FLOAT flDistanceFactor;
|
||||
FLOAT flRolloffFactor;
|
||||
FLOAT flDopplerFactor;
|
||||
};
|
||||
|
||||
struct X_DSI3DL2LISTENER {
|
||||
LONG lRoom;
|
||||
LONG lRoomHF;
|
||||
FLOAT flRoomRolloffFactor;
|
||||
FLOAT flDecayTime;
|
||||
FLOAT flDecayHFRatio;
|
||||
LONG lReflections;
|
||||
FLOAT flReflectionsDelay;
|
||||
LONG lReverb;
|
||||
FLOAT flReverbDelay;
|
||||
FLOAT flDiffusion;
|
||||
FLOAT flDensity;
|
||||
FLOAT flHFReference;
|
||||
};
|
||||
|
||||
struct X_DSI3DL2OBSTRUCTION {
|
||||
LONG lHFLevel;
|
||||
FLOAT flLFRatio;
|
||||
};
|
||||
|
||||
struct X_DSI3DL2OCCLUSION {
|
||||
LONG lHFLevel;
|
||||
FLOAT flLFRatio;
|
||||
};
|
||||
|
||||
struct X_DSI3DL2BUFFER {
|
||||
LONG lDirect;
|
||||
LONG lDirectHF;
|
||||
LONG lRoom;
|
||||
LONG lRoomHF;
|
||||
FLOAT flRoomRolloffFactor;
|
||||
X_DSI3DL2OBSTRUCTION Obstruction;
|
||||
X_DSI3DL2OCCLUSION Occlusion;
|
||||
};
|
||||
|
||||
typedef struct IDirectSoundStream IDirectSoundStream;
|
||||
typedef IDirectSoundStream *LPDIRECTSOUNDSTREAM;
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue