?? directsound.pas
字號:
(*)
[------------------------------------------------------------------------------
[ DirectSound 8.1 Additions by Tim Baumgarten
[ DirectSound 8.0 Delphi Adaptation by Ivo Steinmann
[ DirectSound 7.0 Delphi Adaptation by Erik Unger
[------------------------------------------------------------------------------
[ Files : dsound.h
[ piece of ksmedia.h
[ Modified : 01-Dec-2001
[ E-Mail : isteinmann@bluewin.ch
[ Download : http://www.crazyentertainment.net
[ Download : http://www.delphi-jedi.org/DelphiGraphics/
[------------------------------------------------------------------------------
(*)
(*)
[------------------------------------------------------------------------------
[ History :
[----------
[ 1-Dec-2001 (Tim Baumgarten) : Added DX8.1 functionality
[------------------------------------------------------------------------------
[ 6-Aug-2001 (Tim Baumgarten) : Corrected in IDirectSoundBuffer :
[ "GetCurrentPosition(lpdwCapturePosition,
[ lpdwReadPosition : PDWORD)" to
[ "GetCurrentPosition(lpdwPlayPosition,
[ lpdwReadPosition : PDWORD)"
[------------------------------------------------------------------------------
[ 6-May-2001 (Ivo Steinmann) : Changed "SetFormat(const lpcfxFormat: TWaveFormatEx)"
[ to "SetFormat(lpcfxFormat: PWaveFormatEx)"
[------------------------------------------------------------------------------
[ 25-Mar-2001 (Tim Baumgarten) : Changed "lpDSCFXDesc : TDSCEffectDesc" to
[ "lpDSCFXDesc : PDSCEffectDesc" in TDSCBufferDesc_DX8
[------------------------------------------------------------------------------
* 26-Nov-2000 (Tim Baumgarten) : Returncodes are now typecasted with HResult
[------------------------------------------------------------------------------
(*)
unit DirectSound;
{$MINENUMSIZE 4}
{$ALIGN ON}
//{$DEFINE DIRECTX6}
//{$DEFINE DIRECTX7}
{.$DEFINE DIRECTX8}
{$IFNDEF DIRECTX6}
{$IFNDEF DIRECTX7}
{$IFNDEF DIRECTX8}
{$DEFINE DX81}
{$ENDIF}
{$ENDIF}
{$ENDIF}
interface
uses
Windows,
MMSystem,
DirectXGraphics;
var
DSoundDLL : HMODULE;
(*==========================================================================;
* Library : dsound.h
***************************************************************************)
//
// Forward declarations for interfaces.
// 'struct' not 'class' per the way DECLARE_INTERFACE_ is defined
//
type
IDirectSound = interface;
IDirectSoundBuffer = interface;
IDirectSound3DListener = interface;
IDirectSound3DBuffer = interface;
IDirectSoundCapture = interface;
IDirectSoundCaptureBuffer = interface;
IDirectSoundNotify = interface;
IKsPropertySet = interface;
// DirectSound 8.0 Interfaces
IDirectSound8 = interface;
IDirectSoundBuffer8 = interface;
IDirectSoundCaptureBuffer8 = interface;
IDirectSoundCaptureFXAec8 = interface;
IDirectSoundCaptureFXNoiseSuppress8 = interface;
IDirectSoundFullDuplex8 = interface;
IDirectSoundFXGargle8 = interface;
IDirectSoundFXChorus8 = interface;
IDirectSoundFXFlanger8 = interface;
IDirectSoundFXEcho8 = interface;
IDirectSoundFXDistortion8 = interface;
IDirectSoundFXCompressor8 = interface;
IDirectSoundFXParamEq8 = interface;
IDirectSoundFXWavesReverb8 = interface;
IDirectSoundFXI3DL2Reverb8 = interface;
//
// Structures
//
TD3DValue = single;
PDS3DBuffer = ^TDS3DBuffer;
TDS3DBuffer = packed record
dwSize : DWORD;
vPosition : TD3DVector;
vVelocity : TD3DVector;
dwInsideConeAngle : DWORD;
dwOutsideConeAngle : DWORD;
vConeOrientation : TD3DVector;
lConeOutsideVolume : LongInt;
flMinDistance : TD3DValue;
flMaxDistance : TD3DValue;
dwMode : DWORD;
end;
TCDS3DBuffer = ^TDS3DBuffer;
PDS3DListener = ^TDS3DListener;
TDS3DListener = packed record
dwSize : DWORD;
vPosition : TD3DVector;
vVelocity : TD3DVector;
vOrientFront : TD3DVector;
vOrientTop : TD3DVector;
flDistanceFactor : TD3DValue;
flRolloffFactor : TD3DValue;
flDopplerFactor : TD3DValue;
end;
PCDS3DListener = ^TDS3DListener;
PDSBCaps = ^TDSBCaps;
TDSBCaps = packed record
dwSize : DWORD;
dwFlags : DWORD;
dwBufferBytes : DWORD;
dwUnlockTransferRate : DWORD;
dwPlayCpuOverhead : DWORD;
end;
PCDSBCaps = ^TDSBCaps;
PDSBPositionNotify = ^TDSBPositionNotify;
TDSBPositionNotify = packed record
dwOffset : DWORD;
hEventNotify : THandle;
end;
PCDSBPositionNotify = ^TDSBPositionNotify;
TDSBufferDesc_DX6 = packed record
dwSize : DWORD;
dwFlags : DWORD;
dwBufferBytes : DWORD;
dwReserved : DWORD;
lpwfxFormat : PWaveFormatEx;
end;
TDSBufferDesc1 = TDSBufferDesc_DX6;
PDSBufferDesc1 = ^TDSBufferDesc1;
PCDSBufferDesc1 = PDSBufferDesc1;
TDSBufferDesc_DX7 = packed record
dwSize : DWORD;
dwFlags : DWORD;
dwBufferBytes : DWORD;
dwReserved : DWORD;
lpwfxFormat : PWaveFormatEx;
guid3DAlgorithm : TGUID;
end;
TDSBufferDesc_DX8 = packed record
dwSize : DWORD;
dwFlags : DWORD;
dwBufferBytes : DWORD;
dwReserved : DWORD;
lpwfxFormat : PWaveFormatEx;
guid3DAlgorithm : TGUID;
end;
{$IFDEF DIRECTX6}
TDSBufferDesc = TDSBufferDesc_DX6;
{$ELSE}
{$IFDEF DIRECTX7}
TDSBufferDesc = TDSBufferDesc_DX7;
{$ELSE}
TDSBufferDesc = TDSBufferDesc_DX8;
{$ENDIF}
{$ENDIF}
PDSBufferDesc = ^TDSBufferDesc;
PCDSBufferDesc = PDSBufferDesc;
PDSCaps = ^TDSCaps;
TDSCaps = packed record
dwSize : DWORD;
dwFlags : DWORD;
dwMinSecondarySampleRate : DWORD;
dwMaxSecondarySampleRate : DWORD;
dwPrimaryBuffers : DWORD;
dwMaxHwMixingAllBuffers : DWORD;
dwMaxHwMixingStaticBuffers : DWORD;
dwMaxHwMixingStreamingBuffers : DWORD;
dwFreeHwMixingAllBuffers : DWORD;
dwFreeHwMixingStaticBuffers : DWORD;
dwFreeHwMixingStreamingBuffers: DWORD;
dwMaxHw3DAllBuffers : DWORD;
dwMaxHw3DStaticBuffers : DWORD;
dwMaxHw3DStreamingBuffers : DWORD;
dwFreeHw3DAllBuffers : DWORD;
dwFreeHw3DStaticBuffers : DWORD;
dwFreeHw3DStreamingBuffers : DWORD;
dwTotalHwMemBytes : DWORD;
dwFreeHwMemBytes : DWORD;
dwMaxContigFreeHwMemBytes : DWORD;
dwUnlockTransferRateHwBuffers : DWORD;
dwPlayCpuOverheadSwBuffers : DWORD;
dwReserved1 : DWORD;
dwReserved2 : DWORD;
end;
PCDSCaps = ^TDSCaps;
PDSCBCaps = ^TDSCBCaps;
TDSCBCaps = packed record
dwSize : DWORD;
dwFlags : DWORD;
dwBufferBytes : DWORD;
dwReserved : DWORD;
end;
PCDSCBCaps = ^TDSCBCaps;
PDSCEffectDesc = ^TDSCEffectDesc;
TDSCEffectDesc = packed record
dwSize : DWORD;
dwFlags : DWORD;
guidDSCFXClass : TGUID;
guidDSCFXInstance : TGUID;
dwReserved1 : DWORD;
dwReserved2 : DWORD;
end;
TCDSCEffectDesc = PDSCEffectDesc;
TDSCBufferDesc_DX7 = packed record
dwSize : DWORD;
dwFlags : DWORD;
dwBufferBytes : DWORD;
dwReserved : DWORD;
lpwfxFormat : PWaveFormatEx;
end;
TDSCBufferDesc_DX6 = TDSCBufferDesc_DX7;
TDSCBufferDesc_DX8 = packed record
dwSize : DWORD;
dwFlags : DWORD;
dwBufferBytes : DWORD;
dwReserved : DWORD;
lpwfxFormat : PWaveFormatEx;
dwFXCount : DWORD;
lpDSCFXDesc : PDSCEffectDesc;
end;
{$IFDEF DIRECTX6}
TDSCBufferDesc = TDSCBufferDesc_DX6;
{$ELSE}
{$IFDEF DIRECTX7}
TDSCBufferDesc = TDSCBufferDesc_DX7;
{$ELSE}
TDSCBufferDesc = TDSCBufferDesc_DX8;
{$ENDIF}
{$ENDIF}
PDSCBufferDesc = ^TDSCBufferDesc;
PCDSCBufferDesc = ^TDSCBufferDesc;
PDSCCaps = ^TDSCCaps;
TDSCCaps = packed record
dwSize : DWORD;
dwFlags : DWORD;
dwFormats : DWORD;
dwChannels : DWORD;
end;
PCDSCCaps = ^TDSCCaps;
PDSCFXAec = ^TDSCFXAec;
{$IFNDEF DX81}
TDSCFXAec = packed record
fEnable : BOOL;
fReset : BOOL;
end;
{$ELSE}
TDSCFXAec = packed record
fEnable : BOOL;
fNoiseFill : BOOL;
dwMode : LongWord;
end;
{$ENDIF}
PCDSCFXAec = ^TDSCFXAec;
PDSCFXNoiseSuppress = ^TDSCFXNoiseSuppress;
TDSCFXNoiseSuppress = packed record
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -