[80] | 1 | /*--------------------------------------------------------------------- |
---|
| 2 | * |
---|
| 3 | * ia3d.h |
---|
| 4 | * |
---|
| 5 | *--------------------------------------------------------------------- |
---|
| 6 | * |
---|
| 7 | * $Id: ia3d.h 80 2008-03-04 23:32:10Z sam $ |
---|
| 8 | * |
---|
| 9 | *--------------------------------------------------------------------- |
---|
| 10 | * |
---|
| 11 | * ia3d header file. It's the part the outside world needs to see. |
---|
| 12 | * |
---|
| 13 | *--------------------------------------------------------------------- |
---|
| 14 | * |
---|
| 15 | * AUREAL SEMICONDUCTOR, INC. PROPRIETARY AND CONFIDENTIAL |
---|
| 16 | * Copyright (c) 1996 Aureal Semiconductor, Inc. - All rights |
---|
| 17 | * reserved. |
---|
| 18 | * |
---|
| 19 | *--------------------------------------------------------------------- |
---|
| 20 | */ |
---|
| 21 | |
---|
| 22 | /* |
---|
| 23 | * |
---|
| 24 | * $Log: ia3d.h,v $ |
---|
| 25 | * Revision 1.1 1997/05/29 20:02:59 trey |
---|
| 26 | * aureal header file |
---|
| 27 | * |
---|
| 28 | * |
---|
| 29 | * 9 1/17/97 12:51p Ag |
---|
| 30 | * took out setdefaulthfabsorb |
---|
| 31 | * |
---|
| 32 | * 8 1/15/97 6:01p Ag |
---|
| 33 | * added hf absorb functions |
---|
| 34 | * plus C interface defines |
---|
| 35 | * |
---|
| 36 | * |
---|
| 37 | * 7 1/15/97 5:55p Ag |
---|
| 38 | * added hf absorb functions |
---|
| 39 | * |
---|
| 40 | * |
---|
| 41 | * 6 1/14/97 5:55p Pradek |
---|
| 42 | * Swapped values for OUTPUT_SPEAKER_WIDE and OUTPUT_SPEAKER_NARROW |
---|
| 43 | * |
---|
| 44 | * 5 1/13/97 2:04p Pradek |
---|
| 45 | * Updated 'C' interface defines |
---|
| 46 | * Added A3D_OK value. |
---|
| 47 | * |
---|
| 48 | * 4 1/05/97 5:34p Pradek |
---|
| 49 | * Added defines for Resource Management Modes |
---|
| 50 | * |
---|
| 51 | * 3 12/30/96 2:36p Mike |
---|
| 52 | * Changed set/get output. |
---|
| 53 | * Added Resource Manager API template |
---|
| 54 | * |
---|
| 55 | * 2 11/12/96 12:19a Pradek |
---|
| 56 | * |
---|
| 57 | * 1 10/30/96 4:11p Pradek |
---|
| 58 | * |
---|
| 59 | * 1 10/30/96 4:10p Pradek |
---|
| 60 | * |
---|
| 61 | * 1 10/28/96 1:35a Pradek |
---|
| 62 | * Shared include files |
---|
| 63 | * Revision 1.1 1996/09/02 10:50:35 mike |
---|
| 64 | * Initial revision |
---|
| 65 | * |
---|
| 66 | * |
---|
| 67 | */ |
---|
| 68 | |
---|
| 69 | #ifndef _IA3D_H_ |
---|
| 70 | #define _IA3D_H_ |
---|
| 71 | |
---|
| 72 | |
---|
| 73 | |
---|
| 74 | #ifdef __cplusplus |
---|
| 75 | extern "C" { |
---|
| 76 | #endif |
---|
| 77 | |
---|
| 78 | |
---|
| 79 | #define DEFINE_A3D_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
|
---|
| 80 | EXTERN_C const GUID CDECL name \
|
---|
| 81 | = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
|
---|
| 82 |
|
---|
| 83 | // A3d Class ID! {D8F1EEE0-F634-11cf-8700-00A0245D918B} |
---|
| 84 | DEFINE_A3D_GUID(CLSID_A3d, |
---|
| 85 | 0xd8f1eee0, 0xf634, 0x11cf, 0x87, 0x0, 0x0, 0xa0, 0x24, 0x5d, 0x91, 0x8b); |
---|
| 86 | |
---|
| 87 | // A3d Interface ID! {D8F1EEE1-F634-11cf-8700-00A0245D918B} |
---|
| 88 | DEFINE_A3D_GUID(IID_IA3d, |
---|
| 89 | 0xd8f1eee1, 0xf634, 0x11cf, 0x87, 0x0, 0x0, 0xa0, 0x24, 0x5d, 0x91, 0x8b); |
---|
| 90 | |
---|
| 91 | |
---|
| 92 | // Bits for manipulating output modes |
---|
| 93 | |
---|
| 94 | // Values for bOutputMode |
---|
| 95 | #define OUTPUT_MODE_STEREO 0x00000001 |
---|
| 96 | #define OUTPUT_MODE_QUAD 0x00000002 |
---|
| 97 | |
---|
| 98 | // Values for FrontXtalkMode and bRearXtalkMode |
---|
| 99 | #define OUTPUT_HEADPHONES 0x00000001 // headphones |
---|
| 100 | #define OUTPUT_SPEAKERS_WIDE 0x00000002 |
---|
| 101 | #define OUTPUT_SPEAKERS_NARROW 0x00000003 |
---|
| 102 | |
---|
| 103 | // Values for Resource Management Mode |
---|
| 104 | #define A3D_RESOURCE_MODE_OFF 0x00000000 |
---|
| 105 | #define A3D_RESOURCE_MODE_NOTIFY 0x00000001 |
---|
| 106 | #define A3D_RESOURCE_MODE_DYNAMIC 0x00000002 |
---|
| 107 | |
---|
| 108 | // Declare the IA3d Interface. It's not very complex at all. |
---|
| 109 | |
---|
| 110 | #undef INTERFACE |
---|
| 111 | #define INTERFACE IA3d |
---|
| 112 | |
---|
| 113 | typedef struct IA3d *LPIA3D; |
---|
| 114 | |
---|
| 115 | DECLARE_INTERFACE_(IA3d, IUnknown) |
---|
| 116 | { |
---|
| 117 | // IUnknown |
---|
| 118 | STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE; |
---|
| 119 | STDMETHOD_(ULONG,AddRef) (THIS) PURE; |
---|
| 120 | STDMETHOD_(ULONG,Release) (THIS) PURE; |
---|
| 121 | |
---|
| 122 | // IA3d |
---|
| 123 | STDMETHOD(SetOutputMode)(THIS_ DWORD dwFrontXtalkMode, DWORD dwBackXtalkMode, DWORD dwQuadMode) PURE; |
---|
| 124 | STDMETHOD(GetOutputMode)(THIS_ DWORD *lpdwFrontXtalkMode, DWORD *lpdwBackXtalkMode, DWORD *lpdwQuadMode) PURE; |
---|
| 125 | |
---|
| 126 | STDMETHOD(SetResourceManagerMode) (THIS_ DWORD ) PURE; |
---|
| 127 | STDMETHOD(GetResourceManagerMode) (THIS_ DWORD *) PURE; |
---|
| 128 | |
---|
| 129 | STDMETHOD(SetHFAbsorbFactor)(THIS_ FLOAT ) PURE; |
---|
| 130 | STDMETHOD(GetHFAbsorbFactor)(THIS_ FLOAT *) PURE; |
---|
| 131 | |
---|
| 132 | }; |
---|
| 133 | |
---|
| 134 | |
---|
| 135 | |
---|
| 136 | |
---|
| 137 | // The library function that gets things going. It returns an interface |
---|
| 138 | // pointer to DirectSound. |
---|
| 139 | |
---|
| 140 | #define A3D_OK 1 // A3dCreate returns this upon detection of A3D enabled hardware. |
---|
| 141 | |
---|
| 142 | _declspec (dllexport) HRESULT WINAPI |
---|
| 143 | A3dCreate(const GUID * lpGUID, LPDIRECTSOUND * ppDS, IUnknown FAR *pUnkOuter ); |
---|
| 144 | |
---|
| 145 | |
---|
| 146 | // Usefull Macros for C folks. |
---|
| 147 | |
---|
| 148 | #if !defined(__cplusplus) || defined(CINTERFACE) |
---|
| 149 | #define IA3d_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b) |
---|
| 150 | #define IA3d_AddRef(p) (p)->lpVtbl->AddRef(p) |
---|
| 151 | #define IA3d_Release(p) (p)->lpVtbl->Release(p) |
---|
| 152 | #define IA3d_SetOutputMode(p,a,b,c) (p)->lpVtbl->SetOutputMode(p,a,b,c) |
---|
| 153 | #define IA3d_GetOutputMode(p,a,b,c) (p)->lpVtbl->GetOutputMode(p,a,b,c) |
---|
| 154 | #define IA3d_SetResourceManagerMode(p,a) (p)->lpVtbl->SetResourceManagerMode(p,a) |
---|
| 155 | #define IA3d_GetResourceManagerMode(p,a) (p)->lpVtbl->GetResourceManagerMode(p,a) |
---|
| 156 | #define IA3d_SetHFAbsorbFactor(p,a) (p)->lpVtbl->SetHFAbsorbFactor(p,a) |
---|
| 157 | #define IA3d_GetHFAbsorbFactor(p,a) (p)->lpVtbl->GetHFAbsorbFactor(p,a) |
---|
| 158 | |
---|
| 159 | |
---|
| 160 | #else |
---|
| 161 | #define IA3d_QueryInterface(p,a,b) (p)->QueryInterface(a,b) |
---|
| 162 | #define IA3d_AddRef(p) (p)->AddRef() |
---|
| 163 | #define IA3d_Release(p) (p)->Release() |
---|
| 164 | #define IA3d_SetOutputMode(p,a,b,c) (p)->SetOutputMode(a,b,c) |
---|
| 165 | #define IA3d_GetOutputMode(p,a,b,c) (p)->GetOutputMode(a,b,c) |
---|
| 166 | #define IA3d_SetResourceManagerMode(p,a) (p)->lpVtbl->SetResourceManagerMode(a) |
---|
| 167 | #define IA3d_GetResourceManagerMode(p,a) (p)->lpVtbl->GetResourceManagerMode(a) |
---|
| 168 | #define IA3d_SetHFAbsorbFactor(p,a) (p)->lpVtbl->SetHFAbsorbFactor(a) |
---|
| 169 | #define IA3d_GetHFAbsorbFactor(p,a) (p)->lpVtbl->GetHFAbsorbFactor(a) |
---|
| 170 | |
---|
| 171 | #endif |
---|
| 172 | |
---|
| 173 | |
---|
| 174 | |
---|
| 175 | #ifdef __cplusplus |
---|
| 176 | }; |
---|
| 177 | #endif |
---|
| 178 | |
---|
| 179 | |
---|
| 180 | |
---|
| 181 | #endif // _IA3D_H_ |
---|