📄 directsound.pas
字号:
DSCFX_AEC_MODE_FULL_DUPLEX = $2;
{$EXTERNALSYM DSCFX_AEC_MODE_FULL_DUPLEX}
// These match the AEC_STATUS_* constants in ksmedia.h
DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED = $0;
{$EXTERNALSYM DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED}
DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED = $1;
{$EXTERNALSYM DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED}
DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED = $2;
{$EXTERNALSYM DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED}
DSCFX_AEC_STATUS_CURRENTLY_CONVERGED = $8;
{$EXTERNALSYM DSCFX_AEC_STATUS_CURRENTLY_CONVERGED}
type
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundCaptureFXAec);'}
{$EXTERNALSYM IDirectSoundCaptureFXAec}
IDirectSoundCaptureFXAec = interface(IUnknown)
['{ad74143d-903d-4ab7-8066-28d363036d65}']
// IDirectSoundCaptureFXAec methods
function SetAllParameters(const pDscFxAec: TDSCFXAec): HResult; stdcall;
function GetAllParameters(out pDscFxAec: TDSCFXAec): HResult; stdcall;
function GetStatus(out pdwStatus: DWORD): HResult; stdcall;
function Reset: HResult; stdcall;
end;
IID_IDirectSoundCaptureFXAec = IDirectSoundCaptureFXAec;
{$EXTERNALSYM IID_IDirectSoundCaptureFXAec}
//
// IDirectSoundCaptureFXNoiseSuppress
//
PDSCFXNoiseSuppress = ^TDSCFXNoiseSuppress;
_DSCFXNoiseSuppress = packed record
fEnable: BOOL;
end;
{$EXTERNALSYM _DSCFXNoiseSuppress}
DSCFXNoiseSuppress = _DSCFXNoiseSuppress;
{$EXTERNALSYM DSCFXNoiseSuppress}
TDSCFXNoiseSuppress = _DSCFXNoiseSuppress;
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundCaptureFXNoiseSuppress);'}
{$EXTERNALSYM IDirectSoundCaptureFXNoiseSuppress}
IDirectSoundCaptureFXNoiseSuppress = interface(IUnknown)
['{ed311e41-fbae-4175-9625-cd0854f693ca}']
// IDirectSoundCaptureFXNoiseSuppress methods
function SetAllParameters(const pcDscFxNoiseSuppress: TDSCFXNoiseSuppress): HResult; stdcall;
function GetAllParameters(out pDscFxNoiseSuppress: TDSCFXNoiseSuppress): HResult; stdcall;
function Reset: HResult; stdcall;
end;
IID_IDirectSoundCaptureFXNoiseSuppress = IDirectSoundCaptureFXNoiseSuppress;
{$EXTERNALSYM IID_IDirectSoundCaptureFXNoiseSuppress}
//
// IDirectSoundFullDuplex
//
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFullDuplex);'}
{$EXTERNALSYM IDirectSoundFullDuplex}
IDirectSoundFullDuplex = interface(IUnknown)
['{edcb4c7a-daab-4216-a42e-6c50596ddc1d}']
// IDirectSoundFullDuplex methods
function Initialize(pCaptureGuid, pRenderGuid: PGUID;
const lpDscBufferDesc: TDSCBufferDesc; const lpDsBufferDesc: TDSBufferDesc;
hWnd: HWND; dwLevel: DWORD;
out lplpDirectSoundCaptureBuffer8: IDirectSoundCaptureBuffer8;
out lplpDirectSoundBuffer8: IDirectSoundBuffer8): HResult; stdcall;
end;
IID_IDirectSoundFullDuplex = IDirectSoundFullDuplex;
{$EXTERNALSYM IID_IDirectSoundFullDuplex}
{$ENDIF} // DIRECTSOUND_VERSION >= 0x0800
//
// DirectSound 8.0 interfaces.
//
{$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800
// IDirectSound8, IDirectSoundBuffer8 and IDirectSoundCaptureBuffer8 are the
// only DirectSound 7.0 interfaces with changed functionality in version 8.0.
// The other level 8 interfaces as equivalent to their level 7 counterparts:
type
IDirectSoundCapture8 = IDirectSoundCapture;
{$EXTERNALSYM IDirectSoundCapture8}
IDirectSound3DListener8 = IDirectSound3DListener;
{$EXTERNALSYM IDirectSound3DListener8}
IDirectSound3DBuffer8 = IDirectSound3DBuffer;
{$EXTERNALSYM IDirectSound3DBuffer8}
IDirectSoundNotify8 = IDirectSoundNotify;
{$EXTERNALSYM IDirectSoundNotify8}
IDirectSoundFXGargle8 = IDirectSoundFXGargle;
{$EXTERNALSYM IDirectSoundFXGargle8}
IDirectSoundFXChorus8 = IDirectSoundFXChorus;
{$EXTERNALSYM IDirectSoundFXChorus8}
IDirectSoundFXFlanger8 = IDirectSoundFXFlanger;
{$EXTERNALSYM IDirectSoundFXFlanger8}
IDirectSoundFXEcho8 = IDirectSoundFXEcho;
{$EXTERNALSYM IDirectSoundFXEcho8}
IDirectSoundFXDistortion8 = IDirectSoundFXDistortion;
{$EXTERNALSYM IDirectSoundFXDistortion8}
IDirectSoundFXCompressor8 = IDirectSoundFXCompressor;
{$EXTERNALSYM IDirectSoundFXCompressor8}
IDirectSoundFXParamEq8 = IDirectSoundFXParamEq;
{$EXTERNALSYM IDirectSoundFXParamEq8}
IDirectSoundFXWavesReverb8 = IDirectSoundFXWavesReverb;
{$EXTERNALSYM IDirectSoundFXWavesReverb8}
IDirectSoundFXI3DL2Reverb8 = IDirectSoundFXI3DL2Reverb;
{$EXTERNALSYM IDirectSoundFXI3DL2Reverb8}
IDirectSoundCaptureFXAec8 = IDirectSoundCaptureFXAec;
{$EXTERNALSYM IDirectSoundCaptureFXAec8}
IDirectSoundCaptureFXNoiseSuppress8 = IDirectSoundCaptureFXNoiseSuppress;
{$EXTERNALSYM IDirectSoundCaptureFXNoiseSuppress8}
IDirectSoundFullDuplex8 = IDirectSoundFullDuplex;
{$EXTERNALSYM IDirectSoundFullDuplex8}
//
// IID definitions for the unchanged DirectSound 8.0 interfaces
//
IID_IDirectSoundCapture8 = IID_IDirectSoundCapture;
{$EXTERNALSYM IID_IDirectSoundCapture8}
IID_IDirectSound3DListener8 = IID_IDirectSound3DListener;
{$EXTERNALSYM IID_IDirectSound3DListener8}
IID_IDirectSound3DBuffer8 = IID_IDirectSound3DBuffer;
{$EXTERNALSYM IID_IDirectSound3DBuffer8}
IID_IDirectSoundNotify8 = IID_IDirectSoundNotify;
{$EXTERNALSYM IID_IDirectSoundNotify8}
IID_IDirectSoundFXGargle8 = IID_IDirectSoundFXGargle;
{$EXTERNALSYM IID_IDirectSoundFXGargle8}
IID_IDirectSoundFXChorus8 = IID_IDirectSoundFXChorus;
{$EXTERNALSYM IID_IDirectSoundFXChorus8}
IID_IDirectSoundFXFlanger8 = IID_IDirectSoundFXFlanger;
{$EXTERNALSYM IID_IDirectSoundFXFlanger8}
IID_IDirectSoundFXEcho8 = IID_IDirectSoundFXEcho;
{$EXTERNALSYM IID_IDirectSoundFXEcho8}
IID_IDirectSoundFXDistortion8 = IID_IDirectSoundFXDistortion;
{$EXTERNALSYM IID_IDirectSoundFXDistortion8}
IID_IDirectSoundFXCompressor8 = IID_IDirectSoundFXCompressor;
{$EXTERNALSYM IID_IDirectSoundFXCompressor8}
IID_IDirectSoundFXParamEq8 = IID_IDirectSoundFXParamEq;
{$EXTERNALSYM IID_IDirectSoundFXParamEq8}
IID_IDirectSoundFXWavesReverb8 = IID_IDirectSoundFXWavesReverb;
{$EXTERNALSYM IID_IDirectSoundFXWavesReverb8}
IID_IDirectSoundFXI3DL2Reverb8 = IID_IDirectSoundFXI3DL2Reverb;
{$EXTERNALSYM IID_IDirectSoundFXI3DL2Reverb8}
IID_IDirectSoundCaptureFXAec8 = IID_IDirectSoundCaptureFXAec;
{$EXTERNALSYM IID_IDirectSoundCaptureFXAec8}
IID_IDirectSoundCaptureFXNoiseSuppress8 = IID_IDirectSoundCaptureFXNoiseSuppress;
{$EXTERNALSYM IID_IDirectSoundCaptureFXNoiseSuppress8}
IID_IDirectSoundFullDuplex8 = IID_IDirectSoundFullDuplex;
{$EXTERNALSYM IID_IDirectSoundFullDuplex8}
{$ENDIF} // DIRECTSOUND_VERSION >= 0x0800
const
//
// Return Codes
//
// The function completed successfully
DS_OK = S_OK;
{$EXTERNALSYM DS_OK}
// The call succeeded, but we had to substitute the 3D algorithm
DS_NO_VIRTUALIZATION = (0 shl 31) or (_FACDS shl 16) or 10; // MAKE_HRESULT(0, _FACDS, 10)
{$EXTERNALSYM DS_NO_VIRTUALIZATION}
// The call failed because resources (such as a priority level)
// were already being used by another caller
DSERR_ALLOCATED = MAKE_DSHRESULT_R or 10; // MAKE_DSHRESULT(10)
{$EXTERNALSYM DSERR_ALLOCATED}
// The control (vol, pan, etc.) requested by the caller is not available
DSERR_CONTROLUNAVAIL = MAKE_DSHRESULT_R or 30; // MAKE_DSHRESULT(30)
{$EXTERNALSYM DSERR_CONTROLUNAVAIL}
// An invalid parameter was passed to the returning function
DSERR_INVALIDPARAM = E_INVALIDARG;
{$EXTERNALSYM DSERR_INVALIDPARAM}
// This call is not valid for the current state of this object
DSERR_INVALIDCALL = MAKE_DSHRESULT_R or 50; // MAKE_DSHRESULT(50)
{$EXTERNALSYM DSERR_INVALIDCALL}
// An undetermined error occurred inside the DirectSound subsystem
DSERR_GENERIC = E_FAIL;
{$EXTERNALSYM DSERR_GENERIC}
// The caller does not have the priority level required for the function to
// succeed
DSERR_PRIOLEVELNEEDED = MAKE_DSHRESULT_R or 70; // MAKE_DSHRESULT(70)
{$EXTERNALSYM DSERR_PRIOLEVELNEEDED}
// Not enough free memory is available to complete the operation
DSERR_OUTOFMEMORY = E_OUTOFMEMORY;
{$EXTERNALSYM DSERR_OUTOFMEMORY}
// The specified WAVE format is not supported
DSERR_BADFORMAT = MAKE_DSHRESULT_R or 100; // MAKE_DSHRESULT(100)
{$EXTERNALSYM DSERR_BADFORMAT}
// The function called is not supported at this time
DSERR_UNSUPPORTED = E_NOTIMPL;
{$EXTERNALSYM DSERR_UNSUPPORTED}
// No sound driver is available for use
DSERR_NODRIVER = MAKE_DSHRESULT_R or 120; // MAKE_DSHRESULT(120)
{$EXTERNALSYM DSERR_NODRIVER}
// This object is already initialized
DSERR_ALREADYINITIALIZED = MAKE_DSHRESULT_R or 130; // MAKE_DSHRESULT(130)
{$EXTERNALSYM DSERR_ALREADYINITIALIZED}
// This object does not support aggregation
DSERR_NOAGGREGATION = CLASS_E_NOAGGREGATION;
{$EXTERNALSYM DSERR_NOAGGREGATION}
// The buffer memory has been lost, and must be restored
DSERR_BUFFERLOST = MAKE_DSHRESULT_R or 150; // MAKE_DSHRESULT(150)
{$EXTERNALSYM DSERR_BUFFERLOST}
// Another app has a higher priority level, preventing this call from
// succeeding
DSERR_OTHERAPPHASPRIO = MAKE_DSHRESULT_R or 160; // MAKE_DSHRESULT(160)
{$EXTERNALSYM DSERR_OTHERAPPHASPRIO}
// This object has not been initialized
DSERR_UNINITIALIZED = MAKE_DSHRESULT_R or 170; // MAKE_DSHRESULT(170)
{$EXTERNALSYM DSERR_UNINITIALIZED}
// The requested COM interface is not available
DSERR_NOINTERFACE = E_NOINTERFACE;
{$EXTERNALSYM DSERR_NOINTERFACE}
// Access is denied
DSERR_ACCESSDENIED = E_ACCESSDENIED;
{$EXTERNALSYM DSERR_ACCESSDENIED}
// Tried to create a DSBCAPS_CTRLFX buffer shorter than DSBSIZE_FX_MIN milliseconds
DSERR_BUFFERTOOSMALL = MAKE_DSHRESULT_R or 180; // MAKE_DSHRESULT(180)
{$EXTERNALSYM DSERR_BUFFERTOOSMALL}
// Attempt to use DirectSound 8 functionality on an older DirectSound object
DSERR_DS8_REQUIRED = MAKE_DSHRESULT_R or 190; // MAKE_DSHRESULT(190)
{$EXTERNALSYM DSERR_DS8_REQUIRED}
// A circular loop of send effects was detected
DSERR_SENDLOOP = MAKE_DSHRESULT_R or 200; // MAKE_DSHRESULT(200)
{$EXTERNALSYM DSERR_SENDLOOP}
// The GUID specified in an audiopath file does not match a valid MIXIN buffer
DSERR_BADSENDBUFFERGUID = MAKE_DSHRESULT_R or 210; // MAKE_DSHRESULT(210)
{$EXTERNALSYM DSERR_BADSENDBUFFERGUID}
// The object requested was not found (numerically equal to DMUS_E_NOT_FOUND)
DSERR_OBJECTNOTFOUND = MAKE_DSHRESULT_R or 4449; // MAKE_DSHRESULT(4449)
{$EXTERNALSYM DSERR_OBJECTNOTFOUND}
// The effects requested could not be found on the system, or they were found
// but in the wrong order, or in the wrong hardware/software locations.
DSERR_FXUNAVAILABLE = MAKE_DSHRESULT_R or 220; // MAKE_DSHRESULT(220)
{$EXTERNALSYM DSERR_FXUNAVAILABLE}
//
// Flags
//
DSCAPS_PRIMARYMONO = $00000001;
{$EXTERNALSYM DSCAPS_PRIMARYMONO}
DSCAPS_PRIMARYSTEREO = $00000002;
{$EXTERNALSYM DSCAPS_PRIMARYSTEREO}
DSCAPS_PRIMARY8BIT = $00000004;
{$EXTERNALSYM DSCAPS_PRIMARY8BIT}
DSCAPS_PRIMARY16BIT = $00000008;
{$EXTERNALSYM DSCAPS_PRIMARY16BIT}
DSCAPS_CONTINUOUSRATE = $00000010;
{$EXTERNALSYM DSCAPS_CONTINUOUSRATE}
DSCAPS_EMULDRIVER = $00000020;
{$EXTERNALSYM DSCAPS_EMULDRIVER}
DSCAPS_CERTIFIED = $00000040;
{$EXTERNALSYM DSCAPS_CERTIFIED}
DSCAPS_SECONDARYMONO = $00000100;
{$EXTERNALSYM DSCAPS_SECONDARYMONO}
DSCAPS_SECONDARYSTEREO = $00000200;
{$EXTERNALSYM DSCAPS_SECONDARYSTEREO}
DSCAPS_SECONDARY8BIT = $00000400;
{$EXTERNALSYM DSCAPS_SECONDARY8BIT}
DSCAPS_SECONDARY16BIT = $00000800;
{$EXTERNALSYM DSCAPS_SECONDARY16BIT}
DSSCL_NORMAL = $00000001;
{$EXTERNALSYM DSSCL_NORMAL}
DSSCL_PRIORITY = $00000002;
{$EXTERNALSYM DSSCL_PRIORITY}
DSSCL_EXCLUSIVE = $00000003;
{$EXTERNALSYM DSSCL_EXCLUSIVE}
DSSCL_WRITEPRIMARY = $00000004;
{$EXTERNALSYM DSSCL_WRITEPRIMARY}
DSSPEAKER_DIRECTOUT = $00000000;
{$EXTERNALSYM DSSPEAKER_DIRECTOUT}
DSSPEAKER_HEADPHONE = $00000001;
{$EXTERNALSYM DSSPEAKER_HEADPHONE}
DSSPEAKER_MONO = $00000002;
{$EXTERNALSYM DSSPEAKER_MONO}
DSSPEAKER_QUAD = $00000003;
{$EXTERNALSYM DSSPEAKER_QUAD}
DSSPEAKER_STEREO = $00000004;
{$EXTERNALSYM DSSPEAKER_STEREO}
DSSPEAKER_SURROUND = $00000005;
{$EXTERNALSYM DSSPEAKER_SURROUND}
DSSPEAKER_5POINT1 = $00000006;
{$EXTERNALSYM DSSPEAKER_5POINT1}
DSSPEAKER_7POINT1 = $00000007;
{$EXTERNALSYM DSSPEAKER_7POINT1}
DSSPEAKER_GEOMETRY_MIN = $00000005; // 5 degrees
{$EXTERNALSYM DSSPEAKER_GEOMETRY_MIN}
DSSPEAKER_GEOMETRY_NARROW = $0000000A; // 10 degrees
{$EXTERNALSYM DSSPEAKER_GEOMETRY_NARROW}
DSSPEAKER_GEOMETRY_WIDE = $00000014; // 20 degrees
{$EXTERNALSYM DSSPEAKER_GEOMETRY_WIDE}
DSSPEAKER_GEOMETRY_MAX = $000000B4; // 180 degrees
{$EXTERNALSYM DSSPEAKER_GEOMETRY_MAX}
// #define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16))
function DSSPEAKER_COMBINED(c, g: DWORD): DWORD;
{$EXTERNALSYM DSSPEAKER_COMBINED}
// #define DSSPEAKER_CONFIG(a) ((BYTE)(a))
function DSSPEAKER_CONFIG(a: Cardinal): Byte;
{$EXTERNALSYM DSSPEAKER_CONFIG}
// #define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -