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

📄 directsound.pas

📁 delphi编的不错的贪吃蛇
💻 PAS
📖 第 1 页 / 共 5 页
字号:
(*)
 [------------------------------------------------------------------------------
 [  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 + -