1 /* 2 * Interface for dynamically loading directsound and providing a dummy 3 * implementation if it isn't present. 4 * 5 * Author: Ross Bencina (some portions Phil Burk & Robert Marsanyi) 6 * 7 * For PortAudio Portable Real-Time Audio Library 8 * For more information see: http://www.portaudio.com 9 * Copyright (c) 1999-2006 Phil Burk, Robert Marsanyi and Ross Bencina 10 * 11 * Permission is hereby granted, free of charge, to any person obtaining 12 * a copy of this software and associated documentation files 13 * (the "Software"), to deal in the Software without restriction, 14 * including without limitation the rights to use, copy, modify, merge, 15 * publish, distribute, sublicense, and/or sell copies of the Software, 16 * and to permit persons to whom the Software is furnished to do so, 17 * subject to the following conditions: 18 * 19 * The above copyright notice and this permission notice shall be 20 * included in all copies or substantial portions of the Software. 21 * 22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 23 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 24 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 25 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 26 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 27 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 28 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 29 */ 30 31 /* 32 * The text above constitutes the entire PortAudio license; however, 33 * the PortAudio community also makes the following non-binding requests: 34 * 35 * Any person wishing to distribute modifications to the Software is 36 * requested to send the modifications to the original developer so that 37 * they can be incorporated into the canonical version. It is also 38 * requested that these non-binding requests be included along with the 39 * license above. 40 */ 41 42 /** 43 @file 44 @ingroup hostapi_src 45 */ 46 47 #ifndef INCLUDED_PA_DSOUND_DYNLINK_H 48 #define INCLUDED_PA_DSOUND_DYNLINK_H 49 50 /* on Borland compilers, WIN32 doesn't seem to be defined by default, which 51 breaks dsound.h. Adding the define here fixes the problem. - rossb. */ 52 #ifdef __BORLANDC__ 53 #if !defined(WIN32) 54 #define WIN32 55 #endif 56 #endif 57 58 /* 59 Use the earliest version of DX required, no need to polute the namespace 60 */ 61 #ifdef PAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE 62 #define DIRECTSOUND_VERSION 0x0800 63 #else 64 #define DIRECTSOUND_VERSION 0x0300 65 #endif 66 #include <dsound.h> 67 68 #ifdef __cplusplus 69 extern "C" 70 { 71 #endif /* __cplusplus */ 72 73 74 typedef struct 75 { 76 HINSTANCE hInstance_; 77 78 HRESULT (WINAPI *DllGetClassObject)(REFCLSID , REFIID , LPVOID *); 79 80 HRESULT (WINAPI *DirectSoundCreate)(LPGUID, LPDIRECTSOUND *, LPUNKNOWN); 81 HRESULT (WINAPI *DirectSoundEnumerateW)(LPDSENUMCALLBACKW, LPVOID); 82 HRESULT (WINAPI *DirectSoundEnumerateA)(LPDSENUMCALLBACKA, LPVOID); 83 84 HRESULT (WINAPI *DirectSoundCaptureCreate)(LPGUID, LPDIRECTSOUNDCAPTURE *, LPUNKNOWN); 85 HRESULT (WINAPI *DirectSoundCaptureEnumerateW)(LPDSENUMCALLBACKW, LPVOID); 86 HRESULT (WINAPI *DirectSoundCaptureEnumerateA)(LPDSENUMCALLBACKA, LPVOID); 87 88 #ifdef PAWIN_USE_DIRECTSOUNDFULLDUPLEXCREATE 89 HRESULT (WINAPI *DirectSoundFullDuplexCreate8)( 90 LPCGUID, LPCGUID, LPCDSCBUFFERDESC, LPCDSBUFFERDESC, 91 HWND, DWORD, LPDIRECTSOUNDFULLDUPLEX *, LPDIRECTSOUNDCAPTUREBUFFER8 *, 92 LPDIRECTSOUNDBUFFER8 *, LPUNKNOWN ); 93 #endif 94 }PaWinDsDSoundEntryPoints; 95 96 extern PaWinDsDSoundEntryPoints paWinDsDSoundEntryPoints; 97 98 void PaWinDs_InitializeDSoundEntryPoints(void); 99 void PaWinDs_TerminateDSoundEntryPoints(void); 100 101 102 #ifdef __cplusplus 103 } 104 #endif /* __cplusplus */ 105 106 #endif /* INCLUDED_PA_DSOUND_DYNLINK_H */ 107