Add some GUIDs from the win2k DDK that are used for USB devices.
[wine] / include / mmstream.h
1 /*** Autogenerated by WIDL 0.1 from mmstream.idl - Do not edit ***/
2 #include <rpc.h>
3 #include <rpcndr.h>
4
5 #ifndef __WIDL_MMSTREAM_H
6 #define __WIDL_MMSTREAM_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include <unknwn.h>
11 #define MS_ERROR_CODE(x)                  MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)
12 #define MS_SUCCESS_CODE(x)                MAKE_HRESULT(0, FACILITY_ITF, x)
13 #define MS_S_PENDING                      MS_SUCCESS_CODE(1)
14 #define MS_S_NOUPDATE                     MS_SUCCESS_CODE(2)
15 #define MS_S_ENDOFSTREAM                  MS_SUCCESS_CODE(3)
16 #define MS_E_SAMPLEALLOC                  MS_ERROR_CODE(1)
17 #define MS_E_PURPOSEID                    MS_ERROR_CODE(2)
18 #define MS_E_NOSTREAM                     MS_ERROR_CODE(3)
19 #define MS_E_NOSEEKING                    MS_ERROR_CODE(4)
20 #define MS_E_INCOMPATIBLE                 MS_ERROR_CODE(5)
21 #define MS_E_BUSY                         MS_ERROR_CODE(6)
22 #define MS_E_NOTINIT                      MS_ERROR_CODE(7)
23 #define MS_E_SOURCEALREADYDEFINED         MS_ERROR_CODE(8)
24 #define MS_E_INVALIDSTREAMTYPE            MS_ERROR_CODE(9)
25 #define MS_E_NOTRUNNING                   MS_ERROR_CODE(10)
26 DEFINE_GUID(MSPID_PrimaryVideo,  0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);
27 DEFINE_GUID(MSPID_PrimaryAudio,  0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);
28 #if 0
29 typedef void *PAPCFUNC;
30
31 #endif
32 typedef LONGLONG STREAM_TIME;
33
34 typedef GUID MSPID;
35
36 typedef REFGUID REFMSPID;
37
38 typedef enum {
39     STREAMTYPE_READ = 0,
40     STREAMTYPE_WRITE = 1,
41     STREAMTYPE_TRANSFORM = 2
42 } STREAM_TYPE;
43
44 typedef enum {
45     STREAMSTATE_STOP = 0,
46     STREAMSTATE_RUN = 1
47 } STREAM_STATE;
48
49 typedef enum {
50     COMPSTAT_NOUPDATEOK = 0x1,
51     COMPSTAT_WAIT = 0x2,
52     COMPSTAT_ABORT = 0x4
53 } COMPLETION_STATUS_FLAGS;
54
55 enum {
56     MMSSF_HASCLOCK = 0x1,
57     MMSSF_SUPPORTSEEK = 0x2,
58     MMSSF_ASYNCHRONOUS = 0x4
59 };
60
61 enum {
62     SSUPDATE_ASYNC = 0x1,
63     SSUPDATE_CONTINUOUS = 0x2
64 };
65
66 #ifndef __IMultiMediaStream_FWD_DEFINED__
67 #define __IMultiMediaStream_FWD_DEFINED__
68 typedef struct IMultiMediaStream IMultiMediaStream;
69 #endif
70
71 #ifndef __IMediaStream_FWD_DEFINED__
72 #define __IMediaStream_FWD_DEFINED__
73 typedef struct IMediaStream IMediaStream;
74 #endif
75
76 #ifndef __IStreamSample_FWD_DEFINED__
77 #define __IStreamSample_FWD_DEFINED__
78 typedef struct IStreamSample IStreamSample;
79 #endif
80
81 /*****************************************************************************
82  * IMultiMediaStream interface
83  */
84 #ifndef __IMultiMediaStream_INTERFACE_DEFINED__
85 #define __IMultiMediaStream_INTERFACE_DEFINED__
86
87 DEFINE_GUID(IID_IMultiMediaStream, 0xb502d1bc, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
88 #if defined(__cplusplus) && !defined(CINTERFACE)
89 struct IMultiMediaStream : public IUnknown
90 {
91     virtual HRESULT STDMETHODCALLTYPE GetInformation(
92         char* pdwFlags,
93         STREAM_TYPE* pStreamType) = 0;
94
95     virtual HRESULT STDMETHODCALLTYPE GetMediaStream(
96         REFMSPID idPurpose,
97         IMediaStream** ppMediaStream) = 0;
98
99     virtual HRESULT STDMETHODCALLTYPE EnumMediaStreams(
100         long Index,
101         IMediaStream** ppMediaStream) = 0;
102
103     virtual HRESULT STDMETHODCALLTYPE GetState(
104         STREAM_STATE* pCurrentState) = 0;
105
106     virtual HRESULT STDMETHODCALLTYPE SetState(
107         STREAM_STATE NewState) = 0;
108
109     virtual HRESULT STDMETHODCALLTYPE GetTime(
110         STREAM_TIME* pCurrentTime) = 0;
111
112     virtual HRESULT STDMETHODCALLTYPE GetDuration(
113         STREAM_TIME* pDuration) = 0;
114
115     virtual HRESULT STDMETHODCALLTYPE Seek(
116         STREAM_TIME SeekTime) = 0;
117
118     virtual HRESULT STDMETHODCALLTYPE GetEndOfStreamEventHandle(
119         HANDLE* phEOS) = 0;
120
121 };
122 #else
123 typedef struct IMultiMediaStreamVtbl IMultiMediaStreamVtbl;
124 struct IMultiMediaStream {
125     const IMultiMediaStreamVtbl* lpVtbl;
126 };
127 struct IMultiMediaStreamVtbl {
128     ICOM_MSVTABLE_COMPAT_FIELDS
129
130     /*** IUnknown methods ***/
131     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
132         IMultiMediaStream* This,
133         REFIID riid,
134         void** ppvObject);
135
136     ULONG (STDMETHODCALLTYPE *AddRef)(
137         IMultiMediaStream* This);
138
139     ULONG (STDMETHODCALLTYPE *Release)(
140         IMultiMediaStream* This);
141
142     /*** IMultiMediaStream methods ***/
143     HRESULT (STDMETHODCALLTYPE *GetInformation)(
144         IMultiMediaStream* This,
145         char* pdwFlags,
146         STREAM_TYPE* pStreamType);
147
148     HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
149         IMultiMediaStream* This,
150         REFMSPID idPurpose,
151         IMediaStream** ppMediaStream);
152
153     HRESULT (STDMETHODCALLTYPE *EnumMediaStreams)(
154         IMultiMediaStream* This,
155         long Index,
156         IMediaStream** ppMediaStream);
157
158     HRESULT (STDMETHODCALLTYPE *GetState)(
159         IMultiMediaStream* This,
160         STREAM_STATE* pCurrentState);
161
162     HRESULT (STDMETHODCALLTYPE *SetState)(
163         IMultiMediaStream* This,
164         STREAM_STATE NewState);
165
166     HRESULT (STDMETHODCALLTYPE *GetTime)(
167         IMultiMediaStream* This,
168         STREAM_TIME* pCurrentTime);
169
170     HRESULT (STDMETHODCALLTYPE *GetDuration)(
171         IMultiMediaStream* This,
172         STREAM_TIME* pDuration);
173
174     HRESULT (STDMETHODCALLTYPE *Seek)(
175         IMultiMediaStream* This,
176         STREAM_TIME SeekTime);
177
178     HRESULT (STDMETHODCALLTYPE *GetEndOfStreamEventHandle)(
179         IMultiMediaStream* This,
180         HANDLE* phEOS);
181
182 };
183
184 #ifdef COBJMACROS
185 /*** IUnknown methods ***/
186 #define IMultiMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
187 #define IMultiMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p)
188 #define IMultiMediaStream_Release(p) (p)->lpVtbl->Release(p)
189 /*** IMultiMediaStream methods ***/
190 #define IMultiMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b)
191 #define IMultiMediaStream_GetMediaStream(p,a,b) (p)->lpVtbl->GetMediaStream(p,a,b)
192 #define IMultiMediaStream_EnumMediaStreams(p,a,b) (p)->lpVtbl->EnumMediaStreams(p,a,b)
193 #define IMultiMediaStream_GetState(p,a) (p)->lpVtbl->GetState(p,a)
194 #define IMultiMediaStream_SetState(p,a) (p)->lpVtbl->SetState(p,a)
195 #define IMultiMediaStream_GetTime(p,a) (p)->lpVtbl->GetTime(p,a)
196 #define IMultiMediaStream_GetDuration(p,a) (p)->lpVtbl->GetDuration(p,a)
197 #define IMultiMediaStream_Seek(p,a) (p)->lpVtbl->Seek(p,a)
198 #define IMultiMediaStream_GetEndOfStreamEventHandle(p,a) (p)->lpVtbl->GetEndOfStreamEventHandle(p,a)
199 #endif
200
201 #endif
202
203 #define IMultiMediaStream_METHODS \
204     ICOM_MSVTABLE_COMPAT_FIELDS \
205     /*** IUnknown methods ***/ \
206     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
207     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
208     STDMETHOD_(ULONG,Release)(THIS) PURE; \
209     /*** IMultiMediaStream methods ***/ \
210     STDMETHOD_(HRESULT,GetInformation)(THIS_ char* pdwFlags, STREAM_TYPE* pStreamType) PURE; \
211     STDMETHOD_(HRESULT,GetMediaStream)(THIS_ REFMSPID idPurpose, IMediaStream** ppMediaStream) PURE; \
212     STDMETHOD_(HRESULT,EnumMediaStreams)(THIS_ long Index, IMediaStream** ppMediaStream) PURE; \
213     STDMETHOD_(HRESULT,GetState)(THIS_ STREAM_STATE* pCurrentState) PURE; \
214     STDMETHOD_(HRESULT,SetState)(THIS_ STREAM_STATE NewState) PURE; \
215     STDMETHOD_(HRESULT,GetTime)(THIS_ STREAM_TIME* pCurrentTime) PURE; \
216     STDMETHOD_(HRESULT,GetDuration)(THIS_ STREAM_TIME* pDuration) PURE; \
217     STDMETHOD_(HRESULT,Seek)(THIS_ STREAM_TIME SeekTime) PURE; \
218     STDMETHOD_(HRESULT,GetEndOfStreamEventHandle)(THIS_ HANDLE* phEOS) PURE;
219
220 HRESULT CALLBACK IMultiMediaStream_GetInformation_Proxy(
221     IMultiMediaStream* This,
222     char* pdwFlags,
223     STREAM_TYPE* pStreamType);
224 void __RPC_STUB IMultiMediaStream_GetInformation_Stub(
225     struct IRpcStubBuffer* This,
226     struct IRpcChannelBuffer* pRpcChannelBuffer,
227     PRPC_MESSAGE pRpcMessage,
228     DWORD* pdwStubPhase);
229 HRESULT CALLBACK IMultiMediaStream_GetMediaStream_Proxy(
230     IMultiMediaStream* This,
231     REFMSPID idPurpose,
232     IMediaStream** ppMediaStream);
233 void __RPC_STUB IMultiMediaStream_GetMediaStream_Stub(
234     struct IRpcStubBuffer* This,
235     struct IRpcChannelBuffer* pRpcChannelBuffer,
236     PRPC_MESSAGE pRpcMessage,
237     DWORD* pdwStubPhase);
238 HRESULT CALLBACK IMultiMediaStream_EnumMediaStreams_Proxy(
239     IMultiMediaStream* This,
240     long Index,
241     IMediaStream** ppMediaStream);
242 void __RPC_STUB IMultiMediaStream_EnumMediaStreams_Stub(
243     struct IRpcStubBuffer* This,
244     struct IRpcChannelBuffer* pRpcChannelBuffer,
245     PRPC_MESSAGE pRpcMessage,
246     DWORD* pdwStubPhase);
247 HRESULT CALLBACK IMultiMediaStream_GetState_Proxy(
248     IMultiMediaStream* This,
249     STREAM_STATE* pCurrentState);
250 void __RPC_STUB IMultiMediaStream_GetState_Stub(
251     struct IRpcStubBuffer* This,
252     struct IRpcChannelBuffer* pRpcChannelBuffer,
253     PRPC_MESSAGE pRpcMessage,
254     DWORD* pdwStubPhase);
255 HRESULT CALLBACK IMultiMediaStream_SetState_Proxy(
256     IMultiMediaStream* This,
257     STREAM_STATE NewState);
258 void __RPC_STUB IMultiMediaStream_SetState_Stub(
259     struct IRpcStubBuffer* This,
260     struct IRpcChannelBuffer* pRpcChannelBuffer,
261     PRPC_MESSAGE pRpcMessage,
262     DWORD* pdwStubPhase);
263 HRESULT CALLBACK IMultiMediaStream_GetTime_Proxy(
264     IMultiMediaStream* This,
265     STREAM_TIME* pCurrentTime);
266 void __RPC_STUB IMultiMediaStream_GetTime_Stub(
267     struct IRpcStubBuffer* This,
268     struct IRpcChannelBuffer* pRpcChannelBuffer,
269     PRPC_MESSAGE pRpcMessage,
270     DWORD* pdwStubPhase);
271 HRESULT CALLBACK IMultiMediaStream_GetDuration_Proxy(
272     IMultiMediaStream* This,
273     STREAM_TIME* pDuration);
274 void __RPC_STUB IMultiMediaStream_GetDuration_Stub(
275     struct IRpcStubBuffer* This,
276     struct IRpcChannelBuffer* pRpcChannelBuffer,
277     PRPC_MESSAGE pRpcMessage,
278     DWORD* pdwStubPhase);
279 HRESULT CALLBACK IMultiMediaStream_Seek_Proxy(
280     IMultiMediaStream* This,
281     STREAM_TIME SeekTime);
282 void __RPC_STUB IMultiMediaStream_Seek_Stub(
283     struct IRpcStubBuffer* This,
284     struct IRpcChannelBuffer* pRpcChannelBuffer,
285     PRPC_MESSAGE pRpcMessage,
286     DWORD* pdwStubPhase);
287 HRESULT CALLBACK IMultiMediaStream_GetEndOfStreamEventHandle_Proxy(
288     IMultiMediaStream* This,
289     HANDLE* phEOS);
290 void __RPC_STUB IMultiMediaStream_GetEndOfStreamEventHandle_Stub(
291     struct IRpcStubBuffer* This,
292     struct IRpcChannelBuffer* pRpcChannelBuffer,
293     PRPC_MESSAGE pRpcMessage,
294     DWORD* pdwStubPhase);
295
296 #endif  /* __IMultiMediaStream_INTERFACE_DEFINED__ */
297
298 /*****************************************************************************
299  * IMediaStream interface
300  */
301 #ifndef __IMediaStream_INTERFACE_DEFINED__
302 #define __IMediaStream_INTERFACE_DEFINED__
303
304 DEFINE_GUID(IID_IMediaStream, 0xb502d1bd, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
305 #if defined(__cplusplus) && !defined(CINTERFACE)
306 struct IMediaStream : public IUnknown
307 {
308     virtual HRESULT STDMETHODCALLTYPE GetMultiMediaStream(
309         IMultiMediaStream** ppMultiMediaStream) = 0;
310
311     virtual HRESULT STDMETHODCALLTYPE GetInformation(
312         MSPID* pPurposeId,
313         STREAM_TYPE* pType) = 0;
314
315     virtual HRESULT STDMETHODCALLTYPE SetSameFormat(
316         IMediaStream* pStreamThatHasDesiredFormat,
317         DWORD dwFlags) = 0;
318
319     virtual HRESULT STDMETHODCALLTYPE AllocateSample(
320         DWORD dwFlags,
321         IStreamSample** ppSample) = 0;
322
323     virtual HRESULT STDMETHODCALLTYPE CreateSharedSample(
324         IStreamSample* pExistingSample,
325         DWORD dwFlags,
326         IStreamSample** ppNewSample) = 0;
327
328     virtual HRESULT STDMETHODCALLTYPE SendEndOfStream(
329         DWORD dwFlags) = 0;
330
331 };
332 #else
333 typedef struct IMediaStreamVtbl IMediaStreamVtbl;
334 struct IMediaStream {
335     const IMediaStreamVtbl* lpVtbl;
336 };
337 struct IMediaStreamVtbl {
338     ICOM_MSVTABLE_COMPAT_FIELDS
339
340     /*** IUnknown methods ***/
341     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
342         IMediaStream* This,
343         REFIID riid,
344         void** ppvObject);
345
346     ULONG (STDMETHODCALLTYPE *AddRef)(
347         IMediaStream* This);
348
349     ULONG (STDMETHODCALLTYPE *Release)(
350         IMediaStream* This);
351
352     /*** IMediaStream methods ***/
353     HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)(
354         IMediaStream* This,
355         IMultiMediaStream** ppMultiMediaStream);
356
357     HRESULT (STDMETHODCALLTYPE *GetInformation)(
358         IMediaStream* This,
359         MSPID* pPurposeId,
360         STREAM_TYPE* pType);
361
362     HRESULT (STDMETHODCALLTYPE *SetSameFormat)(
363         IMediaStream* This,
364         IMediaStream* pStreamThatHasDesiredFormat,
365         DWORD dwFlags);
366
367     HRESULT (STDMETHODCALLTYPE *AllocateSample)(
368         IMediaStream* This,
369         DWORD dwFlags,
370         IStreamSample** ppSample);
371
372     HRESULT (STDMETHODCALLTYPE *CreateSharedSample)(
373         IMediaStream* This,
374         IStreamSample* pExistingSample,
375         DWORD dwFlags,
376         IStreamSample** ppNewSample);
377
378     HRESULT (STDMETHODCALLTYPE *SendEndOfStream)(
379         IMediaStream* This,
380         DWORD dwFlags);
381
382 };
383
384 #ifdef COBJMACROS
385 /*** IUnknown methods ***/
386 #define IMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
387 #define IMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p)
388 #define IMediaStream_Release(p) (p)->lpVtbl->Release(p)
389 /*** IMediaStream methods ***/
390 #define IMediaStream_GetMultiMediaStream(p,a) (p)->lpVtbl->GetMultiMediaStream(p,a)
391 #define IMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b)
392 #define IMediaStream_SetSameFormat(p,a,b) (p)->lpVtbl->SetSameFormat(p,a,b)
393 #define IMediaStream_AllocateSample(p,a,b) (p)->lpVtbl->AllocateSample(p,a,b)
394 #define IMediaStream_CreateSharedSample(p,a,b,c) (p)->lpVtbl->CreateSharedSample(p,a,b,c)
395 #define IMediaStream_SendEndOfStream(p,a) (p)->lpVtbl->SendEndOfStream(p,a)
396 #endif
397
398 #endif
399
400 #define IMediaStream_METHODS \
401     ICOM_MSVTABLE_COMPAT_FIELDS \
402     /*** IUnknown methods ***/ \
403     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
404     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
405     STDMETHOD_(ULONG,Release)(THIS) PURE; \
406     /*** IMediaStream methods ***/ \
407     STDMETHOD_(HRESULT,GetMultiMediaStream)(THIS_ IMultiMediaStream** ppMultiMediaStream) PURE; \
408     STDMETHOD_(HRESULT,GetInformation)(THIS_ MSPID* pPurposeId, STREAM_TYPE* pType) PURE; \
409     STDMETHOD_(HRESULT,SetSameFormat)(THIS_ IMediaStream* pStreamThatHasDesiredFormat, DWORD dwFlags) PURE; \
410     STDMETHOD_(HRESULT,AllocateSample)(THIS_ DWORD dwFlags, IStreamSample** ppSample) PURE; \
411     STDMETHOD_(HRESULT,CreateSharedSample)(THIS_ IStreamSample* pExistingSample, DWORD dwFlags, IStreamSample** ppNewSample) PURE; \
412     STDMETHOD_(HRESULT,SendEndOfStream)(THIS_ DWORD dwFlags) PURE;
413
414 HRESULT CALLBACK IMediaStream_GetMultiMediaStream_Proxy(
415     IMediaStream* This,
416     IMultiMediaStream** ppMultiMediaStream);
417 void __RPC_STUB IMediaStream_GetMultiMediaStream_Stub(
418     struct IRpcStubBuffer* This,
419     struct IRpcChannelBuffer* pRpcChannelBuffer,
420     PRPC_MESSAGE pRpcMessage,
421     DWORD* pdwStubPhase);
422 HRESULT CALLBACK IMediaStream_GetInformation_Proxy(
423     IMediaStream* This,
424     MSPID* pPurposeId,
425     STREAM_TYPE* pType);
426 void __RPC_STUB IMediaStream_GetInformation_Stub(
427     struct IRpcStubBuffer* This,
428     struct IRpcChannelBuffer* pRpcChannelBuffer,
429     PRPC_MESSAGE pRpcMessage,
430     DWORD* pdwStubPhase);
431 HRESULT CALLBACK IMediaStream_SetSameFormat_Proxy(
432     IMediaStream* This,
433     IMediaStream* pStreamThatHasDesiredFormat,
434     DWORD dwFlags);
435 void __RPC_STUB IMediaStream_SetSameFormat_Stub(
436     struct IRpcStubBuffer* This,
437     struct IRpcChannelBuffer* pRpcChannelBuffer,
438     PRPC_MESSAGE pRpcMessage,
439     DWORD* pdwStubPhase);
440 HRESULT CALLBACK IMediaStream_AllocateSample_Proxy(
441     IMediaStream* This,
442     DWORD dwFlags,
443     IStreamSample** ppSample);
444 void __RPC_STUB IMediaStream_AllocateSample_Stub(
445     struct IRpcStubBuffer* This,
446     struct IRpcChannelBuffer* pRpcChannelBuffer,
447     PRPC_MESSAGE pRpcMessage,
448     DWORD* pdwStubPhase);
449 HRESULT CALLBACK IMediaStream_CreateSharedSample_Proxy(
450     IMediaStream* This,
451     IStreamSample* pExistingSample,
452     DWORD dwFlags,
453     IStreamSample** ppNewSample);
454 void __RPC_STUB IMediaStream_CreateSharedSample_Stub(
455     struct IRpcStubBuffer* This,
456     struct IRpcChannelBuffer* pRpcChannelBuffer,
457     PRPC_MESSAGE pRpcMessage,
458     DWORD* pdwStubPhase);
459 HRESULT CALLBACK IMediaStream_SendEndOfStream_Proxy(
460     IMediaStream* This,
461     DWORD dwFlags);
462 void __RPC_STUB IMediaStream_SendEndOfStream_Stub(
463     struct IRpcStubBuffer* This,
464     struct IRpcChannelBuffer* pRpcChannelBuffer,
465     PRPC_MESSAGE pRpcMessage,
466     DWORD* pdwStubPhase);
467
468 #endif  /* __IMediaStream_INTERFACE_DEFINED__ */
469
470 /*****************************************************************************
471  * IStreamSample interface
472  */
473 #ifndef __IStreamSample_INTERFACE_DEFINED__
474 #define __IStreamSample_INTERFACE_DEFINED__
475
476 DEFINE_GUID(IID_IStreamSample, 0xb502d1be, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
477 #if defined(__cplusplus) && !defined(CINTERFACE)
478 struct IStreamSample : public IUnknown
479 {
480     virtual HRESULT STDMETHODCALLTYPE GetMediaStream(
481         IMediaStream** ppMediaStream) = 0;
482
483     virtual HRESULT STDMETHODCALLTYPE GetSampleTimes(
484         STREAM_TIME* pStartTime,
485         STREAM_TIME* pEndTime,
486         STREAM_TIME* pCurrentTime) = 0;
487
488     virtual HRESULT STDMETHODCALLTYPE SetSampleTimes(
489         const STREAM_TIME* pStartTime,
490         const STREAM_TIME* pEndTime) = 0;
491
492     virtual HRESULT STDMETHODCALLTYPE Update(
493         DWORD dwFlags,
494         HANDLE hEvent,
495         PAPCFUNC pfnAPC,
496         DWORD dwAPCData) = 0;
497
498     virtual HRESULT STDMETHODCALLTYPE CompletionStatus(
499         DWORD dwFlags,
500         DWORD dwMilliseconds) = 0;
501
502 };
503 #else
504 typedef struct IStreamSampleVtbl IStreamSampleVtbl;
505 struct IStreamSample {
506     const IStreamSampleVtbl* lpVtbl;
507 };
508 struct IStreamSampleVtbl {
509     ICOM_MSVTABLE_COMPAT_FIELDS
510
511     /*** IUnknown methods ***/
512     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
513         IStreamSample* This,
514         REFIID riid,
515         void** ppvObject);
516
517     ULONG (STDMETHODCALLTYPE *AddRef)(
518         IStreamSample* This);
519
520     ULONG (STDMETHODCALLTYPE *Release)(
521         IStreamSample* This);
522
523     /*** IStreamSample methods ***/
524     HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
525         IStreamSample* This,
526         IMediaStream** ppMediaStream);
527
528     HRESULT (STDMETHODCALLTYPE *GetSampleTimes)(
529         IStreamSample* This,
530         STREAM_TIME* pStartTime,
531         STREAM_TIME* pEndTime,
532         STREAM_TIME* pCurrentTime);
533
534     HRESULT (STDMETHODCALLTYPE *SetSampleTimes)(
535         IStreamSample* This,
536         const STREAM_TIME* pStartTime,
537         const STREAM_TIME* pEndTime);
538
539     HRESULT (STDMETHODCALLTYPE *Update)(
540         IStreamSample* This,
541         DWORD dwFlags,
542         HANDLE hEvent,
543         PAPCFUNC pfnAPC,
544         DWORD dwAPCData);
545
546     HRESULT (STDMETHODCALLTYPE *CompletionStatus)(
547         IStreamSample* This,
548         DWORD dwFlags,
549         DWORD dwMilliseconds);
550
551 };
552
553 #ifdef COBJMACROS
554 /*** IUnknown methods ***/
555 #define IStreamSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
556 #define IStreamSample_AddRef(p) (p)->lpVtbl->AddRef(p)
557 #define IStreamSample_Release(p) (p)->lpVtbl->Release(p)
558 /*** IStreamSample methods ***/
559 #define IStreamSample_GetMediaStream(p,a) (p)->lpVtbl->GetMediaStream(p,a)
560 #define IStreamSample_GetSampleTimes(p,a,b,c) (p)->lpVtbl->GetSampleTimes(p,a,b,c)
561 #define IStreamSample_SetSampleTimes(p,a,b) (p)->lpVtbl->SetSampleTimes(p,a,b)
562 #define IStreamSample_Update(p,a,b,c,d) (p)->lpVtbl->Update(p,a,b,c,d)
563 #define IStreamSample_CompletionStatus(p,a,b) (p)->lpVtbl->CompletionStatus(p,a,b)
564 #endif
565
566 #endif
567
568 #define IStreamSample_METHODS \
569     ICOM_MSVTABLE_COMPAT_FIELDS \
570     /*** IUnknown methods ***/ \
571     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
572     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
573     STDMETHOD_(ULONG,Release)(THIS) PURE; \
574     /*** IStreamSample methods ***/ \
575     STDMETHOD_(HRESULT,GetMediaStream)(THIS_ IMediaStream** ppMediaStream) PURE; \
576     STDMETHOD_(HRESULT,GetSampleTimes)(THIS_ STREAM_TIME* pStartTime, STREAM_TIME* pEndTime, STREAM_TIME* pCurrentTime) PURE; \
577     STDMETHOD_(HRESULT,SetSampleTimes)(THIS_ const STREAM_TIME* pStartTime, const STREAM_TIME* pEndTime) PURE; \
578     STDMETHOD_(HRESULT,Update)(THIS_ DWORD dwFlags, HANDLE hEvent, PAPCFUNC pfnAPC, DWORD dwAPCData) PURE; \
579     STDMETHOD_(HRESULT,CompletionStatus)(THIS_ DWORD dwFlags, DWORD dwMilliseconds) PURE;
580
581 HRESULT CALLBACK IStreamSample_GetMediaStream_Proxy(
582     IStreamSample* This,
583     IMediaStream** ppMediaStream);
584 void __RPC_STUB IStreamSample_GetMediaStream_Stub(
585     struct IRpcStubBuffer* This,
586     struct IRpcChannelBuffer* pRpcChannelBuffer,
587     PRPC_MESSAGE pRpcMessage,
588     DWORD* pdwStubPhase);
589 HRESULT CALLBACK IStreamSample_GetSampleTimes_Proxy(
590     IStreamSample* This,
591     STREAM_TIME* pStartTime,
592     STREAM_TIME* pEndTime,
593     STREAM_TIME* pCurrentTime);
594 void __RPC_STUB IStreamSample_GetSampleTimes_Stub(
595     struct IRpcStubBuffer* This,
596     struct IRpcChannelBuffer* pRpcChannelBuffer,
597     PRPC_MESSAGE pRpcMessage,
598     DWORD* pdwStubPhase);
599 HRESULT CALLBACK IStreamSample_SetSampleTimes_Proxy(
600     IStreamSample* This,
601     const STREAM_TIME* pStartTime,
602     const STREAM_TIME* pEndTime);
603 void __RPC_STUB IStreamSample_SetSampleTimes_Stub(
604     struct IRpcStubBuffer* This,
605     struct IRpcChannelBuffer* pRpcChannelBuffer,
606     PRPC_MESSAGE pRpcMessage,
607     DWORD* pdwStubPhase);
608 HRESULT CALLBACK IStreamSample_Update_Proxy(
609     IStreamSample* This,
610     DWORD dwFlags,
611     HANDLE hEvent,
612     PAPCFUNC pfnAPC,
613     DWORD dwAPCData);
614 void __RPC_STUB IStreamSample_Update_Stub(
615     struct IRpcStubBuffer* This,
616     struct IRpcChannelBuffer* pRpcChannelBuffer,
617     PRPC_MESSAGE pRpcMessage,
618     DWORD* pdwStubPhase);
619 HRESULT CALLBACK IStreamSample_CompletionStatus_Proxy(
620     IStreamSample* This,
621     DWORD dwFlags,
622     DWORD dwMilliseconds);
623 void __RPC_STUB IStreamSample_CompletionStatus_Stub(
624     struct IRpcStubBuffer* This,
625     struct IRpcChannelBuffer* pRpcChannelBuffer,
626     PRPC_MESSAGE pRpcMessage,
627     DWORD* pdwStubPhase);
628
629 #endif  /* __IStreamSample_INTERFACE_DEFINED__ */
630
631 #ifdef __cplusplus
632 }
633 #endif
634 #endif /* __WIDL_MMSTREAM_H */