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

📄 directsound.pas

📁 3D GameStudio 的Delphi开发包
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{******************************************************************************}
{*                                                                            *}
{*  Copyright (C) Microsoft Corporation.  All Rights Reserved.                *}
{*                                                                            *}
{*  Files:      dsound.h                                                      *}
{*  Content:    DirectSound include file                                      *}
{*                                                                            *}
{*  DirectX 9.0 Delphi / FreePascal adaptation by Alexey Barkovoy             *}
{*  E-Mail: directx@clootie.ru                                                *}
{*                                                                            *}
{*  Modified: 30-Nov-2004                                                     *}
{*                                                                            *}
{*  Compatible with :                                                         *}
{*    DirectX 7.0 Object Pascal adaptation by                                 *}
{*      Erik Unger, e-Mail: DelphiDirectX@next-reality.com                    *}
{*                                                                            *}
{*  Latest version can be downloaded from:                                    *}
{*    http://clootie.ru                                                       *}
{*    http://sourceforge.net/projects/delphi-dx9sdk                           *}
{*                                                                            *}
{******************************************************************************}
{                                                                              }
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
{                                                                              }
{ The contents of this file are used with permission, subject to the Mozilla   }
{ Public License Version 1.1 (the "License"); you may not use this file except }
{ in compliance with the License. You may obtain a copy of the License at      }
{ http://www.mozilla.org/MPL/MPL-1.1.html                                      }
{                                                                              }
{ Software distributed under the License is distributed on an "AS IS" basis,   }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License.    }
{                                                                              }
{ Alternatively, the contents of this file may be used under the terms of the  }
{ GNU Lesser General Public License (the  "LGPL License"), in which case the   }
{ provisions of the LGPL License are applicable instead of those above.        }
{ If you wish to allow use of your version of this file only under the terms   }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting  the provisions above and  }
{ replace  them with the notice and other provisions required by the LGPL      }
{ License.  If you do not delete the provisions above, a recipient may use     }
{ your version of this file under either the MPL or the LGPL License.          }
{                                                                              }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{                                                                              }
{******************************************************************************}

{$I DirectX.inc}

unit DirectSound;

interface

uses
  Windows, MMSystem, DXTypes;

(*==========================================================================;
 *
 *  Copyright (c) Microsoft Corporation.  All rights reserved.
 *
 *  File:       dsound.h
 *  Content:    DirectSound include file
 *
 **************************************************************************)

////////////////////////////////////////////////////////////////////////
// Global level dynamic loading support
{$IFDEF DYNAMIC_LINK_ALL}
  {$DEFINE DIRECTSOUND_DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK_EXPLICIT_ALL}
  {$DEFINE DIRECTSOUND_DYNAMIC_LINK_EXPLICIT}
{$ENDIF}

// Remove "dots" below to force some kind of dynamic linking
{.$DEFINE DIRECTSOUND_DYNAMIC_LINK}
{.$DEFINE DIRECTSOUND_DYNAMIC_LINK_EXPLICIT}

////////////////////////////////////////////////////////////////////////
// Assume for what DirectSound version we will compile headers
{$IFDEF DIRECTX7}
  {$DEFINE DIRECTSOUND_VERSION_7}
{$ENDIF}
{$IFDEF DIRECTX8}
  {$DEFINE DIRECTSOUND_VERSION_8}
{$ENDIF}
{$IFDEF DIRECTX9}
  {$DEFINE DIRECTSOUND_VERSION_9}
{$ENDIF}

{$IFNDEF DIRECTSOUND_VERSION_9}
  {$IFNDEF DIRECTSOUND_VERSION_8}
    {$IFNDEF DIRECTSOUND_VERSION_7}
// Compiling for DirectSound9 by default
       {$DEFINE DIRECTSOUND_VERSION_9}
    {$ENDIF}
  {$ENDIF}
{$ENDIF}

////////////////////////////////////////////////////////////////////////
// Emit conditionals to C++Builder compiler
{$IFDEF DIRECTSOUND_VERSION_7}
  {$HPPEMIT '#define DIRECTSOUND_VERSION         0x0700'}
{$ENDIF}
{$IFDEF DIRECTSOUND_VERSION_8}
  {$HPPEMIT '#define DIRECTSOUND_VERSION         0x0800'}
{$ENDIF}
{$IFDEF DIRECTSOUND_VERSION_9}
  {$HPPEMIT '#define DIRECTSOUND_VERSION         0x0900'}
{$ENDIF}

(*$HPPEMIT '#include "dsound.h"' *)


////////////////////////////////////////////////////////////////////////
// Define symbols for '<=' comparision
{$IFDEF DIRECTSOUND_VERSION_9}
  {$DEFINE DIRECTSOUND_VERSION_8}
{$ENDIF}
{$IFDEF DIRECTSOUND_VERSION_8}
  {$DEFINE DIRECTSOUND_VERSION_7}
{$ENDIF}

{$IFNDEF COMPILER6_UP}
type
  PPointer = ^Pointer;
  PPAnsiChar = ^PAnsiChar;

{$ENDIF}

{ Type definitions shared with Direct3D }

type
  D3DVALUE = DXTypes.D3DVALUE;
  {$EXTERNALSYM D3DVALUE}
  TD3DValue = DXTypes.TD3DValue;
  PD3DValue = DXTypes.PD3DValue;

  D3DCOLOR = DXTypes.D3DCOLOR;
  {$EXTERNALSYM D3DCOLOR}
  TD3DColor = DXTypes.TD3DColor;

  _D3DVECTOR = DXTypes._D3DVECTOR;
  {$EXTERNALSYM _D3DVECTOR}
  D3DVECTOR = DXTypes.D3DVECTOR;
  {$EXTERNALSYM D3DVECTOR}
  TD3DVector = DXTypes.TD3DVector;
  PD3DVector = DXTypes.PD3DVector;

const
  _FACDS = $878;                { DirectSound's facility code }
  {$EXTERNALSYM _FACDS}

// #define MAKE_DSHRESULT(code)  MAKE_HRESULT(1, _FACDS, code)
function MAKE_DSHRESULT(Code: DWord): DWord;
{$EXTERNALSYM MAKE_DSHRESULT}

const
  MAKE_DSHRESULT_R     = (1 shl 31) or (_FACDS shl 16);

const
  // DirectSound Component GUID {47D4D946-62E8-11CF-93BC-444553540000}
  CLSID_DirectSound: TGUID = '{47d4d946-62e8-11cf-93bc-444553540000}';
  {$EXTERNALSYM CLSID_DirectSound}

  // DirectSound 8.0 Component GUID {3901CC3F-84B5-4FA4-BA35-AA8172B8A09B}
  CLSID_DirectSound8: TGUID = '{3901cc3f-84b5-4fa4-ba35-aa8172b8a09b}';
  {$EXTERNALSYM CLSID_DirectSound8}

  // DirectSound Capture Component GUID {B0210780-89CD-11D0-AF08-00A0C925CD16}
  CLSID_DirectSoundCapture: TGUID = '{b0210780-89cd-11d0-af08-00a0c925cd16}';
  {$EXTERNALSYM CLSID_DirectSoundCapture}

  // DirectSound 8.0 Capture Component GUID {E4BCAC13-7F99-4908-9A8E-74E3BF24B6E1}
  CLSID_DirectSoundCapture8: TGUID = '{e4bcac13-7f99-4908-9a8e-74e3bf24b6e1}';
  {$EXTERNALSYM CLSID_DirectSoundCapture8}

  // DirectSound Full Duplex Component GUID {FEA4300C-7959-4147-B26A-2377B9E7A91D}
  CLSID_DirectSoundFullDuplex: TGUID = '{fea4300c-7959-4147-b26a-2377b9e7a91d}';
  {$EXTERNALSYM CLSID_DirectSoundFullDuplex}


  // DirectSound default playback device GUID {DEF00000-9C6D-47ED-AAF1-4DDA8F2B5C03}
  DSDEVID_DefaultPlayback: TGUID = '{def00000-9c6d-47ed-aaf1-4dda8f2b5c03}';
  {$EXTERNALSYM DSDEVID_DefaultPlayback}

  // DirectSound default capture device GUID {DEF00001-9C6D-47ED-AAF1-4DDA8F2B5C03}
  DSDEVID_DefaultCapture: TGUID = '{def00001-9c6d-47ed-aaf1-4dda8f2b5c03}';
  {$EXTERNALSYM DSDEVID_DefaultCapture}

  // DirectSound default device for voice playback {DEF00002-9C6D-47ED-AAF1-4DDA8F2B5C03}
  DSDEVID_DefaultVoicePlayback: TGUID = '{def00002-9c6d-47ed-aaf1-4dda8f2b5c03}';
  {$EXTERNALSYM DSDEVID_DefaultVoicePlayback}

  // DirectSound default device for voice capture {DEF00003-9C6D-47ED-AAF1-4DDA8F2B5C03}
  DSDEVID_DefaultVoiceCapture: TGUID = '{def00003-9c6d-47ed-aaf1-4dda8f2b5c03}';
  {$EXTERNALSYM DSDEVID_DefaultVoiceCapture}


//
// Structures
//

type
  PDSCaps = ^TDSCaps;
  _DSCAPS = 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;
  {$EXTERNALSYM _DSCAPS}
  DSCAPS = _DSCAPS;
  {$EXTERNALSYM DSCAPS}
  TDSCaps = _DSCAPS;

  PDSBcaps = ^TDSBcaps;
  _DSBCAPS = packed record
    dwSize                : DWORD;
    dwFlags               : DWORD;
    dwBufferBytes         : DWORD;
    dwUnlockTransferRate  : DWORD;
    dwPlayCpuOverhead     : DWORD;
  end;
  {$EXTERNALSYM _DSBCAPS}
  DSBCAPS = _DSBCAPS;
  {$EXTERNALSYM DSBCAPS}
  TDSBcaps = _DSBCAPS;

{$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800
  PDSEffectDesc = ^TDSEffectDesc;
  _DSEFFECTDESC = packed record
    dwSize        : DWORD;
    dwFlags       : DWORD;
    guidDSFXClass : TGUID;
    dwReserved1   : DWORD_PTR;
    dwReserved2   : DWORD_PTR;
  end;
  {$EXTERNALSYM _DSEFFECTDESC}
  DSEFFECTDESC = _DSEFFECTDESC;
  {$EXTERNALSYM DSEFFECTDESC}
  TDSEffectDesc = _DSEFFECTDESC;

const
  DSFX_LOCHARDWARE    = $00000001;
  {$EXTERNALSYM DSFX_LOCHARDWARE}
  DSFX_LOCSOFTWARE    = $00000002;
  {$EXTERNALSYM DSFX_LOCSOFTWARE}

  DSFXR_PRESENT          = 0;
  {$EXTERNALSYM DSFXR_PRESENT}
  DSFXR_LOCHARDWARE      = 1;
  {$EXTERNALSYM DSFXR_LOCHARDWARE}
  DSFXR_LOCSOFTWARE      = 2;
  {$EXTERNALSYM DSFXR_LOCSOFTWARE}
  DSFXR_UNALLOCATED      = 3;
  {$EXTERNALSYM DSFXR_UNALLOCATED}
  DSFXR_FAILED           = 4;
  {$EXTERNALSYM DSFXR_FAILED}
  DSFXR_UNKNOWN          = 5;
  {$EXTERNALSYM DSFXR_UNKNOWN}
  DSFXR_SENDLOOP         = 6;
  {$EXTERNALSYM DSFXR_SENDLOOP}

type
  PDSCEffectDesc = ^TDSCEffectDesc;
  _DSCEFFECTDESC = packed record
    dwSize: DWORD;
    dwFlags: DWORD;
    guidDSCFXClass: TGUID;
    guidDSCFXInstance: TGUID;
    dwReserved1: DWORD;
    dwReserved2: DWORD;
  end;
  {$EXTERNALSYM _DSCEFFECTDESC}
  DSCEFFECTDESC = _DSCEFFECTDESC;
  {$EXTERNALSYM DSCEFFECTDESC}
  TDSCEffectDesc = _DSCEFFECTDESC;

const
  DSCFX_LOCHARDWARE   = $00000001;
  {$EXTERNALSYM DSCFX_LOCHARDWARE}
  DSCFX_LOCSOFTWARE   = $00000002;
  {$EXTERNALSYM DSCFX_LOCSOFTWARE}

  DSCFXR_LOCHARDWARE  = $00000010;
  {$EXTERNALSYM DSCFXR_LOCHARDWARE}
  DSCFXR_LOCSOFTWARE  = $00000020;
  {$EXTERNALSYM DSCFXR_LOCSOFTWARE}

{$ENDIF} // DIRECTSOUND_VERSION >= 0x0800

type
  PDSBufferDesc = ^TDSBufferDesc;
  _DSBUFFERDESC = packed record
    dwSize: DWORD;
    dwFlags: DWORD;
    dwBufferBytes: DWORD;
    dwReserved: DWORD;
    lpwfxFormat: PWaveFormatEx;
{$IFDEF DIRECTSOUND_VERSION_7} // #if DIRECTSOUND_VERSION >= 0x0700
    guid3DAlgorithm: TGUID;
{$ENDIF} // DIRECTSOUND_VERSION >= 0x0700
  end;
  {$EXTERNALSYM _DSBUFFERDESC}
  DSBUFFERDESC = _DSBUFFERDESC;
  {$EXTERNALSYM DSBUFFERDESC}
  TDSBufferDesc = _DSBUFFERDESC;

// Older version of this structure:

  PDSBufferDesc1 = ^TDSBufferDesc1;
  _DSBUFFERDESC1 = packed record
    dwSize: DWORD;
    dwFlags: DWORD;
    dwBufferBytes: DWORD;
    dwReserved: DWORD;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -