⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 directsound.pas

📁 3D GameStudio 的Delphi开发包
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  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 + -