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 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 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 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 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 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 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 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