📄 directsound.pas
字号:
lpwfxFormat: PWaveFormatEx;
end;
{$EXTERNALSYM _DSBUFFERDESC1}
DSBUFFERDESC1 = _DSBUFFERDESC1;
{$EXTERNALSYM DSBUFFERDESC1}
TDSBufferDesc1 = _DSBUFFERDESC1;
PDS3DBuffer = ^TDS3DBuffer;
_DS3DBUFFER = packed record
dwSize: DWORD;
vPosition: TD3DVector;
vVelocity: TD3DVector;
dwInsideConeAngle: DWORD;
dwOutsideConeAngle: DWORD;
vConeOrientation: TD3DVector;
lConeOutsideVolume: Longint;
flMinDistance: TD3DValue;
flMaxDistance: TD3DValue;
dwMode: DWORD;
end;
{$EXTERNALSYM _DS3DBUFFER}
DS3DBUFFER = _DS3DBUFFER;
{$EXTERNALSYM DS3DBUFFER}
TDS3DBuffer = _DS3DBUFFER;
PDS3DListener = ^TDS3DListener;
_DS3DLISTENER = packed record
dwSize: DWORD;
vPosition: TD3DVector;
vVelocity: TD3DVector;
vOrientFront: TD3DVector;
vOrientTop: TD3DVector;
flDistanceFactor: TD3DValue;
flRolloffFactor: TD3DValue;
flDopplerFactor: TD3DValue;
end;
{$EXTERNALSYM _DS3DLISTENER}
DS3DLISTENER = _DS3DLISTENER;
{$EXTERNALSYM DS3DLISTENER}
TDS3DListener = _DS3DLISTENER;
PDSCcaps = ^TDSCcaps;
_DSCCAPS = packed record
dwSize: DWORD;
dwFlags: DWORD;
dwFormats: DWORD;
dwChannels: DWORD;
end;
{$EXTERNALSYM _DSCCAPS}
DSCCAPS = _DSCCAPS;
{$EXTERNALSYM DSCCAPS}
TDSCcaps = _DSCCAPS;
PDSCBufferDesc1 = ^TDSCBufferDesc1;
_DSCBUFFERDESC1 = packed record
dwSize: DWORD;
dwFlags: DWORD;
dwBufferBytes: DWORD;
dwReserved: DWORD;
lpwfxFormat: PWaveFormatEx;
end;
{$EXTERNALSYM _DSCBUFFERDESC1}
DSCBUFFERDESC1 = _DSCBUFFERDESC1;
{$EXTERNALSYM DSCBUFFERDESC1}
TDSCBufferDesc1 = _DSCBUFFERDESC1;
PDSCBufferDesc = ^TDSCBufferDesc;
_DSCBUFFERDESC = packed record
dwSize: DWORD;
dwFlags: DWORD;
dwBufferBytes: DWORD;
dwReserved: DWORD;
lpwfxFormat: PWaveFormatEx;
{$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800
dwFXCount: DWORD;
lpDSCFXDesc: PDSCEffectDesc;
{$ENDIF} // DIRECTSOUND_VERSION >= 0x0800
end;
{$EXTERNALSYM _DSCBUFFERDESC}
DSCBUFFERDESC = _DSCBUFFERDESC;
{$EXTERNALSYM DSCBUFFERDESC}
TDSCBufferDesc = _DSCBUFFERDESC;
PDSCBCaps = ^TDSCBCaps;
_DSCBCAPS = packed record
dwSize: DWORD;
dwFlags: DWORD;
dwBufferBytes: DWORD;
dwReserved: DWORD;
end;
{$EXTERNALSYM _DSCBCAPS}
DSCBCAPS = _DSCBCAPS;
{$EXTERNALSYM DSCBCAPS}
TDSCBCaps = _DSCBCAPS;
PDSBPositionNotify = ^TDSBPositionNotify;
_DSBPOSITIONNOTIFY = packed record
dwOffset: DWORD;
hEventNotify: THandle;
end;
{$EXTERNALSYM _DSBPOSITIONNOTIFY}
DSBPOSITIONNOTIFY = _DSBPOSITIONNOTIFY;
{$EXTERNALSYM DSBPOSITIONNOTIFY}
TDSBPositionNotify = _DSBPOSITIONNOTIFY;
type
REFERENCE_TIME = DXTypes.REFERENCE_TIME;
{$EXTERNALSYM REFERENCE_TIME}
TReferenceTime = DXTypes.TReferenceTime;
PReferenceTime = DXTypes.PReferenceTime;
type
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IReferenceClock);'}
{$EXTERNALSYM IReferenceClock}
IReferenceClock = interface(IUnknown)
['{56a86897-0ad4-11ce-b03a-0020af0ba770}']
// IReferenceClock methods
function GetTime(out pTime: TReferenceTime): HResult; stdcall;
function AdviseTime(rtBaseTime, rtStreamTime: TReferenceTime; hEvent: THandle; out pdwAdviseCookie: DWORD): HResult; stdcall;
function AdvisePeriodic(const rtStartTime, rtPeriodTime: TReferenceTime; hSemaphore: THandle; out pdwAdviseCookie: DWORD): HResult; stdcall;
function Unadvise(dwAdviseCookie: DWORD): HResult; stdcall;
end;
IID_IReferenceClock = IReferenceClock;
{$EXTERNALSYM IID_IReferenceClock}
IDirectSoundBuffer = interface;
//
// IDirectSound
//
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSound);'}
{$EXTERNALSYM IDirectSound}
IDirectSound = interface(IUnknown)
['{279AFA83-4981-11CE-A521-0020AF0BE560}']
// IDirectSound methods
function CreateSoundBuffer(const pcDSBufferDesc: TDSBufferDesc; out ppDSBuffer: IDirectSoundBuffer; pUnkOuter: IUnknown): HResult; stdcall;
function GetCaps(out pDSCaps: TDSCaps): HResult; stdcall;
function DuplicateSoundBuffer(pDSBufferOriginal: IDirectSoundBuffer; out ppDSBufferDuplicate: IDirectSoundBuffer): HResult; stdcall;
function SetCooperativeLevel(hwnd: HWND; dwLevel: DWORD): HResult; stdcall;
function Compact: HResult; stdcall;
function GetSpeakerConfig(out pdwSpeakerConfig: DWORD): HResult; stdcall;
function SetSpeakerConfig(dwSpeakerConfig: DWORD): HResult; stdcall;
function Initialize(pcGuidDevice: PGUID): HResult; stdcall;
end;
IID_IDirectSound = IDirectSound;
{$EXTERNALSYM IID_IDirectSound}
{$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800
//
// IDirectSound8
//
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSound8);'}
{$EXTERNALSYM IDirectSound8}
IDirectSound8 = interface(IDirectSound)
['{C50A7E93-F395-4834-9EF6-7FA99DE50966}']
// IDirectSound8 methods
function VerifyCertification(pdwCertified: PDWORD): HResult; stdcall;
end;
IID_IDirectSound8 = IDirectSound8;
{$EXTERNALSYM IID_IDirectSound8}
{$ENDIF} // DIRECTSOUND_VERSION >= 0x0800
//
// IDirectSoundBuffer
//
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundBuffer);'}
{$EXTERNALSYM IDirectSoundBuffer}
IDirectSoundBuffer = interface(IUnknown)
['{279AFA85-4981-11CE-A521-0020AF0BE560}']
// IDirectSoundBuffer methods
function GetCaps(var pDSBufferCaps: TDSBcaps): HResult; stdcall;
function GetCurrentPosition(pdwCurrentPlayCursor, pdwCurrentWriteCursor: PDWORD): HResult; stdcall;
function GetFormat(pwfxFormat: PWaveFormatEx; dwSizeAllocated: DWORD; pdwSizeWritten: PDWORD): HResult; stdcall;
function GetVolume(out plVolume: Longint): HResult; stdcall;
function GetPan(out plPan: Longint): HResult; stdcall;
function GetFrequency(out pdwFrequency: DWORD): HResult; stdcall;
function GetStatus(out pdwStatus: DWORD): HResult; stdcall;
function Initialize(pDirectSound: IDirectSound; const pcDSBufferDesc: TDSBufferDesc): HResult; stdcall;
function Lock(dwOffset, dwBytes: DWORD; ppvAudioPtr1: PPointer; pdwAudioBytes1: PDWORD;
ppvAudioPtr2: PPointer; pdwAudioBytes2: PDWORD; dwFlags: DWORD): HResult; stdcall;
function Play(dwReserved1, dwPriority, dwFlags: DWORD): HResult; stdcall;
function SetCurrentPosition(dwNewPosition: DWORD): HResult; stdcall;
function SetFormat(pcfxFormat: PWaveFormatEx): HResult; stdcall;
function SetVolume(lVolume: Longint): HResult; stdcall;
function SetPan(lPan: Longint): HResult; stdcall;
function SetFrequency(dwFrequency: DWORD): HResult; stdcall;
function Stop: HResult; stdcall;
function Unlock(pvAudioPtr1: Pointer; dwAudioBytes1: DWORD; pvAudioPtr2: Pointer; dwAudioBytes2: DWORD): HResult; stdcall;
function Restore: HResult; stdcall;
end;
IID_IDirectSoundBuffer = IDirectSoundBuffer;
{$EXTERNALSYM IID_IDirectSoundBuffer}
{$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800
//
// IDirectSoundBuffer8
//
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundBuffer8);'}
{$EXTERNALSYM IDirectSoundBuffer8}
IDirectSoundBuffer8 = interface(IDirectSoundBuffer)
['{6825a449-7524-4d82-920f-50e36ab3ab1e}']
// IDirectSoundBuffer8 methods
function SetFX(dwEffectsCount: DWORD; pDSFXDesc: PDSEffectDesc; pdwResultCodes: PDWORD): HResult; stdcall;
function AcquireResources(dwFlags, dwEffectsCount: DWORD; pdwResultCodes: PDWORD): HResult; stdcall;
function GetObjectInPath(const rguidObject: TGUID; dwIndex: DWORD; const rguidInterface: TGUID; out ppObject{IUnknown}): HResult; stdcall;
end;
IID_IDirectSoundBuffer8 = IDirectSoundBuffer8;
{$EXTERNALSYM IID_IDirectSoundBuffer8}
const
// Special GUID meaning "select all objects" for use in GetObjectInPath()
GUID_All_Objects: TGUID = '{aa114de5-c262-4169-a1c8-23d698cc73b5}';
{$EXTERNALSYM GUID_All_Objects}
type
{$ENDIF} // DIRECTSOUND_VERSION >= 0x0800
//
// IDirectSound3DListener
//
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSound3DListener);'}
{$EXTERNALSYM IDirectSound3DListener}
IDirectSound3DListener = interface(IUnknown)
['{279AFA84-4981-11CE-A521-0020AF0BE560}']
// IDirectSound3DListener methods
function GetAllParameters(var pListener: TDS3DListener): HResult; stdcall;
function GetDistanceFactor(out pflDistanceFactor: TD3DValue): HResult; stdcall;
function GetDopplerFactor(out pflDopplerFactor: TD3DValue): HResult; stdcall;
function GetOrientation(out pvOrientFront, pvOrientTop: TD3DVector): HResult; stdcall;
function GetPosition(out pvPosition: TD3DVector): HResult; stdcall;
function GetRolloffFactor(out pflRolloffFactor: TD3DValue): HResult; stdcall;
function GetVelocity(out pvVelocity: TD3DVector): HResult; stdcall;
function SetAllParameters(const pcListener: TDS3DListener; dwApply: DWORD): HResult; stdcall;
function SetDistanceFactor(flDistanceFactor: TD3DValue; dwApply: DWORD): HResult; stdcall;
function SetDopplerFactor(flDopplerFactor: TD3DValue; dwApply: DWORD): HResult; stdcall;
function SetOrientation(xFront, yFront, zFront: TD3DValue; xTop, yTop, zTop: TD3DValue; dwApply: DWORD): HResult; stdcall;
function SetPosition(x, y, z: TD3DValue; dwApply: DWORD): HResult; stdcall;
function SetRolloffFactor(flRolloffFactor: TD3DValue; dwApply: DWORD): HResult; stdcall;
function SetVelocity(x, y, z: TD3DValue; dwApply: DWORD): HResult; stdcall;
function CommitDeferredSettings: HResult; stdcall;
end;
IID_IDirectSound3DListener = IDirectSound3DListener;
{$EXTERNALSYM IID_IDirectSound3DListener}
//
// IDirectSound3DBuffer
//
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSound3DBuffer);'}
{$EXTERNALSYM IDirectSound3DBuffer}
IDirectSound3DBuffer = interface(IUnknown)
['{279AFA86-4981-11CE-A521-0020AF0BE560}']
// IDirectSound3DBuffer methods
function GetAllParameters(var pDs3dBuffer: TDS3DBuffer): HResult; stdcall;
function GetConeAngles(var pdwInsideConeAngle, pdwOutsideConeAngle: DWORD): HResult; stdcall;
function GetConeOrientation(out pvOrientation: TD3DVector): HResult; stdcall;
function GetConeOutsideVolume(out plConeOutsideVolume: Longint): HResult; stdcall;
function GetMaxDistance(out pflMaxDistance: TD3DValue): HResult; stdcall;
function GetMinDistance(out pflMinDistance: TD3DValue): HResult; stdcall;
function GetMode(out pdwMode: DWORD): HResult; stdcall;
function GetPosition(out pvPosition: TD3DVector): HResult; stdcall;
function GetVelocity(out pvVelocity: TD3DVector): HResult; stdcall;
function SetAllParameters(const pcDs3dBuffer: TDS3DBuffer; dwApply: DWORD): HResult; stdcall;
function SetConeAngles(dwInsideConeAngle, dwOutsideConeAngle: DWORD; dwApply: DWORD): HResult; stdcall;
function SetConeOrientation(x, y, z: TD3DValue; dwApply: DWORD): HResult; stdcall;
function SetConeOutsideVolume(lConeOutsideVolume: Longint; dwApply: DWORD): HResult; stdcall;
function SetMaxDistance(flMaxDistance: TD3DValue; dwApply: DWORD): HResult; stdcall;
function SetMinDistance(flMinDistance: TD3DValue; dwApply: DWORD): HResult; stdcall;
function SetMode(dwMode: DWORD; dwApply: DWORD): HResult; stdcall;
function SetPosition(x, y, z: TD3DValue; dwApply: DWORD): HResult; stdcall;
function SetVelocity(x, y, z: TD3DValue; dwApply: DWORD): HResult; stdcall;
end;
IID_IDirectSound3DBuffer = IDirectSound3DBuffer;
{$EXTERNALSYM IID_IDirectSound3DBuffer}
IDirectSoundCaptureBuffer = interface;
//
// IDirectSoundCapture
//
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundCapture);'}
{$EXTERNALSYM IDirectSoundCapture}
IDirectSoundCapture = interface(IUnknown)
['{b0210781-89cd-11d0-af08-00a0c925cd16}']
// IDirectSoundCapture methods
function CreateCaptureBuffer(const pcDSCBufferDesc: TDSCBufferDesc; out ppDSCBuffer: IDirectSoundCaptureBuffer; pUnkOuter: IUnknown): HResult; stdcall;
function GetCaps(var pDSCCaps: TDSCcaps): HResult; stdcall;
function Initialize(pcGuidDevice: PGUID): HResult; stdcall;
end;
IID_IDirectSoundCapture = IDirectSoundCapture;
{$EXTERNALSYM IID_IDirectSoundCapture}
//
// IDirectSoundCaptureBuffer
//
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundCaptureBuffer);'}
{$EXTERNALSYM IDirectSoundCaptureBuffer}
IDirectSoundCaptureBuffer = interface(IUnknown)
['{b0210782-89cd-11d0-af08-00a0c925cd16}']
// IDirectSoundCaptureBuffer methods
function GetCaps(var pDSCBCaps: TDSCBCaps): HResult; stdcall;
function GetCurrentPosition(pdwCapturePosition, pdwReadPosition: PDWORD): HResult; stdcall;
function GetFormat(pwfxFormat: PWaveFormatEx; dwSizeAllocated: DWORD; pdwSizeWritten: PDWORD): HResult; stdcall;
function GetStatus(pdwStatus: PDWORD): HResult; stdcall;
function Initialize(pDirectSoundCapture: IDirectSoundCapture; const pcDSCBufferDesc: TDSCBufferDesc): HResult; stdcall;
function Lock(dwOffset, dwBytes: DWORD; ppvAudioPtr1: PPointer; pdwAudioBytes1: PDWORD; ppvAudioPtr2: PPointer; pdwAudioBytes2: PDWORD; dwFlags: DWORD): HResult; stdcall;
function Start(dwFlags: DWORD): HResult; stdcall;
function Stop: HResult; stdcall;
function Unlock(pvAudioPtr1: Pointer; dwAudioBytes1: DWORD; pvAudioPtr2: Pointer; dwAudioBytes2: DWORD): HResult; stdcall;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -