1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6 #ifndef __INC_AUDIOENGINEENDPOINT__
7 #define __INC_AUDIOENGINEENDPOINT__
8
9 #include <endpointvolume.h>
10 #include <audioapotypes.h>
11
12 #if (_WIN32_WINNT >= 0x0601)
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 typedef LONGLONG HNSTIME;
18
19 typedef enum AE_POSITION_FLAGS {
20 POSITION_INVALID = 0,
21 POSITION_DISCONTINUOUS = 1,
22 POSITION_CONTINUOUS = 2,
23 POSITION_QPC_ERROR = 4
24 } AE_POSITION_FLAGS;
25
26 typedef struct AE_CURRENT_POSITION {
27 UINT64 u64DevicePosition;
28 UINT64 u64StreamPosition;
29 UINT64 u64PaddingFrames;
30 HNSTIME hnsQPCPosition;
31 FLOAT32 f32FramesPerSecond;
32 AE_POSITION_FLAGS Flag;
33 } AE_CURRENT_POSITION, *PAE_CURRENT_POSITION;
34
35 typedef struct _AUDIO_ENDPOINT_EXCLUSIVE_CREATE_PARAMS {
36 UINT32 u32Size;
37 LONGLONG hConnection;
38 WINBOOL bIsRtCapable;
39 HNSTIME hnsBufferDuration;
40 HNSTIME hnsPeriod;
41 UINT32 u32LatencyCoefficient;
42 WAVEFORMATEX wfxDeviceFormat;
43 } AUDIO_ENDPOINT_EXCLUSIVE_CREATE_PARAMS, *PAUDIO_ENDPOINT_EXCLUSIVE_CREATE_PARAMS;
44
45 typedef struct _AUDIO_ENDPOINT_SHARED_CREATE_PARAMS {
46 UINT32 u32Size;
47 UINT32 u32TSSessionId;
48 } AUDIO_ENDPOINT_SHARED_CREATE_PARAMS, *PAUDIO_ENDPOINT_SHARED_CREATE_PARAMS;
49
50 #ifdef __cplusplus
51 }
52 #endif
53
54 #ifndef __IAudioDeviceEndpoint_FWD_DEFINED__
55 #define __IAudioDeviceEndpoint_FWD_DEFINED__
56 typedef struct IAudioDeviceEndpoint IAudioDeviceEndpoint;
57 #endif
58
59 #ifndef __IAudioEndpoint_FWD_DEFINED__
60 #define __IAudioEndpoint_FWD_DEFINED__
61 typedef struct IAudioEndpoint IAudioEndpoint;
62 #endif
63
64 #ifndef __IAudioEndpointControl_FWD_DEFINED__
65 #define __IAudioEndpointControl_FWD_DEFINED__
66 typedef struct IAudioEndpointControl IAudioEndpointControl;
67 #endif
68
69 #ifndef __IAudioEndpointRT_FWD_DEFINED__
70 #define __IAudioEndpointRT_FWD_DEFINED__
71 typedef struct IAudioEndpointRT IAudioEndpointRT;
72 #endif
73
74 #ifndef __IAudioEndpointVolumeEx_FWD_DEFINED__
75 #define __IAudioEndpointVolumeEx_FWD_DEFINED__
76 typedef struct IAudioEndpointVolumeEx IAudioEndpointVolumeEx;
77 #endif
78
79 #ifndef __IAudioInputEndpointRT_FWD_DEFINED__
80 #define __IAudioInputEndpointRT_FWD_DEFINED__
81 typedef struct IAudioInputEndpointRT IAudioInputEndpointRT;
82 #endif
83
84 #ifndef __IAudioInputEndpointRT_FWD_DEFINED__
85 #define __IAudioInputEndpointRT_FWD_DEFINED__
86 typedef struct IAudioOutputEndpointRT IAudioOutputEndpointRT;
87 #endif
88
89 #undef INTERFACE
90 #define INTERFACE IAudioDeviceEndpoint
91 #ifdef __GNUC__
92 #warning COM interfaces layout in this header has not been verified.
93 #warning COM interfaces with incorrect layout may not work at all.
94 __MINGW_BROKEN_INTERFACE(INTERFACE)
95 #endif
DECLARE_INTERFACE_(IAudioDeviceEndpoint,IUnknown)96 DECLARE_INTERFACE_(IAudioDeviceEndpoint,IUnknown)
97 {
98 BEGIN_INTERFACE
99
100 /* IUnknown methods */
101 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
102 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
103 STDMETHOD_(ULONG, Release)(THIS) PURE;
104
105 /* IAudioDeviceEndpoint methods */
106 STDMETHOD_(HRESULT,GetEventDrivenCapable)(THIS_ WINBOOL *pbIsEventCapable) PURE;
107 STDMETHOD_(HRESULT,GetRTCaps)(THIS_ WINBOOL *pbIsRTCapable) PURE;
108 STDMETHOD_(HRESULT,SetBuffer)(THIS_ HNSTIME MaxPeriod,UINT32 u32LatencyCoefficient) PURE;
109 STDMETHOD_(HRESULT,WriteExclusiveModeParametersToSharedMemory)(THIS_ UINT_PTR hTargetProcess,HNSTIME hnsPeriod,HNSTIME hnsBufferDuration,UINT32 u32LatencyCoefficient,UINT32 *pu32SharedMemorySize,UINT_PTR *phSharedMemory) PURE;
110
111 END_INTERFACE
112 };
113 #ifdef COBJMACROS
114 #define IAudioDeviceEndpoint_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
115 #define IAudioDeviceEndpoint_AddRef(This) (This)->lpVtbl->AddRef(This)
116 #define IAudioDeviceEndpoint_Release(This) (This)->lpVtbl->Release(This)
117 #define IAudioDeviceEndpoint_GetEventDrivenCapable(This,pbIsEventCapable) (This)->lpVtbl->GetEventDrivenCapable(This,pbIsEventCapable)
118 #define IAudioDeviceEndpoint_GetRTCaps(This,pbIsRTCapable) (This)->lpVtbl->GetRTCaps(This,pbIsRTCapable)
119 #define IAudioDeviceEndpoint_SetBuffer(This,MaxPeriod,u32LatencyCoefficient) (This)->lpVtbl->SetBuffer(This,MaxPeriod,u32LatencyCoefficient)
120 #define IAudioDeviceEndpoint_WriteExclusiveModeParametersToSharedMemory(This,hTargetProcess,hnsPeriod,hnsBufferDuration,u32LatencyCoefficient,pu32SharedMemorySize,phSharedMemory) (This)->lpVtbl->WriteExclusiveModeParametersToSharedMemory(This,hTargetProcess,hnsPeriod,hnsBufferDuration,u32LatencyCoefficient,pu32SharedMemorySize,phSharedMemory)
121 #endif /*COBJMACROS*/
122
123 #undef INTERFACE
124 #define INTERFACE IAudioEndpoint
125 #ifdef __GNUC__
126 #warning COM interfaces layout in this header has not been verified.
127 #warning COM interfaces with incorrect layout may not work at all.
128 __MINGW_BROKEN_INTERFACE(INTERFACE)
129 #endif
DECLARE_INTERFACE_(IAudioEndpoint,IUnknown)130 DECLARE_INTERFACE_(IAudioEndpoint,IUnknown)
131 {
132 BEGIN_INTERFACE
133
134 /* IUnknown methods */
135 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
136 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
137 STDMETHOD_(ULONG, Release)(THIS) PURE;
138
139 /* IAudioEndpoint methods */
140 STDMETHOD_(HRESULT,GetFrameFormat)(THIS_ WAVEFORMATEX **ppFormat) PURE;
141 STDMETHOD_(HRESULT,GetFramesPerPacket)(THIS_ UINT32 *pFramesPerPacket) PURE;
142 STDMETHOD_(HRESULT,GetLatency)(THIS_ HNSTIME *pLatency) PURE;
143 STDMETHOD_(HRESULT,SetEventHandle)(THIS_ HANDLE eventHandle) PURE;
144 STDMETHOD_(HRESULT,SetStreamFlags)(THIS_ DWORD streamFlags) PURE;
145
146 END_INTERFACE
147 };
148 #ifdef COBJMACROS
149 #define IAudioEndpoint_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
150 #define IAudioEndpoint_AddRef(This) (This)->lpVtbl->AddRef(This)
151 #define IAudioEndpoint_Release(This) (This)->lpVtbl->Release(This)
152 #define IAudioEndpoint_GetFrameFormat(This,ppFormat) (This)->lpVtbl->GetFrameFormat(This,ppFormat)
153 #define IAudioEndpoint_GetFramesPerPacket(This,pFramesPerPacket) (This)->lpVtbl->GetFramesPerPacket(This,pFramesPerPacket)
154 #define IAudioEndpoint_GetLatency(This,pLatency) (This)->lpVtbl->GetLatency(This,pLatency)
155 #define IAudioEndpoint_SetEventHandle(This,eventHandle) (This)->lpVtbl->SetEventHandle(This,eventHandle)
156 #define IAudioEndpoint_SetStreamFlags(This,streamFlags) (This)->lpVtbl->SetStreamFlags(This,streamFlags)
157 #endif /*COBJMACROS*/
158
159 #undef INTERFACE
160 #define INTERFACE IAudioEndpointControl
161 #ifdef __GNUC__
162 #warning COM interfaces layout in this header has not been verified.
163 #warning COM interfaces with incorrect layout may not work at all.
164 __MINGW_BROKEN_INTERFACE(INTERFACE)
165 #endif
DECLARE_INTERFACE_(IAudioEndpointControl,IUnknown)166 DECLARE_INTERFACE_(IAudioEndpointControl,IUnknown)
167 {
168 BEGIN_INTERFACE
169
170 /* IUnknown methods */
171 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
172 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
173 STDMETHOD_(ULONG, Release)(THIS) PURE;
174
175 /* IAudioEndpointControl methods */
176 STDMETHOD_(HRESULT,Reset)(THIS) PURE;
177 STDMETHOD_(HRESULT,Start)(THIS) PURE;
178 STDMETHOD_(HRESULT,Stop)(THIS) PURE;
179
180 END_INTERFACE
181 };
182 #ifdef COBJMACROS
183 #define IAudioEndpointControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
184 #define IAudioEndpointControl_AddRef(This) (This)->lpVtbl->AddRef(This)
185 #define IAudioEndpointControl_Release(This) (This)->lpVtbl->Release(This)
186 #define IAudioEndpointControl_Reset() (This)->lpVtbl->Reset(This)
187 #define IAudioEndpointControl_Start() (This)->lpVtbl->Start(This)
188 #define IAudioEndpointControl_Stop() (This)->lpVtbl->Stop(This)
189 #endif /*COBJMACROS*/
190
191 #undef INTERFACE
192 #define INTERFACE IAudioEndpointRT
193 #ifdef __GNUC__
194 #warning COM interfaces layout in this header has not been verified.
195 #warning COM interfaces with incorrect layout may not work at all.
196 __MINGW_BROKEN_INTERFACE(INTERFACE)
197 #endif
DECLARE_INTERFACE_(IAudioEndpointRT,IUnknown)198 DECLARE_INTERFACE_(IAudioEndpointRT,IUnknown)
199 {
200 BEGIN_INTERFACE
201
202 /* IUnknown methods */
203 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
204 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
205 STDMETHOD_(ULONG, Release)(THIS) PURE;
206
207 /* IAudioEndpointRT methods */
208 STDMETHOD(GetCurrentPadding)(THIS_ HNSTIME *pPadding,AE_CURRENT_POSITION *pAeCurrentPosition) PURE;
209 STDMETHOD(ProcessingComplete)(THIS) PURE;
210 STDMETHOD_(HRESULT,SetPinActive)(THIS) PURE;
211 STDMETHOD_(HRESULT,SetPinInactive)(THIS) PURE;
212
213 END_INTERFACE
214 };
215 #ifdef COBJMACROS
216 #define IAudioEndpointRT_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
217 #define IAudioEndpointRT_AddRef(This) (This)->lpVtbl->AddRef(This)
218 #define IAudioEndpointRT_Release(This) (This)->lpVtbl->Release(This)
219 #define IAudioEndpointRT_GetCurrentPadding(This,pPadding,pAeCurrentPosition) (This)->lpVtbl->GetCurrentPadding(This,pPadding,pAeCurrentPosition)
220 #define IAudioEndpointRT_ProcessingComplete() (This)->lpVtbl->ProcessingComplete(This)
221 #define IAudioEndpointRT_SetPinActive() (This)->lpVtbl->SetPinActive(This)
222 #define IAudioEndpointRT_SetPinInactive() (This)->lpVtbl->SetPinInactive(This)
223 #endif /*COBJMACROS*/
224
225 #undef INTERFACE
226 #define INTERFACE IAudioEndpointVolumeEx
227 #ifdef __GNUC__
228 #warning COM interfaces layout in this header has not been verified.
229 #warning COM interfaces with incorrect layout may not work at all.
230 __MINGW_BROKEN_INTERFACE(INTERFACE)
231 #endif
DECLARE_INTERFACE_(IAudioEndpointVolumeEx,IAudioEndpointVolume)232 DECLARE_INTERFACE_(IAudioEndpointVolumeEx,IAudioEndpointVolume)
233 {
234 BEGIN_INTERFACE
235
236 /* IUnknown methods */
237 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
238 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
239 STDMETHOD_(ULONG, Release)(THIS) PURE;
240
241 /* IAudioEndpointVolume methods */
242 STDMETHOD_(HRESULT,GetChannelCount)(THIS_ UINT *pnChannelCount) PURE;
243 STDMETHOD_(HRESULT,GetChannelVolumeLevel)(THIS_ UINT nChannel,float *pfLevelDB) PURE;
244 STDMETHOD_(HRESULT,GetChannelVolumeLevelScalar)(THIS_ UINT nChannel,float *pfLevel) PURE;
245 STDMETHOD_(HRESULT,GetMasterVolumeLevel)(THIS_ float *pfLevelDB) PURE;
246 STDMETHOD_(HRESULT,GetMasterVolumeLevelScalar)(THIS_ float *pfLevel) PURE;
247 STDMETHOD_(HRESULT,GetMute)(THIS_ WINBOOL *pbMute) PURE;
248 STDMETHOD_(HRESULT,GetVolumeRange)(THIS_ float *pfLevelMinDB,float *pfLevelMaxDB,float *pfVolumeIncrementDB) PURE;
249 STDMETHOD_(HRESULT,GetVolumeStepInfo)(THIS_ UINT *pnStep,UINT *pnStepCount) PURE;
250 STDMETHOD_(HRESULT,QueryHardwareSupport)(THIS_ DWORD *pdwHardwareSupportMask) PURE;
251 STDMETHOD_(HRESULT,RegisterControlChangeNotify)(THIS_ IAudioEndpointVolumeCallback *pNotify) PURE;
252 STDMETHOD_(HRESULT,SetChannelVolumeLevel)(THIS_ UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) PURE;
253 STDMETHOD_(HRESULT,SetChannelVolumeLevelScalar)(THIS_ UINT nChannel,float fLevel,LPCGUID pguidEventContext) PURE;
254 STDMETHOD_(HRESULT,SetMasterVolumeLevel)(THIS_ float fLevelDB,LPCGUID pguidEventContext) PURE;
255 STDMETHOD_(HRESULT,SetMasterVolumeLevelScalar)(THIS_ float fLevel,LPCGUID pguidEventContext) PURE;
256 STDMETHOD_(HRESULT,SetMute)(THIS_ WINBOOL bMute,LPCGUID pguidEventContext) PURE;
257 STDMETHOD_(HRESULT,UnregisterControlChangeNotify)(THIS_ IAudioEndpointVolumeCallback *pNotify) PURE;
258 STDMETHOD_(HRESULT,VolumeStepDown)(THIS_ LPCGUID pguidEventContext) PURE;
259 STDMETHOD_(HRESULT,VolumeStepUp)(THIS_ LPCGUID pguidEventContext) PURE;
260
261 /* IAudioEndpointVolumeEx methods */
262 STDMETHOD_(HRESULT,GetVolumeRangeChannel)(THIS_ UINT iChannel,float *pflVolumeMinDB,float *pflVolumeMaxDB,float *pflVolumeIncrementDB) PURE;
263
264 END_INTERFACE
265 };
266 #ifdef COBJMACROS
267 #define IAudioEndpointVolumeEx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
268 #define IAudioEndpointVolumeEx_AddRef(This) (This)->lpVtbl->AddRef(This)
269 #define IAudioEndpointVolumeEx_Release(This) (This)->lpVtbl->Release(This)
270 #define IAudioEndpointVolumeEx_GetChannelCount(This,pnChannelCount) (This)->lpVtbl->GetChannelCount(This,pnChannelCount)
271 #define IAudioEndpointVolumeEx_GetChannelVolumeLevel(This,nChannel,pfLevelDB) (This)->lpVtbl->GetChannelVolumeLevel(This,nChannel,pfLevelDB)
272 #define IAudioEndpointVolumeEx_GetChannelVolumeLevelScalar(This,nChannel,pfLevel) (This)->lpVtbl->GetChannelVolumeLevelScalar(This,nChannel,pfLevel)
273 #define IAudioEndpointVolumeEx_GetMasterVolumeLevel(This,pfLevelDB) (This)->lpVtbl->GetMasterVolumeLevel(This,pfLevelDB)
274 #define IAudioEndpointVolumeEx_GetMasterVolumeLevelScalar(This,pfLevel) (This)->lpVtbl->GetMasterVolumeLevelScalar(This,pfLevel)
275 #define IAudioEndpointVolumeEx_GetMute(This,pbMute) (This)->lpVtbl->GetMute(This,pbMute)
276 #define IAudioEndpointVolumeEx_GetVolumeRange(This,pfLevelMinDB,pfLevelMaxDB,pfVolumeIncrementDB) (This)->lpVtbl->GetVolumeRange(This,pfLevelMinDB,pfLevelMaxDB,pfVolumeIncrementDB)
277 #define IAudioEndpointVolumeEx_GetVolumeStepInfo(This,pnStep,pnStepCount) (This)->lpVtbl->GetVolumeStepInfo(This,pnStep,pnStepCount)
278 #define IAudioEndpointVolumeEx_QueryHardwareSupport(This,pdwHardwareSupportMask) (This)->lpVtbl->QueryHardwareSupport(This,pdwHardwareSupportMask)
279 #define IAudioEndpointVolumeEx_RegisterControlChangeNotify(This,pNotify) (This)->lpVtbl->RegisterControlChangeNotify(This,pNotify)
280 #define IAudioEndpointVolumeEx_SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext) (This)->lpVtbl->SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext)
281 #define IAudioEndpointVolumeEx_SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext) (This)->lpVtbl->SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext)
282 #define IAudioEndpointVolumeEx_SetMasterVolumeLevel(This,fLevelDB,pguidEventContext) (This)->lpVtbl->SetMasterVolumeLevel(This,fLevelDB,pguidEventContext)
283 #define IAudioEndpointVolumeEx_SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext) (This)->lpVtbl->SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext)
284 #define IAudioEndpointVolumeEx_SetMute(This,bMute,pguidEventContext) (This)->lpVtbl->SetMute(This,bMute,pguidEventContext)
285 #define IAudioEndpointVolumeEx_UnregisterControlChangeNotify(This,pNotify) (This)->lpVtbl->UnregisterControlChangeNotify(This,pNotify)
286 #define IAudioEndpointVolumeEx_VolumeStepDown(This,pguidEventContext) (This)->lpVtbl->VolumeStepDown(This,pguidEventContext)
287 #define IAudioEndpointVolumeEx_VolumeStepUp(This,pguidEventContext) (This)->lpVtbl->VolumeStepUp(This,pguidEventContext)
288 #define IAudioEndpointVolumeEx_GetVolumeRangeChannel(This,iChannel,pflVolumeMinDB,pflVolumeMaxDB,pflVolumeIncrementDB) (This)->lpVtbl->GetVolumeRangeChannel(This,iChannel,pflVolumeMinDB,pflVolumeMaxDB,pflVolumeIncrementDB)
289 #endif /*COBJMACROS*/
290
291 #undef INTERFACE
292 #define INTERFACE IAudioInputEndpointRT
293 #ifdef __GNUC__
294 #warning COM interfaces layout in this header has not been verified.
295 #warning COM interfaces with incorrect layout may not work at all.
296 __MINGW_BROKEN_INTERFACE(INTERFACE)
297 #endif
DECLARE_INTERFACE_(IAudioInputEndpointRT,IUnknown)298 DECLARE_INTERFACE_(IAudioInputEndpointRT,IUnknown)
299 {
300 BEGIN_INTERFACE
301
302 /* IUnknown methods */
303 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
304 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
305 STDMETHOD_(ULONG, Release)(THIS) PURE;
306
307 /* IAudioInputEndpointRT methods */
308 STDMETHOD(GetInputDataPointer)(THIS_ AE_CURRENT_POSITION *pAeTimeStamp) PURE;
309 STDMETHOD(PulseEndpoint)(THIS) PURE;
310 STDMETHOD(ReleaseInputDataPointer)(THIS_ UINT32 u32FrameCount,UINT_PTR pDataPointer) PURE;
311
312 END_INTERFACE
313 };
314 #ifdef COBJMACROS
315 #define IAudioInputEndpointRT_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
316 #define IAudioInputEndpointRT_AddRef(This) (This)->lpVtbl->AddRef(This)
317 #define IAudioInputEndpointRT_Release(This) (This)->lpVtbl->Release(This)
318 #define IAudioInputEndpointRT_GetInputDataPointer(This,pAeTimeStamp) (This)->lpVtbl->GetInputDataPointer(This,pAeTimeStamp)
319 #define IAudioInputEndpointRT_PulseEndpoint() (This)->lpVtbl->PulseEndpoint(This)
320 #define IAudioInputEndpointRT_ReleaseInputDataPointer(This,u32FrameCount,pDataPointer) (This)->lpVtbl->ReleaseInputDataPointer(This,u32FrameCount,pDataPointer)
321 #endif /*COBJMACROS*/
322
323 #undef INTERFACE
324 #define INTERFACE IAudioOutputEndpointRT
325 #ifdef __GNUC__
326 #warning COM interfaces layout in this header has not been verified.
327 #warning COM interfaces with incorrect layout may not work at all.
328 __MINGW_BROKEN_INTERFACE(INTERFACE)
329 #endif
DECLARE_INTERFACE_(IAudioOutputEndpointRT,IUnknown)330 DECLARE_INTERFACE_(IAudioOutputEndpointRT,IUnknown)
331 {
332 BEGIN_INTERFACE
333
334 /* IUnknown methods */
335 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
336 STDMETHOD_(ULONG, AddRef)(THIS) PURE;
337 STDMETHOD_(ULONG, Release)(THIS) PURE;
338
339 /* IAudioOutputEndpointRT methods */
340 STDMETHOD_(UINT_PTR,GetOutputDataPointer)(THIS_ UINT32 u32FrameCount,AE_CURRENT_POSITION *pAeTimeStamp) PURE;
341 STDMETHOD(PulseEndpoint)(THIS) PURE;
342 STDMETHOD(ReleaseOutputDataPointer)(THIS_ const APO_CONNECTION_PROPERTY *pConnectionProperty) PURE;
343
344 END_INTERFACE
345 };
346 #ifdef COBJMACROS
347 #define IAudioOutputEndpointRT_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
348 #define IAudioOutputEndpointRT_AddRef(This) (This)->lpVtbl->AddRef(This)
349 #define IAudioOutputEndpointRT_Release(This) (This)->lpVtbl->Release(This)
350 #define IAudioOutputEndpointRT_GetOutputDataPointer(This,u32FrameCount,pAeTimeStamp) (This)->lpVtbl->GetOutputDataPointer(This,u32FrameCount,pAeTimeStamp)
351 #define IAudioOutputEndpointRT_PulseEndpoint() (This)->lpVtbl->PulseEndpoint(This)
352 #define IAudioOutputEndpointRT_ReleaseOutputDataPointer(This,pConnectionProperty) (This)->lpVtbl->ReleaseOutputDataPointer(This,pConnectionProperty)
353 #endif /*COBJMACROS*/
354
355 #endif /*(_WIN32_WINNT >= 0x0601)*/
356 #endif /*_INC_AUDIOENGINEENDPOINT*/
357