zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

mfcaptureengine.h (75293B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/mfcaptureengine.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 __mfcaptureengine_h__
     17 #define __mfcaptureengine_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IMFCaptureEngineOnEventCallback_FWD_DEFINED__
     22 #define __IMFCaptureEngineOnEventCallback_FWD_DEFINED__
     23 typedef interface IMFCaptureEngineOnEventCallback IMFCaptureEngineOnEventCallback;
     24 #ifdef __cplusplus
     25 interface IMFCaptureEngineOnEventCallback;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IMFCaptureEngineOnSampleCallback_FWD_DEFINED__
     30 #define __IMFCaptureEngineOnSampleCallback_FWD_DEFINED__
     31 typedef interface IMFCaptureEngineOnSampleCallback IMFCaptureEngineOnSampleCallback;
     32 #ifdef __cplusplus
     33 interface IMFCaptureEngineOnSampleCallback;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IMFCaptureSink_FWD_DEFINED__
     38 #define __IMFCaptureSink_FWD_DEFINED__
     39 typedef interface IMFCaptureSink IMFCaptureSink;
     40 #ifdef __cplusplus
     41 interface IMFCaptureSink;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IMFCaptureRecordSink_FWD_DEFINED__
     46 #define __IMFCaptureRecordSink_FWD_DEFINED__
     47 typedef interface IMFCaptureRecordSink IMFCaptureRecordSink;
     48 #ifdef __cplusplus
     49 interface IMFCaptureRecordSink;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IMFCapturePreviewSink_FWD_DEFINED__
     54 #define __IMFCapturePreviewSink_FWD_DEFINED__
     55 typedef interface IMFCapturePreviewSink IMFCapturePreviewSink;
     56 #ifdef __cplusplus
     57 interface IMFCapturePreviewSink;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IMFCapturePhotoSink_FWD_DEFINED__
     62 #define __IMFCapturePhotoSink_FWD_DEFINED__
     63 typedef interface IMFCapturePhotoSink IMFCapturePhotoSink;
     64 #ifdef __cplusplus
     65 interface IMFCapturePhotoSink;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IMFCaptureSource_FWD_DEFINED__
     70 #define __IMFCaptureSource_FWD_DEFINED__
     71 typedef interface IMFCaptureSource IMFCaptureSource;
     72 #ifdef __cplusplus
     73 interface IMFCaptureSource;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IMFCaptureEngine_FWD_DEFINED__
     78 #define __IMFCaptureEngine_FWD_DEFINED__
     79 typedef interface IMFCaptureEngine IMFCaptureEngine;
     80 #ifdef __cplusplus
     81 interface IMFCaptureEngine;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IMFCaptureEngineClassFactory_FWD_DEFINED__
     86 #define __IMFCaptureEngineClassFactory_FWD_DEFINED__
     87 typedef interface IMFCaptureEngineClassFactory IMFCaptureEngineClassFactory;
     88 #ifdef __cplusplus
     89 interface IMFCaptureEngineClassFactory;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IMFCaptureEngineOnSampleCallback2_FWD_DEFINED__
     94 #define __IMFCaptureEngineOnSampleCallback2_FWD_DEFINED__
     95 typedef interface IMFCaptureEngineOnSampleCallback2 IMFCaptureEngineOnSampleCallback2;
     96 #ifdef __cplusplus
     97 interface IMFCaptureEngineOnSampleCallback2;
     98 #endif /* __cplusplus */
     99 #endif
    100 
    101 #ifndef __IMFCaptureSink2_FWD_DEFINED__
    102 #define __IMFCaptureSink2_FWD_DEFINED__
    103 typedef interface IMFCaptureSink2 IMFCaptureSink2;
    104 #ifdef __cplusplus
    105 interface IMFCaptureSink2;
    106 #endif /* __cplusplus */
    107 #endif
    108 
    109 /* Headers for imported files */
    110 
    111 #include <mfobjects.h>
    112 #include <mfidl.h>
    113 
    114 #ifdef __cplusplus
    115 extern "C" {
    116 #endif
    117 
    118 #include <winapifamily.h>
    119 #if WINVER >= _WIN32_WINNT_WIN7
    120 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    121 #ifndef _MFVideoNormalizedRect_
    122 #define _MFVideoNormalizedRect_
    123 typedef struct MFVideoNormalizedRect {
    124     float left;
    125     float top;
    126     float right;
    127     float bottom;
    128 } MFVideoNormalizedRect;
    129 #endif
    130 typedef enum MF_CAPTURE_ENGINE_DEVICE_TYPE {
    131     MF_CAPTURE_ENGINE_DEVICE_TYPE_AUDIO = 0x0,
    132     MF_CAPTURE_ENGINE_DEVICE_TYPE_VIDEO = 0x1
    133 } MF_CAPTURE_ENGINE_DEVICE_TYPE;
    134 typedef enum MF_CAPTURE_ENGINE_SINK_TYPE {
    135     MF_CAPTURE_ENGINE_SINK_TYPE_RECORD = 0x0,
    136     MF_CAPTURE_ENGINE_SINK_TYPE_PREVIEW = 0x1,
    137     MF_CAPTURE_ENGINE_SINK_TYPE_PHOTO = 0x2
    138 } MF_CAPTURE_ENGINE_SINK_TYPE;
    139 enum {
    140     MF_CAPTURE_ENGINE_PREFERRED_SOURCE_STREAM_FOR_VIDEO_PREVIEW = 0xfffffffa,
    141     MF_CAPTURE_ENGINE_PREFERRED_SOURCE_STREAM_FOR_VIDEO_RECORD = 0xfffffff9,
    142     MF_CAPTURE_ENGINE_PREFERRED_SOURCE_STREAM_FOR_PHOTO = 0xfffffff8,
    143     MF_CAPTURE_ENGINE_PREFERRED_SOURCE_STREAM_FOR_AUDIO = 0xfffffff7,
    144     MF_CAPTURE_ENGINE_PREFERRED_SOURCE_STREAM_FOR_METADATA = 0xfffffff6,
    145     MF_CAPTURE_ENGINE_MEDIASOURCE = 0xffffffff
    146 };
    147 typedef enum MF_CAPTURE_ENGINE_STREAM_CATEGORY {
    148     MF_CAPTURE_ENGINE_STREAM_CATEGORY_VIDEO_PREVIEW = 0x0,
    149     MF_CAPTURE_ENGINE_STREAM_CATEGORY_VIDEO_CAPTURE = 0x1,
    150     MF_CAPTURE_ENGINE_STREAM_CATEGORY_PHOTO_INDEPENDENT = 0x2,
    151     MF_CAPTURE_ENGINE_STREAM_CATEGORY_PHOTO_DEPENDENT = 0x3,
    152     MF_CAPTURE_ENGINE_STREAM_CATEGORY_AUDIO = 0x4,
    153     MF_CAPTURE_ENGINE_STREAM_CATEGORY_UNSUPPORTED = 0x5,
    154     MF_CAPTURE_ENGINE_STREAM_CATEGORY_METADATA = 0x6
    155 } MF_CAPTURE_ENGINE_STREAM_CATEGORY;
    156 typedef enum MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE {
    157     MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_OTHER = 0,
    158     MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_COMMUNICATIONS = 1,
    159     MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_MEDIA = 2,
    160     MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_GAMECHAT = 3,
    161     MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_SPEECH = 4,
    162     MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_FARFIELDSPEECH = 5,
    163     MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_UNIFORMSPEECH = 6,
    164     MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE_VOICETYPING = 7
    165 } MF_CAPTURE_ENGINE_MEDIA_CATEGORY_TYPE;
    166 typedef enum MF_CAPTURE_ENGINE_AUDIO_PROCESSING_MODE {
    167     MF_CAPTURE_ENGINE_AUDIO_PROCESSING_DEFAULT = 0,
    168     MF_CAPTURE_ENGINE_AUDIO_PROCESSING_RAW = 1
    169 } MF_CAPTURE_ENGINE_AUDIO_PROCESSING_MODE;
    170 EXTERN_GUID(MF_CAPTURE_ENGINE_INITIALIZED, 0x219992bc, 0xcf92, 0x4531, 0xa1, 0xae, 0x96, 0xe1, 0xe8, 0x86, 0xc8, 0xf1);
    171 EXTERN_GUID(MF_CAPTURE_ENGINE_PREVIEW_STARTED, 0xa416df21, 0xf9d3, 0x4a74, 0x99, 0x1b, 0xb8, 0x17, 0x29, 0x89, 0x52, 0xc4);
    172 EXTERN_GUID(MF_CAPTURE_ENGINE_PREVIEW_STOPPED, 0x13d5143c, 0x1edd, 0x4e50,0xa2, 0xef, 0x35, 0x0a, 0x47, 0x67, 0x80, 0x60);
    173 EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_STARTED, 0xac2b027b, 0xddf9, 0x48a0,0x89, 0xbe, 0x38, 0xab, 0x35, 0xef, 0x45, 0xc0);
    174 EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_STOPPED, 0x55e5200a, 0xf98f, 0x4c0d, 0xa9, 0xec, 0x9e, 0xb2, 0x5e, 0xd3, 0xd7, 0x73);
    175 EXTERN_GUID(MF_CAPTURE_ENGINE_PHOTO_TAKEN, 0x3c50c445, 0x7304, 0x48eb,0x86, 0x5d, 0xbb, 0xa1, 0x9b, 0xa3, 0xaf, 0x5c);
    176 EXTERN_GUID(MF_CAPTURE_SOURCE_CURRENT_DEVICE_MEDIA_TYPE_SET, 0xe7e75e4c, 0x039c, 0x4410, 0x81, 0x5b, 0x87, 0x41, 0x30, 0x7b, 0x63, 0xaa);
    177 EXTERN_GUID(MF_CAPTURE_ENGINE_ERROR, 0x46b89fc6, 0x33cc, 0x4399,0x9d, 0xad, 0x78, 0x4d, 0xe7, 0x7d, 0x58, 0x7c);
    178 EXTERN_GUID(MF_CAPTURE_ENGINE_EFFECT_ADDED, 0xaa8dc7b5, 0xa048, 0x4e13, 0x8e, 0xbe, 0xf2, 0x3c, 0x46, 0xc8, 0x30, 0xc1);
    179 EXTERN_GUID(MF_CAPTURE_ENGINE_EFFECT_REMOVED, 0xc6e8db07, 0xfb09, 0x4a48, 0x89, 0xc6, 0xbf, 0x92, 0xa0, 0x42, 0x22, 0xc9);
    180 EXTERN_GUID(MF_CAPTURE_ENGINE_ALL_EFFECTS_REMOVED, 0xfded7521, 0x8ed8, 0x431a, 0xa9, 0x6b, 0xf3, 0xe2, 0x56, 0x5e, 0x98, 0x1c);
    181 EXTERN_GUID(MF_CAPTURE_SINK_PREPARED, 0x7bfce257, 0x12b1, 0x4409, 0x8c, 0x34, 0xd4, 0x45, 0xda, 0xab, 0x75, 0x78);
    182 EXTERN_GUID(MF_CAPTURE_ENGINE_OUTPUT_MEDIA_TYPE_SET, 0xcaaad994, 0x83ec, 0x45e9,0xa3, 0x0a, 0x1f, 0x20, 0xaa, 0xdb, 0x98, 0x31);
    183 EXTERN_GUID(MF_CAPTURE_ENGINE_CAMERA_STREAM_BLOCKED, 0xa4209417, 0x8d39, 0x46f3, 0xb7, 0x59, 0x59, 0x12, 0x52, 0x8f, 0x42, 0x07);
    184 EXTERN_GUID(MF_CAPTURE_ENGINE_CAMERA_STREAM_UNBLOCKED, 0x9be9eef0, 0xcdaf, 0x4717, 0x85, 0x64, 0x83, 0x4a, 0xae, 0x66, 0x41, 0x5c);
    185 EXTERN_GUID(MF_CAPTURE_ENGINE_D3D_MANAGER, 0x76e25e7b, 0xd595, 0x4283, 0x96, 0x2c, 0xc5, 0x94, 0xaf, 0xd7, 0x8d, 0xdf);
    186 EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_SINK_VIDEO_MAX_UNPROCESSED_SAMPLES, 0xb467f705, 0x7913, 0x4894, 0x9d, 0x42, 0xa2, 0x15, 0xfe, 0xa2, 0x3d, 0xa9);
    187 EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_SINK_AUDIO_MAX_UNPROCESSED_SAMPLES, 0x1cddb141, 0xa7f4, 0x4d58, 0x98, 0x96, 0x4d, 0x15, 0xa5, 0x3c, 0x4e, 0xfe);
    188 EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_SINK_VIDEO_MAX_PROCESSED_SAMPLES, 0xe7b4a49e, 0x382c, 0x4aef, 0xa9, 0x46, 0xae, 0xd5, 0x49, 0xb, 0x71, 0x11);
    189 EXTERN_GUID(MF_CAPTURE_ENGINE_RECORD_SINK_AUDIO_MAX_PROCESSED_SAMPLES, 0x9896e12a, 0xf707, 0x4500, 0xb6, 0xbd, 0xdb, 0x8e, 0xb8, 0x10, 0xb5, 0xf);
    190 EXTERN_GUID(MF_CAPTURE_ENGINE_USE_AUDIO_DEVICE_ONLY, 0x1c8077da, 0x8466, 0x4dc4, 0x8b, 0x8e, 0x27, 0x6b, 0x3f, 0x85, 0x92, 0x3b);
    191 EXTERN_GUID(MF_CAPTURE_ENGINE_USE_VIDEO_DEVICE_ONLY, 0x7e025171, 0xcf32, 0x4f2e, 0x8f, 0x19, 0x41, 0x5, 0x77, 0xb7, 0x3a, 0x66);
    192 EXTERN_GUID(MF_CAPTURE_ENGINE_DISABLE_HARDWARE_TRANSFORMS, 0xb7c42a6b, 0x3207,  0x4495, 0xb4, 0xe7, 0x81, 0xf9, 0xc3, 0x5d, 0x59, 0x91);
    193 EXTERN_GUID(MF_CAPTURE_ENGINE_DISABLE_DXVA, 0xf9818862, 0x179d, 0x433f, 0xa3, 0x2f, 0x74, 0xcb, 0xcf, 0x74, 0x46, 0x6d);
    194 EXTERN_GUID(MF_CAPTURE_ENGINE_MEDIASOURCE_CONFIG, 0xbc6989d2, 0x0fc1, 0x46e1, 0xa7, 0x4f, 0xef, 0xd3, 0x6b, 0xc7, 0x88, 0xde);
    195 EXTERN_GUID(MF_CAPTURE_ENGINE_DECODER_MFT_FIELDOFUSE_UNLOCK_Attribute, 0x2b8ad2e8, 0x7acb, 0x4321, 0xa6, 0x06, 0x32, 0x5c, 0x42, 0x49, 0xf4, 0xfc);
    196 EXTERN_GUID(MF_CAPTURE_ENGINE_ENCODER_MFT_FIELDOFUSE_UNLOCK_Attribute, 0x54c63a00, 0x78d5, 0x422f, 0xaa, 0x3e, 0x5e, 0x99, 0xac, 0x64, 0x92, 0x69);
    197 EXTERN_GUID(MF_CAPTURE_ENGINE_ENABLE_CAMERA_STREAMSTATE_NOTIFICATION, 0x4c808e9d, 0xaaed, 0x4713, 0x90, 0xfb, 0xcb, 0x24, 0x06, 0x4a, 0xb8, 0xda);
    198 EXTERN_GUID(MF_CAPTURE_ENGINE_MEDIA_CATEGORY, 0x8e3f5bd5, 0xdbbf, 0x42f0, 0x85, 0x42, 0xd0, 0x7a, 0x39, 0x71, 0x76, 0x2a);
    199 EXTERN_GUID(MF_CAPTURE_ENGINE_AUDIO_PROCESSING, 0x10f1be5e, 0x7e11, 0x410b, 0x97, 0x3d, 0xf4, 0xb6, 0x10, 0x90, 0x0, 0xfe);
    200 EXTERN_GUID(MF_CAPTURE_ENGINE_EVENT_GENERATOR_GUID, 0xabfa8ad5, 0xfc6d, 0x4911, 0x87, 0xe0, 0x96, 0x19, 0x45, 0xf8, 0xf7, 0xce);
    201 EXTERN_GUID(MF_CAPTURE_ENGINE_EVENT_STREAM_INDEX, 0x82697f44, 0xb1cf, 0x42eb, 0x97, 0x53, 0xf8, 0x6d, 0x64, 0x9c, 0x88, 0x65);
    202 EXTERN_GUID(MF_CAPTURE_ENGINE_SELECTEDCAMERAPROFILE, 0x03160b7e, 0x1c6f, 0x4db2, 0xad, 0x56, 0xa7, 0xc4, 0x30, 0xf8, 0x23, 0x92);
    203 EXTERN_GUID(MF_CAPTURE_ENGINE_SELECTEDCAMERAPROFILE_INDEX, 0x3ce88613, 0x2214, 0x46c3, 0xb4, 0x17, 0x82, 0xf8, 0xa3, 0x13, 0xc9, 0xc3);
    204 /*****************************************************************************
    205  * IMFCaptureEngineOnEventCallback interface
    206  */
    207 #ifndef __IMFCaptureEngineOnEventCallback_INTERFACE_DEFINED__
    208 #define __IMFCaptureEngineOnEventCallback_INTERFACE_DEFINED__
    209 
    210 DEFINE_GUID(IID_IMFCaptureEngineOnEventCallback, 0xaeda51c0, 0x9025, 0x4983, 0x90,0x12, 0xde,0x59,0x7b,0x88,0xb0,0x89);
    211 #if defined(__cplusplus) && !defined(CINTERFACE)
    212 MIDL_INTERFACE("aeda51c0-9025-4983-9012-de597b88b089")
    213 IMFCaptureEngineOnEventCallback : public IUnknown
    214 {
    215     virtual HRESULT STDMETHODCALLTYPE OnEvent(
    216         IMFMediaEvent *pEvent) = 0;
    217 
    218 };
    219 #ifdef __CRT_UUID_DECL
    220 __CRT_UUID_DECL(IMFCaptureEngineOnEventCallback, 0xaeda51c0, 0x9025, 0x4983, 0x90,0x12, 0xde,0x59,0x7b,0x88,0xb0,0x89)
    221 #endif
    222 #else
    223 typedef struct IMFCaptureEngineOnEventCallbackVtbl {
    224     BEGIN_INTERFACE
    225 
    226     /*** IUnknown methods ***/
    227     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    228         IMFCaptureEngineOnEventCallback *This,
    229         REFIID riid,
    230         void **ppvObject);
    231 
    232     ULONG (STDMETHODCALLTYPE *AddRef)(
    233         IMFCaptureEngineOnEventCallback *This);
    234 
    235     ULONG (STDMETHODCALLTYPE *Release)(
    236         IMFCaptureEngineOnEventCallback *This);
    237 
    238     /*** IMFCaptureEngineOnEventCallback methods ***/
    239     HRESULT (STDMETHODCALLTYPE *OnEvent)(
    240         IMFCaptureEngineOnEventCallback *This,
    241         IMFMediaEvent *pEvent);
    242 
    243     END_INTERFACE
    244 } IMFCaptureEngineOnEventCallbackVtbl;
    245 
    246 interface IMFCaptureEngineOnEventCallback {
    247     CONST_VTBL IMFCaptureEngineOnEventCallbackVtbl* lpVtbl;
    248 };
    249 
    250 #ifdef COBJMACROS
    251 #ifndef WIDL_C_INLINE_WRAPPERS
    252 /*** IUnknown methods ***/
    253 #define IMFCaptureEngineOnEventCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    254 #define IMFCaptureEngineOnEventCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
    255 #define IMFCaptureEngineOnEventCallback_Release(This) (This)->lpVtbl->Release(This)
    256 /*** IMFCaptureEngineOnEventCallback methods ***/
    257 #define IMFCaptureEngineOnEventCallback_OnEvent(This,pEvent) (This)->lpVtbl->OnEvent(This,pEvent)
    258 #else
    259 /*** IUnknown methods ***/
    260 static inline HRESULT IMFCaptureEngineOnEventCallback_QueryInterface(IMFCaptureEngineOnEventCallback* This,REFIID riid,void **ppvObject) {
    261     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    262 }
    263 static inline ULONG IMFCaptureEngineOnEventCallback_AddRef(IMFCaptureEngineOnEventCallback* This) {
    264     return This->lpVtbl->AddRef(This);
    265 }
    266 static inline ULONG IMFCaptureEngineOnEventCallback_Release(IMFCaptureEngineOnEventCallback* This) {
    267     return This->lpVtbl->Release(This);
    268 }
    269 /*** IMFCaptureEngineOnEventCallback methods ***/
    270 static inline HRESULT IMFCaptureEngineOnEventCallback_OnEvent(IMFCaptureEngineOnEventCallback* This,IMFMediaEvent *pEvent) {
    271     return This->lpVtbl->OnEvent(This,pEvent);
    272 }
    273 #endif
    274 #endif
    275 
    276 #endif
    277 
    278 
    279 #endif  /* __IMFCaptureEngineOnEventCallback_INTERFACE_DEFINED__ */
    280 
    281 /*****************************************************************************
    282  * IMFCaptureEngineOnSampleCallback interface
    283  */
    284 #ifndef __IMFCaptureEngineOnSampleCallback_INTERFACE_DEFINED__
    285 #define __IMFCaptureEngineOnSampleCallback_INTERFACE_DEFINED__
    286 
    287 DEFINE_GUID(IID_IMFCaptureEngineOnSampleCallback, 0x52150b82, 0xab39, 0x4467, 0x98,0x0f, 0xe4,0x8b,0xf0,0x82,0x2e,0xcd);
    288 #if defined(__cplusplus) && !defined(CINTERFACE)
    289 MIDL_INTERFACE("52150b82-ab39-4467-980f-e48bf0822ecd")
    290 IMFCaptureEngineOnSampleCallback : public IUnknown
    291 {
    292     virtual HRESULT STDMETHODCALLTYPE OnSample(
    293         IMFSample *pSample) = 0;
    294 
    295 };
    296 #ifdef __CRT_UUID_DECL
    297 __CRT_UUID_DECL(IMFCaptureEngineOnSampleCallback, 0x52150b82, 0xab39, 0x4467, 0x98,0x0f, 0xe4,0x8b,0xf0,0x82,0x2e,0xcd)
    298 #endif
    299 #else
    300 typedef struct IMFCaptureEngineOnSampleCallbackVtbl {
    301     BEGIN_INTERFACE
    302 
    303     /*** IUnknown methods ***/
    304     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    305         IMFCaptureEngineOnSampleCallback *This,
    306         REFIID riid,
    307         void **ppvObject);
    308 
    309     ULONG (STDMETHODCALLTYPE *AddRef)(
    310         IMFCaptureEngineOnSampleCallback *This);
    311 
    312     ULONG (STDMETHODCALLTYPE *Release)(
    313         IMFCaptureEngineOnSampleCallback *This);
    314 
    315     /*** IMFCaptureEngineOnSampleCallback methods ***/
    316     HRESULT (STDMETHODCALLTYPE *OnSample)(
    317         IMFCaptureEngineOnSampleCallback *This,
    318         IMFSample *pSample);
    319 
    320     END_INTERFACE
    321 } IMFCaptureEngineOnSampleCallbackVtbl;
    322 
    323 interface IMFCaptureEngineOnSampleCallback {
    324     CONST_VTBL IMFCaptureEngineOnSampleCallbackVtbl* lpVtbl;
    325 };
    326 
    327 #ifdef COBJMACROS
    328 #ifndef WIDL_C_INLINE_WRAPPERS
    329 /*** IUnknown methods ***/
    330 #define IMFCaptureEngineOnSampleCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    331 #define IMFCaptureEngineOnSampleCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
    332 #define IMFCaptureEngineOnSampleCallback_Release(This) (This)->lpVtbl->Release(This)
    333 /*** IMFCaptureEngineOnSampleCallback methods ***/
    334 #define IMFCaptureEngineOnSampleCallback_OnSample(This,pSample) (This)->lpVtbl->OnSample(This,pSample)
    335 #else
    336 /*** IUnknown methods ***/
    337 static inline HRESULT IMFCaptureEngineOnSampleCallback_QueryInterface(IMFCaptureEngineOnSampleCallback* This,REFIID riid,void **ppvObject) {
    338     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    339 }
    340 static inline ULONG IMFCaptureEngineOnSampleCallback_AddRef(IMFCaptureEngineOnSampleCallback* This) {
    341     return This->lpVtbl->AddRef(This);
    342 }
    343 static inline ULONG IMFCaptureEngineOnSampleCallback_Release(IMFCaptureEngineOnSampleCallback* This) {
    344     return This->lpVtbl->Release(This);
    345 }
    346 /*** IMFCaptureEngineOnSampleCallback methods ***/
    347 static inline HRESULT IMFCaptureEngineOnSampleCallback_OnSample(IMFCaptureEngineOnSampleCallback* This,IMFSample *pSample) {
    348     return This->lpVtbl->OnSample(This,pSample);
    349 }
    350 #endif
    351 #endif
    352 
    353 #endif
    354 
    355 
    356 #endif  /* __IMFCaptureEngineOnSampleCallback_INTERFACE_DEFINED__ */
    357 
    358 /*****************************************************************************
    359  * IMFCaptureSink interface
    360  */
    361 #ifndef __IMFCaptureSink_INTERFACE_DEFINED__
    362 #define __IMFCaptureSink_INTERFACE_DEFINED__
    363 
    364 DEFINE_GUID(IID_IMFCaptureSink, 0x72d6135b, 0x35e9, 0x412c, 0xb9,0x26, 0xfd,0x52,0x65,0xf2,0xa8,0x85);
    365 #if defined(__cplusplus) && !defined(CINTERFACE)
    366 MIDL_INTERFACE("72d6135b-35e9-412c-b926-fd5265f2a885")
    367 IMFCaptureSink : public IUnknown
    368 {
    369     virtual HRESULT STDMETHODCALLTYPE GetOutputMediaType(
    370         DWORD dwSinkStreamIndex,
    371         IMFMediaType **ppMediaType) = 0;
    372 
    373     virtual HRESULT STDMETHODCALLTYPE GetService(
    374         DWORD dwSinkStreamIndex,
    375         REFGUID rguidService,
    376         REFIID riid,
    377         IUnknown **ppUnknown) = 0;
    378 
    379     virtual HRESULT STDMETHODCALLTYPE AddStream(
    380         DWORD dwSourceStreamIndex,
    381         IMFMediaType *pMediaType,
    382         IMFAttributes *pAttributes,
    383         DWORD *pdwSinkStreamIndex) = 0;
    384 
    385     virtual HRESULT STDMETHODCALLTYPE Prepare(
    386         ) = 0;
    387 
    388     virtual HRESULT STDMETHODCALLTYPE RemoveAllStreams(
    389         ) = 0;
    390 
    391 };
    392 #ifdef __CRT_UUID_DECL
    393 __CRT_UUID_DECL(IMFCaptureSink, 0x72d6135b, 0x35e9, 0x412c, 0xb9,0x26, 0xfd,0x52,0x65,0xf2,0xa8,0x85)
    394 #endif
    395 #else
    396 typedef struct IMFCaptureSinkVtbl {
    397     BEGIN_INTERFACE
    398 
    399     /*** IUnknown methods ***/
    400     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    401         IMFCaptureSink *This,
    402         REFIID riid,
    403         void **ppvObject);
    404 
    405     ULONG (STDMETHODCALLTYPE *AddRef)(
    406         IMFCaptureSink *This);
    407 
    408     ULONG (STDMETHODCALLTYPE *Release)(
    409         IMFCaptureSink *This);
    410 
    411     /*** IMFCaptureSink methods ***/
    412     HRESULT (STDMETHODCALLTYPE *GetOutputMediaType)(
    413         IMFCaptureSink *This,
    414         DWORD dwSinkStreamIndex,
    415         IMFMediaType **ppMediaType);
    416 
    417     HRESULT (STDMETHODCALLTYPE *GetService)(
    418         IMFCaptureSink *This,
    419         DWORD dwSinkStreamIndex,
    420         REFGUID rguidService,
    421         REFIID riid,
    422         IUnknown **ppUnknown);
    423 
    424     HRESULT (STDMETHODCALLTYPE *AddStream)(
    425         IMFCaptureSink *This,
    426         DWORD dwSourceStreamIndex,
    427         IMFMediaType *pMediaType,
    428         IMFAttributes *pAttributes,
    429         DWORD *pdwSinkStreamIndex);
    430 
    431     HRESULT (STDMETHODCALLTYPE *Prepare)(
    432         IMFCaptureSink *This);
    433 
    434     HRESULT (STDMETHODCALLTYPE *RemoveAllStreams)(
    435         IMFCaptureSink *This);
    436 
    437     END_INTERFACE
    438 } IMFCaptureSinkVtbl;
    439 
    440 interface IMFCaptureSink {
    441     CONST_VTBL IMFCaptureSinkVtbl* lpVtbl;
    442 };
    443 
    444 #ifdef COBJMACROS
    445 #ifndef WIDL_C_INLINE_WRAPPERS
    446 /*** IUnknown methods ***/
    447 #define IMFCaptureSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    448 #define IMFCaptureSink_AddRef(This) (This)->lpVtbl->AddRef(This)
    449 #define IMFCaptureSink_Release(This) (This)->lpVtbl->Release(This)
    450 /*** IMFCaptureSink methods ***/
    451 #define IMFCaptureSink_GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType) (This)->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType)
    452 #define IMFCaptureSink_GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown)
    453 #define IMFCaptureSink_AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex) (This)->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex)
    454 #define IMFCaptureSink_Prepare(This) (This)->lpVtbl->Prepare(This)
    455 #define IMFCaptureSink_RemoveAllStreams(This) (This)->lpVtbl->RemoveAllStreams(This)
    456 #else
    457 /*** IUnknown methods ***/
    458 static inline HRESULT IMFCaptureSink_QueryInterface(IMFCaptureSink* This,REFIID riid,void **ppvObject) {
    459     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    460 }
    461 static inline ULONG IMFCaptureSink_AddRef(IMFCaptureSink* This) {
    462     return This->lpVtbl->AddRef(This);
    463 }
    464 static inline ULONG IMFCaptureSink_Release(IMFCaptureSink* This) {
    465     return This->lpVtbl->Release(This);
    466 }
    467 /*** IMFCaptureSink methods ***/
    468 static inline HRESULT IMFCaptureSink_GetOutputMediaType(IMFCaptureSink* This,DWORD dwSinkStreamIndex,IMFMediaType **ppMediaType) {
    469     return This->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType);
    470 }
    471 static inline HRESULT IMFCaptureSink_GetService(IMFCaptureSink* This,DWORD dwSinkStreamIndex,REFGUID rguidService,REFIID riid,IUnknown **ppUnknown) {
    472     return This->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown);
    473 }
    474 static inline HRESULT IMFCaptureSink_AddStream(IMFCaptureSink* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pAttributes,DWORD *pdwSinkStreamIndex) {
    475     return This->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex);
    476 }
    477 static inline HRESULT IMFCaptureSink_Prepare(IMFCaptureSink* This) {
    478     return This->lpVtbl->Prepare(This);
    479 }
    480 static inline HRESULT IMFCaptureSink_RemoveAllStreams(IMFCaptureSink* This) {
    481     return This->lpVtbl->RemoveAllStreams(This);
    482 }
    483 #endif
    484 #endif
    485 
    486 #endif
    487 
    488 
    489 #endif  /* __IMFCaptureSink_INTERFACE_DEFINED__ */
    490 
    491 /*****************************************************************************
    492  * IMFCaptureRecordSink interface
    493  */
    494 #ifndef __IMFCaptureRecordSink_INTERFACE_DEFINED__
    495 #define __IMFCaptureRecordSink_INTERFACE_DEFINED__
    496 
    497 DEFINE_GUID(IID_IMFCaptureRecordSink, 0x3323b55a, 0xf92a, 0x4fe2, 0x8e,0xdc, 0xe9,0xbf,0xc0,0x63,0x4d,0x77);
    498 #if defined(__cplusplus) && !defined(CINTERFACE)
    499 MIDL_INTERFACE("3323b55a-f92a-4fe2-8edc-e9bfc0634d77")
    500 IMFCaptureRecordSink : public IMFCaptureSink
    501 {
    502     virtual HRESULT STDMETHODCALLTYPE SetOutputByteStream(
    503         IMFByteStream *pByteStream,
    504         REFGUID guidContainerType) = 0;
    505 
    506     virtual HRESULT STDMETHODCALLTYPE SetOutputFileName(
    507         LPCWSTR fileName) = 0;
    508 
    509     virtual HRESULT STDMETHODCALLTYPE SetSampleCallback(
    510         DWORD dwStreamSinkIndex,
    511         IMFCaptureEngineOnSampleCallback *pCallback) = 0;
    512 
    513     virtual HRESULT STDMETHODCALLTYPE SetCustomSink(
    514         IMFMediaSink *pMediaSink) = 0;
    515 
    516     virtual HRESULT STDMETHODCALLTYPE GetRotation(
    517         DWORD dwStreamIndex,
    518         DWORD *pdwRotationValue) = 0;
    519 
    520     virtual HRESULT STDMETHODCALLTYPE SetRotation(
    521         DWORD dwStreamIndex,
    522         DWORD dwRotationValue) = 0;
    523 
    524 };
    525 #ifdef __CRT_UUID_DECL
    526 __CRT_UUID_DECL(IMFCaptureRecordSink, 0x3323b55a, 0xf92a, 0x4fe2, 0x8e,0xdc, 0xe9,0xbf,0xc0,0x63,0x4d,0x77)
    527 #endif
    528 #else
    529 typedef struct IMFCaptureRecordSinkVtbl {
    530     BEGIN_INTERFACE
    531 
    532     /*** IUnknown methods ***/
    533     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    534         IMFCaptureRecordSink *This,
    535         REFIID riid,
    536         void **ppvObject);
    537 
    538     ULONG (STDMETHODCALLTYPE *AddRef)(
    539         IMFCaptureRecordSink *This);
    540 
    541     ULONG (STDMETHODCALLTYPE *Release)(
    542         IMFCaptureRecordSink *This);
    543 
    544     /*** IMFCaptureSink methods ***/
    545     HRESULT (STDMETHODCALLTYPE *GetOutputMediaType)(
    546         IMFCaptureRecordSink *This,
    547         DWORD dwSinkStreamIndex,
    548         IMFMediaType **ppMediaType);
    549 
    550     HRESULT (STDMETHODCALLTYPE *GetService)(
    551         IMFCaptureRecordSink *This,
    552         DWORD dwSinkStreamIndex,
    553         REFGUID rguidService,
    554         REFIID riid,
    555         IUnknown **ppUnknown);
    556 
    557     HRESULT (STDMETHODCALLTYPE *AddStream)(
    558         IMFCaptureRecordSink *This,
    559         DWORD dwSourceStreamIndex,
    560         IMFMediaType *pMediaType,
    561         IMFAttributes *pAttributes,
    562         DWORD *pdwSinkStreamIndex);
    563 
    564     HRESULT (STDMETHODCALLTYPE *Prepare)(
    565         IMFCaptureRecordSink *This);
    566 
    567     HRESULT (STDMETHODCALLTYPE *RemoveAllStreams)(
    568         IMFCaptureRecordSink *This);
    569 
    570     /*** IMFCaptureRecordSink methods ***/
    571     HRESULT (STDMETHODCALLTYPE *SetOutputByteStream)(
    572         IMFCaptureRecordSink *This,
    573         IMFByteStream *pByteStream,
    574         REFGUID guidContainerType);
    575 
    576     HRESULT (STDMETHODCALLTYPE *SetOutputFileName)(
    577         IMFCaptureRecordSink *This,
    578         LPCWSTR fileName);
    579 
    580     HRESULT (STDMETHODCALLTYPE *SetSampleCallback)(
    581         IMFCaptureRecordSink *This,
    582         DWORD dwStreamSinkIndex,
    583         IMFCaptureEngineOnSampleCallback *pCallback);
    584 
    585     HRESULT (STDMETHODCALLTYPE *SetCustomSink)(
    586         IMFCaptureRecordSink *This,
    587         IMFMediaSink *pMediaSink);
    588 
    589     HRESULT (STDMETHODCALLTYPE *GetRotation)(
    590         IMFCaptureRecordSink *This,
    591         DWORD dwStreamIndex,
    592         DWORD *pdwRotationValue);
    593 
    594     HRESULT (STDMETHODCALLTYPE *SetRotation)(
    595         IMFCaptureRecordSink *This,
    596         DWORD dwStreamIndex,
    597         DWORD dwRotationValue);
    598 
    599     END_INTERFACE
    600 } IMFCaptureRecordSinkVtbl;
    601 
    602 interface IMFCaptureRecordSink {
    603     CONST_VTBL IMFCaptureRecordSinkVtbl* lpVtbl;
    604 };
    605 
    606 #ifdef COBJMACROS
    607 #ifndef WIDL_C_INLINE_WRAPPERS
    608 /*** IUnknown methods ***/
    609 #define IMFCaptureRecordSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    610 #define IMFCaptureRecordSink_AddRef(This) (This)->lpVtbl->AddRef(This)
    611 #define IMFCaptureRecordSink_Release(This) (This)->lpVtbl->Release(This)
    612 /*** IMFCaptureSink methods ***/
    613 #define IMFCaptureRecordSink_GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType) (This)->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType)
    614 #define IMFCaptureRecordSink_GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown)
    615 #define IMFCaptureRecordSink_AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex) (This)->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex)
    616 #define IMFCaptureRecordSink_Prepare(This) (This)->lpVtbl->Prepare(This)
    617 #define IMFCaptureRecordSink_RemoveAllStreams(This) (This)->lpVtbl->RemoveAllStreams(This)
    618 /*** IMFCaptureRecordSink methods ***/
    619 #define IMFCaptureRecordSink_SetOutputByteStream(This,pByteStream,guidContainerType) (This)->lpVtbl->SetOutputByteStream(This,pByteStream,guidContainerType)
    620 #define IMFCaptureRecordSink_SetOutputFileName(This,fileName) (This)->lpVtbl->SetOutputFileName(This,fileName)
    621 #define IMFCaptureRecordSink_SetSampleCallback(This,dwStreamSinkIndex,pCallback) (This)->lpVtbl->SetSampleCallback(This,dwStreamSinkIndex,pCallback)
    622 #define IMFCaptureRecordSink_SetCustomSink(This,pMediaSink) (This)->lpVtbl->SetCustomSink(This,pMediaSink)
    623 #define IMFCaptureRecordSink_GetRotation(This,dwStreamIndex,pdwRotationValue) (This)->lpVtbl->GetRotation(This,dwStreamIndex,pdwRotationValue)
    624 #define IMFCaptureRecordSink_SetRotation(This,dwStreamIndex,dwRotationValue) (This)->lpVtbl->SetRotation(This,dwStreamIndex,dwRotationValue)
    625 #else
    626 /*** IUnknown methods ***/
    627 static inline HRESULT IMFCaptureRecordSink_QueryInterface(IMFCaptureRecordSink* This,REFIID riid,void **ppvObject) {
    628     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    629 }
    630 static inline ULONG IMFCaptureRecordSink_AddRef(IMFCaptureRecordSink* This) {
    631     return This->lpVtbl->AddRef(This);
    632 }
    633 static inline ULONG IMFCaptureRecordSink_Release(IMFCaptureRecordSink* This) {
    634     return This->lpVtbl->Release(This);
    635 }
    636 /*** IMFCaptureSink methods ***/
    637 static inline HRESULT IMFCaptureRecordSink_GetOutputMediaType(IMFCaptureRecordSink* This,DWORD dwSinkStreamIndex,IMFMediaType **ppMediaType) {
    638     return This->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType);
    639 }
    640 static inline HRESULT IMFCaptureRecordSink_GetService(IMFCaptureRecordSink* This,DWORD dwSinkStreamIndex,REFGUID rguidService,REFIID riid,IUnknown **ppUnknown) {
    641     return This->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown);
    642 }
    643 static inline HRESULT IMFCaptureRecordSink_AddStream(IMFCaptureRecordSink* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pAttributes,DWORD *pdwSinkStreamIndex) {
    644     return This->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex);
    645 }
    646 static inline HRESULT IMFCaptureRecordSink_Prepare(IMFCaptureRecordSink* This) {
    647     return This->lpVtbl->Prepare(This);
    648 }
    649 static inline HRESULT IMFCaptureRecordSink_RemoveAllStreams(IMFCaptureRecordSink* This) {
    650     return This->lpVtbl->RemoveAllStreams(This);
    651 }
    652 /*** IMFCaptureRecordSink methods ***/
    653 static inline HRESULT IMFCaptureRecordSink_SetOutputByteStream(IMFCaptureRecordSink* This,IMFByteStream *pByteStream,REFGUID guidContainerType) {
    654     return This->lpVtbl->SetOutputByteStream(This,pByteStream,guidContainerType);
    655 }
    656 static inline HRESULT IMFCaptureRecordSink_SetOutputFileName(IMFCaptureRecordSink* This,LPCWSTR fileName) {
    657     return This->lpVtbl->SetOutputFileName(This,fileName);
    658 }
    659 static inline HRESULT IMFCaptureRecordSink_SetSampleCallback(IMFCaptureRecordSink* This,DWORD dwStreamSinkIndex,IMFCaptureEngineOnSampleCallback *pCallback) {
    660     return This->lpVtbl->SetSampleCallback(This,dwStreamSinkIndex,pCallback);
    661 }
    662 static inline HRESULT IMFCaptureRecordSink_SetCustomSink(IMFCaptureRecordSink* This,IMFMediaSink *pMediaSink) {
    663     return This->lpVtbl->SetCustomSink(This,pMediaSink);
    664 }
    665 static inline HRESULT IMFCaptureRecordSink_GetRotation(IMFCaptureRecordSink* This,DWORD dwStreamIndex,DWORD *pdwRotationValue) {
    666     return This->lpVtbl->GetRotation(This,dwStreamIndex,pdwRotationValue);
    667 }
    668 static inline HRESULT IMFCaptureRecordSink_SetRotation(IMFCaptureRecordSink* This,DWORD dwStreamIndex,DWORD dwRotationValue) {
    669     return This->lpVtbl->SetRotation(This,dwStreamIndex,dwRotationValue);
    670 }
    671 #endif
    672 #endif
    673 
    674 #endif
    675 
    676 
    677 #endif  /* __IMFCaptureRecordSink_INTERFACE_DEFINED__ */
    678 
    679 /*****************************************************************************
    680  * IMFCapturePreviewSink interface
    681  */
    682 #ifndef __IMFCapturePreviewSink_INTERFACE_DEFINED__
    683 #define __IMFCapturePreviewSink_INTERFACE_DEFINED__
    684 
    685 DEFINE_GUID(IID_IMFCapturePreviewSink, 0x77346cfd, 0x5b49, 0x4d73, 0xac,0xe0, 0x5b,0x52,0xa8,0x59,0xf2,0xe0);
    686 #if defined(__cplusplus) && !defined(CINTERFACE)
    687 MIDL_INTERFACE("77346cfd-5b49-4d73-ace0-5b52a859f2e0")
    688 IMFCapturePreviewSink : public IMFCaptureSink
    689 {
    690     virtual HRESULT STDMETHODCALLTYPE SetRenderHandle(
    691         HANDLE handle) = 0;
    692 
    693     virtual HRESULT STDMETHODCALLTYPE SetRenderSurface(
    694         IUnknown *pSurface) = 0;
    695 
    696     virtual HRESULT STDMETHODCALLTYPE UpdateVideo(
    697         const MFVideoNormalizedRect *pSrc,
    698         const RECT *pDst,
    699         const COLORREF *pBorderClr) = 0;
    700 
    701     virtual HRESULT STDMETHODCALLTYPE SetSampleCallback(
    702         DWORD dwStreamSinkIndex,
    703         IMFCaptureEngineOnSampleCallback *pCallback) = 0;
    704 
    705     virtual HRESULT STDMETHODCALLTYPE GetMirrorState(
    706         WINBOOL *pfMirrorState) = 0;
    707 
    708     virtual HRESULT STDMETHODCALLTYPE SetMirrorState(
    709         WINBOOL fMirrorState) = 0;
    710 
    711     virtual HRESULT STDMETHODCALLTYPE GetRotation(
    712         DWORD dwStreamIndex,
    713         DWORD *pdwRotationValue) = 0;
    714 
    715     virtual HRESULT STDMETHODCALLTYPE SetRotation(
    716         DWORD dwStreamIndex,
    717         DWORD dwRotationValue) = 0;
    718 
    719     virtual HRESULT STDMETHODCALLTYPE SetCustomSink(
    720         IMFMediaSink *pMediaSink) = 0;
    721 
    722 };
    723 #ifdef __CRT_UUID_DECL
    724 __CRT_UUID_DECL(IMFCapturePreviewSink, 0x77346cfd, 0x5b49, 0x4d73, 0xac,0xe0, 0x5b,0x52,0xa8,0x59,0xf2,0xe0)
    725 #endif
    726 #else
    727 typedef struct IMFCapturePreviewSinkVtbl {
    728     BEGIN_INTERFACE
    729 
    730     /*** IUnknown methods ***/
    731     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    732         IMFCapturePreviewSink *This,
    733         REFIID riid,
    734         void **ppvObject);
    735 
    736     ULONG (STDMETHODCALLTYPE *AddRef)(
    737         IMFCapturePreviewSink *This);
    738 
    739     ULONG (STDMETHODCALLTYPE *Release)(
    740         IMFCapturePreviewSink *This);
    741 
    742     /*** IMFCaptureSink methods ***/
    743     HRESULT (STDMETHODCALLTYPE *GetOutputMediaType)(
    744         IMFCapturePreviewSink *This,
    745         DWORD dwSinkStreamIndex,
    746         IMFMediaType **ppMediaType);
    747 
    748     HRESULT (STDMETHODCALLTYPE *GetService)(
    749         IMFCapturePreviewSink *This,
    750         DWORD dwSinkStreamIndex,
    751         REFGUID rguidService,
    752         REFIID riid,
    753         IUnknown **ppUnknown);
    754 
    755     HRESULT (STDMETHODCALLTYPE *AddStream)(
    756         IMFCapturePreviewSink *This,
    757         DWORD dwSourceStreamIndex,
    758         IMFMediaType *pMediaType,
    759         IMFAttributes *pAttributes,
    760         DWORD *pdwSinkStreamIndex);
    761 
    762     HRESULT (STDMETHODCALLTYPE *Prepare)(
    763         IMFCapturePreviewSink *This);
    764 
    765     HRESULT (STDMETHODCALLTYPE *RemoveAllStreams)(
    766         IMFCapturePreviewSink *This);
    767 
    768     /*** IMFCapturePreviewSink methods ***/
    769     HRESULT (STDMETHODCALLTYPE *SetRenderHandle)(
    770         IMFCapturePreviewSink *This,
    771         HANDLE handle);
    772 
    773     HRESULT (STDMETHODCALLTYPE *SetRenderSurface)(
    774         IMFCapturePreviewSink *This,
    775         IUnknown *pSurface);
    776 
    777     HRESULT (STDMETHODCALLTYPE *UpdateVideo)(
    778         IMFCapturePreviewSink *This,
    779         const MFVideoNormalizedRect *pSrc,
    780         const RECT *pDst,
    781         const COLORREF *pBorderClr);
    782 
    783     HRESULT (STDMETHODCALLTYPE *SetSampleCallback)(
    784         IMFCapturePreviewSink *This,
    785         DWORD dwStreamSinkIndex,
    786         IMFCaptureEngineOnSampleCallback *pCallback);
    787 
    788     HRESULT (STDMETHODCALLTYPE *GetMirrorState)(
    789         IMFCapturePreviewSink *This,
    790         WINBOOL *pfMirrorState);
    791 
    792     HRESULT (STDMETHODCALLTYPE *SetMirrorState)(
    793         IMFCapturePreviewSink *This,
    794         WINBOOL fMirrorState);
    795 
    796     HRESULT (STDMETHODCALLTYPE *GetRotation)(
    797         IMFCapturePreviewSink *This,
    798         DWORD dwStreamIndex,
    799         DWORD *pdwRotationValue);
    800 
    801     HRESULT (STDMETHODCALLTYPE *SetRotation)(
    802         IMFCapturePreviewSink *This,
    803         DWORD dwStreamIndex,
    804         DWORD dwRotationValue);
    805 
    806     HRESULT (STDMETHODCALLTYPE *SetCustomSink)(
    807         IMFCapturePreviewSink *This,
    808         IMFMediaSink *pMediaSink);
    809 
    810     END_INTERFACE
    811 } IMFCapturePreviewSinkVtbl;
    812 
    813 interface IMFCapturePreviewSink {
    814     CONST_VTBL IMFCapturePreviewSinkVtbl* lpVtbl;
    815 };
    816 
    817 #ifdef COBJMACROS
    818 #ifndef WIDL_C_INLINE_WRAPPERS
    819 /*** IUnknown methods ***/
    820 #define IMFCapturePreviewSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    821 #define IMFCapturePreviewSink_AddRef(This) (This)->lpVtbl->AddRef(This)
    822 #define IMFCapturePreviewSink_Release(This) (This)->lpVtbl->Release(This)
    823 /*** IMFCaptureSink methods ***/
    824 #define IMFCapturePreviewSink_GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType) (This)->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType)
    825 #define IMFCapturePreviewSink_GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown)
    826 #define IMFCapturePreviewSink_AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex) (This)->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex)
    827 #define IMFCapturePreviewSink_Prepare(This) (This)->lpVtbl->Prepare(This)
    828 #define IMFCapturePreviewSink_RemoveAllStreams(This) (This)->lpVtbl->RemoveAllStreams(This)
    829 /*** IMFCapturePreviewSink methods ***/
    830 #define IMFCapturePreviewSink_SetRenderHandle(This,handle) (This)->lpVtbl->SetRenderHandle(This,handle)
    831 #define IMFCapturePreviewSink_SetRenderSurface(This,pSurface) (This)->lpVtbl->SetRenderSurface(This,pSurface)
    832 #define IMFCapturePreviewSink_UpdateVideo(This,pSrc,pDst,pBorderClr) (This)->lpVtbl->UpdateVideo(This,pSrc,pDst,pBorderClr)
    833 #define IMFCapturePreviewSink_SetSampleCallback(This,dwStreamSinkIndex,pCallback) (This)->lpVtbl->SetSampleCallback(This,dwStreamSinkIndex,pCallback)
    834 #define IMFCapturePreviewSink_GetMirrorState(This,pfMirrorState) (This)->lpVtbl->GetMirrorState(This,pfMirrorState)
    835 #define IMFCapturePreviewSink_SetMirrorState(This,fMirrorState) (This)->lpVtbl->SetMirrorState(This,fMirrorState)
    836 #define IMFCapturePreviewSink_GetRotation(This,dwStreamIndex,pdwRotationValue) (This)->lpVtbl->GetRotation(This,dwStreamIndex,pdwRotationValue)
    837 #define IMFCapturePreviewSink_SetRotation(This,dwStreamIndex,dwRotationValue) (This)->lpVtbl->SetRotation(This,dwStreamIndex,dwRotationValue)
    838 #define IMFCapturePreviewSink_SetCustomSink(This,pMediaSink) (This)->lpVtbl->SetCustomSink(This,pMediaSink)
    839 #else
    840 /*** IUnknown methods ***/
    841 static inline HRESULT IMFCapturePreviewSink_QueryInterface(IMFCapturePreviewSink* This,REFIID riid,void **ppvObject) {
    842     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    843 }
    844 static inline ULONG IMFCapturePreviewSink_AddRef(IMFCapturePreviewSink* This) {
    845     return This->lpVtbl->AddRef(This);
    846 }
    847 static inline ULONG IMFCapturePreviewSink_Release(IMFCapturePreviewSink* This) {
    848     return This->lpVtbl->Release(This);
    849 }
    850 /*** IMFCaptureSink methods ***/
    851 static inline HRESULT IMFCapturePreviewSink_GetOutputMediaType(IMFCapturePreviewSink* This,DWORD dwSinkStreamIndex,IMFMediaType **ppMediaType) {
    852     return This->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType);
    853 }
    854 static inline HRESULT IMFCapturePreviewSink_GetService(IMFCapturePreviewSink* This,DWORD dwSinkStreamIndex,REFGUID rguidService,REFIID riid,IUnknown **ppUnknown) {
    855     return This->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown);
    856 }
    857 static inline HRESULT IMFCapturePreviewSink_AddStream(IMFCapturePreviewSink* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pAttributes,DWORD *pdwSinkStreamIndex) {
    858     return This->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex);
    859 }
    860 static inline HRESULT IMFCapturePreviewSink_Prepare(IMFCapturePreviewSink* This) {
    861     return This->lpVtbl->Prepare(This);
    862 }
    863 static inline HRESULT IMFCapturePreviewSink_RemoveAllStreams(IMFCapturePreviewSink* This) {
    864     return This->lpVtbl->RemoveAllStreams(This);
    865 }
    866 /*** IMFCapturePreviewSink methods ***/
    867 static inline HRESULT IMFCapturePreviewSink_SetRenderHandle(IMFCapturePreviewSink* This,HANDLE handle) {
    868     return This->lpVtbl->SetRenderHandle(This,handle);
    869 }
    870 static inline HRESULT IMFCapturePreviewSink_SetRenderSurface(IMFCapturePreviewSink* This,IUnknown *pSurface) {
    871     return This->lpVtbl->SetRenderSurface(This,pSurface);
    872 }
    873 static inline HRESULT IMFCapturePreviewSink_UpdateVideo(IMFCapturePreviewSink* This,const MFVideoNormalizedRect *pSrc,const RECT *pDst,const COLORREF *pBorderClr) {
    874     return This->lpVtbl->UpdateVideo(This,pSrc,pDst,pBorderClr);
    875 }
    876 static inline HRESULT IMFCapturePreviewSink_SetSampleCallback(IMFCapturePreviewSink* This,DWORD dwStreamSinkIndex,IMFCaptureEngineOnSampleCallback *pCallback) {
    877     return This->lpVtbl->SetSampleCallback(This,dwStreamSinkIndex,pCallback);
    878 }
    879 static inline HRESULT IMFCapturePreviewSink_GetMirrorState(IMFCapturePreviewSink* This,WINBOOL *pfMirrorState) {
    880     return This->lpVtbl->GetMirrorState(This,pfMirrorState);
    881 }
    882 static inline HRESULT IMFCapturePreviewSink_SetMirrorState(IMFCapturePreviewSink* This,WINBOOL fMirrorState) {
    883     return This->lpVtbl->SetMirrorState(This,fMirrorState);
    884 }
    885 static inline HRESULT IMFCapturePreviewSink_GetRotation(IMFCapturePreviewSink* This,DWORD dwStreamIndex,DWORD *pdwRotationValue) {
    886     return This->lpVtbl->GetRotation(This,dwStreamIndex,pdwRotationValue);
    887 }
    888 static inline HRESULT IMFCapturePreviewSink_SetRotation(IMFCapturePreviewSink* This,DWORD dwStreamIndex,DWORD dwRotationValue) {
    889     return This->lpVtbl->SetRotation(This,dwStreamIndex,dwRotationValue);
    890 }
    891 static inline HRESULT IMFCapturePreviewSink_SetCustomSink(IMFCapturePreviewSink* This,IMFMediaSink *pMediaSink) {
    892     return This->lpVtbl->SetCustomSink(This,pMediaSink);
    893 }
    894 #endif
    895 #endif
    896 
    897 #endif
    898 
    899 
    900 #endif  /* __IMFCapturePreviewSink_INTERFACE_DEFINED__ */
    901 
    902 /*****************************************************************************
    903  * IMFCapturePhotoSink interface
    904  */
    905 #ifndef __IMFCapturePhotoSink_INTERFACE_DEFINED__
    906 #define __IMFCapturePhotoSink_INTERFACE_DEFINED__
    907 
    908 DEFINE_GUID(IID_IMFCapturePhotoSink, 0xd2d43cc8, 0x48bb, 0x4aa7, 0x95,0xdb, 0x10,0xc0,0x69,0x77,0xe7,0x77);
    909 #if defined(__cplusplus) && !defined(CINTERFACE)
    910 MIDL_INTERFACE("d2d43cc8-48bb-4aa7-95db-10c06977e777")
    911 IMFCapturePhotoSink : public IMFCaptureSink
    912 {
    913     virtual HRESULT STDMETHODCALLTYPE SetOutputFileName(
    914         LPCWSTR fileName) = 0;
    915 
    916     virtual HRESULT STDMETHODCALLTYPE SetSampleCallback(
    917         IMFCaptureEngineOnSampleCallback *pCallback) = 0;
    918 
    919     virtual HRESULT STDMETHODCALLTYPE SetOutputByteStream(
    920         IMFByteStream *pByteStream) = 0;
    921 
    922 };
    923 #ifdef __CRT_UUID_DECL
    924 __CRT_UUID_DECL(IMFCapturePhotoSink, 0xd2d43cc8, 0x48bb, 0x4aa7, 0x95,0xdb, 0x10,0xc0,0x69,0x77,0xe7,0x77)
    925 #endif
    926 #else
    927 typedef struct IMFCapturePhotoSinkVtbl {
    928     BEGIN_INTERFACE
    929 
    930     /*** IUnknown methods ***/
    931     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    932         IMFCapturePhotoSink *This,
    933         REFIID riid,
    934         void **ppvObject);
    935 
    936     ULONG (STDMETHODCALLTYPE *AddRef)(
    937         IMFCapturePhotoSink *This);
    938 
    939     ULONG (STDMETHODCALLTYPE *Release)(
    940         IMFCapturePhotoSink *This);
    941 
    942     /*** IMFCaptureSink methods ***/
    943     HRESULT (STDMETHODCALLTYPE *GetOutputMediaType)(
    944         IMFCapturePhotoSink *This,
    945         DWORD dwSinkStreamIndex,
    946         IMFMediaType **ppMediaType);
    947 
    948     HRESULT (STDMETHODCALLTYPE *GetService)(
    949         IMFCapturePhotoSink *This,
    950         DWORD dwSinkStreamIndex,
    951         REFGUID rguidService,
    952         REFIID riid,
    953         IUnknown **ppUnknown);
    954 
    955     HRESULT (STDMETHODCALLTYPE *AddStream)(
    956         IMFCapturePhotoSink *This,
    957         DWORD dwSourceStreamIndex,
    958         IMFMediaType *pMediaType,
    959         IMFAttributes *pAttributes,
    960         DWORD *pdwSinkStreamIndex);
    961 
    962     HRESULT (STDMETHODCALLTYPE *Prepare)(
    963         IMFCapturePhotoSink *This);
    964 
    965     HRESULT (STDMETHODCALLTYPE *RemoveAllStreams)(
    966         IMFCapturePhotoSink *This);
    967 
    968     /*** IMFCapturePhotoSink methods ***/
    969     HRESULT (STDMETHODCALLTYPE *SetOutputFileName)(
    970         IMFCapturePhotoSink *This,
    971         LPCWSTR fileName);
    972 
    973     HRESULT (STDMETHODCALLTYPE *SetSampleCallback)(
    974         IMFCapturePhotoSink *This,
    975         IMFCaptureEngineOnSampleCallback *pCallback);
    976 
    977     HRESULT (STDMETHODCALLTYPE *SetOutputByteStream)(
    978         IMFCapturePhotoSink *This,
    979         IMFByteStream *pByteStream);
    980 
    981     END_INTERFACE
    982 } IMFCapturePhotoSinkVtbl;
    983 
    984 interface IMFCapturePhotoSink {
    985     CONST_VTBL IMFCapturePhotoSinkVtbl* lpVtbl;
    986 };
    987 
    988 #ifdef COBJMACROS
    989 #ifndef WIDL_C_INLINE_WRAPPERS
    990 /*** IUnknown methods ***/
    991 #define IMFCapturePhotoSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    992 #define IMFCapturePhotoSink_AddRef(This) (This)->lpVtbl->AddRef(This)
    993 #define IMFCapturePhotoSink_Release(This) (This)->lpVtbl->Release(This)
    994 /*** IMFCaptureSink methods ***/
    995 #define IMFCapturePhotoSink_GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType) (This)->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType)
    996 #define IMFCapturePhotoSink_GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown)
    997 #define IMFCapturePhotoSink_AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex) (This)->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex)
    998 #define IMFCapturePhotoSink_Prepare(This) (This)->lpVtbl->Prepare(This)
    999 #define IMFCapturePhotoSink_RemoveAllStreams(This) (This)->lpVtbl->RemoveAllStreams(This)
   1000 /*** IMFCapturePhotoSink methods ***/
   1001 #define IMFCapturePhotoSink_SetOutputFileName(This,fileName) (This)->lpVtbl->SetOutputFileName(This,fileName)
   1002 #define IMFCapturePhotoSink_SetSampleCallback(This,pCallback) (This)->lpVtbl->SetSampleCallback(This,pCallback)
   1003 #define IMFCapturePhotoSink_SetOutputByteStream(This,pByteStream) (This)->lpVtbl->SetOutputByteStream(This,pByteStream)
   1004 #else
   1005 /*** IUnknown methods ***/
   1006 static inline HRESULT IMFCapturePhotoSink_QueryInterface(IMFCapturePhotoSink* This,REFIID riid,void **ppvObject) {
   1007     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1008 }
   1009 static inline ULONG IMFCapturePhotoSink_AddRef(IMFCapturePhotoSink* This) {
   1010     return This->lpVtbl->AddRef(This);
   1011 }
   1012 static inline ULONG IMFCapturePhotoSink_Release(IMFCapturePhotoSink* This) {
   1013     return This->lpVtbl->Release(This);
   1014 }
   1015 /*** IMFCaptureSink methods ***/
   1016 static inline HRESULT IMFCapturePhotoSink_GetOutputMediaType(IMFCapturePhotoSink* This,DWORD dwSinkStreamIndex,IMFMediaType **ppMediaType) {
   1017     return This->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType);
   1018 }
   1019 static inline HRESULT IMFCapturePhotoSink_GetService(IMFCapturePhotoSink* This,DWORD dwSinkStreamIndex,REFGUID rguidService,REFIID riid,IUnknown **ppUnknown) {
   1020     return This->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown);
   1021 }
   1022 static inline HRESULT IMFCapturePhotoSink_AddStream(IMFCapturePhotoSink* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pAttributes,DWORD *pdwSinkStreamIndex) {
   1023     return This->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex);
   1024 }
   1025 static inline HRESULT IMFCapturePhotoSink_Prepare(IMFCapturePhotoSink* This) {
   1026     return This->lpVtbl->Prepare(This);
   1027 }
   1028 static inline HRESULT IMFCapturePhotoSink_RemoveAllStreams(IMFCapturePhotoSink* This) {
   1029     return This->lpVtbl->RemoveAllStreams(This);
   1030 }
   1031 /*** IMFCapturePhotoSink methods ***/
   1032 static inline HRESULT IMFCapturePhotoSink_SetOutputFileName(IMFCapturePhotoSink* This,LPCWSTR fileName) {
   1033     return This->lpVtbl->SetOutputFileName(This,fileName);
   1034 }
   1035 static inline HRESULT IMFCapturePhotoSink_SetSampleCallback(IMFCapturePhotoSink* This,IMFCaptureEngineOnSampleCallback *pCallback) {
   1036     return This->lpVtbl->SetSampleCallback(This,pCallback);
   1037 }
   1038 static inline HRESULT IMFCapturePhotoSink_SetOutputByteStream(IMFCapturePhotoSink* This,IMFByteStream *pByteStream) {
   1039     return This->lpVtbl->SetOutputByteStream(This,pByteStream);
   1040 }
   1041 #endif
   1042 #endif
   1043 
   1044 #endif
   1045 
   1046 
   1047 #endif  /* __IMFCapturePhotoSink_INTERFACE_DEFINED__ */
   1048 
   1049 /*****************************************************************************
   1050  * IMFCaptureSource interface
   1051  */
   1052 #ifndef __IMFCaptureSource_INTERFACE_DEFINED__
   1053 #define __IMFCaptureSource_INTERFACE_DEFINED__
   1054 
   1055 DEFINE_GUID(IID_IMFCaptureSource, 0x439a42a8, 0x0d2c, 0x4505, 0xbe,0x83, 0xf7,0x9b,0x2a,0x05,0xd5,0xc4);
   1056 #if defined(__cplusplus) && !defined(CINTERFACE)
   1057 MIDL_INTERFACE("439a42a8-0d2c-4505-be83-f79b2a05d5c4")
   1058 IMFCaptureSource : public IUnknown
   1059 {
   1060     virtual HRESULT STDMETHODCALLTYPE GetCaptureDeviceSource(
   1061         MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,
   1062         IMFMediaSource **ppMediaSource) = 0;
   1063 
   1064     virtual HRESULT STDMETHODCALLTYPE GetCaptureDeviceActivate(
   1065         MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,
   1066         IMFActivate **ppActivate) = 0;
   1067 
   1068     virtual HRESULT STDMETHODCALLTYPE GetService(
   1069         REFIID rguidService,
   1070         REFIID riid,
   1071         IUnknown **ppUnknown) = 0;
   1072 
   1073     virtual HRESULT STDMETHODCALLTYPE AddEffect(
   1074         DWORD dwSourceStreamIndex,
   1075         IUnknown *pUnknown) = 0;
   1076 
   1077     virtual HRESULT STDMETHODCALLTYPE RemoveEffect(
   1078         DWORD dwSourceStreamIndex,
   1079         IUnknown *pUnknown) = 0;
   1080 
   1081     virtual HRESULT STDMETHODCALLTYPE RemoveAllEffects(
   1082         DWORD dwSourceStreamIndex) = 0;
   1083 
   1084     virtual HRESULT STDMETHODCALLTYPE GetAvailableDeviceMediaType(
   1085         DWORD dwSourceStreamIndex,
   1086         DWORD dwMediaTypeIndex,
   1087         IMFMediaType **ppMediaType) = 0;
   1088 
   1089     virtual HRESULT STDMETHODCALLTYPE SetCurrentDeviceMediaType(
   1090         DWORD dwSourceStreamIndex,
   1091         IMFMediaType *pMediaType) = 0;
   1092 
   1093     virtual HRESULT STDMETHODCALLTYPE GetCurrentDeviceMediaType(
   1094         DWORD dwSourceStreamIndex,
   1095         IMFMediaType **ppMediaType) = 0;
   1096 
   1097     virtual HRESULT STDMETHODCALLTYPE GetDeviceStreamCount(
   1098         DWORD *pdwStreamCount) = 0;
   1099 
   1100     virtual HRESULT STDMETHODCALLTYPE GetDeviceStreamCategory(
   1101         DWORD dwSourceStreamIndex,
   1102         MF_CAPTURE_ENGINE_STREAM_CATEGORY *pStreamCategory) = 0;
   1103 
   1104     virtual HRESULT STDMETHODCALLTYPE GetMirrorState(
   1105         DWORD dwStreamIndex,
   1106         WINBOOL *pfMirrorState) = 0;
   1107 
   1108     virtual HRESULT STDMETHODCALLTYPE SetMirrorState(
   1109         DWORD dwStreamIndex,
   1110         WINBOOL fMirrorState) = 0;
   1111 
   1112     virtual HRESULT STDMETHODCALLTYPE GetStreamIndexFromFriendlyName(
   1113         UINT32 uifriendlyName,
   1114         DWORD *pdwActualStreamIndex) = 0;
   1115 
   1116 };
   1117 #ifdef __CRT_UUID_DECL
   1118 __CRT_UUID_DECL(IMFCaptureSource, 0x439a42a8, 0x0d2c, 0x4505, 0xbe,0x83, 0xf7,0x9b,0x2a,0x05,0xd5,0xc4)
   1119 #endif
   1120 #else
   1121 typedef struct IMFCaptureSourceVtbl {
   1122     BEGIN_INTERFACE
   1123 
   1124     /*** IUnknown methods ***/
   1125     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1126         IMFCaptureSource *This,
   1127         REFIID riid,
   1128         void **ppvObject);
   1129 
   1130     ULONG (STDMETHODCALLTYPE *AddRef)(
   1131         IMFCaptureSource *This);
   1132 
   1133     ULONG (STDMETHODCALLTYPE *Release)(
   1134         IMFCaptureSource *This);
   1135 
   1136     /*** IMFCaptureSource methods ***/
   1137     HRESULT (STDMETHODCALLTYPE *GetCaptureDeviceSource)(
   1138         IMFCaptureSource *This,
   1139         MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,
   1140         IMFMediaSource **ppMediaSource);
   1141 
   1142     HRESULT (STDMETHODCALLTYPE *GetCaptureDeviceActivate)(
   1143         IMFCaptureSource *This,
   1144         MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,
   1145         IMFActivate **ppActivate);
   1146 
   1147     HRESULT (STDMETHODCALLTYPE *GetService)(
   1148         IMFCaptureSource *This,
   1149         REFIID rguidService,
   1150         REFIID riid,
   1151         IUnknown **ppUnknown);
   1152 
   1153     HRESULT (STDMETHODCALLTYPE *AddEffect)(
   1154         IMFCaptureSource *This,
   1155         DWORD dwSourceStreamIndex,
   1156         IUnknown *pUnknown);
   1157 
   1158     HRESULT (STDMETHODCALLTYPE *RemoveEffect)(
   1159         IMFCaptureSource *This,
   1160         DWORD dwSourceStreamIndex,
   1161         IUnknown *pUnknown);
   1162 
   1163     HRESULT (STDMETHODCALLTYPE *RemoveAllEffects)(
   1164         IMFCaptureSource *This,
   1165         DWORD dwSourceStreamIndex);
   1166 
   1167     HRESULT (STDMETHODCALLTYPE *GetAvailableDeviceMediaType)(
   1168         IMFCaptureSource *This,
   1169         DWORD dwSourceStreamIndex,
   1170         DWORD dwMediaTypeIndex,
   1171         IMFMediaType **ppMediaType);
   1172 
   1173     HRESULT (STDMETHODCALLTYPE *SetCurrentDeviceMediaType)(
   1174         IMFCaptureSource *This,
   1175         DWORD dwSourceStreamIndex,
   1176         IMFMediaType *pMediaType);
   1177 
   1178     HRESULT (STDMETHODCALLTYPE *GetCurrentDeviceMediaType)(
   1179         IMFCaptureSource *This,
   1180         DWORD dwSourceStreamIndex,
   1181         IMFMediaType **ppMediaType);
   1182 
   1183     HRESULT (STDMETHODCALLTYPE *GetDeviceStreamCount)(
   1184         IMFCaptureSource *This,
   1185         DWORD *pdwStreamCount);
   1186 
   1187     HRESULT (STDMETHODCALLTYPE *GetDeviceStreamCategory)(
   1188         IMFCaptureSource *This,
   1189         DWORD dwSourceStreamIndex,
   1190         MF_CAPTURE_ENGINE_STREAM_CATEGORY *pStreamCategory);
   1191 
   1192     HRESULT (STDMETHODCALLTYPE *GetMirrorState)(
   1193         IMFCaptureSource *This,
   1194         DWORD dwStreamIndex,
   1195         WINBOOL *pfMirrorState);
   1196 
   1197     HRESULT (STDMETHODCALLTYPE *SetMirrorState)(
   1198         IMFCaptureSource *This,
   1199         DWORD dwStreamIndex,
   1200         WINBOOL fMirrorState);
   1201 
   1202     HRESULT (STDMETHODCALLTYPE *GetStreamIndexFromFriendlyName)(
   1203         IMFCaptureSource *This,
   1204         UINT32 uifriendlyName,
   1205         DWORD *pdwActualStreamIndex);
   1206 
   1207     END_INTERFACE
   1208 } IMFCaptureSourceVtbl;
   1209 
   1210 interface IMFCaptureSource {
   1211     CONST_VTBL IMFCaptureSourceVtbl* lpVtbl;
   1212 };
   1213 
   1214 #ifdef COBJMACROS
   1215 #ifndef WIDL_C_INLINE_WRAPPERS
   1216 /*** IUnknown methods ***/
   1217 #define IMFCaptureSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1218 #define IMFCaptureSource_AddRef(This) (This)->lpVtbl->AddRef(This)
   1219 #define IMFCaptureSource_Release(This) (This)->lpVtbl->Release(This)
   1220 /*** IMFCaptureSource methods ***/
   1221 #define IMFCaptureSource_GetCaptureDeviceSource(This,mfCaptureEngineDeviceType,ppMediaSource) (This)->lpVtbl->GetCaptureDeviceSource(This,mfCaptureEngineDeviceType,ppMediaSource)
   1222 #define IMFCaptureSource_GetCaptureDeviceActivate(This,mfCaptureEngineDeviceType,ppActivate) (This)->lpVtbl->GetCaptureDeviceActivate(This,mfCaptureEngineDeviceType,ppActivate)
   1223 #define IMFCaptureSource_GetService(This,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,rguidService,riid,ppUnknown)
   1224 #define IMFCaptureSource_AddEffect(This,dwSourceStreamIndex,pUnknown) (This)->lpVtbl->AddEffect(This,dwSourceStreamIndex,pUnknown)
   1225 #define IMFCaptureSource_RemoveEffect(This,dwSourceStreamIndex,pUnknown) (This)->lpVtbl->RemoveEffect(This,dwSourceStreamIndex,pUnknown)
   1226 #define IMFCaptureSource_RemoveAllEffects(This,dwSourceStreamIndex) (This)->lpVtbl->RemoveAllEffects(This,dwSourceStreamIndex)
   1227 #define IMFCaptureSource_GetAvailableDeviceMediaType(This,dwSourceStreamIndex,dwMediaTypeIndex,ppMediaType) (This)->lpVtbl->GetAvailableDeviceMediaType(This,dwSourceStreamIndex,dwMediaTypeIndex,ppMediaType)
   1228 #define IMFCaptureSource_SetCurrentDeviceMediaType(This,dwSourceStreamIndex,pMediaType) (This)->lpVtbl->SetCurrentDeviceMediaType(This,dwSourceStreamIndex,pMediaType)
   1229 #define IMFCaptureSource_GetCurrentDeviceMediaType(This,dwSourceStreamIndex,ppMediaType) (This)->lpVtbl->GetCurrentDeviceMediaType(This,dwSourceStreamIndex,ppMediaType)
   1230 #define IMFCaptureSource_GetDeviceStreamCount(This,pdwStreamCount) (This)->lpVtbl->GetDeviceStreamCount(This,pdwStreamCount)
   1231 #define IMFCaptureSource_GetDeviceStreamCategory(This,dwSourceStreamIndex,pStreamCategory) (This)->lpVtbl->GetDeviceStreamCategory(This,dwSourceStreamIndex,pStreamCategory)
   1232 #define IMFCaptureSource_GetMirrorState(This,dwStreamIndex,pfMirrorState) (This)->lpVtbl->GetMirrorState(This,dwStreamIndex,pfMirrorState)
   1233 #define IMFCaptureSource_SetMirrorState(This,dwStreamIndex,fMirrorState) (This)->lpVtbl->SetMirrorState(This,dwStreamIndex,fMirrorState)
   1234 #define IMFCaptureSource_GetStreamIndexFromFriendlyName(This,uifriendlyName,pdwActualStreamIndex) (This)->lpVtbl->GetStreamIndexFromFriendlyName(This,uifriendlyName,pdwActualStreamIndex)
   1235 #else
   1236 /*** IUnknown methods ***/
   1237 static inline HRESULT IMFCaptureSource_QueryInterface(IMFCaptureSource* This,REFIID riid,void **ppvObject) {
   1238     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1239 }
   1240 static inline ULONG IMFCaptureSource_AddRef(IMFCaptureSource* This) {
   1241     return This->lpVtbl->AddRef(This);
   1242 }
   1243 static inline ULONG IMFCaptureSource_Release(IMFCaptureSource* This) {
   1244     return This->lpVtbl->Release(This);
   1245 }
   1246 /*** IMFCaptureSource methods ***/
   1247 static inline HRESULT IMFCaptureSource_GetCaptureDeviceSource(IMFCaptureSource* This,MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,IMFMediaSource **ppMediaSource) {
   1248     return This->lpVtbl->GetCaptureDeviceSource(This,mfCaptureEngineDeviceType,ppMediaSource);
   1249 }
   1250 static inline HRESULT IMFCaptureSource_GetCaptureDeviceActivate(IMFCaptureSource* This,MF_CAPTURE_ENGINE_DEVICE_TYPE mfCaptureEngineDeviceType,IMFActivate **ppActivate) {
   1251     return This->lpVtbl->GetCaptureDeviceActivate(This,mfCaptureEngineDeviceType,ppActivate);
   1252 }
   1253 static inline HRESULT IMFCaptureSource_GetService(IMFCaptureSource* This,REFIID rguidService,REFIID riid,IUnknown **ppUnknown) {
   1254     return This->lpVtbl->GetService(This,rguidService,riid,ppUnknown);
   1255 }
   1256 static inline HRESULT IMFCaptureSource_AddEffect(IMFCaptureSource* This,DWORD dwSourceStreamIndex,IUnknown *pUnknown) {
   1257     return This->lpVtbl->AddEffect(This,dwSourceStreamIndex,pUnknown);
   1258 }
   1259 static inline HRESULT IMFCaptureSource_RemoveEffect(IMFCaptureSource* This,DWORD dwSourceStreamIndex,IUnknown *pUnknown) {
   1260     return This->lpVtbl->RemoveEffect(This,dwSourceStreamIndex,pUnknown);
   1261 }
   1262 static inline HRESULT IMFCaptureSource_RemoveAllEffects(IMFCaptureSource* This,DWORD dwSourceStreamIndex) {
   1263     return This->lpVtbl->RemoveAllEffects(This,dwSourceStreamIndex);
   1264 }
   1265 static inline HRESULT IMFCaptureSource_GetAvailableDeviceMediaType(IMFCaptureSource* This,DWORD dwSourceStreamIndex,DWORD dwMediaTypeIndex,IMFMediaType **ppMediaType) {
   1266     return This->lpVtbl->GetAvailableDeviceMediaType(This,dwSourceStreamIndex,dwMediaTypeIndex,ppMediaType);
   1267 }
   1268 static inline HRESULT IMFCaptureSource_SetCurrentDeviceMediaType(IMFCaptureSource* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType) {
   1269     return This->lpVtbl->SetCurrentDeviceMediaType(This,dwSourceStreamIndex,pMediaType);
   1270 }
   1271 static inline HRESULT IMFCaptureSource_GetCurrentDeviceMediaType(IMFCaptureSource* This,DWORD dwSourceStreamIndex,IMFMediaType **ppMediaType) {
   1272     return This->lpVtbl->GetCurrentDeviceMediaType(This,dwSourceStreamIndex,ppMediaType);
   1273 }
   1274 static inline HRESULT IMFCaptureSource_GetDeviceStreamCount(IMFCaptureSource* This,DWORD *pdwStreamCount) {
   1275     return This->lpVtbl->GetDeviceStreamCount(This,pdwStreamCount);
   1276 }
   1277 static inline HRESULT IMFCaptureSource_GetDeviceStreamCategory(IMFCaptureSource* This,DWORD dwSourceStreamIndex,MF_CAPTURE_ENGINE_STREAM_CATEGORY *pStreamCategory) {
   1278     return This->lpVtbl->GetDeviceStreamCategory(This,dwSourceStreamIndex,pStreamCategory);
   1279 }
   1280 static inline HRESULT IMFCaptureSource_GetMirrorState(IMFCaptureSource* This,DWORD dwStreamIndex,WINBOOL *pfMirrorState) {
   1281     return This->lpVtbl->GetMirrorState(This,dwStreamIndex,pfMirrorState);
   1282 }
   1283 static inline HRESULT IMFCaptureSource_SetMirrorState(IMFCaptureSource* This,DWORD dwStreamIndex,WINBOOL fMirrorState) {
   1284     return This->lpVtbl->SetMirrorState(This,dwStreamIndex,fMirrorState);
   1285 }
   1286 static inline HRESULT IMFCaptureSource_GetStreamIndexFromFriendlyName(IMFCaptureSource* This,UINT32 uifriendlyName,DWORD *pdwActualStreamIndex) {
   1287     return This->lpVtbl->GetStreamIndexFromFriendlyName(This,uifriendlyName,pdwActualStreamIndex);
   1288 }
   1289 #endif
   1290 #endif
   1291 
   1292 #endif
   1293 
   1294 
   1295 #endif  /* __IMFCaptureSource_INTERFACE_DEFINED__ */
   1296 
   1297 EXTERN_GUID(CLSID_MFCaptureEngine, 0xefce38d3, 0x8914, 0x4674,0xa7, 0xdf, 0xae, 0x1b, 0x3d, 0x65, 0x4b, 0x8a);
   1298 /*****************************************************************************
   1299  * IMFCaptureEngine interface
   1300  */
   1301 #ifndef __IMFCaptureEngine_INTERFACE_DEFINED__
   1302 #define __IMFCaptureEngine_INTERFACE_DEFINED__
   1303 
   1304 DEFINE_GUID(IID_IMFCaptureEngine, 0xa6bba433, 0x176b, 0x48b2, 0xb3,0x75, 0x53,0xaa,0x03,0x47,0x32,0x07);
   1305 #if defined(__cplusplus) && !defined(CINTERFACE)
   1306 MIDL_INTERFACE("a6bba433-176b-48b2-b375-53aa03473207")
   1307 IMFCaptureEngine : public IUnknown
   1308 {
   1309     virtual HRESULT STDMETHODCALLTYPE Initialize(
   1310         IMFCaptureEngineOnEventCallback *pEventCallback,
   1311         IMFAttributes *pAttributes,
   1312         IUnknown *pAudioSource,
   1313         IUnknown *pVideoSource) = 0;
   1314 
   1315     virtual HRESULT STDMETHODCALLTYPE StartPreview(
   1316         ) = 0;
   1317 
   1318     virtual HRESULT STDMETHODCALLTYPE StopPreview(
   1319         ) = 0;
   1320 
   1321     virtual HRESULT STDMETHODCALLTYPE StartRecord(
   1322         ) = 0;
   1323 
   1324     virtual HRESULT STDMETHODCALLTYPE StopRecord(
   1325         WINBOOL bFinalize,
   1326         WINBOOL bFlushUnprocessedSamples) = 0;
   1327 
   1328     virtual HRESULT STDMETHODCALLTYPE TakePhoto(
   1329         ) = 0;
   1330 
   1331     virtual HRESULT STDMETHODCALLTYPE GetSink(
   1332         MF_CAPTURE_ENGINE_SINK_TYPE mfCaptureEngineSinkType,
   1333         IMFCaptureSink **ppSink) = 0;
   1334 
   1335     virtual HRESULT STDMETHODCALLTYPE GetSource(
   1336         IMFCaptureSource **ppSource) = 0;
   1337 
   1338 };
   1339 #ifdef __CRT_UUID_DECL
   1340 __CRT_UUID_DECL(IMFCaptureEngine, 0xa6bba433, 0x176b, 0x48b2, 0xb3,0x75, 0x53,0xaa,0x03,0x47,0x32,0x07)
   1341 #endif
   1342 #else
   1343 typedef struct IMFCaptureEngineVtbl {
   1344     BEGIN_INTERFACE
   1345 
   1346     /*** IUnknown methods ***/
   1347     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1348         IMFCaptureEngine *This,
   1349         REFIID riid,
   1350         void **ppvObject);
   1351 
   1352     ULONG (STDMETHODCALLTYPE *AddRef)(
   1353         IMFCaptureEngine *This);
   1354 
   1355     ULONG (STDMETHODCALLTYPE *Release)(
   1356         IMFCaptureEngine *This);
   1357 
   1358     /*** IMFCaptureEngine methods ***/
   1359     HRESULT (STDMETHODCALLTYPE *Initialize)(
   1360         IMFCaptureEngine *This,
   1361         IMFCaptureEngineOnEventCallback *pEventCallback,
   1362         IMFAttributes *pAttributes,
   1363         IUnknown *pAudioSource,
   1364         IUnknown *pVideoSource);
   1365 
   1366     HRESULT (STDMETHODCALLTYPE *StartPreview)(
   1367         IMFCaptureEngine *This);
   1368 
   1369     HRESULT (STDMETHODCALLTYPE *StopPreview)(
   1370         IMFCaptureEngine *This);
   1371 
   1372     HRESULT (STDMETHODCALLTYPE *StartRecord)(
   1373         IMFCaptureEngine *This);
   1374 
   1375     HRESULT (STDMETHODCALLTYPE *StopRecord)(
   1376         IMFCaptureEngine *This,
   1377         WINBOOL bFinalize,
   1378         WINBOOL bFlushUnprocessedSamples);
   1379 
   1380     HRESULT (STDMETHODCALLTYPE *TakePhoto)(
   1381         IMFCaptureEngine *This);
   1382 
   1383     HRESULT (STDMETHODCALLTYPE *GetSink)(
   1384         IMFCaptureEngine *This,
   1385         MF_CAPTURE_ENGINE_SINK_TYPE mfCaptureEngineSinkType,
   1386         IMFCaptureSink **ppSink);
   1387 
   1388     HRESULT (STDMETHODCALLTYPE *GetSource)(
   1389         IMFCaptureEngine *This,
   1390         IMFCaptureSource **ppSource);
   1391 
   1392     END_INTERFACE
   1393 } IMFCaptureEngineVtbl;
   1394 
   1395 interface IMFCaptureEngine {
   1396     CONST_VTBL IMFCaptureEngineVtbl* lpVtbl;
   1397 };
   1398 
   1399 #ifdef COBJMACROS
   1400 #ifndef WIDL_C_INLINE_WRAPPERS
   1401 /*** IUnknown methods ***/
   1402 #define IMFCaptureEngine_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1403 #define IMFCaptureEngine_AddRef(This) (This)->lpVtbl->AddRef(This)
   1404 #define IMFCaptureEngine_Release(This) (This)->lpVtbl->Release(This)
   1405 /*** IMFCaptureEngine methods ***/
   1406 #define IMFCaptureEngine_Initialize(This,pEventCallback,pAttributes,pAudioSource,pVideoSource) (This)->lpVtbl->Initialize(This,pEventCallback,pAttributes,pAudioSource,pVideoSource)
   1407 #define IMFCaptureEngine_StartPreview(This) (This)->lpVtbl->StartPreview(This)
   1408 #define IMFCaptureEngine_StopPreview(This) (This)->lpVtbl->StopPreview(This)
   1409 #define IMFCaptureEngine_StartRecord(This) (This)->lpVtbl->StartRecord(This)
   1410 #define IMFCaptureEngine_StopRecord(This,bFinalize,bFlushUnprocessedSamples) (This)->lpVtbl->StopRecord(This,bFinalize,bFlushUnprocessedSamples)
   1411 #define IMFCaptureEngine_TakePhoto(This) (This)->lpVtbl->TakePhoto(This)
   1412 #define IMFCaptureEngine_GetSink(This,mfCaptureEngineSinkType,ppSink) (This)->lpVtbl->GetSink(This,mfCaptureEngineSinkType,ppSink)
   1413 #define IMFCaptureEngine_GetSource(This,ppSource) (This)->lpVtbl->GetSource(This,ppSource)
   1414 #else
   1415 /*** IUnknown methods ***/
   1416 static inline HRESULT IMFCaptureEngine_QueryInterface(IMFCaptureEngine* This,REFIID riid,void **ppvObject) {
   1417     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1418 }
   1419 static inline ULONG IMFCaptureEngine_AddRef(IMFCaptureEngine* This) {
   1420     return This->lpVtbl->AddRef(This);
   1421 }
   1422 static inline ULONG IMFCaptureEngine_Release(IMFCaptureEngine* This) {
   1423     return This->lpVtbl->Release(This);
   1424 }
   1425 /*** IMFCaptureEngine methods ***/
   1426 static inline HRESULT IMFCaptureEngine_Initialize(IMFCaptureEngine* This,IMFCaptureEngineOnEventCallback *pEventCallback,IMFAttributes *pAttributes,IUnknown *pAudioSource,IUnknown *pVideoSource) {
   1427     return This->lpVtbl->Initialize(This,pEventCallback,pAttributes,pAudioSource,pVideoSource);
   1428 }
   1429 static inline HRESULT IMFCaptureEngine_StartPreview(IMFCaptureEngine* This) {
   1430     return This->lpVtbl->StartPreview(This);
   1431 }
   1432 static inline HRESULT IMFCaptureEngine_StopPreview(IMFCaptureEngine* This) {
   1433     return This->lpVtbl->StopPreview(This);
   1434 }
   1435 static inline HRESULT IMFCaptureEngine_StartRecord(IMFCaptureEngine* This) {
   1436     return This->lpVtbl->StartRecord(This);
   1437 }
   1438 static inline HRESULT IMFCaptureEngine_StopRecord(IMFCaptureEngine* This,WINBOOL bFinalize,WINBOOL bFlushUnprocessedSamples) {
   1439     return This->lpVtbl->StopRecord(This,bFinalize,bFlushUnprocessedSamples);
   1440 }
   1441 static inline HRESULT IMFCaptureEngine_TakePhoto(IMFCaptureEngine* This) {
   1442     return This->lpVtbl->TakePhoto(This);
   1443 }
   1444 static inline HRESULT IMFCaptureEngine_GetSink(IMFCaptureEngine* This,MF_CAPTURE_ENGINE_SINK_TYPE mfCaptureEngineSinkType,IMFCaptureSink **ppSink) {
   1445     return This->lpVtbl->GetSink(This,mfCaptureEngineSinkType,ppSink);
   1446 }
   1447 static inline HRESULT IMFCaptureEngine_GetSource(IMFCaptureEngine* This,IMFCaptureSource **ppSource) {
   1448     return This->lpVtbl->GetSource(This,ppSource);
   1449 }
   1450 #endif
   1451 #endif
   1452 
   1453 #endif
   1454 
   1455 
   1456 #endif  /* __IMFCaptureEngine_INTERFACE_DEFINED__ */
   1457 
   1458 EXTERN_GUID(CLSID_MFCaptureEngineClassFactory, 0xefce38d3, 0x8914, 0x4674,0xa7, 0xdf, 0xae, 0x1b, 0x3d, 0x65, 0x4b, 0x8a);
   1459 /*****************************************************************************
   1460  * IMFCaptureEngineClassFactory interface
   1461  */
   1462 #ifndef __IMFCaptureEngineClassFactory_INTERFACE_DEFINED__
   1463 #define __IMFCaptureEngineClassFactory_INTERFACE_DEFINED__
   1464 
   1465 DEFINE_GUID(IID_IMFCaptureEngineClassFactory, 0x8f02d140, 0x56fc, 0x4302, 0xa7,0x05, 0x3a,0x97,0xc7,0x8b,0xe7,0x79);
   1466 #if defined(__cplusplus) && !defined(CINTERFACE)
   1467 MIDL_INTERFACE("8f02d140-56fc-4302-a705-3a97c78be779")
   1468 IMFCaptureEngineClassFactory : public IUnknown
   1469 {
   1470     virtual HRESULT STDMETHODCALLTYPE CreateInstance(
   1471         REFCLSID clsid,
   1472         REFIID riid,
   1473         LPVOID *ppvObject) = 0;
   1474 
   1475 };
   1476 #ifdef __CRT_UUID_DECL
   1477 __CRT_UUID_DECL(IMFCaptureEngineClassFactory, 0x8f02d140, 0x56fc, 0x4302, 0xa7,0x05, 0x3a,0x97,0xc7,0x8b,0xe7,0x79)
   1478 #endif
   1479 #else
   1480 typedef struct IMFCaptureEngineClassFactoryVtbl {
   1481     BEGIN_INTERFACE
   1482 
   1483     /*** IUnknown methods ***/
   1484     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1485         IMFCaptureEngineClassFactory *This,
   1486         REFIID riid,
   1487         void **ppvObject);
   1488 
   1489     ULONG (STDMETHODCALLTYPE *AddRef)(
   1490         IMFCaptureEngineClassFactory *This);
   1491 
   1492     ULONG (STDMETHODCALLTYPE *Release)(
   1493         IMFCaptureEngineClassFactory *This);
   1494 
   1495     /*** IMFCaptureEngineClassFactory methods ***/
   1496     HRESULT (STDMETHODCALLTYPE *CreateInstance)(
   1497         IMFCaptureEngineClassFactory *This,
   1498         REFCLSID clsid,
   1499         REFIID riid,
   1500         LPVOID *ppvObject);
   1501 
   1502     END_INTERFACE
   1503 } IMFCaptureEngineClassFactoryVtbl;
   1504 
   1505 interface IMFCaptureEngineClassFactory {
   1506     CONST_VTBL IMFCaptureEngineClassFactoryVtbl* lpVtbl;
   1507 };
   1508 
   1509 #ifdef COBJMACROS
   1510 #ifndef WIDL_C_INLINE_WRAPPERS
   1511 /*** IUnknown methods ***/
   1512 #define IMFCaptureEngineClassFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1513 #define IMFCaptureEngineClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
   1514 #define IMFCaptureEngineClassFactory_Release(This) (This)->lpVtbl->Release(This)
   1515 /*** IMFCaptureEngineClassFactory methods ***/
   1516 #define IMFCaptureEngineClassFactory_CreateInstance(This,clsid,riid,ppvObject) (This)->lpVtbl->CreateInstance(This,clsid,riid,ppvObject)
   1517 #else
   1518 /*** IUnknown methods ***/
   1519 static inline HRESULT IMFCaptureEngineClassFactory_QueryInterface(IMFCaptureEngineClassFactory* This,REFIID riid,void **ppvObject) {
   1520     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1521 }
   1522 static inline ULONG IMFCaptureEngineClassFactory_AddRef(IMFCaptureEngineClassFactory* This) {
   1523     return This->lpVtbl->AddRef(This);
   1524 }
   1525 static inline ULONG IMFCaptureEngineClassFactory_Release(IMFCaptureEngineClassFactory* This) {
   1526     return This->lpVtbl->Release(This);
   1527 }
   1528 /*** IMFCaptureEngineClassFactory methods ***/
   1529 static inline HRESULT IMFCaptureEngineClassFactory_CreateInstance(IMFCaptureEngineClassFactory* This,REFCLSID clsid,REFIID riid,LPVOID *ppvObject) {
   1530     return This->lpVtbl->CreateInstance(This,clsid,riid,ppvObject);
   1531 }
   1532 #endif
   1533 #endif
   1534 
   1535 #endif
   1536 
   1537 
   1538 #endif  /* __IMFCaptureEngineClassFactory_INTERFACE_DEFINED__ */
   1539 
   1540 EXTERN_GUID(MFSampleExtension_DeviceReferenceSystemTime, 0x6523775a, 0xba2d, 0x405f,0xb2, 0xc5, 0x01, 0xff, 0x88, 0xe2, 0xe8, 0xf6);
   1541 /*****************************************************************************
   1542  * IMFCaptureEngineOnSampleCallback2 interface
   1543  */
   1544 #ifndef __IMFCaptureEngineOnSampleCallback2_INTERFACE_DEFINED__
   1545 #define __IMFCaptureEngineOnSampleCallback2_INTERFACE_DEFINED__
   1546 
   1547 DEFINE_GUID(IID_IMFCaptureEngineOnSampleCallback2, 0xe37ceed7, 0x340f, 0x4514, 0x9f,0x4d, 0x9c,0x2a,0xe0,0x26,0x10,0x0b);
   1548 #if defined(__cplusplus) && !defined(CINTERFACE)
   1549 MIDL_INTERFACE("e37ceed7-340f-4514-9f4d-9c2ae026100b")
   1550 IMFCaptureEngineOnSampleCallback2 : public IMFCaptureEngineOnSampleCallback
   1551 {
   1552     virtual HRESULT STDMETHODCALLTYPE OnSynchronizedEvent(
   1553         IMFMediaEvent *pEvent) = 0;
   1554 
   1555 };
   1556 #ifdef __CRT_UUID_DECL
   1557 __CRT_UUID_DECL(IMFCaptureEngineOnSampleCallback2, 0xe37ceed7, 0x340f, 0x4514, 0x9f,0x4d, 0x9c,0x2a,0xe0,0x26,0x10,0x0b)
   1558 #endif
   1559 #else
   1560 typedef struct IMFCaptureEngineOnSampleCallback2Vtbl {
   1561     BEGIN_INTERFACE
   1562 
   1563     /*** IUnknown methods ***/
   1564     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1565         IMFCaptureEngineOnSampleCallback2 *This,
   1566         REFIID riid,
   1567         void **ppvObject);
   1568 
   1569     ULONG (STDMETHODCALLTYPE *AddRef)(
   1570         IMFCaptureEngineOnSampleCallback2 *This);
   1571 
   1572     ULONG (STDMETHODCALLTYPE *Release)(
   1573         IMFCaptureEngineOnSampleCallback2 *This);
   1574 
   1575     /*** IMFCaptureEngineOnSampleCallback methods ***/
   1576     HRESULT (STDMETHODCALLTYPE *OnSample)(
   1577         IMFCaptureEngineOnSampleCallback2 *This,
   1578         IMFSample *pSample);
   1579 
   1580     /*** IMFCaptureEngineOnSampleCallback2 methods ***/
   1581     HRESULT (STDMETHODCALLTYPE *OnSynchronizedEvent)(
   1582         IMFCaptureEngineOnSampleCallback2 *This,
   1583         IMFMediaEvent *pEvent);
   1584 
   1585     END_INTERFACE
   1586 } IMFCaptureEngineOnSampleCallback2Vtbl;
   1587 
   1588 interface IMFCaptureEngineOnSampleCallback2 {
   1589     CONST_VTBL IMFCaptureEngineOnSampleCallback2Vtbl* lpVtbl;
   1590 };
   1591 
   1592 #ifdef COBJMACROS
   1593 #ifndef WIDL_C_INLINE_WRAPPERS
   1594 /*** IUnknown methods ***/
   1595 #define IMFCaptureEngineOnSampleCallback2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1596 #define IMFCaptureEngineOnSampleCallback2_AddRef(This) (This)->lpVtbl->AddRef(This)
   1597 #define IMFCaptureEngineOnSampleCallback2_Release(This) (This)->lpVtbl->Release(This)
   1598 /*** IMFCaptureEngineOnSampleCallback methods ***/
   1599 #define IMFCaptureEngineOnSampleCallback2_OnSample(This,pSample) (This)->lpVtbl->OnSample(This,pSample)
   1600 /*** IMFCaptureEngineOnSampleCallback2 methods ***/
   1601 #define IMFCaptureEngineOnSampleCallback2_OnSynchronizedEvent(This,pEvent) (This)->lpVtbl->OnSynchronizedEvent(This,pEvent)
   1602 #else
   1603 /*** IUnknown methods ***/
   1604 static inline HRESULT IMFCaptureEngineOnSampleCallback2_QueryInterface(IMFCaptureEngineOnSampleCallback2* This,REFIID riid,void **ppvObject) {
   1605     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1606 }
   1607 static inline ULONG IMFCaptureEngineOnSampleCallback2_AddRef(IMFCaptureEngineOnSampleCallback2* This) {
   1608     return This->lpVtbl->AddRef(This);
   1609 }
   1610 static inline ULONG IMFCaptureEngineOnSampleCallback2_Release(IMFCaptureEngineOnSampleCallback2* This) {
   1611     return This->lpVtbl->Release(This);
   1612 }
   1613 /*** IMFCaptureEngineOnSampleCallback methods ***/
   1614 static inline HRESULT IMFCaptureEngineOnSampleCallback2_OnSample(IMFCaptureEngineOnSampleCallback2* This,IMFSample *pSample) {
   1615     return This->lpVtbl->OnSample(This,pSample);
   1616 }
   1617 /*** IMFCaptureEngineOnSampleCallback2 methods ***/
   1618 static inline HRESULT IMFCaptureEngineOnSampleCallback2_OnSynchronizedEvent(IMFCaptureEngineOnSampleCallback2* This,IMFMediaEvent *pEvent) {
   1619     return This->lpVtbl->OnSynchronizedEvent(This,pEvent);
   1620 }
   1621 #endif
   1622 #endif
   1623 
   1624 #endif
   1625 
   1626 
   1627 #endif  /* __IMFCaptureEngineOnSampleCallback2_INTERFACE_DEFINED__ */
   1628 
   1629 /*****************************************************************************
   1630  * IMFCaptureSink2 interface
   1631  */
   1632 #ifndef __IMFCaptureSink2_INTERFACE_DEFINED__
   1633 #define __IMFCaptureSink2_INTERFACE_DEFINED__
   1634 
   1635 DEFINE_GUID(IID_IMFCaptureSink2, 0xf9e4219e, 0x6197, 0x4b5e, 0xb8,0x88, 0xbe,0xe3,0x10,0xab,0x2c,0x59);
   1636 #if defined(__cplusplus) && !defined(CINTERFACE)
   1637 MIDL_INTERFACE("f9e4219e-6197-4b5e-b888-bee310ab2c59")
   1638 IMFCaptureSink2 : public IMFCaptureSink
   1639 {
   1640     virtual HRESULT STDMETHODCALLTYPE SetOutputMediaType(
   1641         DWORD dwStreamIndex,
   1642         IMFMediaType *pMediaType,
   1643         IMFAttributes *pEncodingAttributes) = 0;
   1644 
   1645 };
   1646 #ifdef __CRT_UUID_DECL
   1647 __CRT_UUID_DECL(IMFCaptureSink2, 0xf9e4219e, 0x6197, 0x4b5e, 0xb8,0x88, 0xbe,0xe3,0x10,0xab,0x2c,0x59)
   1648 #endif
   1649 #else
   1650 typedef struct IMFCaptureSink2Vtbl {
   1651     BEGIN_INTERFACE
   1652 
   1653     /*** IUnknown methods ***/
   1654     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1655         IMFCaptureSink2 *This,
   1656         REFIID riid,
   1657         void **ppvObject);
   1658 
   1659     ULONG (STDMETHODCALLTYPE *AddRef)(
   1660         IMFCaptureSink2 *This);
   1661 
   1662     ULONG (STDMETHODCALLTYPE *Release)(
   1663         IMFCaptureSink2 *This);
   1664 
   1665     /*** IMFCaptureSink methods ***/
   1666     HRESULT (STDMETHODCALLTYPE *GetOutputMediaType)(
   1667         IMFCaptureSink2 *This,
   1668         DWORD dwSinkStreamIndex,
   1669         IMFMediaType **ppMediaType);
   1670 
   1671     HRESULT (STDMETHODCALLTYPE *GetService)(
   1672         IMFCaptureSink2 *This,
   1673         DWORD dwSinkStreamIndex,
   1674         REFGUID rguidService,
   1675         REFIID riid,
   1676         IUnknown **ppUnknown);
   1677 
   1678     HRESULT (STDMETHODCALLTYPE *AddStream)(
   1679         IMFCaptureSink2 *This,
   1680         DWORD dwSourceStreamIndex,
   1681         IMFMediaType *pMediaType,
   1682         IMFAttributes *pAttributes,
   1683         DWORD *pdwSinkStreamIndex);
   1684 
   1685     HRESULT (STDMETHODCALLTYPE *Prepare)(
   1686         IMFCaptureSink2 *This);
   1687 
   1688     HRESULT (STDMETHODCALLTYPE *RemoveAllStreams)(
   1689         IMFCaptureSink2 *This);
   1690 
   1691     /*** IMFCaptureSink2 methods ***/
   1692     HRESULT (STDMETHODCALLTYPE *SetOutputMediaType)(
   1693         IMFCaptureSink2 *This,
   1694         DWORD dwStreamIndex,
   1695         IMFMediaType *pMediaType,
   1696         IMFAttributes *pEncodingAttributes);
   1697 
   1698     END_INTERFACE
   1699 } IMFCaptureSink2Vtbl;
   1700 
   1701 interface IMFCaptureSink2 {
   1702     CONST_VTBL IMFCaptureSink2Vtbl* lpVtbl;
   1703 };
   1704 
   1705 #ifdef COBJMACROS
   1706 #ifndef WIDL_C_INLINE_WRAPPERS
   1707 /*** IUnknown methods ***/
   1708 #define IMFCaptureSink2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1709 #define IMFCaptureSink2_AddRef(This) (This)->lpVtbl->AddRef(This)
   1710 #define IMFCaptureSink2_Release(This) (This)->lpVtbl->Release(This)
   1711 /*** IMFCaptureSink methods ***/
   1712 #define IMFCaptureSink2_GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType) (This)->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType)
   1713 #define IMFCaptureSink2_GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown) (This)->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown)
   1714 #define IMFCaptureSink2_AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex) (This)->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex)
   1715 #define IMFCaptureSink2_Prepare(This) (This)->lpVtbl->Prepare(This)
   1716 #define IMFCaptureSink2_RemoveAllStreams(This) (This)->lpVtbl->RemoveAllStreams(This)
   1717 /*** IMFCaptureSink2 methods ***/
   1718 #define IMFCaptureSink2_SetOutputMediaType(This,dwStreamIndex,pMediaType,pEncodingAttributes) (This)->lpVtbl->SetOutputMediaType(This,dwStreamIndex,pMediaType,pEncodingAttributes)
   1719 #else
   1720 /*** IUnknown methods ***/
   1721 static inline HRESULT IMFCaptureSink2_QueryInterface(IMFCaptureSink2* This,REFIID riid,void **ppvObject) {
   1722     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1723 }
   1724 static inline ULONG IMFCaptureSink2_AddRef(IMFCaptureSink2* This) {
   1725     return This->lpVtbl->AddRef(This);
   1726 }
   1727 static inline ULONG IMFCaptureSink2_Release(IMFCaptureSink2* This) {
   1728     return This->lpVtbl->Release(This);
   1729 }
   1730 /*** IMFCaptureSink methods ***/
   1731 static inline HRESULT IMFCaptureSink2_GetOutputMediaType(IMFCaptureSink2* This,DWORD dwSinkStreamIndex,IMFMediaType **ppMediaType) {
   1732     return This->lpVtbl->GetOutputMediaType(This,dwSinkStreamIndex,ppMediaType);
   1733 }
   1734 static inline HRESULT IMFCaptureSink2_GetService(IMFCaptureSink2* This,DWORD dwSinkStreamIndex,REFGUID rguidService,REFIID riid,IUnknown **ppUnknown) {
   1735     return This->lpVtbl->GetService(This,dwSinkStreamIndex,rguidService,riid,ppUnknown);
   1736 }
   1737 static inline HRESULT IMFCaptureSink2_AddStream(IMFCaptureSink2* This,DWORD dwSourceStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pAttributes,DWORD *pdwSinkStreamIndex) {
   1738     return This->lpVtbl->AddStream(This,dwSourceStreamIndex,pMediaType,pAttributes,pdwSinkStreamIndex);
   1739 }
   1740 static inline HRESULT IMFCaptureSink2_Prepare(IMFCaptureSink2* This) {
   1741     return This->lpVtbl->Prepare(This);
   1742 }
   1743 static inline HRESULT IMFCaptureSink2_RemoveAllStreams(IMFCaptureSink2* This) {
   1744     return This->lpVtbl->RemoveAllStreams(This);
   1745 }
   1746 /*** IMFCaptureSink2 methods ***/
   1747 static inline HRESULT IMFCaptureSink2_SetOutputMediaType(IMFCaptureSink2* This,DWORD dwStreamIndex,IMFMediaType *pMediaType,IMFAttributes *pEncodingAttributes) {
   1748     return This->lpVtbl->SetOutputMediaType(This,dwStreamIndex,pMediaType,pEncodingAttributes);
   1749 }
   1750 #endif
   1751 #endif
   1752 
   1753 #endif
   1754 
   1755 
   1756 #endif  /* __IMFCaptureSink2_INTERFACE_DEFINED__ */
   1757 
   1758 #endif /* WINAPI_PARTITION_DESKTOP */
   1759 #endif /* WINVER >= _WIN32_WINNT_WIN7 */
   1760 /* Begin additional prototypes for all interfaces */
   1761 
   1762 
   1763 /* End additional prototypes */
   1764 
   1765 #ifdef __cplusplus
   1766 }
   1767 #endif
   1768 
   1769 #endif /* __mfcaptureengine_h__ */