Adds enough of ks.h, ksguid.h and ksmedia.h to start adding support
[wine] / include / amstream.h
1 /*** Autogenerated by WIDL 0.1 from amstream.idl - Do not edit ***/
2 #include <rpc.h>
3 #include <rpcndr.h>
4
5 #ifndef __WIDL_AMSTREAM_H
6 #define __WIDL_AMSTREAM_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include <unknwn.h>
11 #include <mmstream.h>
12 #include <strmif.h>
13 #include <ddraw.h>
14 #include <mmsystem.h>
15 #include <mmstream.h>
16 #include <ddstream.h>
17 #include <austream.h>
18 #if 0
19 #ifndef __IDirectDraw_FWD_DEFINED__
20 #define __IDirectDraw_FWD_DEFINED__
21 typedef struct IDirectDraw IDirectDraw;
22 #endif
23
24 #ifndef __IDirectDrawSurface_FWD_DEFINED__
25 #define __IDirectDrawSurface_FWD_DEFINED__
26 typedef struct IDirectDrawSurface IDirectDrawSurface;
27 #endif
28
29 #endif
30 #ifndef __IAMMultiMediaStream_FWD_DEFINED__
31 #define __IAMMultiMediaStream_FWD_DEFINED__
32 typedef struct IAMMultiMediaStream IAMMultiMediaStream;
33 #endif
34
35 #ifndef __IAMMediaStream_FWD_DEFINED__
36 #define __IAMMediaStream_FWD_DEFINED__
37 typedef struct IAMMediaStream IAMMediaStream;
38 #endif
39
40 #ifndef __IMediaStreamFilter_FWD_DEFINED__
41 #define __IMediaStreamFilter_FWD_DEFINED__
42 typedef struct IMediaStreamFilter IMediaStreamFilter;
43 #endif
44
45 #ifndef __IAMMediaTypeStream_FWD_DEFINED__
46 #define __IAMMediaTypeStream_FWD_DEFINED__
47 typedef struct IAMMediaTypeStream IAMMediaTypeStream;
48 #endif
49
50 #ifndef __IAMMediaTypeSample_FWD_DEFINED__
51 #define __IAMMediaTypeSample_FWD_DEFINED__
52 typedef struct IAMMediaTypeSample IAMMediaTypeSample;
53 #endif
54
55 enum {
56     AMMSF_NOGRAPHTHREAD = 0x1
57 };
58
59 enum {
60     AMMSF_ADDDEFAULTRENDERER = 0x1,
61     AMMSF_CREATEPEER = 0x2
62 };
63
64 enum {
65     AMMSF_RENDERTYPEMASK = 0x3,
66     AMMSF_RENDERTOEXISTING = 0x0,
67     AMMSF_RENDERALLSTREAMS = 0x1,
68     AMMSF_NORENDER = 0x2,
69     AMMSF_NOCLOCK = 0x4,
70     AMMSF_RUN = 0x8
71 };
72
73 typedef enum {
74     Disabled = 0,
75     ReadData = 1,
76     RenderData = 2
77 } OUTPUT_STATE;
78
79 /*****************************************************************************
80  * IAMMultiMediaStream interface
81  */
82 #ifndef __IAMMultiMediaStream_INTERFACE_DEFINED__
83 #define __IAMMultiMediaStream_INTERFACE_DEFINED__
84
85 DEFINE_GUID(IID_IAMMultiMediaStream, 0xbebe595c, 0x9a6f, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
86 #if defined(__cplusplus) && !defined(CINTERFACE)
87 struct IAMMultiMediaStream : public IMultiMediaStream
88 {
89     virtual HRESULT STDMETHODCALLTYPE Initialize(
90         STREAM_TYPE StreamType,
91         DWORD dwFlags,
92         IGraphBuilder* pFilterGraph) = 0;
93
94     virtual HRESULT STDMETHODCALLTYPE GetFilterGraph(
95         IGraphBuilder** ppGraphBuilder) = 0;
96
97     virtual HRESULT STDMETHODCALLTYPE GetFilter(
98         IMediaStreamFilter** ppFilter) = 0;
99
100     virtual HRESULT STDMETHODCALLTYPE AddMediaStream(
101         IUnknown* pStreamObject,
102         const MSPID* PurposeId,
103         DWORD dwFlags,
104         IMediaStream** ppNewStream) = 0;
105
106     virtual HRESULT STDMETHODCALLTYPE OpenFile(
107         LPCWSTR pszFileName,
108         DWORD dwFlags) = 0;
109
110     virtual HRESULT STDMETHODCALLTYPE OpenMoniker(
111         IBindCtx* pCtx,
112         IMoniker* pMoniker,
113         DWORD dwFlags) = 0;
114
115     virtual HRESULT STDMETHODCALLTYPE Render(
116         DWORD dwFlags) = 0;
117
118 };
119 #else
120 typedef struct IAMMultiMediaStreamVtbl IAMMultiMediaStreamVtbl;
121 struct IAMMultiMediaStream {
122     const IAMMultiMediaStreamVtbl* lpVtbl;
123 };
124 struct IAMMultiMediaStreamVtbl {
125     ICOM_MSVTABLE_COMPAT_FIELDS
126
127     /*** IUnknown methods ***/
128     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
129         IAMMultiMediaStream* This,
130         REFIID riid,
131         void** ppvObject);
132
133     ULONG (STDMETHODCALLTYPE *AddRef)(
134         IAMMultiMediaStream* This);
135
136     ULONG (STDMETHODCALLTYPE *Release)(
137         IAMMultiMediaStream* This);
138
139     /*** IMultiMediaStream methods ***/
140     HRESULT (STDMETHODCALLTYPE *GetInformation)(
141         IAMMultiMediaStream* This,
142         char* pdwFlags,
143         STREAM_TYPE* pStreamType);
144
145     HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
146         IAMMultiMediaStream* This,
147         REFMSPID idPurpose,
148         IMediaStream** ppMediaStream);
149
150     HRESULT (STDMETHODCALLTYPE *EnumMediaStreams)(
151         IAMMultiMediaStream* This,
152         long Index,
153         IMediaStream** ppMediaStream);
154
155     HRESULT (STDMETHODCALLTYPE *GetState)(
156         IAMMultiMediaStream* This,
157         STREAM_STATE* pCurrentState);
158
159     HRESULT (STDMETHODCALLTYPE *SetState)(
160         IAMMultiMediaStream* This,
161         STREAM_STATE NewState);
162
163     HRESULT (STDMETHODCALLTYPE *GetTime)(
164         IAMMultiMediaStream* This,
165         STREAM_TIME* pCurrentTime);
166
167     HRESULT (STDMETHODCALLTYPE *GetDuration)(
168         IAMMultiMediaStream* This,
169         STREAM_TIME* pDuration);
170
171     HRESULT (STDMETHODCALLTYPE *Seek)(
172         IAMMultiMediaStream* This,
173         STREAM_TIME SeekTime);
174
175     HRESULT (STDMETHODCALLTYPE *GetEndOfStreamEventHandle)(
176         IAMMultiMediaStream* This,
177         HANDLE* phEOS);
178
179     /*** IAMMultiMediaStream methods ***/
180     HRESULT (STDMETHODCALLTYPE *Initialize)(
181         IAMMultiMediaStream* This,
182         STREAM_TYPE StreamType,
183         DWORD dwFlags,
184         IGraphBuilder* pFilterGraph);
185
186     HRESULT (STDMETHODCALLTYPE *GetFilterGraph)(
187         IAMMultiMediaStream* This,
188         IGraphBuilder** ppGraphBuilder);
189
190     HRESULT (STDMETHODCALLTYPE *GetFilter)(
191         IAMMultiMediaStream* This,
192         IMediaStreamFilter** ppFilter);
193
194     HRESULT (STDMETHODCALLTYPE *AddMediaStream)(
195         IAMMultiMediaStream* This,
196         IUnknown* pStreamObject,
197         const MSPID* PurposeId,
198         DWORD dwFlags,
199         IMediaStream** ppNewStream);
200
201     HRESULT (STDMETHODCALLTYPE *OpenFile)(
202         IAMMultiMediaStream* This,
203         LPCWSTR pszFileName,
204         DWORD dwFlags);
205
206     HRESULT (STDMETHODCALLTYPE *OpenMoniker)(
207         IAMMultiMediaStream* This,
208         IBindCtx* pCtx,
209         IMoniker* pMoniker,
210         DWORD dwFlags);
211
212     HRESULT (STDMETHODCALLTYPE *Render)(
213         IAMMultiMediaStream* This,
214         DWORD dwFlags);
215
216 };
217
218 #ifdef COBJMACROS
219 /*** IUnknown methods ***/
220 #define IAMMultiMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
221 #define IAMMultiMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p)
222 #define IAMMultiMediaStream_Release(p) (p)->lpVtbl->Release(p)
223 /*** IMultiMediaStream methods ***/
224 #define IAMMultiMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b)
225 #define IAMMultiMediaStream_GetMediaStream(p,a,b) (p)->lpVtbl->GetMediaStream(p,a,b)
226 #define IAMMultiMediaStream_EnumMediaStreams(p,a,b) (p)->lpVtbl->EnumMediaStreams(p,a,b)
227 #define IAMMultiMediaStream_GetState(p,a) (p)->lpVtbl->GetState(p,a)
228 #define IAMMultiMediaStream_SetState(p,a) (p)->lpVtbl->SetState(p,a)
229 #define IAMMultiMediaStream_GetTime(p,a) (p)->lpVtbl->GetTime(p,a)
230 #define IAMMultiMediaStream_GetDuration(p,a) (p)->lpVtbl->GetDuration(p,a)
231 #define IAMMultiMediaStream_Seek(p,a) (p)->lpVtbl->Seek(p,a)
232 #define IAMMultiMediaStream_GetEndOfStreamEventHandle(p,a) (p)->lpVtbl->GetEndOfStreamEventHandle(p,a)
233 /*** IAMMultiMediaStream methods ***/
234 #define IAMMultiMediaStream_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
235 #define IAMMultiMediaStream_GetFilterGraph(p,a) (p)->lpVtbl->GetFilterGraph(p,a)
236 #define IAMMultiMediaStream_GetFilter(p,a) (p)->lpVtbl->GetFilter(p,a)
237 #define IAMMultiMediaStream_AddMediaStream(p,a,b,c,d) (p)->lpVtbl->AddMediaStream(p,a,b,c,d)
238 #define IAMMultiMediaStream_OpenFile(p,a,b) (p)->lpVtbl->OpenFile(p,a,b)
239 #define IAMMultiMediaStream_OpenMoniker(p,a,b,c) (p)->lpVtbl->OpenMoniker(p,a,b,c)
240 #define IAMMultiMediaStream_Render(p,a) (p)->lpVtbl->Render(p,a)
241 #endif
242
243 #endif
244
245 #define IAMMultiMediaStream_METHODS \
246     ICOM_MSVTABLE_COMPAT_FIELDS \
247     /*** IUnknown methods ***/ \
248     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
249     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
250     STDMETHOD_(ULONG,Release)(THIS) PURE; \
251     /*** IMultiMediaStream methods ***/ \
252     STDMETHOD_(HRESULT,GetInformation)(THIS_ char* pdwFlags, STREAM_TYPE* pStreamType) PURE; \
253     STDMETHOD_(HRESULT,GetMediaStream)(THIS_ REFMSPID idPurpose, IMediaStream** ppMediaStream) PURE; \
254     STDMETHOD_(HRESULT,EnumMediaStreams)(THIS_ long Index, IMediaStream** ppMediaStream) PURE; \
255     STDMETHOD_(HRESULT,GetState)(THIS_ STREAM_STATE* pCurrentState) PURE; \
256     STDMETHOD_(HRESULT,SetState)(THIS_ STREAM_STATE NewState) PURE; \
257     STDMETHOD_(HRESULT,GetTime)(THIS_ STREAM_TIME* pCurrentTime) PURE; \
258     STDMETHOD_(HRESULT,GetDuration)(THIS_ STREAM_TIME* pDuration) PURE; \
259     STDMETHOD_(HRESULT,Seek)(THIS_ STREAM_TIME SeekTime) PURE; \
260     STDMETHOD_(HRESULT,GetEndOfStreamEventHandle)(THIS_ HANDLE* phEOS) PURE; \
261     /*** IAMMultiMediaStream methods ***/ \
262     STDMETHOD_(HRESULT,Initialize)(THIS_ STREAM_TYPE StreamType, DWORD dwFlags, IGraphBuilder* pFilterGraph) PURE; \
263     STDMETHOD_(HRESULT,GetFilterGraph)(THIS_ IGraphBuilder** ppGraphBuilder) PURE; \
264     STDMETHOD_(HRESULT,GetFilter)(THIS_ IMediaStreamFilter** ppFilter) PURE; \
265     STDMETHOD_(HRESULT,AddMediaStream)(THIS_ IUnknown* pStreamObject, const MSPID* PurposeId, DWORD dwFlags, IMediaStream** ppNewStream) PURE; \
266     STDMETHOD_(HRESULT,OpenFile)(THIS_ LPCWSTR pszFileName, DWORD dwFlags) PURE; \
267     STDMETHOD_(HRESULT,OpenMoniker)(THIS_ IBindCtx* pCtx, IMoniker* pMoniker, DWORD dwFlags) PURE; \
268     STDMETHOD_(HRESULT,Render)(THIS_ DWORD dwFlags) PURE;
269
270 HRESULT CALLBACK IAMMultiMediaStream_Initialize_Proxy(
271     IAMMultiMediaStream* This,
272     STREAM_TYPE StreamType,
273     DWORD dwFlags,
274     IGraphBuilder* pFilterGraph);
275 void __RPC_STUB IAMMultiMediaStream_Initialize_Stub(
276     struct IRpcStubBuffer* This,
277     struct IRpcChannelBuffer* pRpcChannelBuffer,
278     PRPC_MESSAGE pRpcMessage,
279     DWORD* pdwStubPhase);
280 HRESULT CALLBACK IAMMultiMediaStream_GetFilterGraph_Proxy(
281     IAMMultiMediaStream* This,
282     IGraphBuilder** ppGraphBuilder);
283 void __RPC_STUB IAMMultiMediaStream_GetFilterGraph_Stub(
284     struct IRpcStubBuffer* This,
285     struct IRpcChannelBuffer* pRpcChannelBuffer,
286     PRPC_MESSAGE pRpcMessage,
287     DWORD* pdwStubPhase);
288 HRESULT CALLBACK IAMMultiMediaStream_GetFilter_Proxy(
289     IAMMultiMediaStream* This,
290     IMediaStreamFilter** ppFilter);
291 void __RPC_STUB IAMMultiMediaStream_GetFilter_Stub(
292     struct IRpcStubBuffer* This,
293     struct IRpcChannelBuffer* pRpcChannelBuffer,
294     PRPC_MESSAGE pRpcMessage,
295     DWORD* pdwStubPhase);
296 HRESULT CALLBACK IAMMultiMediaStream_AddMediaStream_Proxy(
297     IAMMultiMediaStream* This,
298     IUnknown* pStreamObject,
299     const MSPID* PurposeId,
300     DWORD dwFlags,
301     IMediaStream** ppNewStream);
302 void __RPC_STUB IAMMultiMediaStream_AddMediaStream_Stub(
303     struct IRpcStubBuffer* This,
304     struct IRpcChannelBuffer* pRpcChannelBuffer,
305     PRPC_MESSAGE pRpcMessage,
306     DWORD* pdwStubPhase);
307 HRESULT CALLBACK IAMMultiMediaStream_OpenFile_Proxy(
308     IAMMultiMediaStream* This,
309     LPCWSTR pszFileName,
310     DWORD dwFlags);
311 void __RPC_STUB IAMMultiMediaStream_OpenFile_Stub(
312     struct IRpcStubBuffer* This,
313     struct IRpcChannelBuffer* pRpcChannelBuffer,
314     PRPC_MESSAGE pRpcMessage,
315     DWORD* pdwStubPhase);
316 HRESULT CALLBACK IAMMultiMediaStream_OpenMoniker_Proxy(
317     IAMMultiMediaStream* This,
318     IBindCtx* pCtx,
319     IMoniker* pMoniker,
320     DWORD dwFlags);
321 void __RPC_STUB IAMMultiMediaStream_OpenMoniker_Stub(
322     struct IRpcStubBuffer* This,
323     struct IRpcChannelBuffer* pRpcChannelBuffer,
324     PRPC_MESSAGE pRpcMessage,
325     DWORD* pdwStubPhase);
326 HRESULT CALLBACK IAMMultiMediaStream_Render_Proxy(
327     IAMMultiMediaStream* This,
328     DWORD dwFlags);
329 void __RPC_STUB IAMMultiMediaStream_Render_Stub(
330     struct IRpcStubBuffer* This,
331     struct IRpcChannelBuffer* pRpcChannelBuffer,
332     PRPC_MESSAGE pRpcMessage,
333     DWORD* pdwStubPhase);
334
335 #endif  /* __IAMMultiMediaStream_INTERFACE_DEFINED__ */
336
337 /*****************************************************************************
338  * IAMMediaStream interface
339  */
340 #ifndef __IAMMediaStream_INTERFACE_DEFINED__
341 #define __IAMMediaStream_INTERFACE_DEFINED__
342
343 DEFINE_GUID(IID_IAMMediaStream, 0xbebe595d, 0x9a6f, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
344 #if defined(__cplusplus) && !defined(CINTERFACE)
345 struct IAMMediaStream : public IMediaStream
346 {
347     virtual HRESULT STDMETHODCALLTYPE Initialize(
348         IUnknown* pSourceObject,
349         DWORD dwFlags,
350         REFMSPID PurposeId,
351         const STREAM_TYPE StreamType) = 0;
352
353     virtual HRESULT STDMETHODCALLTYPE SetState(
354         FILTER_STATE State) = 0;
355
356     virtual HRESULT STDMETHODCALLTYPE JoinAMMultiMediaStream(
357         IAMMultiMediaStream* pAMMultiMediaStream) = 0;
358
359     virtual HRESULT STDMETHODCALLTYPE JoinFilter(
360         IMediaStreamFilter* pMediaStreamFilter) = 0;
361
362     virtual HRESULT STDMETHODCALLTYPE JoinFilterGraph(
363         IFilterGraph* pFilterGraph) = 0;
364
365 };
366 #else
367 typedef struct IAMMediaStreamVtbl IAMMediaStreamVtbl;
368 struct IAMMediaStream {
369     const IAMMediaStreamVtbl* lpVtbl;
370 };
371 struct IAMMediaStreamVtbl {
372     ICOM_MSVTABLE_COMPAT_FIELDS
373
374     /*** IUnknown methods ***/
375     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
376         IAMMediaStream* This,
377         REFIID riid,
378         void** ppvObject);
379
380     ULONG (STDMETHODCALLTYPE *AddRef)(
381         IAMMediaStream* This);
382
383     ULONG (STDMETHODCALLTYPE *Release)(
384         IAMMediaStream* This);
385
386     /*** IMediaStream methods ***/
387     HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)(
388         IAMMediaStream* This,
389         IMultiMediaStream** ppMultiMediaStream);
390
391     HRESULT (STDMETHODCALLTYPE *GetInformation)(
392         IAMMediaStream* This,
393         MSPID* pPurposeId,
394         STREAM_TYPE* pType);
395
396     HRESULT (STDMETHODCALLTYPE *SetSameFormat)(
397         IAMMediaStream* This,
398         IMediaStream* pStreamThatHasDesiredFormat,
399         DWORD dwFlags);
400
401     HRESULT (STDMETHODCALLTYPE *AllocateSample)(
402         IAMMediaStream* This,
403         DWORD dwFlags,
404         IStreamSample** ppSample);
405
406     HRESULT (STDMETHODCALLTYPE *CreateSharedSample)(
407         IAMMediaStream* This,
408         IStreamSample* pExistingSample,
409         DWORD dwFlags,
410         IStreamSample** ppNewSample);
411
412     HRESULT (STDMETHODCALLTYPE *SendEndOfStream)(
413         IAMMediaStream* This,
414         DWORD dwFlags);
415
416     /*** IAMMediaStream methods ***/
417     HRESULT (STDMETHODCALLTYPE *Initialize)(
418         IAMMediaStream* This,
419         IUnknown* pSourceObject,
420         DWORD dwFlags,
421         REFMSPID PurposeId,
422         const STREAM_TYPE StreamType);
423
424     HRESULT (STDMETHODCALLTYPE *SetState)(
425         IAMMediaStream* This,
426         FILTER_STATE State);
427
428     HRESULT (STDMETHODCALLTYPE *JoinAMMultiMediaStream)(
429         IAMMediaStream* This,
430         IAMMultiMediaStream* pAMMultiMediaStream);
431
432     HRESULT (STDMETHODCALLTYPE *JoinFilter)(
433         IAMMediaStream* This,
434         IMediaStreamFilter* pMediaStreamFilter);
435
436     HRESULT (STDMETHODCALLTYPE *JoinFilterGraph)(
437         IAMMediaStream* This,
438         IFilterGraph* pFilterGraph);
439
440 };
441
442 #ifdef COBJMACROS
443 /*** IUnknown methods ***/
444 #define IAMMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
445 #define IAMMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p)
446 #define IAMMediaStream_Release(p) (p)->lpVtbl->Release(p)
447 /*** IMediaStream methods ***/
448 #define IAMMediaStream_GetMultiMediaStream(p,a) (p)->lpVtbl->GetMultiMediaStream(p,a)
449 #define IAMMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b)
450 #define IAMMediaStream_SetSameFormat(p,a,b) (p)->lpVtbl->SetSameFormat(p,a,b)
451 #define IAMMediaStream_AllocateSample(p,a,b) (p)->lpVtbl->AllocateSample(p,a,b)
452 #define IAMMediaStream_CreateSharedSample(p,a,b,c) (p)->lpVtbl->CreateSharedSample(p,a,b,c)
453 #define IAMMediaStream_SendEndOfStream(p,a) (p)->lpVtbl->SendEndOfStream(p,a)
454 /*** IAMMediaStream methods ***/
455 #define IAMMediaStream_Initialize(p,a,b,c,d) (p)->lpVtbl->Initialize(p,a,b,c,d)
456 #define IAMMediaStream_SetState(p,a) (p)->lpVtbl->SetState(p,a)
457 #define IAMMediaStream_JoinAMMultiMediaStream(p,a) (p)->lpVtbl->JoinAMMultiMediaStream(p,a)
458 #define IAMMediaStream_JoinFilter(p,a) (p)->lpVtbl->JoinFilter(p,a)
459 #define IAMMediaStream_JoinFilterGraph(p,a) (p)->lpVtbl->JoinFilterGraph(p,a)
460 #endif
461
462 #endif
463
464 #define IAMMediaStream_METHODS \
465     ICOM_MSVTABLE_COMPAT_FIELDS \
466     /*** IUnknown methods ***/ \
467     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
468     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
469     STDMETHOD_(ULONG,Release)(THIS) PURE; \
470     /*** IMediaStream methods ***/ \
471     STDMETHOD_(HRESULT,GetMultiMediaStream)(THIS_ IMultiMediaStream** ppMultiMediaStream) PURE; \
472     STDMETHOD_(HRESULT,GetInformation)(THIS_ MSPID* pPurposeId, STREAM_TYPE* pType) PURE; \
473     STDMETHOD_(HRESULT,SetSameFormat)(THIS_ IMediaStream* pStreamThatHasDesiredFormat, DWORD dwFlags) PURE; \
474     STDMETHOD_(HRESULT,AllocateSample)(THIS_ DWORD dwFlags, IStreamSample** ppSample) PURE; \
475     STDMETHOD_(HRESULT,CreateSharedSample)(THIS_ IStreamSample* pExistingSample, DWORD dwFlags, IStreamSample** ppNewSample) PURE; \
476     STDMETHOD_(HRESULT,SendEndOfStream)(THIS_ DWORD dwFlags) PURE; \
477     /*** IAMMediaStream methods ***/ \
478     STDMETHOD_(HRESULT,Initialize)(THIS_ IUnknown* pSourceObject, DWORD dwFlags, REFMSPID PurposeId, const STREAM_TYPE StreamType) PURE; \
479     STDMETHOD_(HRESULT,SetState)(THIS_ FILTER_STATE State) PURE; \
480     STDMETHOD_(HRESULT,JoinAMMultiMediaStream)(THIS_ IAMMultiMediaStream* pAMMultiMediaStream) PURE; \
481     STDMETHOD_(HRESULT,JoinFilter)(THIS_ IMediaStreamFilter* pMediaStreamFilter) PURE; \
482     STDMETHOD_(HRESULT,JoinFilterGraph)(THIS_ IFilterGraph* pFilterGraph) PURE;
483
484 HRESULT CALLBACK IAMMediaStream_Initialize_Proxy(
485     IAMMediaStream* This,
486     IUnknown* pSourceObject,
487     DWORD dwFlags,
488     REFMSPID PurposeId,
489     const STREAM_TYPE StreamType);
490 void __RPC_STUB IAMMediaStream_Initialize_Stub(
491     struct IRpcStubBuffer* This,
492     struct IRpcChannelBuffer* pRpcChannelBuffer,
493     PRPC_MESSAGE pRpcMessage,
494     DWORD* pdwStubPhase);
495 HRESULT CALLBACK IAMMediaStream_SetState_Proxy(
496     IAMMediaStream* This,
497     FILTER_STATE State);
498 void __RPC_STUB IAMMediaStream_SetState_Stub(
499     struct IRpcStubBuffer* This,
500     struct IRpcChannelBuffer* pRpcChannelBuffer,
501     PRPC_MESSAGE pRpcMessage,
502     DWORD* pdwStubPhase);
503 HRESULT CALLBACK IAMMediaStream_JoinAMMultiMediaStream_Proxy(
504     IAMMediaStream* This,
505     IAMMultiMediaStream* pAMMultiMediaStream);
506 void __RPC_STUB IAMMediaStream_JoinAMMultiMediaStream_Stub(
507     struct IRpcStubBuffer* This,
508     struct IRpcChannelBuffer* pRpcChannelBuffer,
509     PRPC_MESSAGE pRpcMessage,
510     DWORD* pdwStubPhase);
511 HRESULT CALLBACK IAMMediaStream_JoinFilter_Proxy(
512     IAMMediaStream* This,
513     IMediaStreamFilter* pMediaStreamFilter);
514 void __RPC_STUB IAMMediaStream_JoinFilter_Stub(
515     struct IRpcStubBuffer* This,
516     struct IRpcChannelBuffer* pRpcChannelBuffer,
517     PRPC_MESSAGE pRpcMessage,
518     DWORD* pdwStubPhase);
519 HRESULT CALLBACK IAMMediaStream_JoinFilterGraph_Proxy(
520     IAMMediaStream* This,
521     IFilterGraph* pFilterGraph);
522 void __RPC_STUB IAMMediaStream_JoinFilterGraph_Stub(
523     struct IRpcStubBuffer* This,
524     struct IRpcChannelBuffer* pRpcChannelBuffer,
525     PRPC_MESSAGE pRpcMessage,
526     DWORD* pdwStubPhase);
527
528 #endif  /* __IAMMediaStream_INTERFACE_DEFINED__ */
529
530 /*****************************************************************************
531  * IMediaStreamFilter interface
532  */
533 #ifndef __IMediaStreamFilter_INTERFACE_DEFINED__
534 #define __IMediaStreamFilter_INTERFACE_DEFINED__
535
536 DEFINE_GUID(IID_IMediaStreamFilter, 0xbebe595e, 0x9a6f, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
537 #if defined(__cplusplus) && !defined(CINTERFACE)
538 struct IMediaStreamFilter : public IBaseFilter
539 {
540     virtual HRESULT STDMETHODCALLTYPE AddMediaStream(
541         IAMMediaStream* pAMMediaStream) = 0;
542
543     virtual HRESULT STDMETHODCALLTYPE GetMediaStream(
544         REFMSPID idPurpose,
545         IMediaStream** ppMediaStream) = 0;
546
547     virtual HRESULT STDMETHODCALLTYPE EnumMediaStreams(
548         long Index,
549         IMediaStream** ppMediaStream) = 0;
550
551     virtual HRESULT STDMETHODCALLTYPE SupportSeeking(
552         BOOL bRenderer) = 0;
553
554     virtual HRESULT STDMETHODCALLTYPE ReferenceTimeToStreamTime(
555         REFERENCE_TIME* pTime) = 0;
556
557     virtual HRESULT STDMETHODCALLTYPE GetCurrentStreamTime(
558         REFERENCE_TIME* pCurrentStreamTime) = 0;
559
560     virtual HRESULT STDMETHODCALLTYPE WaitUntil(
561         REFERENCE_TIME WaitStreamTime) = 0;
562
563     virtual HRESULT STDMETHODCALLTYPE Flush(
564         BOOL bCancelEOS) = 0;
565
566     virtual HRESULT STDMETHODCALLTYPE EndOfStream(
567         ) = 0;
568
569 };
570 #else
571 typedef struct IMediaStreamFilterVtbl IMediaStreamFilterVtbl;
572 struct IMediaStreamFilter {
573     const IMediaStreamFilterVtbl* lpVtbl;
574 };
575 struct IMediaStreamFilterVtbl {
576     ICOM_MSVTABLE_COMPAT_FIELDS
577
578     /*** IUnknown methods ***/
579     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
580         IMediaStreamFilter* This,
581         REFIID riid,
582         void** ppvObject);
583
584     ULONG (STDMETHODCALLTYPE *AddRef)(
585         IMediaStreamFilter* This);
586
587     ULONG (STDMETHODCALLTYPE *Release)(
588         IMediaStreamFilter* This);
589
590     /*** IPersist methods ***/
591     HRESULT (STDMETHODCALLTYPE *GetClassID)(
592         IMediaStreamFilter* This,
593         CLSID* pClassID);
594
595     /*** IMediaFilter methods ***/
596     HRESULT (STDMETHODCALLTYPE *Stop)(
597         IMediaStreamFilter* This);
598
599     HRESULT (STDMETHODCALLTYPE *Pause)(
600         IMediaStreamFilter* This);
601
602     HRESULT (STDMETHODCALLTYPE *Run)(
603         IMediaStreamFilter* This,
604         REFERENCE_TIME tStart);
605
606     HRESULT (STDMETHODCALLTYPE *GetState)(
607         IMediaStreamFilter* This,
608         DWORD dwMilliSecsTimeout,
609         FILTER_STATE* State);
610
611     HRESULT (STDMETHODCALLTYPE *SetSyncSource)(
612         IMediaStreamFilter* This,
613         IReferenceClock* pClock);
614
615     HRESULT (STDMETHODCALLTYPE *GetSyncSource)(
616         IMediaStreamFilter* This,
617         IReferenceClock** pClock);
618
619     /*** IBaseFilter methods ***/
620     HRESULT (STDMETHODCALLTYPE *EnumPins)(
621         IMediaStreamFilter* This,
622         IEnumPins** ppEnum);
623
624     HRESULT (STDMETHODCALLTYPE *FindPin)(
625         IMediaStreamFilter* This,
626         LPCWSTR Id,
627         IPin** ppPin);
628
629     HRESULT (STDMETHODCALLTYPE *QueryFilterInfo)(
630         IMediaStreamFilter* This,
631         FILTER_INFO* pInfo);
632
633     HRESULT (STDMETHODCALLTYPE *JoinFilterGraph)(
634         IMediaStreamFilter* This,
635         IFilterGraph* pGraph,
636         LPCWSTR pName);
637
638     HRESULT (STDMETHODCALLTYPE *QueryVendorInfo)(
639         IMediaStreamFilter* This,
640         LPWSTR* pVendorInfo);
641
642     /*** IMediaStreamFilter methods ***/
643     HRESULT (STDMETHODCALLTYPE *AddMediaStream)(
644         IMediaStreamFilter* This,
645         IAMMediaStream* pAMMediaStream);
646
647     HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
648         IMediaStreamFilter* This,
649         REFMSPID idPurpose,
650         IMediaStream** ppMediaStream);
651
652     HRESULT (STDMETHODCALLTYPE *EnumMediaStreams)(
653         IMediaStreamFilter* This,
654         long Index,
655         IMediaStream** ppMediaStream);
656
657     HRESULT (STDMETHODCALLTYPE *SupportSeeking)(
658         IMediaStreamFilter* This,
659         BOOL bRenderer);
660
661     HRESULT (STDMETHODCALLTYPE *ReferenceTimeToStreamTime)(
662         IMediaStreamFilter* This,
663         REFERENCE_TIME* pTime);
664
665     HRESULT (STDMETHODCALLTYPE *GetCurrentStreamTime)(
666         IMediaStreamFilter* This,
667         REFERENCE_TIME* pCurrentStreamTime);
668
669     HRESULT (STDMETHODCALLTYPE *WaitUntil)(
670         IMediaStreamFilter* This,
671         REFERENCE_TIME WaitStreamTime);
672
673     HRESULT (STDMETHODCALLTYPE *Flush)(
674         IMediaStreamFilter* This,
675         BOOL bCancelEOS);
676
677     HRESULT (STDMETHODCALLTYPE *EndOfStream)(
678         IMediaStreamFilter* This);
679
680 };
681
682 #ifdef COBJMACROS
683 /*** IUnknown methods ***/
684 #define IMediaStreamFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
685 #define IMediaStreamFilter_AddRef(p) (p)->lpVtbl->AddRef(p)
686 #define IMediaStreamFilter_Release(p) (p)->lpVtbl->Release(p)
687 /*** IPersist methods ***/
688 #define IMediaStreamFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
689 /*** IMediaFilter methods ***/
690 #define IMediaStreamFilter_Stop(p) (p)->lpVtbl->Stop(p)
691 #define IMediaStreamFilter_Pause(p) (p)->lpVtbl->Pause(p)
692 #define IMediaStreamFilter_Run(p,a) (p)->lpVtbl->Run(p,a)
693 #define IMediaStreamFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b)
694 #define IMediaStreamFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a)
695 #define IMediaStreamFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a)
696 /*** IBaseFilter methods ***/
697 #define IMediaStreamFilter_EnumPins(p,a) (p)->lpVtbl->EnumPins(p,a)
698 #define IMediaStreamFilter_FindPin(p,a,b) (p)->lpVtbl->FindPin(p,a,b)
699 #define IMediaStreamFilter_QueryFilterInfo(p,a) (p)->lpVtbl->QueryFilterInfo(p,a)
700 #define IMediaStreamFilter_JoinFilterGraph(p,a,b) (p)->lpVtbl->JoinFilterGraph(p,a,b)
701 #define IMediaStreamFilter_QueryVendorInfo(p,a) (p)->lpVtbl->QueryVendorInfo(p,a)
702 /*** IMediaStreamFilter methods ***/
703 #define IMediaStreamFilter_AddMediaStream(p,a) (p)->lpVtbl->AddMediaStream(p,a)
704 #define IMediaStreamFilter_GetMediaStream(p,a,b) (p)->lpVtbl->GetMediaStream(p,a,b)
705 #define IMediaStreamFilter_EnumMediaStreams(p,a,b) (p)->lpVtbl->EnumMediaStreams(p,a,b)
706 #define IMediaStreamFilter_SupportSeeking(p,a) (p)->lpVtbl->SupportSeeking(p,a)
707 #define IMediaStreamFilter_ReferenceTimeToStreamTime(p,a) (p)->lpVtbl->ReferenceTimeToStreamTime(p,a)
708 #define IMediaStreamFilter_GetCurrentStreamTime(p,a) (p)->lpVtbl->GetCurrentStreamTime(p,a)
709 #define IMediaStreamFilter_WaitUntil(p,a) (p)->lpVtbl->WaitUntil(p,a)
710 #define IMediaStreamFilter_Flush(p,a) (p)->lpVtbl->Flush(p,a)
711 #define IMediaStreamFilter_EndOfStream(p) (p)->lpVtbl->EndOfStream(p)
712 #endif
713
714 #endif
715
716 #define IMediaStreamFilter_METHODS \
717     ICOM_MSVTABLE_COMPAT_FIELDS \
718     /*** IUnknown methods ***/ \
719     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
720     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
721     STDMETHOD_(ULONG,Release)(THIS) PURE; \
722     /*** IPersist methods ***/ \
723     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \
724     /*** IMediaFilter methods ***/ \
725     STDMETHOD_(HRESULT,Stop)(THIS) PURE; \
726     STDMETHOD_(HRESULT,Pause)(THIS) PURE; \
727     STDMETHOD_(HRESULT,Run)(THIS_ REFERENCE_TIME tStart) PURE; \
728     STDMETHOD_(HRESULT,GetState)(THIS_ DWORD dwMilliSecsTimeout, FILTER_STATE* State) PURE; \
729     STDMETHOD_(HRESULT,SetSyncSource)(THIS_ IReferenceClock* pClock) PURE; \
730     STDMETHOD_(HRESULT,GetSyncSource)(THIS_ IReferenceClock** pClock) PURE; \
731     /*** IBaseFilter methods ***/ \
732     STDMETHOD_(HRESULT,EnumPins)(THIS_ IEnumPins** ppEnum) PURE; \
733     STDMETHOD_(HRESULT,FindPin)(THIS_ LPCWSTR Id, IPin** ppPin) PURE; \
734     STDMETHOD_(HRESULT,QueryFilterInfo)(THIS_ FILTER_INFO* pInfo) PURE; \
735     STDMETHOD_(HRESULT,JoinFilterGraph)(THIS_ IFilterGraph* pGraph, LPCWSTR pName) PURE; \
736     STDMETHOD_(HRESULT,QueryVendorInfo)(THIS_ LPWSTR* pVendorInfo) PURE; \
737     /*** IMediaStreamFilter methods ***/ \
738     STDMETHOD_(HRESULT,AddMediaStream)(THIS_ IAMMediaStream* pAMMediaStream) PURE; \
739     STDMETHOD_(HRESULT,GetMediaStream)(THIS_ REFMSPID idPurpose, IMediaStream** ppMediaStream) PURE; \
740     STDMETHOD_(HRESULT,EnumMediaStreams)(THIS_ long Index, IMediaStream** ppMediaStream) PURE; \
741     STDMETHOD_(HRESULT,SupportSeeking)(THIS_ BOOL bRenderer) PURE; \
742     STDMETHOD_(HRESULT,ReferenceTimeToStreamTime)(THIS_ REFERENCE_TIME* pTime) PURE; \
743     STDMETHOD_(HRESULT,GetCurrentStreamTime)(THIS_ REFERENCE_TIME* pCurrentStreamTime) PURE; \
744     STDMETHOD_(HRESULT,WaitUntil)(THIS_ REFERENCE_TIME WaitStreamTime) PURE; \
745     STDMETHOD_(HRESULT,Flush)(THIS_ BOOL bCancelEOS) PURE; \
746     STDMETHOD_(HRESULT,EndOfStream)(THIS) PURE;
747
748 HRESULT CALLBACK IMediaStreamFilter_AddMediaStream_Proxy(
749     IMediaStreamFilter* This,
750     IAMMediaStream* pAMMediaStream);
751 void __RPC_STUB IMediaStreamFilter_AddMediaStream_Stub(
752     struct IRpcStubBuffer* This,
753     struct IRpcChannelBuffer* pRpcChannelBuffer,
754     PRPC_MESSAGE pRpcMessage,
755     DWORD* pdwStubPhase);
756 HRESULT CALLBACK IMediaStreamFilter_GetMediaStream_Proxy(
757     IMediaStreamFilter* This,
758     REFMSPID idPurpose,
759     IMediaStream** ppMediaStream);
760 void __RPC_STUB IMediaStreamFilter_GetMediaStream_Stub(
761     struct IRpcStubBuffer* This,
762     struct IRpcChannelBuffer* pRpcChannelBuffer,
763     PRPC_MESSAGE pRpcMessage,
764     DWORD* pdwStubPhase);
765 HRESULT CALLBACK IMediaStreamFilter_EnumMediaStreams_Proxy(
766     IMediaStreamFilter* This,
767     long Index,
768     IMediaStream** ppMediaStream);
769 void __RPC_STUB IMediaStreamFilter_EnumMediaStreams_Stub(
770     struct IRpcStubBuffer* This,
771     struct IRpcChannelBuffer* pRpcChannelBuffer,
772     PRPC_MESSAGE pRpcMessage,
773     DWORD* pdwStubPhase);
774 HRESULT CALLBACK IMediaStreamFilter_SupportSeeking_Proxy(
775     IMediaStreamFilter* This,
776     BOOL bRenderer);
777 void __RPC_STUB IMediaStreamFilter_SupportSeeking_Stub(
778     struct IRpcStubBuffer* This,
779     struct IRpcChannelBuffer* pRpcChannelBuffer,
780     PRPC_MESSAGE pRpcMessage,
781     DWORD* pdwStubPhase);
782 HRESULT CALLBACK IMediaStreamFilter_ReferenceTimeToStreamTime_Proxy(
783     IMediaStreamFilter* This,
784     REFERENCE_TIME* pTime);
785 void __RPC_STUB IMediaStreamFilter_ReferenceTimeToStreamTime_Stub(
786     struct IRpcStubBuffer* This,
787     struct IRpcChannelBuffer* pRpcChannelBuffer,
788     PRPC_MESSAGE pRpcMessage,
789     DWORD* pdwStubPhase);
790 HRESULT CALLBACK IMediaStreamFilter_GetCurrentStreamTime_Proxy(
791     IMediaStreamFilter* This,
792     REFERENCE_TIME* pCurrentStreamTime);
793 void __RPC_STUB IMediaStreamFilter_GetCurrentStreamTime_Stub(
794     struct IRpcStubBuffer* This,
795     struct IRpcChannelBuffer* pRpcChannelBuffer,
796     PRPC_MESSAGE pRpcMessage,
797     DWORD* pdwStubPhase);
798 HRESULT CALLBACK IMediaStreamFilter_WaitUntil_Proxy(
799     IMediaStreamFilter* This,
800     REFERENCE_TIME WaitStreamTime);
801 void __RPC_STUB IMediaStreamFilter_WaitUntil_Stub(
802     struct IRpcStubBuffer* This,
803     struct IRpcChannelBuffer* pRpcChannelBuffer,
804     PRPC_MESSAGE pRpcMessage,
805     DWORD* pdwStubPhase);
806 HRESULT CALLBACK IMediaStreamFilter_Flush_Proxy(
807     IMediaStreamFilter* This,
808     BOOL bCancelEOS);
809 void __RPC_STUB IMediaStreamFilter_Flush_Stub(
810     struct IRpcStubBuffer* This,
811     struct IRpcChannelBuffer* pRpcChannelBuffer,
812     PRPC_MESSAGE pRpcMessage,
813     DWORD* pdwStubPhase);
814 HRESULT CALLBACK IMediaStreamFilter_EndOfStream_Proxy(
815     IMediaStreamFilter* This);
816 void __RPC_STUB IMediaStreamFilter_EndOfStream_Stub(
817     struct IRpcStubBuffer* This,
818     struct IRpcChannelBuffer* pRpcChannelBuffer,
819     PRPC_MESSAGE pRpcMessage,
820     DWORD* pdwStubPhase);
821
822 #endif  /* __IMediaStreamFilter_INTERFACE_DEFINED__ */
823
824 #ifndef __IDirectDrawMediaSampleAllocator_FWD_DEFINED__
825 #define __IDirectDrawMediaSampleAllocator_FWD_DEFINED__
826 typedef struct IDirectDrawMediaSampleAllocator IDirectDrawMediaSampleAllocator;
827 #endif
828
829 /*****************************************************************************
830  * IDirectDrawMediaSampleAllocator interface
831  */
832 #ifndef __IDirectDrawMediaSampleAllocator_INTERFACE_DEFINED__
833 #define __IDirectDrawMediaSampleAllocator_INTERFACE_DEFINED__
834
835 DEFINE_GUID(IID_IDirectDrawMediaSampleAllocator, 0xab6b4afc, 0xf6e4, 0x11d0, 0x90,0x0d, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
836 #if defined(__cplusplus) && !defined(CINTERFACE)
837 struct IDirectDrawMediaSampleAllocator : public IUnknown
838 {
839     virtual HRESULT STDMETHODCALLTYPE GetDirectDraw(
840         IDirectDraw** ppDirectDraw) = 0;
841
842 };
843 #else
844 typedef struct IDirectDrawMediaSampleAllocatorVtbl IDirectDrawMediaSampleAllocatorVtbl;
845 struct IDirectDrawMediaSampleAllocator {
846     const IDirectDrawMediaSampleAllocatorVtbl* lpVtbl;
847 };
848 struct IDirectDrawMediaSampleAllocatorVtbl {
849     ICOM_MSVTABLE_COMPAT_FIELDS
850
851     /*** IUnknown methods ***/
852     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
853         IDirectDrawMediaSampleAllocator* This,
854         REFIID riid,
855         void** ppvObject);
856
857     ULONG (STDMETHODCALLTYPE *AddRef)(
858         IDirectDrawMediaSampleAllocator* This);
859
860     ULONG (STDMETHODCALLTYPE *Release)(
861         IDirectDrawMediaSampleAllocator* This);
862
863     /*** IDirectDrawMediaSampleAllocator methods ***/
864     HRESULT (STDMETHODCALLTYPE *GetDirectDraw)(
865         IDirectDrawMediaSampleAllocator* This,
866         IDirectDraw** ppDirectDraw);
867
868 };
869
870 #ifdef COBJMACROS
871 /*** IUnknown methods ***/
872 #define IDirectDrawMediaSampleAllocator_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
873 #define IDirectDrawMediaSampleAllocator_AddRef(p) (p)->lpVtbl->AddRef(p)
874 #define IDirectDrawMediaSampleAllocator_Release(p) (p)->lpVtbl->Release(p)
875 /*** IDirectDrawMediaSampleAllocator methods ***/
876 #define IDirectDrawMediaSampleAllocator_GetDirectDraw(p,a) (p)->lpVtbl->GetDirectDraw(p,a)
877 #endif
878
879 #endif
880
881 #define IDirectDrawMediaSampleAllocator_METHODS \
882     ICOM_MSVTABLE_COMPAT_FIELDS \
883     /*** IUnknown methods ***/ \
884     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
885     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
886     STDMETHOD_(ULONG,Release)(THIS) PURE; \
887     /*** IDirectDrawMediaSampleAllocator methods ***/ \
888     STDMETHOD_(HRESULT,GetDirectDraw)(THIS_ IDirectDraw** ppDirectDraw) PURE;
889
890 HRESULT CALLBACK IDirectDrawMediaSampleAllocator_GetDirectDraw_Proxy(
891     IDirectDrawMediaSampleAllocator* This,
892     IDirectDraw** ppDirectDraw);
893 void __RPC_STUB IDirectDrawMediaSampleAllocator_GetDirectDraw_Stub(
894     struct IRpcStubBuffer* This,
895     struct IRpcChannelBuffer* pRpcChannelBuffer,
896     PRPC_MESSAGE pRpcMessage,
897     DWORD* pdwStubPhase);
898
899 #endif  /* __IDirectDrawMediaSampleAllocator_INTERFACE_DEFINED__ */
900
901 #ifndef __IDirectDrawMediaSample_FWD_DEFINED__
902 #define __IDirectDrawMediaSample_FWD_DEFINED__
903 typedef struct IDirectDrawMediaSample IDirectDrawMediaSample;
904 #endif
905
906 /*****************************************************************************
907  * IDirectDrawMediaSample interface
908  */
909 #ifndef __IDirectDrawMediaSample_INTERFACE_DEFINED__
910 #define __IDirectDrawMediaSample_INTERFACE_DEFINED__
911
912 DEFINE_GUID(IID_IDirectDrawMediaSample, 0xab6b4afe, 0xf6e4, 0x11d0, 0x90,0x0d, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
913 #if defined(__cplusplus) && !defined(CINTERFACE)
914 struct IDirectDrawMediaSample : public IUnknown
915 {
916     virtual HRESULT STDMETHODCALLTYPE GetSurfaceAndReleaseLock(
917         IDirectDrawSurface** ppDirectDrawSurface,
918         RECT* pRect) = 0;
919
920     virtual HRESULT STDMETHODCALLTYPE LockMediaSamplePointer(
921         ) = 0;
922
923 };
924 #else
925 typedef struct IDirectDrawMediaSampleVtbl IDirectDrawMediaSampleVtbl;
926 struct IDirectDrawMediaSample {
927     const IDirectDrawMediaSampleVtbl* lpVtbl;
928 };
929 struct IDirectDrawMediaSampleVtbl {
930     ICOM_MSVTABLE_COMPAT_FIELDS
931
932     /*** IUnknown methods ***/
933     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
934         IDirectDrawMediaSample* This,
935         REFIID riid,
936         void** ppvObject);
937
938     ULONG (STDMETHODCALLTYPE *AddRef)(
939         IDirectDrawMediaSample* This);
940
941     ULONG (STDMETHODCALLTYPE *Release)(
942         IDirectDrawMediaSample* This);
943
944     /*** IDirectDrawMediaSample methods ***/
945     HRESULT (STDMETHODCALLTYPE *GetSurfaceAndReleaseLock)(
946         IDirectDrawMediaSample* This,
947         IDirectDrawSurface** ppDirectDrawSurface,
948         RECT* pRect);
949
950     HRESULT (STDMETHODCALLTYPE *LockMediaSamplePointer)(
951         IDirectDrawMediaSample* This);
952
953 };
954
955 #ifdef COBJMACROS
956 /*** IUnknown methods ***/
957 #define IDirectDrawMediaSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
958 #define IDirectDrawMediaSample_AddRef(p) (p)->lpVtbl->AddRef(p)
959 #define IDirectDrawMediaSample_Release(p) (p)->lpVtbl->Release(p)
960 /*** IDirectDrawMediaSample methods ***/
961 #define IDirectDrawMediaSample_GetSurfaceAndReleaseLock(p,a,b) (p)->lpVtbl->GetSurfaceAndReleaseLock(p,a,b)
962 #define IDirectDrawMediaSample_LockMediaSamplePointer(p) (p)->lpVtbl->LockMediaSamplePointer(p)
963 #endif
964
965 #endif
966
967 #define IDirectDrawMediaSample_METHODS \
968     ICOM_MSVTABLE_COMPAT_FIELDS \
969     /*** IUnknown methods ***/ \
970     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
971     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
972     STDMETHOD_(ULONG,Release)(THIS) PURE; \
973     /*** IDirectDrawMediaSample methods ***/ \
974     STDMETHOD_(HRESULT,GetSurfaceAndReleaseLock)(THIS_ IDirectDrawSurface** ppDirectDrawSurface, RECT* pRect) PURE; \
975     STDMETHOD_(HRESULT,LockMediaSamplePointer)(THIS) PURE;
976
977 HRESULT CALLBACK IDirectDrawMediaSample_GetSurfaceAndReleaseLock_Proxy(
978     IDirectDrawMediaSample* This,
979     IDirectDrawSurface** ppDirectDrawSurface,
980     RECT* pRect);
981 void __RPC_STUB IDirectDrawMediaSample_GetSurfaceAndReleaseLock_Stub(
982     struct IRpcStubBuffer* This,
983     struct IRpcChannelBuffer* pRpcChannelBuffer,
984     PRPC_MESSAGE pRpcMessage,
985     DWORD* pdwStubPhase);
986 HRESULT CALLBACK IDirectDrawMediaSample_LockMediaSamplePointer_Proxy(
987     IDirectDrawMediaSample* This);
988 void __RPC_STUB IDirectDrawMediaSample_LockMediaSamplePointer_Stub(
989     struct IRpcStubBuffer* This,
990     struct IRpcChannelBuffer* pRpcChannelBuffer,
991     PRPC_MESSAGE pRpcMessage,
992     DWORD* pdwStubPhase);
993
994 #endif  /* __IDirectDrawMediaSample_INTERFACE_DEFINED__ */
995
996 /*****************************************************************************
997  * IAMMediaTypeStream interface
998  */
999 #ifndef __IAMMediaTypeStream_INTERFACE_DEFINED__
1000 #define __IAMMediaTypeStream_INTERFACE_DEFINED__
1001
1002 DEFINE_GUID(IID_IAMMediaTypeStream, 0xab6b4afa, 0xf6e4, 0x11d0, 0x90,0x0d, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
1003 #if defined(__cplusplus) && !defined(CINTERFACE)
1004 struct IAMMediaTypeStream : public IMediaStream
1005 {
1006     virtual HRESULT STDMETHODCALLTYPE GetFormat(
1007         AM_MEDIA_TYPE* pMediaType,
1008         DWORD dwFlags) = 0;
1009
1010     virtual HRESULT STDMETHODCALLTYPE SetFormat(
1011         AM_MEDIA_TYPE* pMediaType,
1012         DWORD dwFlags) = 0;
1013
1014     virtual HRESULT STDMETHODCALLTYPE CreateSample(
1015         long lSampleSize,
1016         BYTE* pbBuffer,
1017         DWORD dwFlags,
1018         IUnknown* pUnkOuter,
1019         IAMMediaTypeSample** ppAMMediaTypeSample) = 0;
1020
1021     virtual HRESULT STDMETHODCALLTYPE GetStreamAllocatorRequirements(
1022         ALLOCATOR_PROPERTIES* pProps) = 0;
1023
1024     virtual HRESULT STDMETHODCALLTYPE SetStreamAllocatorRequirements(
1025         ALLOCATOR_PROPERTIES* pProps) = 0;
1026
1027 };
1028 #else
1029 typedef struct IAMMediaTypeStreamVtbl IAMMediaTypeStreamVtbl;
1030 struct IAMMediaTypeStream {
1031     const IAMMediaTypeStreamVtbl* lpVtbl;
1032 };
1033 struct IAMMediaTypeStreamVtbl {
1034     ICOM_MSVTABLE_COMPAT_FIELDS
1035
1036     /*** IUnknown methods ***/
1037     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1038         IAMMediaTypeStream* This,
1039         REFIID riid,
1040         void** ppvObject);
1041
1042     ULONG (STDMETHODCALLTYPE *AddRef)(
1043         IAMMediaTypeStream* This);
1044
1045     ULONG (STDMETHODCALLTYPE *Release)(
1046         IAMMediaTypeStream* This);
1047
1048     /*** IMediaStream methods ***/
1049     HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)(
1050         IAMMediaTypeStream* This,
1051         IMultiMediaStream** ppMultiMediaStream);
1052
1053     HRESULT (STDMETHODCALLTYPE *GetInformation)(
1054         IAMMediaTypeStream* This,
1055         MSPID* pPurposeId,
1056         STREAM_TYPE* pType);
1057
1058     HRESULT (STDMETHODCALLTYPE *SetSameFormat)(
1059         IAMMediaTypeStream* This,
1060         IMediaStream* pStreamThatHasDesiredFormat,
1061         DWORD dwFlags);
1062
1063     HRESULT (STDMETHODCALLTYPE *AllocateSample)(
1064         IAMMediaTypeStream* This,
1065         DWORD dwFlags,
1066         IStreamSample** ppSample);
1067
1068     HRESULT (STDMETHODCALLTYPE *CreateSharedSample)(
1069         IAMMediaTypeStream* This,
1070         IStreamSample* pExistingSample,
1071         DWORD dwFlags,
1072         IStreamSample** ppNewSample);
1073
1074     HRESULT (STDMETHODCALLTYPE *SendEndOfStream)(
1075         IAMMediaTypeStream* This,
1076         DWORD dwFlags);
1077
1078     /*** IAMMediaTypeStream methods ***/
1079     HRESULT (STDMETHODCALLTYPE *GetFormat)(
1080         IAMMediaTypeStream* This,
1081         AM_MEDIA_TYPE* pMediaType,
1082         DWORD dwFlags);
1083
1084     HRESULT (STDMETHODCALLTYPE *SetFormat)(
1085         IAMMediaTypeStream* This,
1086         AM_MEDIA_TYPE* pMediaType,
1087         DWORD dwFlags);
1088
1089     HRESULT (STDMETHODCALLTYPE *CreateSample)(
1090         IAMMediaTypeStream* This,
1091         long lSampleSize,
1092         BYTE* pbBuffer,
1093         DWORD dwFlags,
1094         IUnknown* pUnkOuter,
1095         IAMMediaTypeSample** ppAMMediaTypeSample);
1096
1097     HRESULT (STDMETHODCALLTYPE *GetStreamAllocatorRequirements)(
1098         IAMMediaTypeStream* This,
1099         ALLOCATOR_PROPERTIES* pProps);
1100
1101     HRESULT (STDMETHODCALLTYPE *SetStreamAllocatorRequirements)(
1102         IAMMediaTypeStream* This,
1103         ALLOCATOR_PROPERTIES* pProps);
1104
1105 };
1106
1107 #ifdef COBJMACROS
1108 /*** IUnknown methods ***/
1109 #define IAMMediaTypeStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1110 #define IAMMediaTypeStream_AddRef(p) (p)->lpVtbl->AddRef(p)
1111 #define IAMMediaTypeStream_Release(p) (p)->lpVtbl->Release(p)
1112 /*** IMediaStream methods ***/
1113 #define IAMMediaTypeStream_GetMultiMediaStream(p,a) (p)->lpVtbl->GetMultiMediaStream(p,a)
1114 #define IAMMediaTypeStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b)
1115 #define IAMMediaTypeStream_SetSameFormat(p,a,b) (p)->lpVtbl->SetSameFormat(p,a,b)
1116 #define IAMMediaTypeStream_AllocateSample(p,a,b) (p)->lpVtbl->AllocateSample(p,a,b)
1117 #define IAMMediaTypeStream_CreateSharedSample(p,a,b,c) (p)->lpVtbl->CreateSharedSample(p,a,b,c)
1118 #define IAMMediaTypeStream_SendEndOfStream(p,a) (p)->lpVtbl->SendEndOfStream(p,a)
1119 /*** IAMMediaTypeStream methods ***/
1120 #define IAMMediaTypeStream_GetFormat(p,a,b) (p)->lpVtbl->GetFormat(p,a,b)
1121 #define IAMMediaTypeStream_SetFormat(p,a,b) (p)->lpVtbl->SetFormat(p,a,b)
1122 #define IAMMediaTypeStream_CreateSample(p,a,b,c,d,e) (p)->lpVtbl->CreateSample(p,a,b,c,d,e)
1123 #define IAMMediaTypeStream_GetStreamAllocatorRequirements(p,a) (p)->lpVtbl->GetStreamAllocatorRequirements(p,a)
1124 #define IAMMediaTypeStream_SetStreamAllocatorRequirements(p,a) (p)->lpVtbl->SetStreamAllocatorRequirements(p,a)
1125 #endif
1126
1127 #endif
1128
1129 #define IAMMediaTypeStream_METHODS \
1130     ICOM_MSVTABLE_COMPAT_FIELDS \
1131     /*** IUnknown methods ***/ \
1132     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1133     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1134     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1135     /*** IMediaStream methods ***/ \
1136     STDMETHOD_(HRESULT,GetMultiMediaStream)(THIS_ IMultiMediaStream** ppMultiMediaStream) PURE; \
1137     STDMETHOD_(HRESULT,GetInformation)(THIS_ MSPID* pPurposeId, STREAM_TYPE* pType) PURE; \
1138     STDMETHOD_(HRESULT,SetSameFormat)(THIS_ IMediaStream* pStreamThatHasDesiredFormat, DWORD dwFlags) PURE; \
1139     STDMETHOD_(HRESULT,AllocateSample)(THIS_ DWORD dwFlags, IStreamSample** ppSample) PURE; \
1140     STDMETHOD_(HRESULT,CreateSharedSample)(THIS_ IStreamSample* pExistingSample, DWORD dwFlags, IStreamSample** ppNewSample) PURE; \
1141     STDMETHOD_(HRESULT,SendEndOfStream)(THIS_ DWORD dwFlags) PURE; \
1142     /*** IAMMediaTypeStream methods ***/ \
1143     STDMETHOD_(HRESULT,GetFormat)(THIS_ AM_MEDIA_TYPE* pMediaType, DWORD dwFlags) PURE; \
1144     STDMETHOD_(HRESULT,SetFormat)(THIS_ AM_MEDIA_TYPE* pMediaType, DWORD dwFlags) PURE; \
1145     STDMETHOD_(HRESULT,CreateSample)(THIS_ long lSampleSize, BYTE* pbBuffer, DWORD dwFlags, IUnknown* pUnkOuter, IAMMediaTypeSample** ppAMMediaTypeSample) PURE; \
1146     STDMETHOD_(HRESULT,GetStreamAllocatorRequirements)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE; \
1147     STDMETHOD_(HRESULT,SetStreamAllocatorRequirements)(THIS_ ALLOCATOR_PROPERTIES* pProps) PURE;
1148
1149 HRESULT CALLBACK IAMMediaTypeStream_GetFormat_Proxy(
1150     IAMMediaTypeStream* This,
1151     AM_MEDIA_TYPE* pMediaType,
1152     DWORD dwFlags);
1153 void __RPC_STUB IAMMediaTypeStream_GetFormat_Stub(
1154     struct IRpcStubBuffer* This,
1155     struct IRpcChannelBuffer* pRpcChannelBuffer,
1156     PRPC_MESSAGE pRpcMessage,
1157     DWORD* pdwStubPhase);
1158 HRESULT CALLBACK IAMMediaTypeStream_SetFormat_Proxy(
1159     IAMMediaTypeStream* This,
1160     AM_MEDIA_TYPE* pMediaType,
1161     DWORD dwFlags);
1162 void __RPC_STUB IAMMediaTypeStream_SetFormat_Stub(
1163     struct IRpcStubBuffer* This,
1164     struct IRpcChannelBuffer* pRpcChannelBuffer,
1165     PRPC_MESSAGE pRpcMessage,
1166     DWORD* pdwStubPhase);
1167 HRESULT CALLBACK IAMMediaTypeStream_CreateSample_Proxy(
1168     IAMMediaTypeStream* This,
1169     long lSampleSize,
1170     BYTE* pbBuffer,
1171     DWORD dwFlags,
1172     IUnknown* pUnkOuter,
1173     IAMMediaTypeSample** ppAMMediaTypeSample);
1174 void __RPC_STUB IAMMediaTypeStream_CreateSample_Stub(
1175     struct IRpcStubBuffer* This,
1176     struct IRpcChannelBuffer* pRpcChannelBuffer,
1177     PRPC_MESSAGE pRpcMessage,
1178     DWORD* pdwStubPhase);
1179 HRESULT CALLBACK IAMMediaTypeStream_GetStreamAllocatorRequirements_Proxy(
1180     IAMMediaTypeStream* This,
1181     ALLOCATOR_PROPERTIES* pProps);
1182 void __RPC_STUB IAMMediaTypeStream_GetStreamAllocatorRequirements_Stub(
1183     struct IRpcStubBuffer* This,
1184     struct IRpcChannelBuffer* pRpcChannelBuffer,
1185     PRPC_MESSAGE pRpcMessage,
1186     DWORD* pdwStubPhase);
1187 HRESULT CALLBACK IAMMediaTypeStream_SetStreamAllocatorRequirements_Proxy(
1188     IAMMediaTypeStream* This,
1189     ALLOCATOR_PROPERTIES* pProps);
1190 void __RPC_STUB IAMMediaTypeStream_SetStreamAllocatorRequirements_Stub(
1191     struct IRpcStubBuffer* This,
1192     struct IRpcChannelBuffer* pRpcChannelBuffer,
1193     PRPC_MESSAGE pRpcMessage,
1194     DWORD* pdwStubPhase);
1195
1196 #endif  /* __IAMMediaTypeStream_INTERFACE_DEFINED__ */
1197
1198 /*****************************************************************************
1199  * IAMMediaTypeSample interface
1200  */
1201 #ifndef __IAMMediaTypeSample_INTERFACE_DEFINED__
1202 #define __IAMMediaTypeSample_INTERFACE_DEFINED__
1203
1204 DEFINE_GUID(IID_IAMMediaTypeSample, 0xab6b4afb, 0xf6e4, 0x11d0, 0x90,0x0d, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
1205 #if defined(__cplusplus) && !defined(CINTERFACE)
1206 struct IAMMediaTypeSample : public IStreamSample
1207 {
1208     virtual HRESULT STDMETHODCALLTYPE SetPointer(
1209         BYTE* pBuffer,
1210         long lSize) = 0;
1211
1212     virtual HRESULT STDMETHODCALLTYPE GetPointer(
1213         BYTE** ppBuffer) = 0;
1214
1215     virtual long STDMETHODCALLTYPE GetSize(
1216         ) = 0;
1217
1218     virtual HRESULT STDMETHODCALLTYPE GetTime(
1219         REFERENCE_TIME* pTimeStart,
1220         REFERENCE_TIME* pTimeEnd) = 0;
1221
1222     virtual HRESULT STDMETHODCALLTYPE SetTime(
1223         REFERENCE_TIME* pTimeStart,
1224         REFERENCE_TIME* pTimeEnd) = 0;
1225
1226     virtual HRESULT STDMETHODCALLTYPE IsSyncPoint(
1227         ) = 0;
1228
1229     virtual HRESULT STDMETHODCALLTYPE SetSyncPoint(
1230         BOOL bIsSyncPoint) = 0;
1231
1232     virtual HRESULT STDMETHODCALLTYPE IsPreroll(
1233         ) = 0;
1234
1235     virtual HRESULT STDMETHODCALLTYPE SetPreroll(
1236         BOOL bIsPreroll) = 0;
1237
1238     virtual long STDMETHODCALLTYPE GetActualDataLength(
1239         ) = 0;
1240
1241     virtual HRESULT STDMETHODCALLTYPE SetActualDataLength(
1242         long Len) = 0;
1243
1244     virtual HRESULT STDMETHODCALLTYPE GetMediaType(
1245         AM_MEDIA_TYPE** ppMediaType) = 0;
1246
1247     virtual HRESULT STDMETHODCALLTYPE SetMediaType(
1248         AM_MEDIA_TYPE* pMediaType) = 0;
1249
1250     virtual HRESULT STDMETHODCALLTYPE IsDiscontinuity(
1251         ) = 0;
1252
1253     virtual HRESULT STDMETHODCALLTYPE SetDiscontinuity(
1254         BOOL bDiscontinuity) = 0;
1255
1256     virtual HRESULT STDMETHODCALLTYPE GetMediaTime(
1257         LONGLONG* pTimeStart,
1258         LONGLONG* pTimeEnd) = 0;
1259
1260     virtual HRESULT STDMETHODCALLTYPE SetMediaTime(
1261         LONGLONG* pTimeStart,
1262         LONGLONG* pTimeEnd) = 0;
1263
1264 };
1265 #else
1266 typedef struct IAMMediaTypeSampleVtbl IAMMediaTypeSampleVtbl;
1267 struct IAMMediaTypeSample {
1268     const IAMMediaTypeSampleVtbl* lpVtbl;
1269 };
1270 struct IAMMediaTypeSampleVtbl {
1271     ICOM_MSVTABLE_COMPAT_FIELDS
1272
1273     /*** IUnknown methods ***/
1274     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1275         IAMMediaTypeSample* This,
1276         REFIID riid,
1277         void** ppvObject);
1278
1279     ULONG (STDMETHODCALLTYPE *AddRef)(
1280         IAMMediaTypeSample* This);
1281
1282     ULONG (STDMETHODCALLTYPE *Release)(
1283         IAMMediaTypeSample* This);
1284
1285     /*** IStreamSample methods ***/
1286     HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
1287         IAMMediaTypeSample* This,
1288         IMediaStream** ppMediaStream);
1289
1290     HRESULT (STDMETHODCALLTYPE *GetSampleTimes)(
1291         IAMMediaTypeSample* This,
1292         STREAM_TIME* pStartTime,
1293         STREAM_TIME* pEndTime,
1294         STREAM_TIME* pCurrentTime);
1295
1296     HRESULT (STDMETHODCALLTYPE *SetSampleTimes)(
1297         IAMMediaTypeSample* This,
1298         const STREAM_TIME* pStartTime,
1299         const STREAM_TIME* pEndTime);
1300
1301     HRESULT (STDMETHODCALLTYPE *Update)(
1302         IAMMediaTypeSample* This,
1303         DWORD dwFlags,
1304         HANDLE hEvent,
1305         PAPCFUNC pfnAPC,
1306         DWORD dwAPCData);
1307
1308     HRESULT (STDMETHODCALLTYPE *CompletionStatus)(
1309         IAMMediaTypeSample* This,
1310         DWORD dwFlags,
1311         DWORD dwMilliseconds);
1312
1313     /*** IAMMediaTypeSample methods ***/
1314     HRESULT (STDMETHODCALLTYPE *SetPointer)(
1315         IAMMediaTypeSample* This,
1316         BYTE* pBuffer,
1317         long lSize);
1318
1319     HRESULT (STDMETHODCALLTYPE *GetPointer)(
1320         IAMMediaTypeSample* This,
1321         BYTE** ppBuffer);
1322
1323     long (STDMETHODCALLTYPE *GetSize)(
1324         IAMMediaTypeSample* This);
1325
1326     HRESULT (STDMETHODCALLTYPE *GetTime)(
1327         IAMMediaTypeSample* This,
1328         REFERENCE_TIME* pTimeStart,
1329         REFERENCE_TIME* pTimeEnd);
1330
1331     HRESULT (STDMETHODCALLTYPE *SetTime)(
1332         IAMMediaTypeSample* This,
1333         REFERENCE_TIME* pTimeStart,
1334         REFERENCE_TIME* pTimeEnd);
1335
1336     HRESULT (STDMETHODCALLTYPE *IsSyncPoint)(
1337         IAMMediaTypeSample* This);
1338
1339     HRESULT (STDMETHODCALLTYPE *SetSyncPoint)(
1340         IAMMediaTypeSample* This,
1341         BOOL bIsSyncPoint);
1342
1343     HRESULT (STDMETHODCALLTYPE *IsPreroll)(
1344         IAMMediaTypeSample* This);
1345
1346     HRESULT (STDMETHODCALLTYPE *SetPreroll)(
1347         IAMMediaTypeSample* This,
1348         BOOL bIsPreroll);
1349
1350     long (STDMETHODCALLTYPE *GetActualDataLength)(
1351         IAMMediaTypeSample* This);
1352
1353     HRESULT (STDMETHODCALLTYPE *SetActualDataLength)(
1354         IAMMediaTypeSample* This,
1355         long Len);
1356
1357     HRESULT (STDMETHODCALLTYPE *GetMediaType)(
1358         IAMMediaTypeSample* This,
1359         AM_MEDIA_TYPE** ppMediaType);
1360
1361     HRESULT (STDMETHODCALLTYPE *SetMediaType)(
1362         IAMMediaTypeSample* This,
1363         AM_MEDIA_TYPE* pMediaType);
1364
1365     HRESULT (STDMETHODCALLTYPE *IsDiscontinuity)(
1366         IAMMediaTypeSample* This);
1367
1368     HRESULT (STDMETHODCALLTYPE *SetDiscontinuity)(
1369         IAMMediaTypeSample* This,
1370         BOOL bDiscontinuity);
1371
1372     HRESULT (STDMETHODCALLTYPE *GetMediaTime)(
1373         IAMMediaTypeSample* This,
1374         LONGLONG* pTimeStart,
1375         LONGLONG* pTimeEnd);
1376
1377     HRESULT (STDMETHODCALLTYPE *SetMediaTime)(
1378         IAMMediaTypeSample* This,
1379         LONGLONG* pTimeStart,
1380         LONGLONG* pTimeEnd);
1381
1382 };
1383
1384 #ifdef COBJMACROS
1385 /*** IUnknown methods ***/
1386 #define IAMMediaTypeSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1387 #define IAMMediaTypeSample_AddRef(p) (p)->lpVtbl->AddRef(p)
1388 #define IAMMediaTypeSample_Release(p) (p)->lpVtbl->Release(p)
1389 /*** IStreamSample methods ***/
1390 #define IAMMediaTypeSample_GetMediaStream(p,a) (p)->lpVtbl->GetMediaStream(p,a)
1391 #define IAMMediaTypeSample_GetSampleTimes(p,a,b,c) (p)->lpVtbl->GetSampleTimes(p,a,b,c)
1392 #define IAMMediaTypeSample_SetSampleTimes(p,a,b) (p)->lpVtbl->SetSampleTimes(p,a,b)
1393 #define IAMMediaTypeSample_Update(p,a,b,c,d) (p)->lpVtbl->Update(p,a,b,c,d)
1394 #define IAMMediaTypeSample_CompletionStatus(p,a,b) (p)->lpVtbl->CompletionStatus(p,a,b)
1395 /*** IAMMediaTypeSample methods ***/
1396 #define IAMMediaTypeSample_SetPointer(p,a,b) (p)->lpVtbl->SetPointer(p,a,b)
1397 #define IAMMediaTypeSample_GetPointer(p,a) (p)->lpVtbl->GetPointer(p,a)
1398 #define IAMMediaTypeSample_GetSize(p) (p)->lpVtbl->GetSize(p)
1399 #define IAMMediaTypeSample_GetTime(p,a,b) (p)->lpVtbl->GetTime(p,a,b)
1400 #define IAMMediaTypeSample_SetTime(p,a,b) (p)->lpVtbl->SetTime(p,a,b)
1401 #define IAMMediaTypeSample_IsSyncPoint(p) (p)->lpVtbl->IsSyncPoint(p)
1402 #define IAMMediaTypeSample_SetSyncPoint(p,a) (p)->lpVtbl->SetSyncPoint(p,a)
1403 #define IAMMediaTypeSample_IsPreroll(p) (p)->lpVtbl->IsPreroll(p)
1404 #define IAMMediaTypeSample_SetPreroll(p,a) (p)->lpVtbl->SetPreroll(p,a)
1405 #define IAMMediaTypeSample_GetActualDataLength(p) (p)->lpVtbl->GetActualDataLength(p)
1406 #define IAMMediaTypeSample_SetActualDataLength(p,a) (p)->lpVtbl->SetActualDataLength(p,a)
1407 #define IAMMediaTypeSample_GetMediaType(p,a) (p)->lpVtbl->GetMediaType(p,a)
1408 #define IAMMediaTypeSample_SetMediaType(p,a) (p)->lpVtbl->SetMediaType(p,a)
1409 #define IAMMediaTypeSample_IsDiscontinuity(p) (p)->lpVtbl->IsDiscontinuity(p)
1410 #define IAMMediaTypeSample_SetDiscontinuity(p,a) (p)->lpVtbl->SetDiscontinuity(p,a)
1411 #define IAMMediaTypeSample_GetMediaTime(p,a,b) (p)->lpVtbl->GetMediaTime(p,a,b)
1412 #define IAMMediaTypeSample_SetMediaTime(p,a,b) (p)->lpVtbl->SetMediaTime(p,a,b)
1413 #endif
1414
1415 #endif
1416
1417 #define IAMMediaTypeSample_METHODS \
1418     ICOM_MSVTABLE_COMPAT_FIELDS \
1419     /*** IUnknown methods ***/ \
1420     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1421     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1422     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1423     /*** IStreamSample methods ***/ \
1424     STDMETHOD_(HRESULT,GetMediaStream)(THIS_ IMediaStream** ppMediaStream) PURE; \
1425     STDMETHOD_(HRESULT,GetSampleTimes)(THIS_ STREAM_TIME* pStartTime, STREAM_TIME* pEndTime, STREAM_TIME* pCurrentTime) PURE; \
1426     STDMETHOD_(HRESULT,SetSampleTimes)(THIS_ const STREAM_TIME* pStartTime, const STREAM_TIME* pEndTime) PURE; \
1427     STDMETHOD_(HRESULT,Update)(THIS_ DWORD dwFlags, HANDLE hEvent, PAPCFUNC pfnAPC, DWORD dwAPCData) PURE; \
1428     STDMETHOD_(HRESULT,CompletionStatus)(THIS_ DWORD dwFlags, DWORD dwMilliseconds) PURE; \
1429     /*** IAMMediaTypeSample methods ***/ \
1430     STDMETHOD_(HRESULT,SetPointer)(THIS_ BYTE* pBuffer, long lSize) PURE; \
1431     STDMETHOD_(HRESULT,GetPointer)(THIS_ BYTE** ppBuffer) PURE; \
1432     STDMETHOD_(long,GetSize)(THIS) PURE; \
1433     STDMETHOD_(HRESULT,GetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \
1434     STDMETHOD_(HRESULT,SetTime)(THIS_ REFERENCE_TIME* pTimeStart, REFERENCE_TIME* pTimeEnd) PURE; \
1435     STDMETHOD_(HRESULT,IsSyncPoint)(THIS) PURE; \
1436     STDMETHOD_(HRESULT,SetSyncPoint)(THIS_ BOOL bIsSyncPoint) PURE; \
1437     STDMETHOD_(HRESULT,IsPreroll)(THIS) PURE; \
1438     STDMETHOD_(HRESULT,SetPreroll)(THIS_ BOOL bIsPreroll) PURE; \
1439     STDMETHOD_(long,GetActualDataLength)(THIS) PURE; \
1440     STDMETHOD_(HRESULT,SetActualDataLength)(THIS_ long Len) PURE; \
1441     STDMETHOD_(HRESULT,GetMediaType)(THIS_ AM_MEDIA_TYPE** ppMediaType) PURE; \
1442     STDMETHOD_(HRESULT,SetMediaType)(THIS_ AM_MEDIA_TYPE* pMediaType) PURE; \
1443     STDMETHOD_(HRESULT,IsDiscontinuity)(THIS) PURE; \
1444     STDMETHOD_(HRESULT,SetDiscontinuity)(THIS_ BOOL bDiscontinuity) PURE; \
1445     STDMETHOD_(HRESULT,GetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE; \
1446     STDMETHOD_(HRESULT,SetMediaTime)(THIS_ LONGLONG* pTimeStart, LONGLONG* pTimeEnd) PURE;
1447
1448 HRESULT CALLBACK IAMMediaTypeSample_SetPointer_Proxy(
1449     IAMMediaTypeSample* This,
1450     BYTE* pBuffer,
1451     long lSize);
1452 void __RPC_STUB IAMMediaTypeSample_SetPointer_Stub(
1453     struct IRpcStubBuffer* This,
1454     struct IRpcChannelBuffer* pRpcChannelBuffer,
1455     PRPC_MESSAGE pRpcMessage,
1456     DWORD* pdwStubPhase);
1457 HRESULT CALLBACK IAMMediaTypeSample_GetPointer_Proxy(
1458     IAMMediaTypeSample* This,
1459     BYTE** ppBuffer);
1460 void __RPC_STUB IAMMediaTypeSample_GetPointer_Stub(
1461     struct IRpcStubBuffer* This,
1462     struct IRpcChannelBuffer* pRpcChannelBuffer,
1463     PRPC_MESSAGE pRpcMessage,
1464     DWORD* pdwStubPhase);
1465 long CALLBACK IAMMediaTypeSample_GetSize_Proxy(
1466     IAMMediaTypeSample* This);
1467 void __RPC_STUB IAMMediaTypeSample_GetSize_Stub(
1468     struct IRpcStubBuffer* This,
1469     struct IRpcChannelBuffer* pRpcChannelBuffer,
1470     PRPC_MESSAGE pRpcMessage,
1471     DWORD* pdwStubPhase);
1472 HRESULT CALLBACK IAMMediaTypeSample_GetTime_Proxy(
1473     IAMMediaTypeSample* This,
1474     REFERENCE_TIME* pTimeStart,
1475     REFERENCE_TIME* pTimeEnd);
1476 void __RPC_STUB IAMMediaTypeSample_GetTime_Stub(
1477     struct IRpcStubBuffer* This,
1478     struct IRpcChannelBuffer* pRpcChannelBuffer,
1479     PRPC_MESSAGE pRpcMessage,
1480     DWORD* pdwStubPhase);
1481 HRESULT CALLBACK IAMMediaTypeSample_SetTime_Proxy(
1482     IAMMediaTypeSample* This,
1483     REFERENCE_TIME* pTimeStart,
1484     REFERENCE_TIME* pTimeEnd);
1485 void __RPC_STUB IAMMediaTypeSample_SetTime_Stub(
1486     struct IRpcStubBuffer* This,
1487     struct IRpcChannelBuffer* pRpcChannelBuffer,
1488     PRPC_MESSAGE pRpcMessage,
1489     DWORD* pdwStubPhase);
1490 HRESULT CALLBACK IAMMediaTypeSample_IsSyncPoint_Proxy(
1491     IAMMediaTypeSample* This);
1492 void __RPC_STUB IAMMediaTypeSample_IsSyncPoint_Stub(
1493     struct IRpcStubBuffer* This,
1494     struct IRpcChannelBuffer* pRpcChannelBuffer,
1495     PRPC_MESSAGE pRpcMessage,
1496     DWORD* pdwStubPhase);
1497 HRESULT CALLBACK IAMMediaTypeSample_SetSyncPoint_Proxy(
1498     IAMMediaTypeSample* This,
1499     BOOL bIsSyncPoint);
1500 void __RPC_STUB IAMMediaTypeSample_SetSyncPoint_Stub(
1501     struct IRpcStubBuffer* This,
1502     struct IRpcChannelBuffer* pRpcChannelBuffer,
1503     PRPC_MESSAGE pRpcMessage,
1504     DWORD* pdwStubPhase);
1505 HRESULT CALLBACK IAMMediaTypeSample_IsPreroll_Proxy(
1506     IAMMediaTypeSample* This);
1507 void __RPC_STUB IAMMediaTypeSample_IsPreroll_Stub(
1508     struct IRpcStubBuffer* This,
1509     struct IRpcChannelBuffer* pRpcChannelBuffer,
1510     PRPC_MESSAGE pRpcMessage,
1511     DWORD* pdwStubPhase);
1512 HRESULT CALLBACK IAMMediaTypeSample_SetPreroll_Proxy(
1513     IAMMediaTypeSample* This,
1514     BOOL bIsPreroll);
1515 void __RPC_STUB IAMMediaTypeSample_SetPreroll_Stub(
1516     struct IRpcStubBuffer* This,
1517     struct IRpcChannelBuffer* pRpcChannelBuffer,
1518     PRPC_MESSAGE pRpcMessage,
1519     DWORD* pdwStubPhase);
1520 long CALLBACK IAMMediaTypeSample_GetActualDataLength_Proxy(
1521     IAMMediaTypeSample* This);
1522 void __RPC_STUB IAMMediaTypeSample_GetActualDataLength_Stub(
1523     struct IRpcStubBuffer* This,
1524     struct IRpcChannelBuffer* pRpcChannelBuffer,
1525     PRPC_MESSAGE pRpcMessage,
1526     DWORD* pdwStubPhase);
1527 HRESULT CALLBACK IAMMediaTypeSample_SetActualDataLength_Proxy(
1528     IAMMediaTypeSample* This,
1529     long Len);
1530 void __RPC_STUB IAMMediaTypeSample_SetActualDataLength_Stub(
1531     struct IRpcStubBuffer* This,
1532     struct IRpcChannelBuffer* pRpcChannelBuffer,
1533     PRPC_MESSAGE pRpcMessage,
1534     DWORD* pdwStubPhase);
1535 HRESULT CALLBACK IAMMediaTypeSample_GetMediaType_Proxy(
1536     IAMMediaTypeSample* This,
1537     AM_MEDIA_TYPE** ppMediaType);
1538 void __RPC_STUB IAMMediaTypeSample_GetMediaType_Stub(
1539     struct IRpcStubBuffer* This,
1540     struct IRpcChannelBuffer* pRpcChannelBuffer,
1541     PRPC_MESSAGE pRpcMessage,
1542     DWORD* pdwStubPhase);
1543 HRESULT CALLBACK IAMMediaTypeSample_SetMediaType_Proxy(
1544     IAMMediaTypeSample* This,
1545     AM_MEDIA_TYPE* pMediaType);
1546 void __RPC_STUB IAMMediaTypeSample_SetMediaType_Stub(
1547     struct IRpcStubBuffer* This,
1548     struct IRpcChannelBuffer* pRpcChannelBuffer,
1549     PRPC_MESSAGE pRpcMessage,
1550     DWORD* pdwStubPhase);
1551 HRESULT CALLBACK IAMMediaTypeSample_IsDiscontinuity_Proxy(
1552     IAMMediaTypeSample* This);
1553 void __RPC_STUB IAMMediaTypeSample_IsDiscontinuity_Stub(
1554     struct IRpcStubBuffer* This,
1555     struct IRpcChannelBuffer* pRpcChannelBuffer,
1556     PRPC_MESSAGE pRpcMessage,
1557     DWORD* pdwStubPhase);
1558 HRESULT CALLBACK IAMMediaTypeSample_SetDiscontinuity_Proxy(
1559     IAMMediaTypeSample* This,
1560     BOOL bDiscontinuity);
1561 void __RPC_STUB IAMMediaTypeSample_SetDiscontinuity_Stub(
1562     struct IRpcStubBuffer* This,
1563     struct IRpcChannelBuffer* pRpcChannelBuffer,
1564     PRPC_MESSAGE pRpcMessage,
1565     DWORD* pdwStubPhase);
1566 HRESULT CALLBACK IAMMediaTypeSample_GetMediaTime_Proxy(
1567     IAMMediaTypeSample* This,
1568     LONGLONG* pTimeStart,
1569     LONGLONG* pTimeEnd);
1570 void __RPC_STUB IAMMediaTypeSample_GetMediaTime_Stub(
1571     struct IRpcStubBuffer* This,
1572     struct IRpcChannelBuffer* pRpcChannelBuffer,
1573     PRPC_MESSAGE pRpcMessage,
1574     DWORD* pdwStubPhase);
1575 HRESULT CALLBACK IAMMediaTypeSample_SetMediaTime_Proxy(
1576     IAMMediaTypeSample* This,
1577     LONGLONG* pTimeStart,
1578     LONGLONG* pTimeEnd);
1579 void __RPC_STUB IAMMediaTypeSample_SetMediaTime_Stub(
1580     struct IRpcStubBuffer* This,
1581     struct IRpcChannelBuffer* pRpcChannelBuffer,
1582     PRPC_MESSAGE pRpcMessage,
1583     DWORD* pdwStubPhase);
1584
1585 #endif  /* __IAMMediaTypeSample_INTERFACE_DEFINED__ */
1586
1587 DEFINE_GUID(CLSID_AMMultiMediaStream,  0x49c47ce5, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);
1588 DEFINE_GUID(CLSID_AMDirectDrawStream,  0x49c47ce4, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);
1589 DEFINE_GUID(CLSID_AMAudioStream,       0x8496e040, 0xaf4c, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);
1590 DEFINE_GUID(CLSID_AMAudioData,         0xf2468580, 0xaf8a, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);
1591 DEFINE_GUID(CLSID_AMMediaTypeStream,   0xcf0f2f7c, 0xf7bf, 0x11d0, 0x90, 0x0d, 0x00, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);
1592 #ifdef __cplusplus
1593 }
1594 #endif
1595 #endif /* __WIDL_AMSTREAM_H */