📄 xact.pas
字号:
// Notification description used for registering, un-registering and flushing notifications
PXACT_Notification_Description = ^TXACT_Notification_Description;
XACT_NOTIFICATION_DESCRIPTION = packed record
type_: TXACTNotificationType; // Notification type
flags: Byte; // Flags
pSoundBank: IXACTSoundBank; // SoundBank instance
pWaveBank: IXACTWaveBank; // WaveBank instance
pCue: IXACTCue; // Cue instance
cueIndex: TXACTIndex; // Cue index
pvContext: Pointer; // User context (optional)
end;
{$EXTERNALSYM XACT_NOTIFICATION_DESCRIPTION}
TXACT_Notification_Description = XACT_NOTIFICATION_DESCRIPTION;
// Notification structure for all XACTNOTIFICATIONTYPE_CUE* notifications
PXACT_Notification_Cue = ^TXACT_Notification_Cue;
XACT_NOTIFICATION_CUE = packed record
cueIndex: TXACTIndex; // Cue index
pSoundBank: IXACTSoundBank; // SoundBank instance
pCue: IXACTCue; // Cue instance
end;
{$EXTERNALSYM XACT_NOTIFICATION_CUE}
TXACT_Notification_Cue = XACT_NOTIFICATION_CUE;
// Notification structure for all XACTNOTIFICATIONTYPE_MARKER* notifications
PXACT_Notification_Marker = ^TXACT_Notification_Marker;
XACT_NOTIFICATION_MARKER = packed record
cueIndex: TXACTIndex; // Cue index
pSoundBank: IXACTSoundBank; // SoundBank instance
pCue: IXACTCue; // Cue instance
marker: DWORD; // Marker value
end;
{$EXTERNALSYM XACT_NOTIFICATION_MARKER}
TXACT_Notification_Marker = XACT_NOTIFICATION_MARKER;
// Notification structure for all XACTNOTIFICATIONTYPE_SOUNDBANK* notifications
PXACT_Notification_SoundBank = ^TXACT_Notification_SoundBank;
XACT_NOTIFICATION_SOUNDBANK = packed record
pSoundBank: IXACTSoundBank; // SoundBank instance
end;
{$EXTERNALSYM XACT_NOTIFICATION_SOUNDBANK}
TXACT_Notification_SoundBank = XACT_NOTIFICATION_SOUNDBANK;
// Notification structure for all XACTNOTIFICATIONTYPE_WAVEBANK* notifications
PXACT_Notification_WaveBank = ^TXACT_Notification_WaveBank;
XACT_NOTIFICATION_WAVEBANK = packed record
pWaveBank: IXACTWaveBank; // WaveBank instance
end;
{$EXTERNALSYM XACT_NOTIFICATION_WAVEBANK}
TXACT_Notification_WaveBank = XACT_NOTIFICATION_WAVEBANK;
// Notification structure for all XACTNOTIFICATIONTYPE_*VARIABLE* notifications
PXACT_Notification_Variable = ^TXACT_Notification_Variable;
XACT_NOTIFICATION_VARIABLE = packed record
cueIndex: TXACTIndex; // Cue index
pSoundBank: IXACTSoundBank; // SoundBank instance
pCue: IXACTCue; // Cue instance
variableIndex: TXACTVariableIndex; // Variable index
variableValue: TXACTVariableValue; // Variable value
local: BOOL; // TRUE if a local variable
end;
{$EXTERNALSYM XACT_NOTIFICATION_VARIABLE}
TXACT_Notification_Variable = XACT_NOTIFICATION_VARIABLE;
// Notification structure for all XACTNOTIFICATIONTYPE_GUI* notifications
PXACT_Notification_GUI = ^TXACT_Notification_GUI;
XACT_NOTIFICATION_GUI = packed record
reserved: DWORD; // Reserved
end;
{$EXTERNALSYM XACT_NOTIFICATION_GUI}
TXACT_Notification_GUI = XACT_NOTIFICATION_GUI;
// Notification structure for all XACTNOTIFICATIONTYPE_WAVE* notifications
PXACT_Notification_Wave = ^TXACT_Notification_Wave;
XACT_NOTIFICATION_WAVE = packed record
pWaveBank: IXACTWaveBank; // WaveBank
waveIndex: TXACTIndex; // Wave index
cueIndex: TXACTIndex; // Cue index
pSoundBank: IXACTSoundBank; // SoundBank instance
pCue: IXACTCue; // Cue instance
end;
{$EXTERNALSYM XACT_NOTIFICATION_WAVE}
TXACT_Notification_Wave = XACT_NOTIFICATION_WAVE;
// General notification structure
XACT_NOTIFICATION = packed record
type_: TXACTNotificationType; // Notification type
timeStamp: Longint; // Timestamp of notification (milliseconds)
pvContext: Pointer; // User context (optional)
case Byte of
1: (cue: TXACT_Notification_Cue); // XACTNOTIFICATIONTYPE_CUE*
2: (marker: TXACT_Notification_Marker); // XACTNOTIFICATIONTYPE_MARKER*
3: (soundBank: TXACT_Notification_SoundBank); // XACTNOTIFICATIONTYPE_SOUNDBANK*
4: (waveBank: TXACT_Notification_WaveBank); // XACTNOTIFICATIONTYPE_WAVEBANK*
5: (variable: TXACT_Notification_Variable); // XACTNOTIFICATIONTYPE_VARIABLE*
6: (gui: TXACT_Notification_GUI); // XACTNOTIFICATIONTYPE_GUI*
7: (wave: TXACT_Notification_Wave); // XACTNOTIFICATIONTYPE_WAVE*
end;
{$EXTERNALSYM XACT_NOTIFICATION}
TXACT_Notification = XACT_NOTIFICATION;
//Original C++ header: #pragma pack(pop)
//------------------------------------------------------------------------------
// IXACTSoundBank
//------------------------------------------------------------------------------
{$EXTERNALSYM IXACTSoundBank}
IXACTSoundBank = class
function GetCueIndex(szFriendlyName: PAnsiChar): TXACTIndex; virtual; stdcall; abstract;
function Prepare(nCueIndex: TXACTIndex; dwFlags: DWORD; timeOffset: TXACTTime; out ppCue: IXACTCue): HResult; virtual; stdcall; abstract;
function Play(nCueIndex: TXACTIndex; dwFlags: DWORD; timeOffset: TXACTTime; ppCue: PIXACTCue): HResult; virtual; stdcall; abstract;
function Stop(nCueIndex: TXACTIndex; dwFlags: DWORD): HResult; virtual; stdcall; abstract;
{$WARNINGS OFF}
function Destroy: HResult; virtual; stdcall; abstract; //Clootie: This method is not related to Delphi TObject.Destroy
{$WARNINGS ON}
function GetState(out pdwState: DWORD): HResult; virtual; stdcall; abstract;
end;
//------------------------------------------------------------------------------
// IXACTWaveBank
//------------------------------------------------------------------------------
{$EXTERNALSYM IXACTWaveBank}
IXACTWaveBank = class
{$WARNINGS OFF}
function Destroy: HResult; virtual; stdcall; abstract; //Clootie: This method is not related to Delphi TObject.Destroy
{$WARNINGS ON}
function GetState(out pdwState: DWORD): HResult; virtual; stdcall; abstract;
end;
//------------------------------------------------------------------------------
// IXACTCue
//------------------------------------------------------------------------------
{$EXTERNALSYM IXACTCue}
IXACTCue = class
function Play: HResult; virtual; stdcall; abstract;
function Stop(dwFlags: DWORD): HResult; virtual; stdcall; abstract;
function GetState(out pdwState: DWORD): HResult; virtual; stdcall; abstract;
{$WARNINGS OFF}
function Destroy: HResult; virtual; stdcall; abstract; //Clootie: This method is not related to Delphi TObject.Destroy
{$WARNINGS ON}
function GetChannelMap(pChannelMap: PXACTChannelMap; BufferSize: DWORD; pRequiredSize: PDWORD): HResult; virtual; stdcall; abstract;
function SetChannelMap(const pChannelMap: PXACTChannelMap): HResult; virtual; stdcall; abstract;
function GetChannelVolume(const pVolume: PXACTChannelVolume): HResult; virtual; stdcall; abstract;
function SetChannelVolume(const pVolume: PXACTChannelVolume): HResult; virtual; stdcall; abstract;
function SetMatrixCoefficients(uSrcChannelCount: LongWord; uDstChannelCount: LongWord; pMatrixCoefficients: PSingle): HResult; virtual; stdcall; abstract;
function GetVariableIndex(szFriendlyName: PAnsiChar): TXACTVariableIndex; virtual; stdcall; abstract;
function SetVariable(nIndex: TXACTVariableIndex; nValue: TXACTVariableValue): HResult; virtual; stdcall; abstract;
function GetVariable(nIndex: TXACTVariableIndex; out nValue: TXACTVariableValue): HResult; virtual; stdcall; abstract;
function Pause(fPause: BOOL): HResult; virtual; stdcall; abstract;
{$IFDEF XBOX}
function SetVoiceOutput(pVoiceOutput: PXAudioVoiceOutput): HResult; virtual; stdcall; abstract;
function SetVoiceOutputVolume(pVolume: PXAudioVoiceOutputVolume): HResult; virtual; stdcall; abstract;
function GetProperties(pProperties: PXACTCueProperies): HResult; virtual; stdcall; abstract;
{$ENDIF} // _XBOX
end;
//------------------------------------------------------------------------------
// IXACTEngine
//------------------------------------------------------------------------------
// Engine flags
const XACT_FLAG_ENGINE_CREATE_MANAGEDATA = DWORD($00000001);
{$EXTERNALSYM XACT_FLAG_ENGINE_CREATE_MANAGEDATA}
const XACT_FLAG_ENGINE_STOP_IMMEDIATE = DWORD($00000002);
{$EXTERNALSYM XACT_FLAG_ENGINE_STOP_IMMEDIATE}
type
{$EXTERNALSYM IXACTEngine}
{$IFDEF XBOX}
IXACTEngine = interface // !CORBA!
function AddRef: Cardinal; stdcall;
function Release: Cardinal; stdcall;
{$ELSE}
IXACTEngine = interface(IUnknown)
['{43a0d4a8-9387-4e06-9433-65418fe70a67}']
{$ENDIF}
{$IFNDEF XBOX}
function GetRendererCount(out pnRendererCount: TXACTIndex): HResult; stdcall;
function GetRendererDetails(nRendererIndex: TXACTIndex; out pRendererDetails: TXACTRendererDetails): HResult; stdcall;
{$ENDIF}
function Initialize(const pParams: TXACT_Runtime_Parameters): HResult; stdcall;
function ShutDown: HResult; stdcall;
function DoWork: HResult; stdcall;
function CreateSoundBank(const pvBuffer: Pointer; dwSize: DWORD; dwFlags: DWORD; dwAllocAttributes: DWORD; out ppSoundBank: IXACTSoundBank): HResult; stdcall;
function CreateInMemoryWaveBank(const pvBuffer: Pointer; dwSize: DWORD; dwFlags: DWORD; dwAllocAttributes: DWORD; out ppWaveBank: IXACTWaveBank): HResult; stdcall;
function CreateStreamingWaveBank(const pParms: TXACT_Wavebank_Streaming_Parameters; out ppWaveBank: IXACTWaveBank): HResult; stdcall;
function RegisterNotification(const pNotificationDesc: TXACT_Notification_Description): HResult; stdcall;
function UnRegisterNotification(const pNotificationDesc: TXACT_Notification_Description): HResult; stdcall;
function GetCategory(szFriendlyName: PAnsiChar): TXACTCategory; stdcall;
function Stop(nCategory: TXACTCategory; dwFlags: DWORD): HResult; stdcall;
function SetVolume(nCategory: TXACTCategory; nVolume: TXACTVolume): HResult; stdcall;
function Pause(nCategory: TXACTCategory; fPause: BOOL): HResult; stdcall;
function GetGlobalVariableIndex(szFriendlyName: PAnsiChar): TXACTVariableIndex; stdcall;
function SetGlobalVariable(nIndex: TXACTVariableIndex; nValue: TXACTVariableValue): HResult; stdcall;
function GetGlobalVariable(nIndex: TXACTVariableIndex; out nValue: TXACTVariableValue): HResult; stdcall;
end;
IID_IXACTEngine = IXACTEngine;
{$EXTERNALSYM IID_IXACTEngine}
//------------------------------------------------------------------------------
// XACT API's (these are deprecated and will be removed in a future release)
//------------------------------------------------------------------------------
{$IFDEF XBOX}
(*
static const DWORD XACT_FLAG_API_CREATE_MANAGEDATA = 0x00000001;
static const DWORD XACT_FLAG_API_STOP_IMMEDIATE = 0x00000002;
STDAPI XACTInitialize(const XACT_RUNTIME_PARAMETERS* pParams);
STDAPI XACTShutDown(void);
STDAPI XACTDoWork(void);
STDAPI XACTCreateSoundBank(const void* pvBuffer, DWORD dwSize, DWORD dwFlags, DWORD dwAllocAttributes, IXACTSoundBank** ppSoundBank);
STDAPI XACTCreateInMemoryWaveBank(const void* pvBuffer, DWORD dwSize, DWORD dwFlags, DWORD dwAllocAttributes, IXACTWaveBank** ppWaveBank);
STDAPI XACTCreateStreamingWaveBank(const XACT_WAVEBANK_STREAMING_PARAMETERS* pParms, IXACTWaveBank** ppWaveBank);
STDAPI XACTRegisterNotification(const XACT_NOTIFICATION_DESCRIPTION* pNotificationDesc);
STDAPI XACTUnRegisterNotification(const XACT_NOTIFICATION_DESCRIPTION* pNotificationDesc);
STDAPI_(XACTCATEGORY) XACTGetCategory(PCSTR szFriendlyName);
STDAPI XACTStop(XACTCATEGORY nCategory, DWORD dwFlags);
STDAPI XACTSetVolume(XACTCATEGORY nCategory, XACTVOLUME nVolume);
STDAPI XACTPause(XACTCATEGORY nCategory, BOOL fPause);
STDAPI_(XACTVARIABLEINDEX) XACTGetGlobalVariableIndex(PCSTR szFriendlyName);
STDAPI XACTSetGlobalVariable(XACTVARIABLEINDEX nIndex, XACTVARIABLEVALUE nValue);
STDAPI XACTGetGlobalVariable(XACTVARIABLEINDEX nIndex, XACTVARIABLEVALUE* pnValue);
*)
{$ENDIF XBOX}
//------------------------------------------------------------------------------
// Create Engine
//------------------------------------------------------------------------------
// Flags used only in XACTCreateEngine below. These flags are valid but ignored
// when building for Xbox 360; to enable auditioning on that platform you must
// link explicitly to an auditioning version of the XACT static library.
const
XACT_FLAG_API_AUDITION_MODE = DWORD($00000001);
{$EXTERNALSYM XACT_FLAG_API_AUDITION_MODE}
XACT_FLAG_API_DEBUG_MODE = DWORD($00000002);
{$EXTERNALSYM XACT_FLAG_API_DEBUG_MODE}
function XACTCreateEngine(dwCreationFlags: DWORD; out ppEngine: IXACTEngine): HRESULT; stdcall; // inline
{$EXTERNALSYM XACTCreateEngine}
{$IFNDEF XBOX}
const
XACT_DEBUGENGINE_REGISTRY_KEY = 'Software\Microsoft\XACT';
{$EXTERNALSYM XACT_DEBUGENGINE_REGISTRY_KEY}
XACT_DEBUGENGINE_REGISTRY_VALUE = 'DebugEngine';
{$EXTERNALSYM XACT_DEBUGENGINE_REGISTRY_VALUE}
{$ENDIF}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Constants
//------------------------------------------------------------------------------
const
XACTINDEX_MIN = TXACTIndex($0);
{$EXTERNALSYM XACTINDEX_MIN}
XACTINDEX_MAX = TXACTIndex($fffe);
{$EXTERNALSYM XACTINDEX_MAX}
XACTINDEX_INVALID = TXACTIndex($ffff);
{$EXTERNALSYM XACTINDEX_INVALID}
XACTNOTIFICATIONTYPE_MIN = TXACTNotificationType($00);
{$EXTERNALSYM XACTNOTIFICATIONTYPE_MIN}
XACTNOTIFICATIONTYPE_MAX = TXACTNotificationType($ff);
{$EXTERNALSYM XACTNOTIFICATIONTYPE_MAX}
XACTVARIABLEVALUE_MIN: TXACTVariableValue = -3.402823466e+38; // -FLT_MAX;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -