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