audioengineendpoint.h 17 KB

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