• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*** Autogenerated by WIDL 4.12.1 from include/mftransform.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 __mftransform_h__
17 #define __mftransform_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IMFTransform_FWD_DEFINED__
22 #define __IMFTransform_FWD_DEFINED__
23 typedef interface IMFTransform IMFTransform;
24 #ifdef __cplusplus
25 interface IMFTransform;
26 #endif /* __cplusplus */
27 #endif
28 
29 /* Headers for imported files */
30 
31 #include <mfobjects.h>
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37   enum _MFT_DRAIN_TYPE {
38     MFT_DRAIN_PRODUCE_TAILS   = 0x00000000,
39     MFT_DRAIN_NO_TAILS        = 0x00000001
40   };
41 
42   enum _MFT_INPUT_STATUS_FLAGS {
43     MFT_INPUT_STATUS_ACCEPT_DATA   = 0x00000001
44   };
45 
46   enum _MFT_INPUT_DATA_BUFFER_FLAGS {
47     MFT_INPUT_DATA_BUFFER_PLACEHOLDER   = 0xFFFFFFFF
48   };
49 
50   enum _MFT_OUTPUT_STREAM_INFO_FLAGS {
51     MFT_OUTPUT_STREAM_WHOLE_SAMPLES              = 0x00000001,
52     MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER   = 0x00000002,
53     MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE          = 0x00000004,
54     MFT_OUTPUT_STREAM_DISCARDABLE                = 0x00000008,
55     MFT_OUTPUT_STREAM_OPTIONAL                   = 0x00000010,
56     MFT_OUTPUT_STREAM_PROVIDES_SAMPLES           = 0x00000100,
57     MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES        = 0x00000200,
58     MFT_OUTPUT_STREAM_LAZY_READ                  = 0x00000400,
59     MFT_OUTPUT_STREAM_REMOVABLE                  = 0x00000800
60   };
61 
62   enum _MFT_OUTPUT_STATUS_FLAGS {
63     MFT_OUTPUT_STATUS_SAMPLE_READY   = 0x00000001
64   };
65 
66   enum _MFT_OUTPUT_DATA_BUFFER_FLAGS {
67     MFT_OUTPUT_DATA_BUFFER_INCOMPLETE      = 0x01000000,
68     MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE   = 0x00000100,
69     MFT_OUTPUT_DATA_BUFFER_STREAM_END      = 0x00000200,
70     MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE       = 0x00000300
71   };
72 
73   enum _MFT_INPUT_STREAM_INFO_FLAGS {
74     MFT_INPUT_STREAM_WHOLE_SAMPLES              = 0x00000001,
75     MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER   = 0x00000002,
76     MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE          = 0x00000004,
77     MFT_INPUT_STREAM_HOLDS_BUFFERS              = 0x00000008,
78     MFT_INPUT_STREAM_DOES_NOT_ADDREF            = 0x00000100,
79     MFT_INPUT_STREAM_REMOVABLE                  = 0x00000200,
80     MFT_INPUT_STREAM_OPTIONAL                   = 0x00000400,
81     MFT_INPUT_STREAM_PROCESSES_IN_PLACE         = 0x00000800
82   };
83 
84   typedef enum _VSS_HARDWARE_OPTIONS {
85     VSS_BREAKEX_FLAG_MASK_LUNS                      = 0x00000001,
86     VSS_BREAKEX_FLAG_MAKE_READ_WRITE                = 0x00000002,
87     VSS_BREAKEX_FLAG_REVERT_IDENTITY_ALL            = 0x00000004,
88     VSS_BREAKEX_FLAG_REVERT_IDENTITY_NONE           = 0x00000008,
89     VSS_ONLUNSTATECHANGE_NOTIFY_READ_WRITE          = 0x00000100,
90     VSS_ONLUNSTATECHANGE_NOTIFY_LUN_PRE_RECOVERY    = 0x00000200,
91     VSS_ONLUNSTATECHANGE_NOTIFY_LUN_POST_RECOVERY   = 0x00000400,
92     VSS_ONLUNSTATECHANGE_DO_MASK_LUNS               = 0x00000800
93   } VSS_HARDWARE_OPTIONS, *PVSS_HARDWARE_OPTIONS;
94 enum _MFT_SET_TYPE_FLAGS {
95     MFT_SET_TYPE_TEST_ONLY = 0x1
96 };
97 enum _MFT_PROCESS_OUTPUT_STATUS {
98     MFT_PROCESS_OUTPUT_STATUS_NEW_STREAMS = 0x100
99 };
100 enum _MFT_PROCESS_OUTPUT_FLAGS {
101     MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x1
102 };
103 typedef enum _MFT_MESSAGE_TYPE {
104     MFT_MESSAGE_COMMAND_FLUSH = 0x0,
105     MFT_MESSAGE_COMMAND_DRAIN = 0x1,
106     MFT_MESSAGE_SET_D3D_MANAGER = 0x2,
107     MFT_MESSAGE_NOTIFY_BEGIN_STREAMING = 0x10000000,
108     MFT_MESSAGE_NOTIFY_END_STREAMING = 0x10000001,
109     MFT_MESSAGE_NOTIFY_END_OF_STREAM = 0x10000002,
110     MFT_MESSAGE_NOTIFY_START_OF_STREAM = 0x10000003,
111     MFT_MESSAGE_COMMAND_MARKER = 0x20000000
112 } MFT_MESSAGE_TYPE;
113 typedef struct _MFT_INPUT_STREAM_INFO {
114     LONGLONG hnsMaxLatency;
115     DWORD dwFlags;
116     DWORD cbSize;
117     DWORD cbMaxLookahead;
118     DWORD cbAlignment;
119 } MFT_INPUT_STREAM_INFO;
120 typedef struct _MFT_OUTPUT_STREAM_INFO {
121     DWORD dwFlags;
122     DWORD cbSize;
123     DWORD cbAlignment;
124 } MFT_OUTPUT_STREAM_INFO;
125 typedef struct _MFT_OUTPUT_DATA_BUFFER {
126     DWORD dwStreamID;
127     IMFSample *pSample;
128     DWORD dwStatus;
129     IMFCollection *pEvents;
130 } MFT_OUTPUT_DATA_BUFFER;
131 /*****************************************************************************
132  * IMFTransform interface
133  */
134 #ifndef __IMFTransform_INTERFACE_DEFINED__
135 #define __IMFTransform_INTERFACE_DEFINED__
136 
137 DEFINE_GUID(IID_IMFTransform, 0xbf94c121, 0x5b05, 0x4e6f, 0x80,0x00, 0xba,0x59,0x89,0x61,0x41,0x4d);
138 #if defined(__cplusplus) && !defined(CINTERFACE)
139 MIDL_INTERFACE("bf94c121-5b05-4e6f-8000-ba598961414d")
140 IMFTransform : public IUnknown
141 {
142     virtual HRESULT STDMETHODCALLTYPE GetStreamLimits(
143         DWORD *pdwInputMinimum,
144         DWORD *pdwInputMaximum,
145         DWORD *pdwOutputMinimum,
146         DWORD *pdwOutputMaximum) = 0;
147 
148     virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
149         DWORD *pcInputStreams,
150         DWORD *pcOutputStreams) = 0;
151 
152     virtual HRESULT STDMETHODCALLTYPE GetStreamIDs(
153         DWORD dwInputIDArraySize,
154         DWORD *pdwInputIDs,
155         DWORD dwOutputIDArraySize,
156         DWORD *pdwOutputIDs) = 0;
157 
158     virtual HRESULT STDMETHODCALLTYPE GetInputStreamInfo(
159         DWORD dwInputStreamID,
160         MFT_INPUT_STREAM_INFO *pStreamInfo) = 0;
161 
162     virtual HRESULT STDMETHODCALLTYPE GetOutputStreamInfo(
163         DWORD dwOutputStreamID,
164         MFT_OUTPUT_STREAM_INFO *pStreamInfo) = 0;
165 
166     virtual HRESULT STDMETHODCALLTYPE GetAttributes(
167         IMFAttributes **pAttributes) = 0;
168 
169     virtual HRESULT STDMETHODCALLTYPE GetInputStreamAttributes(
170         DWORD dwInputStreamID,
171         IMFAttributes **pAttributes) = 0;
172 
173     virtual HRESULT STDMETHODCALLTYPE GetOutputStreamAttributes(
174         DWORD dwOutputStreamID,
175         IMFAttributes **pAttributes) = 0;
176 
177     virtual HRESULT STDMETHODCALLTYPE DeleteInputStream(
178         DWORD dwStreamID) = 0;
179 
180     virtual HRESULT STDMETHODCALLTYPE AddInputStreams(
181         DWORD cStreams,
182         DWORD *adwStreamIDs) = 0;
183 
184     virtual HRESULT STDMETHODCALLTYPE GetInputAvailableType(
185         DWORD dwInputStreamID,
186         DWORD dwTypeIndex,
187         IMFMediaType **ppType) = 0;
188 
189     virtual HRESULT STDMETHODCALLTYPE GetOutputAvailableType(
190         DWORD dwOutputStreamID,
191         DWORD dwTypeIndex,
192         IMFMediaType **ppType) = 0;
193 
194     virtual HRESULT STDMETHODCALLTYPE SetInputType(
195         DWORD dwInputStreamID,
196         IMFMediaType *pType,
197         DWORD dwFlags) = 0;
198 
199     virtual HRESULT STDMETHODCALLTYPE SetOutputType(
200         DWORD dwOutputStreamID,
201         IMFMediaType *pType,
202         DWORD dwFlags) = 0;
203 
204     virtual HRESULT STDMETHODCALLTYPE GetInputCurrentType(
205         DWORD dwInputStreamID,
206         IMFMediaType **ppType) = 0;
207 
208     virtual HRESULT STDMETHODCALLTYPE GetOutputCurrentType(
209         DWORD dwOutputStreamID,
210         IMFMediaType **ppType) = 0;
211 
212     virtual HRESULT STDMETHODCALLTYPE GetInputStatus(
213         DWORD dwInputStreamID,
214         DWORD *pdwFlags) = 0;
215 
216     virtual HRESULT STDMETHODCALLTYPE GetOutputStatus(
217         DWORD *pdwFlags) = 0;
218 
219     virtual HRESULT STDMETHODCALLTYPE SetOutputBounds(
220         LONGLONG hnsLowerBound,
221         LONGLONG hnsUpperBound) = 0;
222 
223     virtual HRESULT STDMETHODCALLTYPE ProcessEvent(
224         DWORD dwInputStreamID,
225         IMFMediaEvent *pEvent) = 0;
226 
227     virtual HRESULT STDMETHODCALLTYPE ProcessMessage(
228         MFT_MESSAGE_TYPE eMessage,
229         ULONG_PTR ulParam) = 0;
230 
231     virtual HRESULT STDMETHODCALLTYPE ProcessInput(
232         DWORD dwInputStreamID,
233         IMFSample *pSample,
234         DWORD dwFlags) = 0;
235 
236     virtual HRESULT STDMETHODCALLTYPE ProcessOutput(
237         DWORD dwFlags,
238         DWORD cOutputBufferCount,
239         MFT_OUTPUT_DATA_BUFFER *pOutputSamples,
240         DWORD *pdwStatus) = 0;
241 
242 };
243 #ifdef __CRT_UUID_DECL
244 __CRT_UUID_DECL(IMFTransform, 0xbf94c121, 0x5b05, 0x4e6f, 0x80,0x00, 0xba,0x59,0x89,0x61,0x41,0x4d)
245 #endif
246 #else
247 typedef struct IMFTransformVtbl {
248     BEGIN_INTERFACE
249 
250     /*** IUnknown methods ***/
251     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
252         IMFTransform *This,
253         REFIID riid,
254         void **ppvObject);
255 
256     ULONG (STDMETHODCALLTYPE *AddRef)(
257         IMFTransform *This);
258 
259     ULONG (STDMETHODCALLTYPE *Release)(
260         IMFTransform *This);
261 
262     /*** IMFTransform methods ***/
263     HRESULT (STDMETHODCALLTYPE *GetStreamLimits)(
264         IMFTransform *This,
265         DWORD *pdwInputMinimum,
266         DWORD *pdwInputMaximum,
267         DWORD *pdwOutputMinimum,
268         DWORD *pdwOutputMaximum);
269 
270     HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
271         IMFTransform *This,
272         DWORD *pcInputStreams,
273         DWORD *pcOutputStreams);
274 
275     HRESULT (STDMETHODCALLTYPE *GetStreamIDs)(
276         IMFTransform *This,
277         DWORD dwInputIDArraySize,
278         DWORD *pdwInputIDs,
279         DWORD dwOutputIDArraySize,
280         DWORD *pdwOutputIDs);
281 
282     HRESULT (STDMETHODCALLTYPE *GetInputStreamInfo)(
283         IMFTransform *This,
284         DWORD dwInputStreamID,
285         MFT_INPUT_STREAM_INFO *pStreamInfo);
286 
287     HRESULT (STDMETHODCALLTYPE *GetOutputStreamInfo)(
288         IMFTransform *This,
289         DWORD dwOutputStreamID,
290         MFT_OUTPUT_STREAM_INFO *pStreamInfo);
291 
292     HRESULT (STDMETHODCALLTYPE *GetAttributes)(
293         IMFTransform *This,
294         IMFAttributes **pAttributes);
295 
296     HRESULT (STDMETHODCALLTYPE *GetInputStreamAttributes)(
297         IMFTransform *This,
298         DWORD dwInputStreamID,
299         IMFAttributes **pAttributes);
300 
301     HRESULT (STDMETHODCALLTYPE *GetOutputStreamAttributes)(
302         IMFTransform *This,
303         DWORD dwOutputStreamID,
304         IMFAttributes **pAttributes);
305 
306     HRESULT (STDMETHODCALLTYPE *DeleteInputStream)(
307         IMFTransform *This,
308         DWORD dwStreamID);
309 
310     HRESULT (STDMETHODCALLTYPE *AddInputStreams)(
311         IMFTransform *This,
312         DWORD cStreams,
313         DWORD *adwStreamIDs);
314 
315     HRESULT (STDMETHODCALLTYPE *GetInputAvailableType)(
316         IMFTransform *This,
317         DWORD dwInputStreamID,
318         DWORD dwTypeIndex,
319         IMFMediaType **ppType);
320 
321     HRESULT (STDMETHODCALLTYPE *GetOutputAvailableType)(
322         IMFTransform *This,
323         DWORD dwOutputStreamID,
324         DWORD dwTypeIndex,
325         IMFMediaType **ppType);
326 
327     HRESULT (STDMETHODCALLTYPE *SetInputType)(
328         IMFTransform *This,
329         DWORD dwInputStreamID,
330         IMFMediaType *pType,
331         DWORD dwFlags);
332 
333     HRESULT (STDMETHODCALLTYPE *SetOutputType)(
334         IMFTransform *This,
335         DWORD dwOutputStreamID,
336         IMFMediaType *pType,
337         DWORD dwFlags);
338 
339     HRESULT (STDMETHODCALLTYPE *GetInputCurrentType)(
340         IMFTransform *This,
341         DWORD dwInputStreamID,
342         IMFMediaType **ppType);
343 
344     HRESULT (STDMETHODCALLTYPE *GetOutputCurrentType)(
345         IMFTransform *This,
346         DWORD dwOutputStreamID,
347         IMFMediaType **ppType);
348 
349     HRESULT (STDMETHODCALLTYPE *GetInputStatus)(
350         IMFTransform *This,
351         DWORD dwInputStreamID,
352         DWORD *pdwFlags);
353 
354     HRESULT (STDMETHODCALLTYPE *GetOutputStatus)(
355         IMFTransform *This,
356         DWORD *pdwFlags);
357 
358     HRESULT (STDMETHODCALLTYPE *SetOutputBounds)(
359         IMFTransform *This,
360         LONGLONG hnsLowerBound,
361         LONGLONG hnsUpperBound);
362 
363     HRESULT (STDMETHODCALLTYPE *ProcessEvent)(
364         IMFTransform *This,
365         DWORD dwInputStreamID,
366         IMFMediaEvent *pEvent);
367 
368     HRESULT (STDMETHODCALLTYPE *ProcessMessage)(
369         IMFTransform *This,
370         MFT_MESSAGE_TYPE eMessage,
371         ULONG_PTR ulParam);
372 
373     HRESULT (STDMETHODCALLTYPE *ProcessInput)(
374         IMFTransform *This,
375         DWORD dwInputStreamID,
376         IMFSample *pSample,
377         DWORD dwFlags);
378 
379     HRESULT (STDMETHODCALLTYPE *ProcessOutput)(
380         IMFTransform *This,
381         DWORD dwFlags,
382         DWORD cOutputBufferCount,
383         MFT_OUTPUT_DATA_BUFFER *pOutputSamples,
384         DWORD *pdwStatus);
385 
386     END_INTERFACE
387 } IMFTransformVtbl;
388 
389 interface IMFTransform {
390     CONST_VTBL IMFTransformVtbl* lpVtbl;
391 };
392 
393 #ifdef COBJMACROS
394 #ifndef WIDL_C_INLINE_WRAPPERS
395 /*** IUnknown methods ***/
396 #define IMFTransform_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
397 #define IMFTransform_AddRef(This) (This)->lpVtbl->AddRef(This)
398 #define IMFTransform_Release(This) (This)->lpVtbl->Release(This)
399 /*** IMFTransform methods ***/
400 #define IMFTransform_GetStreamLimits(This,pdwInputMinimum,pdwInputMaximum,pdwOutputMinimum,pdwOutputMaximum) (This)->lpVtbl->GetStreamLimits(This,pdwInputMinimum,pdwInputMaximum,pdwOutputMinimum,pdwOutputMaximum)
401 #define IMFTransform_GetStreamCount(This,pcInputStreams,pcOutputStreams) (This)->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams)
402 #define IMFTransform_GetStreamIDs(This,dwInputIDArraySize,pdwInputIDs,dwOutputIDArraySize,pdwOutputIDs) (This)->lpVtbl->GetStreamIDs(This,dwInputIDArraySize,pdwInputIDs,dwOutputIDArraySize,pdwOutputIDs)
403 #define IMFTransform_GetInputStreamInfo(This,dwInputStreamID,pStreamInfo) (This)->lpVtbl->GetInputStreamInfo(This,dwInputStreamID,pStreamInfo)
404 #define IMFTransform_GetOutputStreamInfo(This,dwOutputStreamID,pStreamInfo) (This)->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamID,pStreamInfo)
405 #define IMFTransform_GetAttributes(This,pAttributes) (This)->lpVtbl->GetAttributes(This,pAttributes)
406 #define IMFTransform_GetInputStreamAttributes(This,dwInputStreamID,pAttributes) (This)->lpVtbl->GetInputStreamAttributes(This,dwInputStreamID,pAttributes)
407 #define IMFTransform_GetOutputStreamAttributes(This,dwOutputStreamID,pAttributes) (This)->lpVtbl->GetOutputStreamAttributes(This,dwOutputStreamID,pAttributes)
408 #define IMFTransform_DeleteInputStream(This,dwStreamID) (This)->lpVtbl->DeleteInputStream(This,dwStreamID)
409 #define IMFTransform_AddInputStreams(This,cStreams,adwStreamIDs) (This)->lpVtbl->AddInputStreams(This,cStreams,adwStreamIDs)
410 #define IMFTransform_GetInputAvailableType(This,dwInputStreamID,dwTypeIndex,ppType) (This)->lpVtbl->GetInputAvailableType(This,dwInputStreamID,dwTypeIndex,ppType)
411 #define IMFTransform_GetOutputAvailableType(This,dwOutputStreamID,dwTypeIndex,ppType) (This)->lpVtbl->GetOutputAvailableType(This,dwOutputStreamID,dwTypeIndex,ppType)
412 #define IMFTransform_SetInputType(This,dwInputStreamID,pType,dwFlags) (This)->lpVtbl->SetInputType(This,dwInputStreamID,pType,dwFlags)
413 #define IMFTransform_SetOutputType(This,dwOutputStreamID,pType,dwFlags) (This)->lpVtbl->SetOutputType(This,dwOutputStreamID,pType,dwFlags)
414 #define IMFTransform_GetInputCurrentType(This,dwInputStreamID,ppType) (This)->lpVtbl->GetInputCurrentType(This,dwInputStreamID,ppType)
415 #define IMFTransform_GetOutputCurrentType(This,dwOutputStreamID,ppType) (This)->lpVtbl->GetOutputCurrentType(This,dwOutputStreamID,ppType)
416 #define IMFTransform_GetInputStatus(This,dwInputStreamID,pdwFlags) (This)->lpVtbl->GetInputStatus(This,dwInputStreamID,pdwFlags)
417 #define IMFTransform_GetOutputStatus(This,pdwFlags) (This)->lpVtbl->GetOutputStatus(This,pdwFlags)
418 #define IMFTransform_SetOutputBounds(This,hnsLowerBound,hnsUpperBound) (This)->lpVtbl->SetOutputBounds(This,hnsLowerBound,hnsUpperBound)
419 #define IMFTransform_ProcessEvent(This,dwInputStreamID,pEvent) (This)->lpVtbl->ProcessEvent(This,dwInputStreamID,pEvent)
420 #define IMFTransform_ProcessMessage(This,eMessage,ulParam) (This)->lpVtbl->ProcessMessage(This,eMessage,ulParam)
421 #define IMFTransform_ProcessInput(This,dwInputStreamID,pSample,dwFlags) (This)->lpVtbl->ProcessInput(This,dwInputStreamID,pSample,dwFlags)
422 #define IMFTransform_ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputSamples,pdwStatus) (This)->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputSamples,pdwStatus)
423 #else
424 /*** IUnknown methods ***/
425 static FORCEINLINE HRESULT IMFTransform_QueryInterface(IMFTransform* This,REFIID riid,void **ppvObject) {
426     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
427 }
428 static FORCEINLINE ULONG IMFTransform_AddRef(IMFTransform* This) {
429     return This->lpVtbl->AddRef(This);
430 }
431 static FORCEINLINE ULONG IMFTransform_Release(IMFTransform* This) {
432     return This->lpVtbl->Release(This);
433 }
434 /*** IMFTransform methods ***/
435 static FORCEINLINE HRESULT IMFTransform_GetStreamLimits(IMFTransform* This,DWORD *pdwInputMinimum,DWORD *pdwInputMaximum,DWORD *pdwOutputMinimum,DWORD *pdwOutputMaximum) {
436     return This->lpVtbl->GetStreamLimits(This,pdwInputMinimum,pdwInputMaximum,pdwOutputMinimum,pdwOutputMaximum);
437 }
438 static FORCEINLINE HRESULT IMFTransform_GetStreamCount(IMFTransform* This,DWORD *pcInputStreams,DWORD *pcOutputStreams) {
439     return This->lpVtbl->GetStreamCount(This,pcInputStreams,pcOutputStreams);
440 }
441 static FORCEINLINE HRESULT IMFTransform_GetStreamIDs(IMFTransform* This,DWORD dwInputIDArraySize,DWORD *pdwInputIDs,DWORD dwOutputIDArraySize,DWORD *pdwOutputIDs) {
442     return This->lpVtbl->GetStreamIDs(This,dwInputIDArraySize,pdwInputIDs,dwOutputIDArraySize,pdwOutputIDs);
443 }
444 static FORCEINLINE HRESULT IMFTransform_GetInputStreamInfo(IMFTransform* This,DWORD dwInputStreamID,MFT_INPUT_STREAM_INFO *pStreamInfo) {
445     return This->lpVtbl->GetInputStreamInfo(This,dwInputStreamID,pStreamInfo);
446 }
447 static FORCEINLINE HRESULT IMFTransform_GetOutputStreamInfo(IMFTransform* This,DWORD dwOutputStreamID,MFT_OUTPUT_STREAM_INFO *pStreamInfo) {
448     return This->lpVtbl->GetOutputStreamInfo(This,dwOutputStreamID,pStreamInfo);
449 }
450 static FORCEINLINE HRESULT IMFTransform_GetAttributes(IMFTransform* This,IMFAttributes **pAttributes) {
451     return This->lpVtbl->GetAttributes(This,pAttributes);
452 }
453 static FORCEINLINE HRESULT IMFTransform_GetInputStreamAttributes(IMFTransform* This,DWORD dwInputStreamID,IMFAttributes **pAttributes) {
454     return This->lpVtbl->GetInputStreamAttributes(This,dwInputStreamID,pAttributes);
455 }
456 static FORCEINLINE HRESULT IMFTransform_GetOutputStreamAttributes(IMFTransform* This,DWORD dwOutputStreamID,IMFAttributes **pAttributes) {
457     return This->lpVtbl->GetOutputStreamAttributes(This,dwOutputStreamID,pAttributes);
458 }
459 static FORCEINLINE HRESULT IMFTransform_DeleteInputStream(IMFTransform* This,DWORD dwStreamID) {
460     return This->lpVtbl->DeleteInputStream(This,dwStreamID);
461 }
462 static FORCEINLINE HRESULT IMFTransform_AddInputStreams(IMFTransform* This,DWORD cStreams,DWORD *adwStreamIDs) {
463     return This->lpVtbl->AddInputStreams(This,cStreams,adwStreamIDs);
464 }
465 static FORCEINLINE HRESULT IMFTransform_GetInputAvailableType(IMFTransform* This,DWORD dwInputStreamID,DWORD dwTypeIndex,IMFMediaType **ppType) {
466     return This->lpVtbl->GetInputAvailableType(This,dwInputStreamID,dwTypeIndex,ppType);
467 }
468 static FORCEINLINE HRESULT IMFTransform_GetOutputAvailableType(IMFTransform* This,DWORD dwOutputStreamID,DWORD dwTypeIndex,IMFMediaType **ppType) {
469     return This->lpVtbl->GetOutputAvailableType(This,dwOutputStreamID,dwTypeIndex,ppType);
470 }
471 static FORCEINLINE HRESULT IMFTransform_SetInputType(IMFTransform* This,DWORD dwInputStreamID,IMFMediaType *pType,DWORD dwFlags) {
472     return This->lpVtbl->SetInputType(This,dwInputStreamID,pType,dwFlags);
473 }
474 static FORCEINLINE HRESULT IMFTransform_SetOutputType(IMFTransform* This,DWORD dwOutputStreamID,IMFMediaType *pType,DWORD dwFlags) {
475     return This->lpVtbl->SetOutputType(This,dwOutputStreamID,pType,dwFlags);
476 }
477 static FORCEINLINE HRESULT IMFTransform_GetInputCurrentType(IMFTransform* This,DWORD dwInputStreamID,IMFMediaType **ppType) {
478     return This->lpVtbl->GetInputCurrentType(This,dwInputStreamID,ppType);
479 }
480 static FORCEINLINE HRESULT IMFTransform_GetOutputCurrentType(IMFTransform* This,DWORD dwOutputStreamID,IMFMediaType **ppType) {
481     return This->lpVtbl->GetOutputCurrentType(This,dwOutputStreamID,ppType);
482 }
483 static FORCEINLINE HRESULT IMFTransform_GetInputStatus(IMFTransform* This,DWORD dwInputStreamID,DWORD *pdwFlags) {
484     return This->lpVtbl->GetInputStatus(This,dwInputStreamID,pdwFlags);
485 }
486 static FORCEINLINE HRESULT IMFTransform_GetOutputStatus(IMFTransform* This,DWORD *pdwFlags) {
487     return This->lpVtbl->GetOutputStatus(This,pdwFlags);
488 }
489 static FORCEINLINE HRESULT IMFTransform_SetOutputBounds(IMFTransform* This,LONGLONG hnsLowerBound,LONGLONG hnsUpperBound) {
490     return This->lpVtbl->SetOutputBounds(This,hnsLowerBound,hnsUpperBound);
491 }
492 static FORCEINLINE HRESULT IMFTransform_ProcessEvent(IMFTransform* This,DWORD dwInputStreamID,IMFMediaEvent *pEvent) {
493     return This->lpVtbl->ProcessEvent(This,dwInputStreamID,pEvent);
494 }
495 static FORCEINLINE HRESULT IMFTransform_ProcessMessage(IMFTransform* This,MFT_MESSAGE_TYPE eMessage,ULONG_PTR ulParam) {
496     return This->lpVtbl->ProcessMessage(This,eMessage,ulParam);
497 }
498 static FORCEINLINE HRESULT IMFTransform_ProcessInput(IMFTransform* This,DWORD dwInputStreamID,IMFSample *pSample,DWORD dwFlags) {
499     return This->lpVtbl->ProcessInput(This,dwInputStreamID,pSample,dwFlags);
500 }
501 static FORCEINLINE HRESULT IMFTransform_ProcessOutput(IMFTransform* This,DWORD dwFlags,DWORD cOutputBufferCount,MFT_OUTPUT_DATA_BUFFER *pOutputSamples,DWORD *pdwStatus) {
502     return This->lpVtbl->ProcessOutput(This,dwFlags,cOutputBufferCount,pOutputSamples,pdwStatus);
503 }
504 #endif
505 #endif
506 
507 #endif
508 
509 
510 #endif  /* __IMFTransform_INTERFACE_DEFINED__ */
511 
512 #if defined(__GNUC__) && !defined(__cplusplus)
513 #undef EXTERN_C
514 #define EXTERN_C
515 #endif
516 
517 EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_CLSID = {{0xc57a84c0,0x1a80,0x40a3,{0x97,0xb5,0x92,0x72,0xa4,0x3,0xc8,0xae}}, 0x01};
518 EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_CATEGORY = {{0xc57a84c0,0x1a80,0x40a3,{0x97,0xb5,0x92,0x72,0xa4,0x3,0xc8,0xae}}, 0x02 };
519 EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_EXATTRIBUTE_SUPPORTED = {{0x456fe843,0x3c87,0x40c0,{0x94,0x9d,0x14,0x9,0xc9,0x7d,0xab,0x2c}}, 0x01};
520 EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_MULTICHANNEL_CHANNEL_MASK  = {{0x58bdaf8c,0x3224,0x4692,{0x86,0xd0,0x44,0xd6,0x5c,0x5b,0xf8,0x2b}}, 0x01};
521 EXTERN_C const DECLSPEC_SELECTANY GUID MF_SA_D3D_AWARE = {0xeaa35c29,0x775e,0x488e,{0x9b,0x61,0xb3,0x28,0x3e,0x49,0x58,0x3b}};
522 EXTERN_C const DECLSPEC_SELECTANY GUID MF_SA_REQUIRED_SAMPLE_COUNT = {0x18802c61,0x324b,0x4952,{0xab,0xd0,0x17,0x6f,0xf5,0xc6,0x96,0xff}};
523 EXTERN_C const DECLSPEC_SELECTANY GUID MF_TRANSFORM_ASYNC = {0xf81a699a,0x649a,0x497d,{0x8c,0x73,0x29,0xf8,0xfe,0xd6,0xad,0x7a}};
524 EXTERN_C const DECLSPEC_SELECTANY GUID MF_TRANSFORM_ASYNC_UNLOCK = {0xe5666d6b,0x3422,0x4eb6,{0xa4,0x21,0xda,0x7d,0xb1,0xf8,0xe2,0x7}};
525 EXTERN_C const DECLSPEC_SELECTANY GUID MF_TRANSFORM_FLAGS_Attribute = {0x9359bb7e,0x6275,0x46c4,{0xa0,0x25,0x1c,0x1,0xe4,0x5f,0x1a,0x86}};
526 EXTERN_C const DECLSPEC_SELECTANY GUID MF_TRANSFORM_CATEGORY_Attribute = {0xceabba49,0x506d,0x4757,{0xa6,0xff,0x66,0xc1,0x84,0x98,0x7e,0x4e}};
527 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_TRANSFORM_CLSID_Attribute = {0x6821c42b,0x65a4,0x4e82,{0x99,0xbc,0x9a,0x88,0x20,0x5e,0xcd,0xc}};
528 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_INPUT_TYPES_Attributes = {0x4276c9b1,0x759d,0x4bf3, {0x9c,0xd0,0xd,0x72,0x3d,0x13,0x8f,0x96}};
529 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_OUTPUT_TYPES_Attributes = {0x8eae8cf3,0xa44f,0x4306,{0xba,0x5c,0xbf,0x5d,0xda,0x24,0x28,0x18}};
530 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_ENUM_HARDWARE_URL_Attribute = {0x2fb866ac,0xb078,0x4942,{0xab,0x6c,0x0,0x3d,0x5,0xcd,0xa6,0x74}};
531 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_FRIENDLY_NAME_Attribute = {0x314ffbae,0x5b41,0x4c95,{0x9c,0x19,0x4e,0x7d,0x58,0x6f,0xac,0xe3}};
532 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_CONNECTED_STREAM_ATTRIBUTE  = {0x71eeb820,0xa59f,0x4de2,{0xbc,0xec,0x38,0xdb,0x1d,0xd6,0x11,0xa4}};
533 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_CONNECTED_TO_HW_STREAM = {0x34e6e728,0x6d6,0x4491,{0xa5,0x53,0x47,0x95,0x65,0xd,0xb9,0x12}};
534 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_PREFERRED_OUTPUTTYPE_Attribute = {0x7e700499,0x396a,0x49ee,{0xb1,0xb4,0xf6,0x28,0x2,0x1e,0x8c,0x9d}};
535 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_PROCESS_LOCAL_Attribute = {0x543186e4,0x4649,0x4e65,{0xb5,0x88,0x4a,0xa3,0x52,0xaf,0xf3,0x79}};
536 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_PREFERRED_ENCODER_PROFILE = {0x53004909,0x1ef5,0x46d7,{0xa1,0x8e,0x5a,0x75,0xf8,0xb5,0x90,0x5f}};
537 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_HW_TIMESTAMP_WITH_QPC_Attribute = {0x8d030fb8,0xcc43,0x4258,{0xa2,0x2e,0x92,0x10,0xbe,0xf8,0x9b,0xe4}};
538 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_FIELDOFUSE_UNLOCK_Attribute = {0x8ec2e9fd,0x9148,0x410d,{0x83,0x1e,0x70,0x24,0x39,0x46,0x1a,0x8e}};
539 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_CODEC_MERIT_Attribute = {0x88a7cb15,0x7b07,0x4a34,{0x91,0x28,0xe6,0x4c,0x67,0x3,0xc4,0xd3}};
540 EXTERN_C const DECLSPEC_SELECTANY GUID MFT_ENUM_TRANSCODE_ONLY_ATTRIBUTE = {0x111ea8cd,0xb62a,0x4bdb,{0x89,0xf6,0x67,0xff,0xcd,0xc2,0x45,0x8b}};
541 #if (WINVER >= 0x0601)
542 HRESULT WINAPI MFCreateTransformActivate(IMFActivate **ppActivate);
543 #endif /*(WINVER >= 0x0601)*/
544 /* Begin additional prototypes for all interfaces */
545 
546 
547 /* End additional prototypes */
548 
549 #ifdef __cplusplus
550 }
551 #endif
552 
553 #endif /* __mftransform_h__ */
554