audioclient.h 70 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893
  1. /*** Autogenerated by WIDL 7.7 from include/audioclient.idl - Do not edit ***/
  2. #ifdef _WIN32
  3. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  4. #define __REQUIRED_RPCNDR_H_VERSION__ 475
  5. #endif
  6. #include <rpc.h>
  7. #include <rpcndr.h>
  8. #endif
  9. #ifndef COM_NO_WINDOWS_H
  10. #include <windows.h>
  11. #include <ole2.h>
  12. #endif
  13. #ifndef __audioclient_h__
  14. #define __audioclient_h__
  15. /* Forward declarations */
  16. #ifndef __IAudioClient_FWD_DEFINED__
  17. #define __IAudioClient_FWD_DEFINED__
  18. typedef interface IAudioClient IAudioClient;
  19. #ifdef __cplusplus
  20. interface IAudioClient;
  21. #endif /* __cplusplus */
  22. #endif
  23. #ifndef __IAudioClient2_FWD_DEFINED__
  24. #define __IAudioClient2_FWD_DEFINED__
  25. typedef interface IAudioClient2 IAudioClient2;
  26. #ifdef __cplusplus
  27. interface IAudioClient2;
  28. #endif /* __cplusplus */
  29. #endif
  30. #ifndef __IAudioClient3_FWD_DEFINED__
  31. #define __IAudioClient3_FWD_DEFINED__
  32. typedef interface IAudioClient3 IAudioClient3;
  33. #ifdef __cplusplus
  34. interface IAudioClient3;
  35. #endif /* __cplusplus */
  36. #endif
  37. #ifndef __IAudioRenderClient_FWD_DEFINED__
  38. #define __IAudioRenderClient_FWD_DEFINED__
  39. typedef interface IAudioRenderClient IAudioRenderClient;
  40. #ifdef __cplusplus
  41. interface IAudioRenderClient;
  42. #endif /* __cplusplus */
  43. #endif
  44. #ifndef __IAudioCaptureClient_FWD_DEFINED__
  45. #define __IAudioCaptureClient_FWD_DEFINED__
  46. typedef interface IAudioCaptureClient IAudioCaptureClient;
  47. #ifdef __cplusplus
  48. interface IAudioCaptureClient;
  49. #endif /* __cplusplus */
  50. #endif
  51. #ifndef __IAudioClock_FWD_DEFINED__
  52. #define __IAudioClock_FWD_DEFINED__
  53. typedef interface IAudioClock IAudioClock;
  54. #ifdef __cplusplus
  55. interface IAudioClock;
  56. #endif /* __cplusplus */
  57. #endif
  58. #ifndef __IAudioClock2_FWD_DEFINED__
  59. #define __IAudioClock2_FWD_DEFINED__
  60. typedef interface IAudioClock2 IAudioClock2;
  61. #ifdef __cplusplus
  62. interface IAudioClock2;
  63. #endif /* __cplusplus */
  64. #endif
  65. #ifndef __IAudioClockAdjustment_FWD_DEFINED__
  66. #define __IAudioClockAdjustment_FWD_DEFINED__
  67. typedef interface IAudioClockAdjustment IAudioClockAdjustment;
  68. #ifdef __cplusplus
  69. interface IAudioClockAdjustment;
  70. #endif /* __cplusplus */
  71. #endif
  72. #ifndef __ISimpleAudioVolume_FWD_DEFINED__
  73. #define __ISimpleAudioVolume_FWD_DEFINED__
  74. typedef interface ISimpleAudioVolume ISimpleAudioVolume;
  75. #ifdef __cplusplus
  76. interface ISimpleAudioVolume;
  77. #endif /* __cplusplus */
  78. #endif
  79. #ifndef __IAudioStreamVolume_FWD_DEFINED__
  80. #define __IAudioStreamVolume_FWD_DEFINED__
  81. typedef interface IAudioStreamVolume IAudioStreamVolume;
  82. #ifdef __cplusplus
  83. interface IAudioStreamVolume;
  84. #endif /* __cplusplus */
  85. #endif
  86. #ifndef __IAudioAmbisonicsControl_FWD_DEFINED__
  87. #define __IAudioAmbisonicsControl_FWD_DEFINED__
  88. typedef interface IAudioAmbisonicsControl IAudioAmbisonicsControl;
  89. #ifdef __cplusplus
  90. interface IAudioAmbisonicsControl;
  91. #endif /* __cplusplus */
  92. #endif
  93. #ifndef __IChannelAudioVolume_FWD_DEFINED__
  94. #define __IChannelAudioVolume_FWD_DEFINED__
  95. typedef interface IChannelAudioVolume IChannelAudioVolume;
  96. #ifdef __cplusplus
  97. interface IChannelAudioVolume;
  98. #endif /* __cplusplus */
  99. #endif
  100. /* Headers for imported files */
  101. #include <wtypes.h>
  102. #include <unknwn.h>
  103. #include <audiosessiontypes.h>
  104. #ifdef __cplusplus
  105. extern "C" {
  106. #endif
  107. #include <winapifamily.h>
  108. #if 0
  109. typedef struct WAVEFORMATEX {
  110. WORD wFormatTag;
  111. WORD nChannels;
  112. DWORD nSamplesPerSec;
  113. DWORD nAvgBytesPerSec;
  114. WORD nBlockAlign;
  115. WORD wBitsPerSample;
  116. WORD cbSize;
  117. } WAVEFORMATEX;
  118. typedef LONGLONG REFERENCE_TIME;
  119. #else
  120. #define _IKsControl_
  121. #include <mmreg.h>
  122. #include <ks.h>
  123. #include <ksmedia.h>
  124. #endif
  125. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  126. enum _AUDCLNT_BUFFERFLAGS {
  127. AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY = 0x1,
  128. AUDCLNT_BUFFERFLAGS_SILENT = 0x2,
  129. AUDCLNT_BUFFERFLAGS_TIMESTAMP_ERROR = 0x4
  130. };
  131. typedef enum AUDCLNT_STREAMOPTIONS {
  132. AUDCLNT_STREAMOPTIONS_NONE = 0x0,
  133. AUDCLNT_STREAMOPTIONS_RAW = 0x1,
  134. AUDCLNT_STREAMOPTIONS_MATCH_FORMAT = 0x2,
  135. AUDCLNT_STREAMOPTIONS_AMBISONICS = 0x4
  136. } AUDCLNT_STREAMOPTIONS;
  137. DEFINE_ENUM_FLAG_OPERATORS(AUDCLNT_STREAMOPTIONS);
  138. typedef enum AMBISONICS_TYPE {
  139. AMBISONICS_TYPE_FULL3D = 0x0
  140. } AMBISONICS_TYPE;
  141. typedef enum AMBISONICS_CHANNEL_ORDERING {
  142. AMBISONICS_CHANNEL_ORDERING_ACN = 0x0
  143. } AMBISONICS_CHANNEL_ORDERING;
  144. typedef enum AMBISONICS_NORMALIZATION {
  145. AMBISONICS_NORMALIZATION_SN3D = 0x0,
  146. AMBISONICS_NORMALIZATION_N3D = 0x1
  147. } AMBISONICS_NORMALIZATION;
  148. typedef struct AudioClientProperties {
  149. UINT32 cbSize;
  150. WINBOOL bIsOffload;
  151. AUDIO_STREAM_CATEGORY eCategory;
  152. AUDCLNT_STREAMOPTIONS Options;
  153. } AudioClientProperties;
  154. typedef struct AudioClient3ActivationParams {
  155. GUID tracingContextId;
  156. } AudioClient3ActivationParams;
  157. typedef struct AMBISONICS_PARAMS {
  158. UINT32 u32Size;
  159. UINT32 u32Version;
  160. AMBISONICS_TYPE u32Type;
  161. AMBISONICS_CHANNEL_ORDERING u32ChannelOrdering;
  162. AMBISONICS_NORMALIZATION u32Normalization;
  163. UINT32 u32Order;
  164. UINT32 u32NumChannels;
  165. UINT32 *pu32ChannelMap;
  166. } AMBISONICS_PARAMS;
  167. /*****************************************************************************
  168. * IAudioClient interface
  169. */
  170. #ifndef __IAudioClient_INTERFACE_DEFINED__
  171. #define __IAudioClient_INTERFACE_DEFINED__
  172. DEFINE_GUID(IID_IAudioClient, 0x1cb9ad4c, 0xdbfa, 0x4c32, 0xb1,0x78, 0xc2,0xf5,0x68,0xa7,0x03,0xb2);
  173. #if defined(__cplusplus) && !defined(CINTERFACE)
  174. MIDL_INTERFACE("1cb9ad4c-dbfa-4c32-b178-c2f568a703b2")
  175. IAudioClient : public IUnknown
  176. {
  177. virtual HRESULT STDMETHODCALLTYPE Initialize(
  178. AUDCLNT_SHAREMODE ShareMode,
  179. DWORD StreamFlags,
  180. REFERENCE_TIME hnsBufferDuration,
  181. REFERENCE_TIME hnsPeriodicity,
  182. const WAVEFORMATEX *pFormat,
  183. LPCGUID AudioSessionGuid) = 0;
  184. virtual HRESULT STDMETHODCALLTYPE GetBufferSize(
  185. UINT32 *pNumBufferFrames) = 0;
  186. virtual HRESULT STDMETHODCALLTYPE GetStreamLatency(
  187. REFERENCE_TIME *phnsLatency) = 0;
  188. virtual HRESULT STDMETHODCALLTYPE GetCurrentPadding(
  189. UINT32 *pNumPaddingFrames) = 0;
  190. virtual HRESULT STDMETHODCALLTYPE IsFormatSupported(
  191. AUDCLNT_SHAREMODE ShareMode,
  192. const WAVEFORMATEX *pFormat,
  193. WAVEFORMATEX **ppClosestMatch) = 0;
  194. virtual HRESULT STDMETHODCALLTYPE GetMixFormat(
  195. WAVEFORMATEX **ppDeviceFormat) = 0;
  196. virtual HRESULT STDMETHODCALLTYPE GetDevicePeriod(
  197. REFERENCE_TIME *phnsDefaultDevicePeriod,
  198. REFERENCE_TIME *phnsMinimumDevicePeriod) = 0;
  199. virtual HRESULT STDMETHODCALLTYPE Start(
  200. ) = 0;
  201. virtual HRESULT STDMETHODCALLTYPE Stop(
  202. ) = 0;
  203. virtual HRESULT STDMETHODCALLTYPE Reset(
  204. ) = 0;
  205. virtual HRESULT STDMETHODCALLTYPE SetEventHandle(
  206. HANDLE eventHandle) = 0;
  207. virtual HRESULT STDMETHODCALLTYPE GetService(
  208. REFIID riid,
  209. void **ppv) = 0;
  210. };
  211. #ifdef __CRT_UUID_DECL
  212. __CRT_UUID_DECL(IAudioClient, 0x1cb9ad4c, 0xdbfa, 0x4c32, 0xb1,0x78, 0xc2,0xf5,0x68,0xa7,0x03,0xb2)
  213. #endif
  214. #else
  215. typedef struct IAudioClientVtbl {
  216. BEGIN_INTERFACE
  217. /*** IUnknown methods ***/
  218. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  219. IAudioClient *This,
  220. REFIID riid,
  221. void **ppvObject);
  222. ULONG (STDMETHODCALLTYPE *AddRef)(
  223. IAudioClient *This);
  224. ULONG (STDMETHODCALLTYPE *Release)(
  225. IAudioClient *This);
  226. /*** IAudioClient methods ***/
  227. HRESULT (STDMETHODCALLTYPE *Initialize)(
  228. IAudioClient *This,
  229. AUDCLNT_SHAREMODE ShareMode,
  230. DWORD StreamFlags,
  231. REFERENCE_TIME hnsBufferDuration,
  232. REFERENCE_TIME hnsPeriodicity,
  233. const WAVEFORMATEX *pFormat,
  234. LPCGUID AudioSessionGuid);
  235. HRESULT (STDMETHODCALLTYPE *GetBufferSize)(
  236. IAudioClient *This,
  237. UINT32 *pNumBufferFrames);
  238. HRESULT (STDMETHODCALLTYPE *GetStreamLatency)(
  239. IAudioClient *This,
  240. REFERENCE_TIME *phnsLatency);
  241. HRESULT (STDMETHODCALLTYPE *GetCurrentPadding)(
  242. IAudioClient *This,
  243. UINT32 *pNumPaddingFrames);
  244. HRESULT (STDMETHODCALLTYPE *IsFormatSupported)(
  245. IAudioClient *This,
  246. AUDCLNT_SHAREMODE ShareMode,
  247. const WAVEFORMATEX *pFormat,
  248. WAVEFORMATEX **ppClosestMatch);
  249. HRESULT (STDMETHODCALLTYPE *GetMixFormat)(
  250. IAudioClient *This,
  251. WAVEFORMATEX **ppDeviceFormat);
  252. HRESULT (STDMETHODCALLTYPE *GetDevicePeriod)(
  253. IAudioClient *This,
  254. REFERENCE_TIME *phnsDefaultDevicePeriod,
  255. REFERENCE_TIME *phnsMinimumDevicePeriod);
  256. HRESULT (STDMETHODCALLTYPE *Start)(
  257. IAudioClient *This);
  258. HRESULT (STDMETHODCALLTYPE *Stop)(
  259. IAudioClient *This);
  260. HRESULT (STDMETHODCALLTYPE *Reset)(
  261. IAudioClient *This);
  262. HRESULT (STDMETHODCALLTYPE *SetEventHandle)(
  263. IAudioClient *This,
  264. HANDLE eventHandle);
  265. HRESULT (STDMETHODCALLTYPE *GetService)(
  266. IAudioClient *This,
  267. REFIID riid,
  268. void **ppv);
  269. END_INTERFACE
  270. } IAudioClientVtbl;
  271. interface IAudioClient {
  272. CONST_VTBL IAudioClientVtbl* lpVtbl;
  273. };
  274. #ifdef COBJMACROS
  275. #ifndef WIDL_C_INLINE_WRAPPERS
  276. /*** IUnknown methods ***/
  277. #define IAudioClient_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  278. #define IAudioClient_AddRef(This) (This)->lpVtbl->AddRef(This)
  279. #define IAudioClient_Release(This) (This)->lpVtbl->Release(This)
  280. /*** IAudioClient methods ***/
  281. #define IAudioClient_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) (This)->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid)
  282. #define IAudioClient_GetBufferSize(This,pNumBufferFrames) (This)->lpVtbl->GetBufferSize(This,pNumBufferFrames)
  283. #define IAudioClient_GetStreamLatency(This,phnsLatency) (This)->lpVtbl->GetStreamLatency(This,phnsLatency)
  284. #define IAudioClient_GetCurrentPadding(This,pNumPaddingFrames) (This)->lpVtbl->GetCurrentPadding(This,pNumPaddingFrames)
  285. #define IAudioClient_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) (This)->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch)
  286. #define IAudioClient_GetMixFormat(This,ppDeviceFormat) (This)->lpVtbl->GetMixFormat(This,ppDeviceFormat)
  287. #define IAudioClient_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) (This)->lpVtbl->GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod)
  288. #define IAudioClient_Start(This) (This)->lpVtbl->Start(This)
  289. #define IAudioClient_Stop(This) (This)->lpVtbl->Stop(This)
  290. #define IAudioClient_Reset(This) (This)->lpVtbl->Reset(This)
  291. #define IAudioClient_SetEventHandle(This,eventHandle) (This)->lpVtbl->SetEventHandle(This,eventHandle)
  292. #define IAudioClient_GetService(This,riid,ppv) (This)->lpVtbl->GetService(This,riid,ppv)
  293. #else
  294. /*** IUnknown methods ***/
  295. static FORCEINLINE HRESULT IAudioClient_QueryInterface(IAudioClient* This,REFIID riid,void **ppvObject) {
  296. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  297. }
  298. static FORCEINLINE ULONG IAudioClient_AddRef(IAudioClient* This) {
  299. return This->lpVtbl->AddRef(This);
  300. }
  301. static FORCEINLINE ULONG IAudioClient_Release(IAudioClient* This) {
  302. return This->lpVtbl->Release(This);
  303. }
  304. /*** IAudioClient methods ***/
  305. static FORCEINLINE HRESULT IAudioClient_Initialize(IAudioClient* This,AUDCLNT_SHAREMODE ShareMode,DWORD StreamFlags,REFERENCE_TIME hnsBufferDuration,REFERENCE_TIME hnsPeriodicity,const WAVEFORMATEX *pFormat,LPCGUID AudioSessionGuid) {
  306. return This->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid);
  307. }
  308. static FORCEINLINE HRESULT IAudioClient_GetBufferSize(IAudioClient* This,UINT32 *pNumBufferFrames) {
  309. return This->lpVtbl->GetBufferSize(This,pNumBufferFrames);
  310. }
  311. static FORCEINLINE HRESULT IAudioClient_GetStreamLatency(IAudioClient* This,REFERENCE_TIME *phnsLatency) {
  312. return This->lpVtbl->GetStreamLatency(This,phnsLatency);
  313. }
  314. static FORCEINLINE HRESULT IAudioClient_GetCurrentPadding(IAudioClient* This,UINT32 *pNumPaddingFrames) {
  315. return This->lpVtbl->GetCurrentPadding(This,pNumPaddingFrames);
  316. }
  317. static FORCEINLINE HRESULT IAudioClient_IsFormatSupported(IAudioClient* This,AUDCLNT_SHAREMODE ShareMode,const WAVEFORMATEX *pFormat,WAVEFORMATEX **ppClosestMatch) {
  318. return This->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch);
  319. }
  320. static FORCEINLINE HRESULT IAudioClient_GetMixFormat(IAudioClient* This,WAVEFORMATEX **ppDeviceFormat) {
  321. return This->lpVtbl->GetMixFormat(This,ppDeviceFormat);
  322. }
  323. static FORCEINLINE HRESULT IAudioClient_GetDevicePeriod(IAudioClient* This,REFERENCE_TIME *phnsDefaultDevicePeriod,REFERENCE_TIME *phnsMinimumDevicePeriod) {
  324. return This->lpVtbl->GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod);
  325. }
  326. static FORCEINLINE HRESULT IAudioClient_Start(IAudioClient* This) {
  327. return This->lpVtbl->Start(This);
  328. }
  329. static FORCEINLINE HRESULT IAudioClient_Stop(IAudioClient* This) {
  330. return This->lpVtbl->Stop(This);
  331. }
  332. static FORCEINLINE HRESULT IAudioClient_Reset(IAudioClient* This) {
  333. return This->lpVtbl->Reset(This);
  334. }
  335. static FORCEINLINE HRESULT IAudioClient_SetEventHandle(IAudioClient* This,HANDLE eventHandle) {
  336. return This->lpVtbl->SetEventHandle(This,eventHandle);
  337. }
  338. static FORCEINLINE HRESULT IAudioClient_GetService(IAudioClient* This,REFIID riid,void **ppv) {
  339. return This->lpVtbl->GetService(This,riid,ppv);
  340. }
  341. #endif
  342. #endif
  343. #endif
  344. #endif /* __IAudioClient_INTERFACE_DEFINED__ */
  345. /*****************************************************************************
  346. * IAudioClient2 interface
  347. */
  348. #ifndef __IAudioClient2_INTERFACE_DEFINED__
  349. #define __IAudioClient2_INTERFACE_DEFINED__
  350. DEFINE_GUID(IID_IAudioClient2, 0x726778cd, 0xf60a, 0x4eda, 0x82,0xde, 0xe4,0x76,0x10,0xcd,0x78,0xaa);
  351. #if defined(__cplusplus) && !defined(CINTERFACE)
  352. MIDL_INTERFACE("726778cd-f60a-4eda-82de-e47610cd78aa")
  353. IAudioClient2 : public IAudioClient
  354. {
  355. virtual HRESULT STDMETHODCALLTYPE IsOffloadCapable(
  356. AUDIO_STREAM_CATEGORY Category,
  357. WINBOOL *pbOffloadCapable) = 0;
  358. virtual HRESULT STDMETHODCALLTYPE SetClientProperties(
  359. const AudioClientProperties *pProperties) = 0;
  360. virtual HRESULT STDMETHODCALLTYPE GetBufferSizeLimits(
  361. const WAVEFORMATEX *pFormat,
  362. WINBOOL bEventDriven,
  363. REFERENCE_TIME *phnsMinBufferDuration,
  364. REFERENCE_TIME *phnsMaxBufferDuration) = 0;
  365. };
  366. #ifdef __CRT_UUID_DECL
  367. __CRT_UUID_DECL(IAudioClient2, 0x726778cd, 0xf60a, 0x4eda, 0x82,0xde, 0xe4,0x76,0x10,0xcd,0x78,0xaa)
  368. #endif
  369. #else
  370. typedef struct IAudioClient2Vtbl {
  371. BEGIN_INTERFACE
  372. /*** IUnknown methods ***/
  373. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  374. IAudioClient2 *This,
  375. REFIID riid,
  376. void **ppvObject);
  377. ULONG (STDMETHODCALLTYPE *AddRef)(
  378. IAudioClient2 *This);
  379. ULONG (STDMETHODCALLTYPE *Release)(
  380. IAudioClient2 *This);
  381. /*** IAudioClient methods ***/
  382. HRESULT (STDMETHODCALLTYPE *Initialize)(
  383. IAudioClient2 *This,
  384. AUDCLNT_SHAREMODE ShareMode,
  385. DWORD StreamFlags,
  386. REFERENCE_TIME hnsBufferDuration,
  387. REFERENCE_TIME hnsPeriodicity,
  388. const WAVEFORMATEX *pFormat,
  389. LPCGUID AudioSessionGuid);
  390. HRESULT (STDMETHODCALLTYPE *GetBufferSize)(
  391. IAudioClient2 *This,
  392. UINT32 *pNumBufferFrames);
  393. HRESULT (STDMETHODCALLTYPE *GetStreamLatency)(
  394. IAudioClient2 *This,
  395. REFERENCE_TIME *phnsLatency);
  396. HRESULT (STDMETHODCALLTYPE *GetCurrentPadding)(
  397. IAudioClient2 *This,
  398. UINT32 *pNumPaddingFrames);
  399. HRESULT (STDMETHODCALLTYPE *IsFormatSupported)(
  400. IAudioClient2 *This,
  401. AUDCLNT_SHAREMODE ShareMode,
  402. const WAVEFORMATEX *pFormat,
  403. WAVEFORMATEX **ppClosestMatch);
  404. HRESULT (STDMETHODCALLTYPE *GetMixFormat)(
  405. IAudioClient2 *This,
  406. WAVEFORMATEX **ppDeviceFormat);
  407. HRESULT (STDMETHODCALLTYPE *GetDevicePeriod)(
  408. IAudioClient2 *This,
  409. REFERENCE_TIME *phnsDefaultDevicePeriod,
  410. REFERENCE_TIME *phnsMinimumDevicePeriod);
  411. HRESULT (STDMETHODCALLTYPE *Start)(
  412. IAudioClient2 *This);
  413. HRESULT (STDMETHODCALLTYPE *Stop)(
  414. IAudioClient2 *This);
  415. HRESULT (STDMETHODCALLTYPE *Reset)(
  416. IAudioClient2 *This);
  417. HRESULT (STDMETHODCALLTYPE *SetEventHandle)(
  418. IAudioClient2 *This,
  419. HANDLE eventHandle);
  420. HRESULT (STDMETHODCALLTYPE *GetService)(
  421. IAudioClient2 *This,
  422. REFIID riid,
  423. void **ppv);
  424. /*** IAudioClient2 methods ***/
  425. HRESULT (STDMETHODCALLTYPE *IsOffloadCapable)(
  426. IAudioClient2 *This,
  427. AUDIO_STREAM_CATEGORY Category,
  428. WINBOOL *pbOffloadCapable);
  429. HRESULT (STDMETHODCALLTYPE *SetClientProperties)(
  430. IAudioClient2 *This,
  431. const AudioClientProperties *pProperties);
  432. HRESULT (STDMETHODCALLTYPE *GetBufferSizeLimits)(
  433. IAudioClient2 *This,
  434. const WAVEFORMATEX *pFormat,
  435. WINBOOL bEventDriven,
  436. REFERENCE_TIME *phnsMinBufferDuration,
  437. REFERENCE_TIME *phnsMaxBufferDuration);
  438. END_INTERFACE
  439. } IAudioClient2Vtbl;
  440. interface IAudioClient2 {
  441. CONST_VTBL IAudioClient2Vtbl* lpVtbl;
  442. };
  443. #ifdef COBJMACROS
  444. #ifndef WIDL_C_INLINE_WRAPPERS
  445. /*** IUnknown methods ***/
  446. #define IAudioClient2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  447. #define IAudioClient2_AddRef(This) (This)->lpVtbl->AddRef(This)
  448. #define IAudioClient2_Release(This) (This)->lpVtbl->Release(This)
  449. /*** IAudioClient methods ***/
  450. #define IAudioClient2_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) (This)->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid)
  451. #define IAudioClient2_GetBufferSize(This,pNumBufferFrames) (This)->lpVtbl->GetBufferSize(This,pNumBufferFrames)
  452. #define IAudioClient2_GetStreamLatency(This,phnsLatency) (This)->lpVtbl->GetStreamLatency(This,phnsLatency)
  453. #define IAudioClient2_GetCurrentPadding(This,pNumPaddingFrames) (This)->lpVtbl->GetCurrentPadding(This,pNumPaddingFrames)
  454. #define IAudioClient2_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) (This)->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch)
  455. #define IAudioClient2_GetMixFormat(This,ppDeviceFormat) (This)->lpVtbl->GetMixFormat(This,ppDeviceFormat)
  456. #define IAudioClient2_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) (This)->lpVtbl->GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod)
  457. #define IAudioClient2_Start(This) (This)->lpVtbl->Start(This)
  458. #define IAudioClient2_Stop(This) (This)->lpVtbl->Stop(This)
  459. #define IAudioClient2_Reset(This) (This)->lpVtbl->Reset(This)
  460. #define IAudioClient2_SetEventHandle(This,eventHandle) (This)->lpVtbl->SetEventHandle(This,eventHandle)
  461. #define IAudioClient2_GetService(This,riid,ppv) (This)->lpVtbl->GetService(This,riid,ppv)
  462. /*** IAudioClient2 methods ***/
  463. #define IAudioClient2_IsOffloadCapable(This,Category,pbOffloadCapable) (This)->lpVtbl->IsOffloadCapable(This,Category,pbOffloadCapable)
  464. #define IAudioClient2_SetClientProperties(This,pProperties) (This)->lpVtbl->SetClientProperties(This,pProperties)
  465. #define IAudioClient2_GetBufferSizeLimits(This,pFormat,bEventDriven,phnsMinBufferDuration,phnsMaxBufferDuration) (This)->lpVtbl->GetBufferSizeLimits(This,pFormat,bEventDriven,phnsMinBufferDuration,phnsMaxBufferDuration)
  466. #else
  467. /*** IUnknown methods ***/
  468. static FORCEINLINE HRESULT IAudioClient2_QueryInterface(IAudioClient2* This,REFIID riid,void **ppvObject) {
  469. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  470. }
  471. static FORCEINLINE ULONG IAudioClient2_AddRef(IAudioClient2* This) {
  472. return This->lpVtbl->AddRef(This);
  473. }
  474. static FORCEINLINE ULONG IAudioClient2_Release(IAudioClient2* This) {
  475. return This->lpVtbl->Release(This);
  476. }
  477. /*** IAudioClient methods ***/
  478. static FORCEINLINE HRESULT IAudioClient2_Initialize(IAudioClient2* This,AUDCLNT_SHAREMODE ShareMode,DWORD StreamFlags,REFERENCE_TIME hnsBufferDuration,REFERENCE_TIME hnsPeriodicity,const WAVEFORMATEX *pFormat,LPCGUID AudioSessionGuid) {
  479. return This->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid);
  480. }
  481. static FORCEINLINE HRESULT IAudioClient2_GetBufferSize(IAudioClient2* This,UINT32 *pNumBufferFrames) {
  482. return This->lpVtbl->GetBufferSize(This,pNumBufferFrames);
  483. }
  484. static FORCEINLINE HRESULT IAudioClient2_GetStreamLatency(IAudioClient2* This,REFERENCE_TIME *phnsLatency) {
  485. return This->lpVtbl->GetStreamLatency(This,phnsLatency);
  486. }
  487. static FORCEINLINE HRESULT IAudioClient2_GetCurrentPadding(IAudioClient2* This,UINT32 *pNumPaddingFrames) {
  488. return This->lpVtbl->GetCurrentPadding(This,pNumPaddingFrames);
  489. }
  490. static FORCEINLINE HRESULT IAudioClient2_IsFormatSupported(IAudioClient2* This,AUDCLNT_SHAREMODE ShareMode,const WAVEFORMATEX *pFormat,WAVEFORMATEX **ppClosestMatch) {
  491. return This->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch);
  492. }
  493. static FORCEINLINE HRESULT IAudioClient2_GetMixFormat(IAudioClient2* This,WAVEFORMATEX **ppDeviceFormat) {
  494. return This->lpVtbl->GetMixFormat(This,ppDeviceFormat);
  495. }
  496. static FORCEINLINE HRESULT IAudioClient2_GetDevicePeriod(IAudioClient2* This,REFERENCE_TIME *phnsDefaultDevicePeriod,REFERENCE_TIME *phnsMinimumDevicePeriod) {
  497. return This->lpVtbl->GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod);
  498. }
  499. static FORCEINLINE HRESULT IAudioClient2_Start(IAudioClient2* This) {
  500. return This->lpVtbl->Start(This);
  501. }
  502. static FORCEINLINE HRESULT IAudioClient2_Stop(IAudioClient2* This) {
  503. return This->lpVtbl->Stop(This);
  504. }
  505. static FORCEINLINE HRESULT IAudioClient2_Reset(IAudioClient2* This) {
  506. return This->lpVtbl->Reset(This);
  507. }
  508. static FORCEINLINE HRESULT IAudioClient2_SetEventHandle(IAudioClient2* This,HANDLE eventHandle) {
  509. return This->lpVtbl->SetEventHandle(This,eventHandle);
  510. }
  511. static FORCEINLINE HRESULT IAudioClient2_GetService(IAudioClient2* This,REFIID riid,void **ppv) {
  512. return This->lpVtbl->GetService(This,riid,ppv);
  513. }
  514. /*** IAudioClient2 methods ***/
  515. static FORCEINLINE HRESULT IAudioClient2_IsOffloadCapable(IAudioClient2* This,AUDIO_STREAM_CATEGORY Category,WINBOOL *pbOffloadCapable) {
  516. return This->lpVtbl->IsOffloadCapable(This,Category,pbOffloadCapable);
  517. }
  518. static FORCEINLINE HRESULT IAudioClient2_SetClientProperties(IAudioClient2* This,const AudioClientProperties *pProperties) {
  519. return This->lpVtbl->SetClientProperties(This,pProperties);
  520. }
  521. static FORCEINLINE HRESULT IAudioClient2_GetBufferSizeLimits(IAudioClient2* This,const WAVEFORMATEX *pFormat,WINBOOL bEventDriven,REFERENCE_TIME *phnsMinBufferDuration,REFERENCE_TIME *phnsMaxBufferDuration) {
  522. return This->lpVtbl->GetBufferSizeLimits(This,pFormat,bEventDriven,phnsMinBufferDuration,phnsMaxBufferDuration);
  523. }
  524. #endif
  525. #endif
  526. #endif
  527. #endif /* __IAudioClient2_INTERFACE_DEFINED__ */
  528. /*****************************************************************************
  529. * IAudioClient3 interface
  530. */
  531. #ifndef __IAudioClient3_INTERFACE_DEFINED__
  532. #define __IAudioClient3_INTERFACE_DEFINED__
  533. DEFINE_GUID(IID_IAudioClient3, 0x7ed4ee07, 0x8e67, 0x4cd4, 0x8c,0x1a, 0x2b,0x7a,0x59,0x87,0xad,0x42);
  534. #if defined(__cplusplus) && !defined(CINTERFACE)
  535. MIDL_INTERFACE("7ed4ee07-8e67-4cd4-8c1a-2b7a5987ad42")
  536. IAudioClient3 : public IAudioClient2
  537. {
  538. virtual HRESULT STDMETHODCALLTYPE GetSharedModeEnginePeriod(
  539. const WAVEFORMATEX *pFormat,
  540. UINT32 *pDefaultPeriodInFrames,
  541. UINT32 *pFundamentalPeriodInFrames,
  542. UINT32 *pMinPeriodInFrames,
  543. UINT32 *pMaxPeriodInFrames) = 0;
  544. virtual HRESULT STDMETHODCALLTYPE GetCurrentSharedModeEnginePeriod(
  545. WAVEFORMATEX **ppFormat,
  546. UINT32 *pCurrentPeriodInFrames) = 0;
  547. virtual HRESULT STDMETHODCALLTYPE InitializeSharedAudioStream(
  548. DWORD StreamFlags,
  549. UINT32 PeriodInFrames,
  550. const WAVEFORMATEX *pFormat,
  551. LPCGUID AudioSessionGuid) = 0;
  552. };
  553. #ifdef __CRT_UUID_DECL
  554. __CRT_UUID_DECL(IAudioClient3, 0x7ed4ee07, 0x8e67, 0x4cd4, 0x8c,0x1a, 0x2b,0x7a,0x59,0x87,0xad,0x42)
  555. #endif
  556. #else
  557. typedef struct IAudioClient3Vtbl {
  558. BEGIN_INTERFACE
  559. /*** IUnknown methods ***/
  560. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  561. IAudioClient3 *This,
  562. REFIID riid,
  563. void **ppvObject);
  564. ULONG (STDMETHODCALLTYPE *AddRef)(
  565. IAudioClient3 *This);
  566. ULONG (STDMETHODCALLTYPE *Release)(
  567. IAudioClient3 *This);
  568. /*** IAudioClient methods ***/
  569. HRESULT (STDMETHODCALLTYPE *Initialize)(
  570. IAudioClient3 *This,
  571. AUDCLNT_SHAREMODE ShareMode,
  572. DWORD StreamFlags,
  573. REFERENCE_TIME hnsBufferDuration,
  574. REFERENCE_TIME hnsPeriodicity,
  575. const WAVEFORMATEX *pFormat,
  576. LPCGUID AudioSessionGuid);
  577. HRESULT (STDMETHODCALLTYPE *GetBufferSize)(
  578. IAudioClient3 *This,
  579. UINT32 *pNumBufferFrames);
  580. HRESULT (STDMETHODCALLTYPE *GetStreamLatency)(
  581. IAudioClient3 *This,
  582. REFERENCE_TIME *phnsLatency);
  583. HRESULT (STDMETHODCALLTYPE *GetCurrentPadding)(
  584. IAudioClient3 *This,
  585. UINT32 *pNumPaddingFrames);
  586. HRESULT (STDMETHODCALLTYPE *IsFormatSupported)(
  587. IAudioClient3 *This,
  588. AUDCLNT_SHAREMODE ShareMode,
  589. const WAVEFORMATEX *pFormat,
  590. WAVEFORMATEX **ppClosestMatch);
  591. HRESULT (STDMETHODCALLTYPE *GetMixFormat)(
  592. IAudioClient3 *This,
  593. WAVEFORMATEX **ppDeviceFormat);
  594. HRESULT (STDMETHODCALLTYPE *GetDevicePeriod)(
  595. IAudioClient3 *This,
  596. REFERENCE_TIME *phnsDefaultDevicePeriod,
  597. REFERENCE_TIME *phnsMinimumDevicePeriod);
  598. HRESULT (STDMETHODCALLTYPE *Start)(
  599. IAudioClient3 *This);
  600. HRESULT (STDMETHODCALLTYPE *Stop)(
  601. IAudioClient3 *This);
  602. HRESULT (STDMETHODCALLTYPE *Reset)(
  603. IAudioClient3 *This);
  604. HRESULT (STDMETHODCALLTYPE *SetEventHandle)(
  605. IAudioClient3 *This,
  606. HANDLE eventHandle);
  607. HRESULT (STDMETHODCALLTYPE *GetService)(
  608. IAudioClient3 *This,
  609. REFIID riid,
  610. void **ppv);
  611. /*** IAudioClient2 methods ***/
  612. HRESULT (STDMETHODCALLTYPE *IsOffloadCapable)(
  613. IAudioClient3 *This,
  614. AUDIO_STREAM_CATEGORY Category,
  615. WINBOOL *pbOffloadCapable);
  616. HRESULT (STDMETHODCALLTYPE *SetClientProperties)(
  617. IAudioClient3 *This,
  618. const AudioClientProperties *pProperties);
  619. HRESULT (STDMETHODCALLTYPE *GetBufferSizeLimits)(
  620. IAudioClient3 *This,
  621. const WAVEFORMATEX *pFormat,
  622. WINBOOL bEventDriven,
  623. REFERENCE_TIME *phnsMinBufferDuration,
  624. REFERENCE_TIME *phnsMaxBufferDuration);
  625. /*** IAudioClient3 methods ***/
  626. HRESULT (STDMETHODCALLTYPE *GetSharedModeEnginePeriod)(
  627. IAudioClient3 *This,
  628. const WAVEFORMATEX *pFormat,
  629. UINT32 *pDefaultPeriodInFrames,
  630. UINT32 *pFundamentalPeriodInFrames,
  631. UINT32 *pMinPeriodInFrames,
  632. UINT32 *pMaxPeriodInFrames);
  633. HRESULT (STDMETHODCALLTYPE *GetCurrentSharedModeEnginePeriod)(
  634. IAudioClient3 *This,
  635. WAVEFORMATEX **ppFormat,
  636. UINT32 *pCurrentPeriodInFrames);
  637. HRESULT (STDMETHODCALLTYPE *InitializeSharedAudioStream)(
  638. IAudioClient3 *This,
  639. DWORD StreamFlags,
  640. UINT32 PeriodInFrames,
  641. const WAVEFORMATEX *pFormat,
  642. LPCGUID AudioSessionGuid);
  643. END_INTERFACE
  644. } IAudioClient3Vtbl;
  645. interface IAudioClient3 {
  646. CONST_VTBL IAudioClient3Vtbl* lpVtbl;
  647. };
  648. #ifdef COBJMACROS
  649. #ifndef WIDL_C_INLINE_WRAPPERS
  650. /*** IUnknown methods ***/
  651. #define IAudioClient3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  652. #define IAudioClient3_AddRef(This) (This)->lpVtbl->AddRef(This)
  653. #define IAudioClient3_Release(This) (This)->lpVtbl->Release(This)
  654. /*** IAudioClient methods ***/
  655. #define IAudioClient3_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) (This)->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid)
  656. #define IAudioClient3_GetBufferSize(This,pNumBufferFrames) (This)->lpVtbl->GetBufferSize(This,pNumBufferFrames)
  657. #define IAudioClient3_GetStreamLatency(This,phnsLatency) (This)->lpVtbl->GetStreamLatency(This,phnsLatency)
  658. #define IAudioClient3_GetCurrentPadding(This,pNumPaddingFrames) (This)->lpVtbl->GetCurrentPadding(This,pNumPaddingFrames)
  659. #define IAudioClient3_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) (This)->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch)
  660. #define IAudioClient3_GetMixFormat(This,ppDeviceFormat) (This)->lpVtbl->GetMixFormat(This,ppDeviceFormat)
  661. #define IAudioClient3_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) (This)->lpVtbl->GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod)
  662. #define IAudioClient3_Start(This) (This)->lpVtbl->Start(This)
  663. #define IAudioClient3_Stop(This) (This)->lpVtbl->Stop(This)
  664. #define IAudioClient3_Reset(This) (This)->lpVtbl->Reset(This)
  665. #define IAudioClient3_SetEventHandle(This,eventHandle) (This)->lpVtbl->SetEventHandle(This,eventHandle)
  666. #define IAudioClient3_GetService(This,riid,ppv) (This)->lpVtbl->GetService(This,riid,ppv)
  667. /*** IAudioClient2 methods ***/
  668. #define IAudioClient3_IsOffloadCapable(This,Category,pbOffloadCapable) (This)->lpVtbl->IsOffloadCapable(This,Category,pbOffloadCapable)
  669. #define IAudioClient3_SetClientProperties(This,pProperties) (This)->lpVtbl->SetClientProperties(This,pProperties)
  670. #define IAudioClient3_GetBufferSizeLimits(This,pFormat,bEventDriven,phnsMinBufferDuration,phnsMaxBufferDuration) (This)->lpVtbl->GetBufferSizeLimits(This,pFormat,bEventDriven,phnsMinBufferDuration,phnsMaxBufferDuration)
  671. /*** IAudioClient3 methods ***/
  672. #define IAudioClient3_GetSharedModeEnginePeriod(This,pFormat,pDefaultPeriodInFrames,pFundamentalPeriodInFrames,pMinPeriodInFrames,pMaxPeriodInFrames) (This)->lpVtbl->GetSharedModeEnginePeriod(This,pFormat,pDefaultPeriodInFrames,pFundamentalPeriodInFrames,pMinPeriodInFrames,pMaxPeriodInFrames)
  673. #define IAudioClient3_GetCurrentSharedModeEnginePeriod(This,ppFormat,pCurrentPeriodInFrames) (This)->lpVtbl->GetCurrentSharedModeEnginePeriod(This,ppFormat,pCurrentPeriodInFrames)
  674. #define IAudioClient3_InitializeSharedAudioStream(This,StreamFlags,PeriodInFrames,pFormat,AudioSessionGuid) (This)->lpVtbl->InitializeSharedAudioStream(This,StreamFlags,PeriodInFrames,pFormat,AudioSessionGuid)
  675. #else
  676. /*** IUnknown methods ***/
  677. static FORCEINLINE HRESULT IAudioClient3_QueryInterface(IAudioClient3* This,REFIID riid,void **ppvObject) {
  678. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  679. }
  680. static FORCEINLINE ULONG IAudioClient3_AddRef(IAudioClient3* This) {
  681. return This->lpVtbl->AddRef(This);
  682. }
  683. static FORCEINLINE ULONG IAudioClient3_Release(IAudioClient3* This) {
  684. return This->lpVtbl->Release(This);
  685. }
  686. /*** IAudioClient methods ***/
  687. static FORCEINLINE HRESULT IAudioClient3_Initialize(IAudioClient3* This,AUDCLNT_SHAREMODE ShareMode,DWORD StreamFlags,REFERENCE_TIME hnsBufferDuration,REFERENCE_TIME hnsPeriodicity,const WAVEFORMATEX *pFormat,LPCGUID AudioSessionGuid) {
  688. return This->lpVtbl->Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid);
  689. }
  690. static FORCEINLINE HRESULT IAudioClient3_GetBufferSize(IAudioClient3* This,UINT32 *pNumBufferFrames) {
  691. return This->lpVtbl->GetBufferSize(This,pNumBufferFrames);
  692. }
  693. static FORCEINLINE HRESULT IAudioClient3_GetStreamLatency(IAudioClient3* This,REFERENCE_TIME *phnsLatency) {
  694. return This->lpVtbl->GetStreamLatency(This,phnsLatency);
  695. }
  696. static FORCEINLINE HRESULT IAudioClient3_GetCurrentPadding(IAudioClient3* This,UINT32 *pNumPaddingFrames) {
  697. return This->lpVtbl->GetCurrentPadding(This,pNumPaddingFrames);
  698. }
  699. static FORCEINLINE HRESULT IAudioClient3_IsFormatSupported(IAudioClient3* This,AUDCLNT_SHAREMODE ShareMode,const WAVEFORMATEX *pFormat,WAVEFORMATEX **ppClosestMatch) {
  700. return This->lpVtbl->IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch);
  701. }
  702. static FORCEINLINE HRESULT IAudioClient3_GetMixFormat(IAudioClient3* This,WAVEFORMATEX **ppDeviceFormat) {
  703. return This->lpVtbl->GetMixFormat(This,ppDeviceFormat);
  704. }
  705. static FORCEINLINE HRESULT IAudioClient3_GetDevicePeriod(IAudioClient3* This,REFERENCE_TIME *phnsDefaultDevicePeriod,REFERENCE_TIME *phnsMinimumDevicePeriod) {
  706. return This->lpVtbl->GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod);
  707. }
  708. static FORCEINLINE HRESULT IAudioClient3_Start(IAudioClient3* This) {
  709. return This->lpVtbl->Start(This);
  710. }
  711. static FORCEINLINE HRESULT IAudioClient3_Stop(IAudioClient3* This) {
  712. return This->lpVtbl->Stop(This);
  713. }
  714. static FORCEINLINE HRESULT IAudioClient3_Reset(IAudioClient3* This) {
  715. return This->lpVtbl->Reset(This);
  716. }
  717. static FORCEINLINE HRESULT IAudioClient3_SetEventHandle(IAudioClient3* This,HANDLE eventHandle) {
  718. return This->lpVtbl->SetEventHandle(This,eventHandle);
  719. }
  720. static FORCEINLINE HRESULT IAudioClient3_GetService(IAudioClient3* This,REFIID riid,void **ppv) {
  721. return This->lpVtbl->GetService(This,riid,ppv);
  722. }
  723. /*** IAudioClient2 methods ***/
  724. static FORCEINLINE HRESULT IAudioClient3_IsOffloadCapable(IAudioClient3* This,AUDIO_STREAM_CATEGORY Category,WINBOOL *pbOffloadCapable) {
  725. return This->lpVtbl->IsOffloadCapable(This,Category,pbOffloadCapable);
  726. }
  727. static FORCEINLINE HRESULT IAudioClient3_SetClientProperties(IAudioClient3* This,const AudioClientProperties *pProperties) {
  728. return This->lpVtbl->SetClientProperties(This,pProperties);
  729. }
  730. static FORCEINLINE HRESULT IAudioClient3_GetBufferSizeLimits(IAudioClient3* This,const WAVEFORMATEX *pFormat,WINBOOL bEventDriven,REFERENCE_TIME *phnsMinBufferDuration,REFERENCE_TIME *phnsMaxBufferDuration) {
  731. return This->lpVtbl->GetBufferSizeLimits(This,pFormat,bEventDriven,phnsMinBufferDuration,phnsMaxBufferDuration);
  732. }
  733. /*** IAudioClient3 methods ***/
  734. static FORCEINLINE HRESULT IAudioClient3_GetSharedModeEnginePeriod(IAudioClient3* This,const WAVEFORMATEX *pFormat,UINT32 *pDefaultPeriodInFrames,UINT32 *pFundamentalPeriodInFrames,UINT32 *pMinPeriodInFrames,UINT32 *pMaxPeriodInFrames) {
  735. return This->lpVtbl->GetSharedModeEnginePeriod(This,pFormat,pDefaultPeriodInFrames,pFundamentalPeriodInFrames,pMinPeriodInFrames,pMaxPeriodInFrames);
  736. }
  737. static FORCEINLINE HRESULT IAudioClient3_GetCurrentSharedModeEnginePeriod(IAudioClient3* This,WAVEFORMATEX **ppFormat,UINT32 *pCurrentPeriodInFrames) {
  738. return This->lpVtbl->GetCurrentSharedModeEnginePeriod(This,ppFormat,pCurrentPeriodInFrames);
  739. }
  740. static FORCEINLINE HRESULT IAudioClient3_InitializeSharedAudioStream(IAudioClient3* This,DWORD StreamFlags,UINT32 PeriodInFrames,const WAVEFORMATEX *pFormat,LPCGUID AudioSessionGuid) {
  741. return This->lpVtbl->InitializeSharedAudioStream(This,StreamFlags,PeriodInFrames,pFormat,AudioSessionGuid);
  742. }
  743. #endif
  744. #endif
  745. #endif
  746. #endif /* __IAudioClient3_INTERFACE_DEFINED__ */
  747. /*****************************************************************************
  748. * IAudioRenderClient interface
  749. */
  750. #ifndef __IAudioRenderClient_INTERFACE_DEFINED__
  751. #define __IAudioRenderClient_INTERFACE_DEFINED__
  752. DEFINE_GUID(IID_IAudioRenderClient, 0xf294acfc, 0x3146, 0x4483, 0xa7,0xbf, 0xad,0xdc,0xa7,0xc2,0x60,0xe2);
  753. #if defined(__cplusplus) && !defined(CINTERFACE)
  754. MIDL_INTERFACE("f294acfc-3146-4483-a7bf-addca7c260e2")
  755. IAudioRenderClient : public IUnknown
  756. {
  757. virtual HRESULT STDMETHODCALLTYPE GetBuffer(
  758. UINT32 NumFramesRequested,
  759. BYTE **ppData) = 0;
  760. virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
  761. UINT32 NumFramesWritten,
  762. DWORD dwFlags) = 0;
  763. };
  764. #ifdef __CRT_UUID_DECL
  765. __CRT_UUID_DECL(IAudioRenderClient, 0xf294acfc, 0x3146, 0x4483, 0xa7,0xbf, 0xad,0xdc,0xa7,0xc2,0x60,0xe2)
  766. #endif
  767. #else
  768. typedef struct IAudioRenderClientVtbl {
  769. BEGIN_INTERFACE
  770. /*** IUnknown methods ***/
  771. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  772. IAudioRenderClient *This,
  773. REFIID riid,
  774. void **ppvObject);
  775. ULONG (STDMETHODCALLTYPE *AddRef)(
  776. IAudioRenderClient *This);
  777. ULONG (STDMETHODCALLTYPE *Release)(
  778. IAudioRenderClient *This);
  779. /*** IAudioRenderClient methods ***/
  780. HRESULT (STDMETHODCALLTYPE *GetBuffer)(
  781. IAudioRenderClient *This,
  782. UINT32 NumFramesRequested,
  783. BYTE **ppData);
  784. HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
  785. IAudioRenderClient *This,
  786. UINT32 NumFramesWritten,
  787. DWORD dwFlags);
  788. END_INTERFACE
  789. } IAudioRenderClientVtbl;
  790. interface IAudioRenderClient {
  791. CONST_VTBL IAudioRenderClientVtbl* lpVtbl;
  792. };
  793. #ifdef COBJMACROS
  794. #ifndef WIDL_C_INLINE_WRAPPERS
  795. /*** IUnknown methods ***/
  796. #define IAudioRenderClient_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  797. #define IAudioRenderClient_AddRef(This) (This)->lpVtbl->AddRef(This)
  798. #define IAudioRenderClient_Release(This) (This)->lpVtbl->Release(This)
  799. /*** IAudioRenderClient methods ***/
  800. #define IAudioRenderClient_GetBuffer(This,NumFramesRequested,ppData) (This)->lpVtbl->GetBuffer(This,NumFramesRequested,ppData)
  801. #define IAudioRenderClient_ReleaseBuffer(This,NumFramesWritten,dwFlags) (This)->lpVtbl->ReleaseBuffer(This,NumFramesWritten,dwFlags)
  802. #else
  803. /*** IUnknown methods ***/
  804. static FORCEINLINE HRESULT IAudioRenderClient_QueryInterface(IAudioRenderClient* This,REFIID riid,void **ppvObject) {
  805. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  806. }
  807. static FORCEINLINE ULONG IAudioRenderClient_AddRef(IAudioRenderClient* This) {
  808. return This->lpVtbl->AddRef(This);
  809. }
  810. static FORCEINLINE ULONG IAudioRenderClient_Release(IAudioRenderClient* This) {
  811. return This->lpVtbl->Release(This);
  812. }
  813. /*** IAudioRenderClient methods ***/
  814. static FORCEINLINE HRESULT IAudioRenderClient_GetBuffer(IAudioRenderClient* This,UINT32 NumFramesRequested,BYTE **ppData) {
  815. return This->lpVtbl->GetBuffer(This,NumFramesRequested,ppData);
  816. }
  817. static FORCEINLINE HRESULT IAudioRenderClient_ReleaseBuffer(IAudioRenderClient* This,UINT32 NumFramesWritten,DWORD dwFlags) {
  818. return This->lpVtbl->ReleaseBuffer(This,NumFramesWritten,dwFlags);
  819. }
  820. #endif
  821. #endif
  822. #endif
  823. #endif /* __IAudioRenderClient_INTERFACE_DEFINED__ */
  824. /*****************************************************************************
  825. * IAudioCaptureClient interface
  826. */
  827. #ifndef __IAudioCaptureClient_INTERFACE_DEFINED__
  828. #define __IAudioCaptureClient_INTERFACE_DEFINED__
  829. DEFINE_GUID(IID_IAudioCaptureClient, 0xc8adbd64, 0xe71e, 0x48a0, 0xa4,0xde, 0x18,0x5c,0x39,0x5c,0xd3,0x17);
  830. #if defined(__cplusplus) && !defined(CINTERFACE)
  831. MIDL_INTERFACE("c8adbd64-e71e-48a0-a4de-185c395cd317")
  832. IAudioCaptureClient : public IUnknown
  833. {
  834. virtual HRESULT STDMETHODCALLTYPE GetBuffer(
  835. BYTE **ppData,
  836. UINT32 *pNumFramesToRead,
  837. DWORD *pdwFlags,
  838. UINT64 *pu64DevicePosition,
  839. UINT64 *pu64QPCPosition) = 0;
  840. virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
  841. UINT32 NumFramesRead) = 0;
  842. virtual HRESULT STDMETHODCALLTYPE GetNextPacketSize(
  843. UINT32 *pNumFramesInNextPacket) = 0;
  844. };
  845. #ifdef __CRT_UUID_DECL
  846. __CRT_UUID_DECL(IAudioCaptureClient, 0xc8adbd64, 0xe71e, 0x48a0, 0xa4,0xde, 0x18,0x5c,0x39,0x5c,0xd3,0x17)
  847. #endif
  848. #else
  849. typedef struct IAudioCaptureClientVtbl {
  850. BEGIN_INTERFACE
  851. /*** IUnknown methods ***/
  852. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  853. IAudioCaptureClient *This,
  854. REFIID riid,
  855. void **ppvObject);
  856. ULONG (STDMETHODCALLTYPE *AddRef)(
  857. IAudioCaptureClient *This);
  858. ULONG (STDMETHODCALLTYPE *Release)(
  859. IAudioCaptureClient *This);
  860. /*** IAudioCaptureClient methods ***/
  861. HRESULT (STDMETHODCALLTYPE *GetBuffer)(
  862. IAudioCaptureClient *This,
  863. BYTE **ppData,
  864. UINT32 *pNumFramesToRead,
  865. DWORD *pdwFlags,
  866. UINT64 *pu64DevicePosition,
  867. UINT64 *pu64QPCPosition);
  868. HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
  869. IAudioCaptureClient *This,
  870. UINT32 NumFramesRead);
  871. HRESULT (STDMETHODCALLTYPE *GetNextPacketSize)(
  872. IAudioCaptureClient *This,
  873. UINT32 *pNumFramesInNextPacket);
  874. END_INTERFACE
  875. } IAudioCaptureClientVtbl;
  876. interface IAudioCaptureClient {
  877. CONST_VTBL IAudioCaptureClientVtbl* lpVtbl;
  878. };
  879. #ifdef COBJMACROS
  880. #ifndef WIDL_C_INLINE_WRAPPERS
  881. /*** IUnknown methods ***/
  882. #define IAudioCaptureClient_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  883. #define IAudioCaptureClient_AddRef(This) (This)->lpVtbl->AddRef(This)
  884. #define IAudioCaptureClient_Release(This) (This)->lpVtbl->Release(This)
  885. /*** IAudioCaptureClient methods ***/
  886. #define IAudioCaptureClient_GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) (This)->lpVtbl->GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition)
  887. #define IAudioCaptureClient_ReleaseBuffer(This,NumFramesRead) (This)->lpVtbl->ReleaseBuffer(This,NumFramesRead)
  888. #define IAudioCaptureClient_GetNextPacketSize(This,pNumFramesInNextPacket) (This)->lpVtbl->GetNextPacketSize(This,pNumFramesInNextPacket)
  889. #else
  890. /*** IUnknown methods ***/
  891. static FORCEINLINE HRESULT IAudioCaptureClient_QueryInterface(IAudioCaptureClient* This,REFIID riid,void **ppvObject) {
  892. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  893. }
  894. static FORCEINLINE ULONG IAudioCaptureClient_AddRef(IAudioCaptureClient* This) {
  895. return This->lpVtbl->AddRef(This);
  896. }
  897. static FORCEINLINE ULONG IAudioCaptureClient_Release(IAudioCaptureClient* This) {
  898. return This->lpVtbl->Release(This);
  899. }
  900. /*** IAudioCaptureClient methods ***/
  901. static FORCEINLINE HRESULT IAudioCaptureClient_GetBuffer(IAudioCaptureClient* This,BYTE **ppData,UINT32 *pNumFramesToRead,DWORD *pdwFlags,UINT64 *pu64DevicePosition,UINT64 *pu64QPCPosition) {
  902. return This->lpVtbl->GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition);
  903. }
  904. static FORCEINLINE HRESULT IAudioCaptureClient_ReleaseBuffer(IAudioCaptureClient* This,UINT32 NumFramesRead) {
  905. return This->lpVtbl->ReleaseBuffer(This,NumFramesRead);
  906. }
  907. static FORCEINLINE HRESULT IAudioCaptureClient_GetNextPacketSize(IAudioCaptureClient* This,UINT32 *pNumFramesInNextPacket) {
  908. return This->lpVtbl->GetNextPacketSize(This,pNumFramesInNextPacket);
  909. }
  910. #endif
  911. #endif
  912. #endif
  913. #endif /* __IAudioCaptureClient_INTERFACE_DEFINED__ */
  914. #define AUDIOCLOCK_CHARACTERISTIC_FIXED_FREQ 0x1
  915. /*****************************************************************************
  916. * IAudioClock interface
  917. */
  918. #ifndef __IAudioClock_INTERFACE_DEFINED__
  919. #define __IAudioClock_INTERFACE_DEFINED__
  920. DEFINE_GUID(IID_IAudioClock, 0xcd63314f, 0x3fba, 0x4a1b, 0x81,0x2c, 0xef,0x96,0x35,0x87,0x28,0xe7);
  921. #if defined(__cplusplus) && !defined(CINTERFACE)
  922. MIDL_INTERFACE("cd63314f-3fba-4a1b-812c-ef96358728e7")
  923. IAudioClock : public IUnknown
  924. {
  925. virtual HRESULT STDMETHODCALLTYPE GetFrequency(
  926. UINT64 *pu64Frequency) = 0;
  927. virtual HRESULT STDMETHODCALLTYPE GetPosition(
  928. UINT64 *pu64Position,
  929. UINT64 *pu64QPCPosition) = 0;
  930. virtual HRESULT STDMETHODCALLTYPE GetCharacteristics(
  931. DWORD *pdwCharacteristics) = 0;
  932. };
  933. #ifdef __CRT_UUID_DECL
  934. __CRT_UUID_DECL(IAudioClock, 0xcd63314f, 0x3fba, 0x4a1b, 0x81,0x2c, 0xef,0x96,0x35,0x87,0x28,0xe7)
  935. #endif
  936. #else
  937. typedef struct IAudioClockVtbl {
  938. BEGIN_INTERFACE
  939. /*** IUnknown methods ***/
  940. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  941. IAudioClock *This,
  942. REFIID riid,
  943. void **ppvObject);
  944. ULONG (STDMETHODCALLTYPE *AddRef)(
  945. IAudioClock *This);
  946. ULONG (STDMETHODCALLTYPE *Release)(
  947. IAudioClock *This);
  948. /*** IAudioClock methods ***/
  949. HRESULT (STDMETHODCALLTYPE *GetFrequency)(
  950. IAudioClock *This,
  951. UINT64 *pu64Frequency);
  952. HRESULT (STDMETHODCALLTYPE *GetPosition)(
  953. IAudioClock *This,
  954. UINT64 *pu64Position,
  955. UINT64 *pu64QPCPosition);
  956. HRESULT (STDMETHODCALLTYPE *GetCharacteristics)(
  957. IAudioClock *This,
  958. DWORD *pdwCharacteristics);
  959. END_INTERFACE
  960. } IAudioClockVtbl;
  961. interface IAudioClock {
  962. CONST_VTBL IAudioClockVtbl* lpVtbl;
  963. };
  964. #ifdef COBJMACROS
  965. #ifndef WIDL_C_INLINE_WRAPPERS
  966. /*** IUnknown methods ***/
  967. #define IAudioClock_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  968. #define IAudioClock_AddRef(This) (This)->lpVtbl->AddRef(This)
  969. #define IAudioClock_Release(This) (This)->lpVtbl->Release(This)
  970. /*** IAudioClock methods ***/
  971. #define IAudioClock_GetFrequency(This,pu64Frequency) (This)->lpVtbl->GetFrequency(This,pu64Frequency)
  972. #define IAudioClock_GetPosition(This,pu64Position,pu64QPCPosition) (This)->lpVtbl->GetPosition(This,pu64Position,pu64QPCPosition)
  973. #define IAudioClock_GetCharacteristics(This,pdwCharacteristics) (This)->lpVtbl->GetCharacteristics(This,pdwCharacteristics)
  974. #else
  975. /*** IUnknown methods ***/
  976. static FORCEINLINE HRESULT IAudioClock_QueryInterface(IAudioClock* This,REFIID riid,void **ppvObject) {
  977. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  978. }
  979. static FORCEINLINE ULONG IAudioClock_AddRef(IAudioClock* This) {
  980. return This->lpVtbl->AddRef(This);
  981. }
  982. static FORCEINLINE ULONG IAudioClock_Release(IAudioClock* This) {
  983. return This->lpVtbl->Release(This);
  984. }
  985. /*** IAudioClock methods ***/
  986. static FORCEINLINE HRESULT IAudioClock_GetFrequency(IAudioClock* This,UINT64 *pu64Frequency) {
  987. return This->lpVtbl->GetFrequency(This,pu64Frequency);
  988. }
  989. static FORCEINLINE HRESULT IAudioClock_GetPosition(IAudioClock* This,UINT64 *pu64Position,UINT64 *pu64QPCPosition) {
  990. return This->lpVtbl->GetPosition(This,pu64Position,pu64QPCPosition);
  991. }
  992. static FORCEINLINE HRESULT IAudioClock_GetCharacteristics(IAudioClock* This,DWORD *pdwCharacteristics) {
  993. return This->lpVtbl->GetCharacteristics(This,pdwCharacteristics);
  994. }
  995. #endif
  996. #endif
  997. #endif
  998. #endif /* __IAudioClock_INTERFACE_DEFINED__ */
  999. #endif
  1000. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  1001. /*****************************************************************************
  1002. * IAudioClock2 interface
  1003. */
  1004. #ifndef __IAudioClock2_INTERFACE_DEFINED__
  1005. #define __IAudioClock2_INTERFACE_DEFINED__
  1006. DEFINE_GUID(IID_IAudioClock2, 0x6f49ff73, 0x6727, 0x49ac, 0xa0,0x08, 0xd9,0x8c,0xf5,0xe7,0x00,0x48);
  1007. #if defined(__cplusplus) && !defined(CINTERFACE)
  1008. MIDL_INTERFACE("6f49ff73-6727-49ac-a008-d98cf5e70048")
  1009. IAudioClock2 : public IUnknown
  1010. {
  1011. virtual HRESULT STDMETHODCALLTYPE GetDevicePosition(
  1012. UINT64 *DevicePosition,
  1013. UINT64 *QPCPosition) = 0;
  1014. };
  1015. #ifdef __CRT_UUID_DECL
  1016. __CRT_UUID_DECL(IAudioClock2, 0x6f49ff73, 0x6727, 0x49ac, 0xa0,0x08, 0xd9,0x8c,0xf5,0xe7,0x00,0x48)
  1017. #endif
  1018. #else
  1019. typedef struct IAudioClock2Vtbl {
  1020. BEGIN_INTERFACE
  1021. /*** IUnknown methods ***/
  1022. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1023. IAudioClock2 *This,
  1024. REFIID riid,
  1025. void **ppvObject);
  1026. ULONG (STDMETHODCALLTYPE *AddRef)(
  1027. IAudioClock2 *This);
  1028. ULONG (STDMETHODCALLTYPE *Release)(
  1029. IAudioClock2 *This);
  1030. /*** IAudioClock2 methods ***/
  1031. HRESULT (STDMETHODCALLTYPE *GetDevicePosition)(
  1032. IAudioClock2 *This,
  1033. UINT64 *DevicePosition,
  1034. UINT64 *QPCPosition);
  1035. END_INTERFACE
  1036. } IAudioClock2Vtbl;
  1037. interface IAudioClock2 {
  1038. CONST_VTBL IAudioClock2Vtbl* lpVtbl;
  1039. };
  1040. #ifdef COBJMACROS
  1041. #ifndef WIDL_C_INLINE_WRAPPERS
  1042. /*** IUnknown methods ***/
  1043. #define IAudioClock2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1044. #define IAudioClock2_AddRef(This) (This)->lpVtbl->AddRef(This)
  1045. #define IAudioClock2_Release(This) (This)->lpVtbl->Release(This)
  1046. /*** IAudioClock2 methods ***/
  1047. #define IAudioClock2_GetDevicePosition(This,DevicePosition,QPCPosition) (This)->lpVtbl->GetDevicePosition(This,DevicePosition,QPCPosition)
  1048. #else
  1049. /*** IUnknown methods ***/
  1050. static FORCEINLINE HRESULT IAudioClock2_QueryInterface(IAudioClock2* This,REFIID riid,void **ppvObject) {
  1051. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1052. }
  1053. static FORCEINLINE ULONG IAudioClock2_AddRef(IAudioClock2* This) {
  1054. return This->lpVtbl->AddRef(This);
  1055. }
  1056. static FORCEINLINE ULONG IAudioClock2_Release(IAudioClock2* This) {
  1057. return This->lpVtbl->Release(This);
  1058. }
  1059. /*** IAudioClock2 methods ***/
  1060. static FORCEINLINE HRESULT IAudioClock2_GetDevicePosition(IAudioClock2* This,UINT64 *DevicePosition,UINT64 *QPCPosition) {
  1061. return This->lpVtbl->GetDevicePosition(This,DevicePosition,QPCPosition);
  1062. }
  1063. #endif
  1064. #endif
  1065. #endif
  1066. #endif /* __IAudioClock2_INTERFACE_DEFINED__ */
  1067. /*****************************************************************************
  1068. * IAudioClockAdjustment interface
  1069. */
  1070. #ifndef __IAudioClockAdjustment_INTERFACE_DEFINED__
  1071. #define __IAudioClockAdjustment_INTERFACE_DEFINED__
  1072. DEFINE_GUID(IID_IAudioClockAdjustment, 0xf6e4c0a0, 0x46d9, 0x4fb8, 0xbe,0x21, 0x57,0xa3,0xef,0x2b,0x62,0x6c);
  1073. #if defined(__cplusplus) && !defined(CINTERFACE)
  1074. MIDL_INTERFACE("f6e4c0a0-46d9-4fb8-be21-57a3ef2b626c")
  1075. IAudioClockAdjustment : public IUnknown
  1076. {
  1077. virtual HRESULT STDMETHODCALLTYPE SetSampleRate(
  1078. float flSampleRate) = 0;
  1079. };
  1080. #ifdef __CRT_UUID_DECL
  1081. __CRT_UUID_DECL(IAudioClockAdjustment, 0xf6e4c0a0, 0x46d9, 0x4fb8, 0xbe,0x21, 0x57,0xa3,0xef,0x2b,0x62,0x6c)
  1082. #endif
  1083. #else
  1084. typedef struct IAudioClockAdjustmentVtbl {
  1085. BEGIN_INTERFACE
  1086. /*** IUnknown methods ***/
  1087. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1088. IAudioClockAdjustment *This,
  1089. REFIID riid,
  1090. void **ppvObject);
  1091. ULONG (STDMETHODCALLTYPE *AddRef)(
  1092. IAudioClockAdjustment *This);
  1093. ULONG (STDMETHODCALLTYPE *Release)(
  1094. IAudioClockAdjustment *This);
  1095. /*** IAudioClockAdjustment methods ***/
  1096. HRESULT (STDMETHODCALLTYPE *SetSampleRate)(
  1097. IAudioClockAdjustment *This,
  1098. float flSampleRate);
  1099. END_INTERFACE
  1100. } IAudioClockAdjustmentVtbl;
  1101. interface IAudioClockAdjustment {
  1102. CONST_VTBL IAudioClockAdjustmentVtbl* lpVtbl;
  1103. };
  1104. #ifdef COBJMACROS
  1105. #ifndef WIDL_C_INLINE_WRAPPERS
  1106. /*** IUnknown methods ***/
  1107. #define IAudioClockAdjustment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1108. #define IAudioClockAdjustment_AddRef(This) (This)->lpVtbl->AddRef(This)
  1109. #define IAudioClockAdjustment_Release(This) (This)->lpVtbl->Release(This)
  1110. /*** IAudioClockAdjustment methods ***/
  1111. #define IAudioClockAdjustment_SetSampleRate(This,flSampleRate) (This)->lpVtbl->SetSampleRate(This,flSampleRate)
  1112. #else
  1113. /*** IUnknown methods ***/
  1114. static FORCEINLINE HRESULT IAudioClockAdjustment_QueryInterface(IAudioClockAdjustment* This,REFIID riid,void **ppvObject) {
  1115. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1116. }
  1117. static FORCEINLINE ULONG IAudioClockAdjustment_AddRef(IAudioClockAdjustment* This) {
  1118. return This->lpVtbl->AddRef(This);
  1119. }
  1120. static FORCEINLINE ULONG IAudioClockAdjustment_Release(IAudioClockAdjustment* This) {
  1121. return This->lpVtbl->Release(This);
  1122. }
  1123. /*** IAudioClockAdjustment methods ***/
  1124. static FORCEINLINE HRESULT IAudioClockAdjustment_SetSampleRate(IAudioClockAdjustment* This,float flSampleRate) {
  1125. return This->lpVtbl->SetSampleRate(This,flSampleRate);
  1126. }
  1127. #endif
  1128. #endif
  1129. #endif
  1130. #endif /* __IAudioClockAdjustment_INTERFACE_DEFINED__ */
  1131. #endif
  1132. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  1133. /*****************************************************************************
  1134. * ISimpleAudioVolume interface
  1135. */
  1136. #ifndef __ISimpleAudioVolume_INTERFACE_DEFINED__
  1137. #define __ISimpleAudioVolume_INTERFACE_DEFINED__
  1138. DEFINE_GUID(IID_ISimpleAudioVolume, 0x87ce5498, 0x68d6, 0x44e5, 0x92,0x15, 0x6d,0xa4,0x7e,0xf8,0x83,0xd8);
  1139. #if defined(__cplusplus) && !defined(CINTERFACE)
  1140. MIDL_INTERFACE("87ce5498-68d6-44e5-9215-6da47ef883d8")
  1141. ISimpleAudioVolume : public IUnknown
  1142. {
  1143. virtual HRESULT STDMETHODCALLTYPE SetMasterVolume(
  1144. float fLevel,
  1145. LPCGUID EventContext) = 0;
  1146. virtual HRESULT STDMETHODCALLTYPE GetMasterVolume(
  1147. float *pfLevel) = 0;
  1148. virtual HRESULT STDMETHODCALLTYPE SetMute(
  1149. const WINBOOL bMute,
  1150. LPCGUID EventContext) = 0;
  1151. virtual HRESULT STDMETHODCALLTYPE GetMute(
  1152. WINBOOL *pbMute) = 0;
  1153. };
  1154. #ifdef __CRT_UUID_DECL
  1155. __CRT_UUID_DECL(ISimpleAudioVolume, 0x87ce5498, 0x68d6, 0x44e5, 0x92,0x15, 0x6d,0xa4,0x7e,0xf8,0x83,0xd8)
  1156. #endif
  1157. #else
  1158. typedef struct ISimpleAudioVolumeVtbl {
  1159. BEGIN_INTERFACE
  1160. /*** IUnknown methods ***/
  1161. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1162. ISimpleAudioVolume *This,
  1163. REFIID riid,
  1164. void **ppvObject);
  1165. ULONG (STDMETHODCALLTYPE *AddRef)(
  1166. ISimpleAudioVolume *This);
  1167. ULONG (STDMETHODCALLTYPE *Release)(
  1168. ISimpleAudioVolume *This);
  1169. /*** ISimpleAudioVolume methods ***/
  1170. HRESULT (STDMETHODCALLTYPE *SetMasterVolume)(
  1171. ISimpleAudioVolume *This,
  1172. float fLevel,
  1173. LPCGUID EventContext);
  1174. HRESULT (STDMETHODCALLTYPE *GetMasterVolume)(
  1175. ISimpleAudioVolume *This,
  1176. float *pfLevel);
  1177. HRESULT (STDMETHODCALLTYPE *SetMute)(
  1178. ISimpleAudioVolume *This,
  1179. const WINBOOL bMute,
  1180. LPCGUID EventContext);
  1181. HRESULT (STDMETHODCALLTYPE *GetMute)(
  1182. ISimpleAudioVolume *This,
  1183. WINBOOL *pbMute);
  1184. END_INTERFACE
  1185. } ISimpleAudioVolumeVtbl;
  1186. interface ISimpleAudioVolume {
  1187. CONST_VTBL ISimpleAudioVolumeVtbl* lpVtbl;
  1188. };
  1189. #ifdef COBJMACROS
  1190. #ifndef WIDL_C_INLINE_WRAPPERS
  1191. /*** IUnknown methods ***/
  1192. #define ISimpleAudioVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1193. #define ISimpleAudioVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
  1194. #define ISimpleAudioVolume_Release(This) (This)->lpVtbl->Release(This)
  1195. /*** ISimpleAudioVolume methods ***/
  1196. #define ISimpleAudioVolume_SetMasterVolume(This,fLevel,EventContext) (This)->lpVtbl->SetMasterVolume(This,fLevel,EventContext)
  1197. #define ISimpleAudioVolume_GetMasterVolume(This,pfLevel) (This)->lpVtbl->GetMasterVolume(This,pfLevel)
  1198. #define ISimpleAudioVolume_SetMute(This,bMute,EventContext) (This)->lpVtbl->SetMute(This,bMute,EventContext)
  1199. #define ISimpleAudioVolume_GetMute(This,pbMute) (This)->lpVtbl->GetMute(This,pbMute)
  1200. #else
  1201. /*** IUnknown methods ***/
  1202. static FORCEINLINE HRESULT ISimpleAudioVolume_QueryInterface(ISimpleAudioVolume* This,REFIID riid,void **ppvObject) {
  1203. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1204. }
  1205. static FORCEINLINE ULONG ISimpleAudioVolume_AddRef(ISimpleAudioVolume* This) {
  1206. return This->lpVtbl->AddRef(This);
  1207. }
  1208. static FORCEINLINE ULONG ISimpleAudioVolume_Release(ISimpleAudioVolume* This) {
  1209. return This->lpVtbl->Release(This);
  1210. }
  1211. /*** ISimpleAudioVolume methods ***/
  1212. static FORCEINLINE HRESULT ISimpleAudioVolume_SetMasterVolume(ISimpleAudioVolume* This,float fLevel,LPCGUID EventContext) {
  1213. return This->lpVtbl->SetMasterVolume(This,fLevel,EventContext);
  1214. }
  1215. static FORCEINLINE HRESULT ISimpleAudioVolume_GetMasterVolume(ISimpleAudioVolume* This,float *pfLevel) {
  1216. return This->lpVtbl->GetMasterVolume(This,pfLevel);
  1217. }
  1218. static FORCEINLINE HRESULT ISimpleAudioVolume_SetMute(ISimpleAudioVolume* This,const WINBOOL bMute,LPCGUID EventContext) {
  1219. return This->lpVtbl->SetMute(This,bMute,EventContext);
  1220. }
  1221. static FORCEINLINE HRESULT ISimpleAudioVolume_GetMute(ISimpleAudioVolume* This,WINBOOL *pbMute) {
  1222. return This->lpVtbl->GetMute(This,pbMute);
  1223. }
  1224. #endif
  1225. #endif
  1226. #endif
  1227. #endif /* __ISimpleAudioVolume_INTERFACE_DEFINED__ */
  1228. #endif
  1229. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  1230. /*****************************************************************************
  1231. * IAudioStreamVolume interface
  1232. */
  1233. #ifndef __IAudioStreamVolume_INTERFACE_DEFINED__
  1234. #define __IAudioStreamVolume_INTERFACE_DEFINED__
  1235. DEFINE_GUID(IID_IAudioStreamVolume, 0x93014887, 0x242d, 0x4068, 0x8a,0x15, 0xcf,0x5e,0x93,0xb9,0x0f,0xe3);
  1236. #if defined(__cplusplus) && !defined(CINTERFACE)
  1237. MIDL_INTERFACE("93014887-242d-4068-8a15-cf5e93b90fe3")
  1238. IAudioStreamVolume : public IUnknown
  1239. {
  1240. virtual HRESULT STDMETHODCALLTYPE GetChannelCount(
  1241. UINT32 *pdwCount) = 0;
  1242. virtual HRESULT STDMETHODCALLTYPE SetChannelVolume(
  1243. UINT32 dwIndex,
  1244. const float fLevel) = 0;
  1245. virtual HRESULT STDMETHODCALLTYPE GetChannelVolume(
  1246. UINT32 dwIndex,
  1247. float *pfLevel) = 0;
  1248. virtual HRESULT STDMETHODCALLTYPE SetAllVolumes(
  1249. UINT32 dwCount,
  1250. const float *pfVolumes) = 0;
  1251. virtual HRESULT STDMETHODCALLTYPE GetAllVolumes(
  1252. UINT32 dwCount,
  1253. float *pfVolumes) = 0;
  1254. };
  1255. #ifdef __CRT_UUID_DECL
  1256. __CRT_UUID_DECL(IAudioStreamVolume, 0x93014887, 0x242d, 0x4068, 0x8a,0x15, 0xcf,0x5e,0x93,0xb9,0x0f,0xe3)
  1257. #endif
  1258. #else
  1259. typedef struct IAudioStreamVolumeVtbl {
  1260. BEGIN_INTERFACE
  1261. /*** IUnknown methods ***/
  1262. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1263. IAudioStreamVolume *This,
  1264. REFIID riid,
  1265. void **ppvObject);
  1266. ULONG (STDMETHODCALLTYPE *AddRef)(
  1267. IAudioStreamVolume *This);
  1268. ULONG (STDMETHODCALLTYPE *Release)(
  1269. IAudioStreamVolume *This);
  1270. /*** IAudioStreamVolume methods ***/
  1271. HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
  1272. IAudioStreamVolume *This,
  1273. UINT32 *pdwCount);
  1274. HRESULT (STDMETHODCALLTYPE *SetChannelVolume)(
  1275. IAudioStreamVolume *This,
  1276. UINT32 dwIndex,
  1277. const float fLevel);
  1278. HRESULT (STDMETHODCALLTYPE *GetChannelVolume)(
  1279. IAudioStreamVolume *This,
  1280. UINT32 dwIndex,
  1281. float *pfLevel);
  1282. HRESULT (STDMETHODCALLTYPE *SetAllVolumes)(
  1283. IAudioStreamVolume *This,
  1284. UINT32 dwCount,
  1285. const float *pfVolumes);
  1286. HRESULT (STDMETHODCALLTYPE *GetAllVolumes)(
  1287. IAudioStreamVolume *This,
  1288. UINT32 dwCount,
  1289. float *pfVolumes);
  1290. END_INTERFACE
  1291. } IAudioStreamVolumeVtbl;
  1292. interface IAudioStreamVolume {
  1293. CONST_VTBL IAudioStreamVolumeVtbl* lpVtbl;
  1294. };
  1295. #ifdef COBJMACROS
  1296. #ifndef WIDL_C_INLINE_WRAPPERS
  1297. /*** IUnknown methods ***/
  1298. #define IAudioStreamVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1299. #define IAudioStreamVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
  1300. #define IAudioStreamVolume_Release(This) (This)->lpVtbl->Release(This)
  1301. /*** IAudioStreamVolume methods ***/
  1302. #define IAudioStreamVolume_GetChannelCount(This,pdwCount) (This)->lpVtbl->GetChannelCount(This,pdwCount)
  1303. #define IAudioStreamVolume_SetChannelVolume(This,dwIndex,fLevel) (This)->lpVtbl->SetChannelVolume(This,dwIndex,fLevel)
  1304. #define IAudioStreamVolume_GetChannelVolume(This,dwIndex,pfLevel) (This)->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel)
  1305. #define IAudioStreamVolume_SetAllVolumes(This,dwCount,pfVolumes) (This)->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes)
  1306. #define IAudioStreamVolume_GetAllVolumes(This,dwCount,pfVolumes) (This)->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes)
  1307. #else
  1308. /*** IUnknown methods ***/
  1309. static FORCEINLINE HRESULT IAudioStreamVolume_QueryInterface(IAudioStreamVolume* This,REFIID riid,void **ppvObject) {
  1310. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1311. }
  1312. static FORCEINLINE ULONG IAudioStreamVolume_AddRef(IAudioStreamVolume* This) {
  1313. return This->lpVtbl->AddRef(This);
  1314. }
  1315. static FORCEINLINE ULONG IAudioStreamVolume_Release(IAudioStreamVolume* This) {
  1316. return This->lpVtbl->Release(This);
  1317. }
  1318. /*** IAudioStreamVolume methods ***/
  1319. static FORCEINLINE HRESULT IAudioStreamVolume_GetChannelCount(IAudioStreamVolume* This,UINT32 *pdwCount) {
  1320. return This->lpVtbl->GetChannelCount(This,pdwCount);
  1321. }
  1322. static FORCEINLINE HRESULT IAudioStreamVolume_SetChannelVolume(IAudioStreamVolume* This,UINT32 dwIndex,const float fLevel) {
  1323. return This->lpVtbl->SetChannelVolume(This,dwIndex,fLevel);
  1324. }
  1325. static FORCEINLINE HRESULT IAudioStreamVolume_GetChannelVolume(IAudioStreamVolume* This,UINT32 dwIndex,float *pfLevel) {
  1326. return This->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel);
  1327. }
  1328. static FORCEINLINE HRESULT IAudioStreamVolume_SetAllVolumes(IAudioStreamVolume* This,UINT32 dwCount,const float *pfVolumes) {
  1329. return This->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes);
  1330. }
  1331. static FORCEINLINE HRESULT IAudioStreamVolume_GetAllVolumes(IAudioStreamVolume* This,UINT32 dwCount,float *pfVolumes) {
  1332. return This->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes);
  1333. }
  1334. #endif
  1335. #endif
  1336. #endif
  1337. #endif /* __IAudioStreamVolume_INTERFACE_DEFINED__ */
  1338. /*****************************************************************************
  1339. * IAudioAmbisonicsControl interface
  1340. */
  1341. #ifndef __IAudioAmbisonicsControl_INTERFACE_DEFINED__
  1342. #define __IAudioAmbisonicsControl_INTERFACE_DEFINED__
  1343. DEFINE_GUID(IID_IAudioAmbisonicsControl, 0x28724c91, 0xdf35, 0x4856, 0x9f,0x76, 0xd6,0xa2,0x64,0x13,0xf3,0xdf);
  1344. #if defined(__cplusplus) && !defined(CINTERFACE)
  1345. MIDL_INTERFACE("28724c91-df35-4856-9f76-d6a26413f3df")
  1346. IAudioAmbisonicsControl : public IUnknown
  1347. {
  1348. virtual HRESULT STDMETHODCALLTYPE SetData(
  1349. const AMBISONICS_PARAMS *pAmbisonicsParams,
  1350. UINT32 cbAmbisonicsParams) = 0;
  1351. virtual HRESULT STDMETHODCALLTYPE SetHeadTracking(
  1352. WINBOOL bEnableHeadTracking) = 0;
  1353. virtual HRESULT STDMETHODCALLTYPE GetHeadTracking(
  1354. WINBOOL *pbEnableHeadTracking) = 0;
  1355. virtual HRESULT STDMETHODCALLTYPE SetRotation(
  1356. float X,
  1357. float Y,
  1358. float Z,
  1359. float W) = 0;
  1360. };
  1361. #ifdef __CRT_UUID_DECL
  1362. __CRT_UUID_DECL(IAudioAmbisonicsControl, 0x28724c91, 0xdf35, 0x4856, 0x9f,0x76, 0xd6,0xa2,0x64,0x13,0xf3,0xdf)
  1363. #endif
  1364. #else
  1365. typedef struct IAudioAmbisonicsControlVtbl {
  1366. BEGIN_INTERFACE
  1367. /*** IUnknown methods ***/
  1368. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1369. IAudioAmbisonicsControl *This,
  1370. REFIID riid,
  1371. void **ppvObject);
  1372. ULONG (STDMETHODCALLTYPE *AddRef)(
  1373. IAudioAmbisonicsControl *This);
  1374. ULONG (STDMETHODCALLTYPE *Release)(
  1375. IAudioAmbisonicsControl *This);
  1376. /*** IAudioAmbisonicsControl methods ***/
  1377. HRESULT (STDMETHODCALLTYPE *SetData)(
  1378. IAudioAmbisonicsControl *This,
  1379. const AMBISONICS_PARAMS *pAmbisonicsParams,
  1380. UINT32 cbAmbisonicsParams);
  1381. HRESULT (STDMETHODCALLTYPE *SetHeadTracking)(
  1382. IAudioAmbisonicsControl *This,
  1383. WINBOOL bEnableHeadTracking);
  1384. HRESULT (STDMETHODCALLTYPE *GetHeadTracking)(
  1385. IAudioAmbisonicsControl *This,
  1386. WINBOOL *pbEnableHeadTracking);
  1387. HRESULT (STDMETHODCALLTYPE *SetRotation)(
  1388. IAudioAmbisonicsControl *This,
  1389. float X,
  1390. float Y,
  1391. float Z,
  1392. float W);
  1393. END_INTERFACE
  1394. } IAudioAmbisonicsControlVtbl;
  1395. interface IAudioAmbisonicsControl {
  1396. CONST_VTBL IAudioAmbisonicsControlVtbl* lpVtbl;
  1397. };
  1398. #ifdef COBJMACROS
  1399. #ifndef WIDL_C_INLINE_WRAPPERS
  1400. /*** IUnknown methods ***/
  1401. #define IAudioAmbisonicsControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1402. #define IAudioAmbisonicsControl_AddRef(This) (This)->lpVtbl->AddRef(This)
  1403. #define IAudioAmbisonicsControl_Release(This) (This)->lpVtbl->Release(This)
  1404. /*** IAudioAmbisonicsControl methods ***/
  1405. #define IAudioAmbisonicsControl_SetData(This,pAmbisonicsParams,cbAmbisonicsParams) (This)->lpVtbl->SetData(This,pAmbisonicsParams,cbAmbisonicsParams)
  1406. #define IAudioAmbisonicsControl_SetHeadTracking(This,bEnableHeadTracking) (This)->lpVtbl->SetHeadTracking(This,bEnableHeadTracking)
  1407. #define IAudioAmbisonicsControl_GetHeadTracking(This,pbEnableHeadTracking) (This)->lpVtbl->GetHeadTracking(This,pbEnableHeadTracking)
  1408. #define IAudioAmbisonicsControl_SetRotation(This,X,Y,Z,W) (This)->lpVtbl->SetRotation(This,X,Y,Z,W)
  1409. #else
  1410. /*** IUnknown methods ***/
  1411. static FORCEINLINE HRESULT IAudioAmbisonicsControl_QueryInterface(IAudioAmbisonicsControl* This,REFIID riid,void **ppvObject) {
  1412. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1413. }
  1414. static FORCEINLINE ULONG IAudioAmbisonicsControl_AddRef(IAudioAmbisonicsControl* This) {
  1415. return This->lpVtbl->AddRef(This);
  1416. }
  1417. static FORCEINLINE ULONG IAudioAmbisonicsControl_Release(IAudioAmbisonicsControl* This) {
  1418. return This->lpVtbl->Release(This);
  1419. }
  1420. /*** IAudioAmbisonicsControl methods ***/
  1421. static FORCEINLINE HRESULT IAudioAmbisonicsControl_SetData(IAudioAmbisonicsControl* This,const AMBISONICS_PARAMS *pAmbisonicsParams,UINT32 cbAmbisonicsParams) {
  1422. return This->lpVtbl->SetData(This,pAmbisonicsParams,cbAmbisonicsParams);
  1423. }
  1424. static FORCEINLINE HRESULT IAudioAmbisonicsControl_SetHeadTracking(IAudioAmbisonicsControl* This,WINBOOL bEnableHeadTracking) {
  1425. return This->lpVtbl->SetHeadTracking(This,bEnableHeadTracking);
  1426. }
  1427. static FORCEINLINE HRESULT IAudioAmbisonicsControl_GetHeadTracking(IAudioAmbisonicsControl* This,WINBOOL *pbEnableHeadTracking) {
  1428. return This->lpVtbl->GetHeadTracking(This,pbEnableHeadTracking);
  1429. }
  1430. static FORCEINLINE HRESULT IAudioAmbisonicsControl_SetRotation(IAudioAmbisonicsControl* This,float X,float Y,float Z,float W) {
  1431. return This->lpVtbl->SetRotation(This,X,Y,Z,W);
  1432. }
  1433. #endif
  1434. #endif
  1435. #endif
  1436. #endif /* __IAudioAmbisonicsControl_INTERFACE_DEFINED__ */
  1437. /*****************************************************************************
  1438. * IChannelAudioVolume interface
  1439. */
  1440. #ifndef __IChannelAudioVolume_INTERFACE_DEFINED__
  1441. #define __IChannelAudioVolume_INTERFACE_DEFINED__
  1442. DEFINE_GUID(IID_IChannelAudioVolume, 0x1c158861, 0xb533, 0x4b30, 0xb1,0xcf, 0xe8,0x53,0xe5,0x1c,0x59,0xb8);
  1443. #if defined(__cplusplus) && !defined(CINTERFACE)
  1444. MIDL_INTERFACE("1c158861-b533-4b30-b1cf-e853e51c59b8")
  1445. IChannelAudioVolume : public IUnknown
  1446. {
  1447. virtual HRESULT STDMETHODCALLTYPE GetChannelCount(
  1448. UINT32 *pdwCount) = 0;
  1449. virtual HRESULT STDMETHODCALLTYPE SetChannelVolume(
  1450. UINT32 dwIndex,
  1451. const float fLevel,
  1452. LPCGUID EventContext) = 0;
  1453. virtual HRESULT STDMETHODCALLTYPE GetChannelVolume(
  1454. UINT32 dwIndex,
  1455. float *pfLevel) = 0;
  1456. virtual HRESULT STDMETHODCALLTYPE SetAllVolumes(
  1457. UINT32 dwCount,
  1458. const float *pfVolumes,
  1459. LPCGUID EventContext) = 0;
  1460. virtual HRESULT STDMETHODCALLTYPE GetAllVolumes(
  1461. UINT32 dwCount,
  1462. float *pfVolumes) = 0;
  1463. };
  1464. #ifdef __CRT_UUID_DECL
  1465. __CRT_UUID_DECL(IChannelAudioVolume, 0x1c158861, 0xb533, 0x4b30, 0xb1,0xcf, 0xe8,0x53,0xe5,0x1c,0x59,0xb8)
  1466. #endif
  1467. #else
  1468. typedef struct IChannelAudioVolumeVtbl {
  1469. BEGIN_INTERFACE
  1470. /*** IUnknown methods ***/
  1471. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1472. IChannelAudioVolume *This,
  1473. REFIID riid,
  1474. void **ppvObject);
  1475. ULONG (STDMETHODCALLTYPE *AddRef)(
  1476. IChannelAudioVolume *This);
  1477. ULONG (STDMETHODCALLTYPE *Release)(
  1478. IChannelAudioVolume *This);
  1479. /*** IChannelAudioVolume methods ***/
  1480. HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
  1481. IChannelAudioVolume *This,
  1482. UINT32 *pdwCount);
  1483. HRESULT (STDMETHODCALLTYPE *SetChannelVolume)(
  1484. IChannelAudioVolume *This,
  1485. UINT32 dwIndex,
  1486. const float fLevel,
  1487. LPCGUID EventContext);
  1488. HRESULT (STDMETHODCALLTYPE *GetChannelVolume)(
  1489. IChannelAudioVolume *This,
  1490. UINT32 dwIndex,
  1491. float *pfLevel);
  1492. HRESULT (STDMETHODCALLTYPE *SetAllVolumes)(
  1493. IChannelAudioVolume *This,
  1494. UINT32 dwCount,
  1495. const float *pfVolumes,
  1496. LPCGUID EventContext);
  1497. HRESULT (STDMETHODCALLTYPE *GetAllVolumes)(
  1498. IChannelAudioVolume *This,
  1499. UINT32 dwCount,
  1500. float *pfVolumes);
  1501. END_INTERFACE
  1502. } IChannelAudioVolumeVtbl;
  1503. interface IChannelAudioVolume {
  1504. CONST_VTBL IChannelAudioVolumeVtbl* lpVtbl;
  1505. };
  1506. #ifdef COBJMACROS
  1507. #ifndef WIDL_C_INLINE_WRAPPERS
  1508. /*** IUnknown methods ***/
  1509. #define IChannelAudioVolume_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1510. #define IChannelAudioVolume_AddRef(This) (This)->lpVtbl->AddRef(This)
  1511. #define IChannelAudioVolume_Release(This) (This)->lpVtbl->Release(This)
  1512. /*** IChannelAudioVolume methods ***/
  1513. #define IChannelAudioVolume_GetChannelCount(This,pdwCount) (This)->lpVtbl->GetChannelCount(This,pdwCount)
  1514. #define IChannelAudioVolume_SetChannelVolume(This,dwIndex,fLevel,EventContext) (This)->lpVtbl->SetChannelVolume(This,dwIndex,fLevel,EventContext)
  1515. #define IChannelAudioVolume_GetChannelVolume(This,dwIndex,pfLevel) (This)->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel)
  1516. #define IChannelAudioVolume_SetAllVolumes(This,dwCount,pfVolumes,EventContext) (This)->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes,EventContext)
  1517. #define IChannelAudioVolume_GetAllVolumes(This,dwCount,pfVolumes) (This)->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes)
  1518. #else
  1519. /*** IUnknown methods ***/
  1520. static FORCEINLINE HRESULT IChannelAudioVolume_QueryInterface(IChannelAudioVolume* This,REFIID riid,void **ppvObject) {
  1521. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1522. }
  1523. static FORCEINLINE ULONG IChannelAudioVolume_AddRef(IChannelAudioVolume* This) {
  1524. return This->lpVtbl->AddRef(This);
  1525. }
  1526. static FORCEINLINE ULONG IChannelAudioVolume_Release(IChannelAudioVolume* This) {
  1527. return This->lpVtbl->Release(This);
  1528. }
  1529. /*** IChannelAudioVolume methods ***/
  1530. static FORCEINLINE HRESULT IChannelAudioVolume_GetChannelCount(IChannelAudioVolume* This,UINT32 *pdwCount) {
  1531. return This->lpVtbl->GetChannelCount(This,pdwCount);
  1532. }
  1533. static FORCEINLINE HRESULT IChannelAudioVolume_SetChannelVolume(IChannelAudioVolume* This,UINT32 dwIndex,const float fLevel,LPCGUID EventContext) {
  1534. return This->lpVtbl->SetChannelVolume(This,dwIndex,fLevel,EventContext);
  1535. }
  1536. static FORCEINLINE HRESULT IChannelAudioVolume_GetChannelVolume(IChannelAudioVolume* This,UINT32 dwIndex,float *pfLevel) {
  1537. return This->lpVtbl->GetChannelVolume(This,dwIndex,pfLevel);
  1538. }
  1539. static FORCEINLINE HRESULT IChannelAudioVolume_SetAllVolumes(IChannelAudioVolume* This,UINT32 dwCount,const float *pfVolumes,LPCGUID EventContext) {
  1540. return This->lpVtbl->SetAllVolumes(This,dwCount,pfVolumes,EventContext);
  1541. }
  1542. static FORCEINLINE HRESULT IChannelAudioVolume_GetAllVolumes(IChannelAudioVolume* This,UINT32 dwCount,float *pfVolumes) {
  1543. return This->lpVtbl->GetAllVolumes(This,dwCount,pfVolumes);
  1544. }
  1545. #endif
  1546. #endif
  1547. #endif
  1548. #endif /* __IChannelAudioVolume_INTERFACE_DEFINED__ */
  1549. #endif
  1550. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  1551. #define AUDCLNT_ERR(n) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_AUDCLNT, n)
  1552. #define AUDCLNT_SUCCESS(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_AUDCLNT, n)
  1553. #define AUDCLNT_E_NOT_INITIALIZED AUDCLNT_ERR(0x1)
  1554. #define AUDCLNT_E_ALREADY_INITIALIZED AUDCLNT_ERR(0x2)
  1555. #define AUDCLNT_E_WRONG_ENDPOINT_TYPE AUDCLNT_ERR(0x3)
  1556. #define AUDCLNT_E_DEVICE_INVALIDATED AUDCLNT_ERR(0x4)
  1557. #define AUDCLNT_E_NOT_STOPPED AUDCLNT_ERR(0x5)
  1558. #define AUDCLNT_E_BUFFER_TOO_LARGE AUDCLNT_ERR(0x6)
  1559. #define AUDCLNT_E_OUT_OF_ORDER AUDCLNT_ERR(0x7)
  1560. #define AUDCLNT_E_UNSUPPORTED_FORMAT AUDCLNT_ERR(0x8)
  1561. #define AUDCLNT_E_INVALID_SIZE AUDCLNT_ERR(0x9)
  1562. #define AUDCLNT_E_DEVICE_IN_USE AUDCLNT_ERR(0xa)
  1563. #define AUDCLNT_E_BUFFER_OPERATION_PENDING AUDCLNT_ERR(0xb)
  1564. #define AUDCLNT_E_THREAD_NOT_REGISTERED AUDCLNT_ERR(0xc)
  1565. #define AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED AUDCLNT_ERR(0xe)
  1566. #define AUDCLNT_E_ENDPOINT_CREATE_FAILED AUDCLNT_ERR(0xf)
  1567. #define AUDCLNT_E_SERVICE_NOT_RUNNING AUDCLNT_ERR(0x10)
  1568. #define AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED AUDCLNT_ERR(0x11)
  1569. #define AUDCLNT_E_EXCLUSIVE_MODE_ONLY AUDCLNT_ERR(0x12)
  1570. #define AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL AUDCLNT_ERR(0x13)
  1571. #define AUDCLNT_E_EVENTHANDLE_NOT_SET AUDCLNT_ERR(0x14)
  1572. #define AUDCLNT_E_INCORRECT_BUFFER_SIZE AUDCLNT_ERR(0x15)
  1573. #define AUDCLNT_E_BUFFER_SIZE_ERROR AUDCLNT_ERR(0x16)
  1574. #define AUDCLNT_E_CPUUSAGE_EXCEEDED AUDCLNT_ERR(0x17)
  1575. #define AUDCLNT_E_BUFFER_ERROR AUDCLNT_ERR(0x18)
  1576. #define AUDCLNT_E_BUFFER_SIZE_NOT_ALIGNED AUDCLNT_ERR(0x19)
  1577. #define AUDCLNT_E_INVALID_DEVICE_PERIOD AUDCLNT_ERR(0x20)
  1578. #define AUDCLNT_E_INVALID_STREAM_FLAG AUDCLNT_ERR(0x21)
  1579. #define AUDCLNT_E_ENDPOINT_OFFLOAD_NOT_CAPABLE AUDCLNT_ERR(0x22)
  1580. #define AUDCLNT_E_OUT_OF_OFFLOAD_RESOURCES AUDCLNT_ERR(0x23)
  1581. #define AUDCLNT_E_OFFLOAD_MODE_ONLY AUDCLNT_ERR(0x24)
  1582. #define AUDCLNT_E_NONOFFLOAD_MODE_ONLY AUDCLNT_ERR(0x25)
  1583. #define AUDCLNT_E_RESOURCES_INVALIDATED AUDCLNT_ERR(0x26)
  1584. #define AUDCLNT_E_RAW_MODE_UNSUPPORTED AUDCLNT_ERR(0x027)
  1585. #define AUDCLNT_E_ENGINE_PERIODICITY_LOCKED AUDCLNT_ERR(0x028)
  1586. #define AUDCLNT_E_ENGINE_FORMAT_LOCKED AUDCLNT_ERR(0x029)
  1587. #define AUDCLNT_E_HEADTRACKING_ENABLED AUDCLNT_ERR(0x030)
  1588. #define AUDCLNT_E_HEADTRACKING_UNSUPPORTED AUDCLNT_ERR(0x040)
  1589. #define AUDCLNT_S_BUFFER_EMPTY AUDCLNT_SUCCESS(0x1)
  1590. #define AUDCLNT_S_THREAD_ALREADY_REGISTERED AUDCLNT_SUCCESS(0x2)
  1591. #define AUDCLNT_S_POSITION_STALLED AUDCLNT_SUCCESS(0x3)
  1592. #endif
  1593. /* Begin additional prototypes for all interfaces */
  1594. /* End additional prototypes */
  1595. #ifdef __cplusplus
  1596. }
  1597. #endif
  1598. #endif /* __audioclient_h__ */