📄 directsound.pas
字号:
{******************************************************************************}
{* *}
{* 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 + -