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