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