Make sure ip_mreq is not exported by winsock2.h.
[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 /*** IUnknown methods ***/
185 #define IMultiMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
186 #define IMultiMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p)
187 #define IMultiMediaStream_Release(p) (p)->lpVtbl->Release(p)
188 /*** IMultiMediaStream methods ***/
189 #define IMultiMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b)
190 #define IMultiMediaStream_GetMediaStream(p,a,b) (p)->lpVtbl->GetMediaStream(p,a,b)
191 #define IMultiMediaStream_EnumMediaStreams(p,a,b) (p)->lpVtbl->EnumMediaStreams(p,a,b)
192 #define IMultiMediaStream_GetState(p,a) (p)->lpVtbl->GetState(p,a)
193 #define IMultiMediaStream_SetState(p,a) (p)->lpVtbl->SetState(p,a)
194 #define IMultiMediaStream_GetTime(p,a) (p)->lpVtbl->GetTime(p,a)
195 #define IMultiMediaStream_GetDuration(p,a) (p)->lpVtbl->GetDuration(p,a)
196 #define IMultiMediaStream_Seek(p,a) (p)->lpVtbl->Seek(p,a)
197 #define IMultiMediaStream_GetEndOfStreamEventHandle(p,a) (p)->lpVtbl->GetEndOfStreamEventHandle(p,a)
198
199 #endif
200
201 #define IMultiMediaStream_METHODS \
202     ICOM_MSVTABLE_COMPAT_FIELDS \
203     /*** IUnknown methods ***/ \
204     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
205     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
206     STDMETHOD_(ULONG,Release)(THIS) PURE; \
207     /*** IMultiMediaStream methods ***/ \
208     STDMETHOD_(HRESULT,GetInformation)(THIS_ char* pdwFlags, STREAM_TYPE* pStreamType) PURE; \
209     STDMETHOD_(HRESULT,GetMediaStream)(THIS_ REFMSPID idPurpose, IMediaStream** ppMediaStream) PURE; \
210     STDMETHOD_(HRESULT,EnumMediaStreams)(THIS_ long Index, IMediaStream** ppMediaStream) PURE; \
211     STDMETHOD_(HRESULT,GetState)(THIS_ STREAM_STATE* pCurrentState) PURE; \
212     STDMETHOD_(HRESULT,SetState)(THIS_ STREAM_STATE NewState) PURE; \
213     STDMETHOD_(HRESULT,GetTime)(THIS_ STREAM_TIME* pCurrentTime) PURE; \
214     STDMETHOD_(HRESULT,GetDuration)(THIS_ STREAM_TIME* pDuration) PURE; \
215     STDMETHOD_(HRESULT,Seek)(THIS_ STREAM_TIME SeekTime) PURE; \
216     STDMETHOD_(HRESULT,GetEndOfStreamEventHandle)(THIS_ HANDLE* phEOS) PURE;
217
218 HRESULT CALLBACK IMultiMediaStream_GetInformation_Proxy(
219     IMultiMediaStream* This,
220     char* pdwFlags,
221     STREAM_TYPE* pStreamType);
222 void __RPC_STUB IMultiMediaStream_GetInformation_Stub(
223     struct IRpcStubBuffer* This,
224     struct IRpcChannelBuffer* pRpcChannelBuffer,
225     PRPC_MESSAGE pRpcMessage,
226     DWORD* pdwStubPhase);
227 HRESULT CALLBACK IMultiMediaStream_GetMediaStream_Proxy(
228     IMultiMediaStream* This,
229     REFMSPID idPurpose,
230     IMediaStream** ppMediaStream);
231 void __RPC_STUB IMultiMediaStream_GetMediaStream_Stub(
232     struct IRpcStubBuffer* This,
233     struct IRpcChannelBuffer* pRpcChannelBuffer,
234     PRPC_MESSAGE pRpcMessage,
235     DWORD* pdwStubPhase);
236 HRESULT CALLBACK IMultiMediaStream_EnumMediaStreams_Proxy(
237     IMultiMediaStream* This,
238     long Index,
239     IMediaStream** ppMediaStream);
240 void __RPC_STUB IMultiMediaStream_EnumMediaStreams_Stub(
241     struct IRpcStubBuffer* This,
242     struct IRpcChannelBuffer* pRpcChannelBuffer,
243     PRPC_MESSAGE pRpcMessage,
244     DWORD* pdwStubPhase);
245 HRESULT CALLBACK IMultiMediaStream_GetState_Proxy(
246     IMultiMediaStream* This,
247     STREAM_STATE* pCurrentState);
248 void __RPC_STUB IMultiMediaStream_GetState_Stub(
249     struct IRpcStubBuffer* This,
250     struct IRpcChannelBuffer* pRpcChannelBuffer,
251     PRPC_MESSAGE pRpcMessage,
252     DWORD* pdwStubPhase);
253 HRESULT CALLBACK IMultiMediaStream_SetState_Proxy(
254     IMultiMediaStream* This,
255     STREAM_STATE NewState);
256 void __RPC_STUB IMultiMediaStream_SetState_Stub(
257     struct IRpcStubBuffer* This,
258     struct IRpcChannelBuffer* pRpcChannelBuffer,
259     PRPC_MESSAGE pRpcMessage,
260     DWORD* pdwStubPhase);
261 HRESULT CALLBACK IMultiMediaStream_GetTime_Proxy(
262     IMultiMediaStream* This,
263     STREAM_TIME* pCurrentTime);
264 void __RPC_STUB IMultiMediaStream_GetTime_Stub(
265     struct IRpcStubBuffer* This,
266     struct IRpcChannelBuffer* pRpcChannelBuffer,
267     PRPC_MESSAGE pRpcMessage,
268     DWORD* pdwStubPhase);
269 HRESULT CALLBACK IMultiMediaStream_GetDuration_Proxy(
270     IMultiMediaStream* This,
271     STREAM_TIME* pDuration);
272 void __RPC_STUB IMultiMediaStream_GetDuration_Stub(
273     struct IRpcStubBuffer* This,
274     struct IRpcChannelBuffer* pRpcChannelBuffer,
275     PRPC_MESSAGE pRpcMessage,
276     DWORD* pdwStubPhase);
277 HRESULT CALLBACK IMultiMediaStream_Seek_Proxy(
278     IMultiMediaStream* This,
279     STREAM_TIME SeekTime);
280 void __RPC_STUB IMultiMediaStream_Seek_Stub(
281     struct IRpcStubBuffer* This,
282     struct IRpcChannelBuffer* pRpcChannelBuffer,
283     PRPC_MESSAGE pRpcMessage,
284     DWORD* pdwStubPhase);
285 HRESULT CALLBACK IMultiMediaStream_GetEndOfStreamEventHandle_Proxy(
286     IMultiMediaStream* This,
287     HANDLE* phEOS);
288 void __RPC_STUB IMultiMediaStream_GetEndOfStreamEventHandle_Stub(
289     struct IRpcStubBuffer* This,
290     struct IRpcChannelBuffer* pRpcChannelBuffer,
291     PRPC_MESSAGE pRpcMessage,
292     DWORD* pdwStubPhase);
293
294 #endif  /* __IMultiMediaStream_INTERFACE_DEFINED__ */
295
296 /*****************************************************************************
297  * IMediaStream interface
298  */
299 #ifndef __IMediaStream_INTERFACE_DEFINED__
300 #define __IMediaStream_INTERFACE_DEFINED__
301
302 DEFINE_GUID(IID_IMediaStream, 0xb502d1bd, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
303 #if defined(__cplusplus) && !defined(CINTERFACE)
304 struct IMediaStream : public IUnknown
305 {
306     virtual HRESULT STDMETHODCALLTYPE GetMultiMediaStream(
307         IMultiMediaStream** ppMultiMediaStream) = 0;
308
309     virtual HRESULT STDMETHODCALLTYPE GetInformation(
310         MSPID* pPurposeId,
311         STREAM_TYPE* pType) = 0;
312
313     virtual HRESULT STDMETHODCALLTYPE SetSameFormat(
314         IMediaStream* pStreamThatHasDesiredFormat,
315         DWORD dwFlags) = 0;
316
317     virtual HRESULT STDMETHODCALLTYPE AllocateSample(
318         DWORD dwFlags,
319         IStreamSample** ppSample) = 0;
320
321     virtual HRESULT STDMETHODCALLTYPE CreateSharedSample(
322         IStreamSample* pExistingSample,
323         DWORD dwFlags,
324         IStreamSample** ppNewSample) = 0;
325
326     virtual HRESULT STDMETHODCALLTYPE SendEndOfStream(
327         DWORD dwFlags) = 0;
328
329 };
330 #else
331 typedef struct IMediaStreamVtbl IMediaStreamVtbl;
332 struct IMediaStream {
333     const IMediaStreamVtbl* lpVtbl;
334 };
335 struct IMediaStreamVtbl {
336     ICOM_MSVTABLE_COMPAT_FIELDS
337
338     /*** IUnknown methods ***/
339     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
340         IMediaStream* This,
341         REFIID riid,
342         void** ppvObject);
343
344     ULONG (STDMETHODCALLTYPE *AddRef)(
345         IMediaStream* This);
346
347     ULONG (STDMETHODCALLTYPE *Release)(
348         IMediaStream* This);
349
350     /*** IMediaStream methods ***/
351     HRESULT (STDMETHODCALLTYPE *GetMultiMediaStream)(
352         IMediaStream* This,
353         IMultiMediaStream** ppMultiMediaStream);
354
355     HRESULT (STDMETHODCALLTYPE *GetInformation)(
356         IMediaStream* This,
357         MSPID* pPurposeId,
358         STREAM_TYPE* pType);
359
360     HRESULT (STDMETHODCALLTYPE *SetSameFormat)(
361         IMediaStream* This,
362         IMediaStream* pStreamThatHasDesiredFormat,
363         DWORD dwFlags);
364
365     HRESULT (STDMETHODCALLTYPE *AllocateSample)(
366         IMediaStream* This,
367         DWORD dwFlags,
368         IStreamSample** ppSample);
369
370     HRESULT (STDMETHODCALLTYPE *CreateSharedSample)(
371         IMediaStream* This,
372         IStreamSample* pExistingSample,
373         DWORD dwFlags,
374         IStreamSample** ppNewSample);
375
376     HRESULT (STDMETHODCALLTYPE *SendEndOfStream)(
377         IMediaStream* This,
378         DWORD dwFlags);
379
380 };
381
382 /*** IUnknown methods ***/
383 #define IMediaStream_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
384 #define IMediaStream_AddRef(p) (p)->lpVtbl->AddRef(p)
385 #define IMediaStream_Release(p) (p)->lpVtbl->Release(p)
386 /*** IMediaStream methods ***/
387 #define IMediaStream_GetMultiMediaStream(p,a) (p)->lpVtbl->GetMultiMediaStream(p,a)
388 #define IMediaStream_GetInformation(p,a,b) (p)->lpVtbl->GetInformation(p,a,b)
389 #define IMediaStream_SetSameFormat(p,a,b) (p)->lpVtbl->SetSameFormat(p,a,b)
390 #define IMediaStream_AllocateSample(p,a,b) (p)->lpVtbl->AllocateSample(p,a,b)
391 #define IMediaStream_CreateSharedSample(p,a,b,c) (p)->lpVtbl->CreateSharedSample(p,a,b,c)
392 #define IMediaStream_SendEndOfStream(p,a) (p)->lpVtbl->SendEndOfStream(p,a)
393
394 #endif
395
396 #define IMediaStream_METHODS \
397     ICOM_MSVTABLE_COMPAT_FIELDS \
398     /*** IUnknown methods ***/ \
399     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
400     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
401     STDMETHOD_(ULONG,Release)(THIS) PURE; \
402     /*** IMediaStream methods ***/ \
403     STDMETHOD_(HRESULT,GetMultiMediaStream)(THIS_ IMultiMediaStream** ppMultiMediaStream) PURE; \
404     STDMETHOD_(HRESULT,GetInformation)(THIS_ MSPID* pPurposeId, STREAM_TYPE* pType) PURE; \
405     STDMETHOD_(HRESULT,SetSameFormat)(THIS_ IMediaStream* pStreamThatHasDesiredFormat, DWORD dwFlags) PURE; \
406     STDMETHOD_(HRESULT,AllocateSample)(THIS_ DWORD dwFlags, IStreamSample** ppSample) PURE; \
407     STDMETHOD_(HRESULT,CreateSharedSample)(THIS_ IStreamSample* pExistingSample, DWORD dwFlags, IStreamSample** ppNewSample) PURE; \
408     STDMETHOD_(HRESULT,SendEndOfStream)(THIS_ DWORD dwFlags) PURE;
409
410 HRESULT CALLBACK IMediaStream_GetMultiMediaStream_Proxy(
411     IMediaStream* This,
412     IMultiMediaStream** ppMultiMediaStream);
413 void __RPC_STUB IMediaStream_GetMultiMediaStream_Stub(
414     struct IRpcStubBuffer* This,
415     struct IRpcChannelBuffer* pRpcChannelBuffer,
416     PRPC_MESSAGE pRpcMessage,
417     DWORD* pdwStubPhase);
418 HRESULT CALLBACK IMediaStream_GetInformation_Proxy(
419     IMediaStream* This,
420     MSPID* pPurposeId,
421     STREAM_TYPE* pType);
422 void __RPC_STUB IMediaStream_GetInformation_Stub(
423     struct IRpcStubBuffer* This,
424     struct IRpcChannelBuffer* pRpcChannelBuffer,
425     PRPC_MESSAGE pRpcMessage,
426     DWORD* pdwStubPhase);
427 HRESULT CALLBACK IMediaStream_SetSameFormat_Proxy(
428     IMediaStream* This,
429     IMediaStream* pStreamThatHasDesiredFormat,
430     DWORD dwFlags);
431 void __RPC_STUB IMediaStream_SetSameFormat_Stub(
432     struct IRpcStubBuffer* This,
433     struct IRpcChannelBuffer* pRpcChannelBuffer,
434     PRPC_MESSAGE pRpcMessage,
435     DWORD* pdwStubPhase);
436 HRESULT CALLBACK IMediaStream_AllocateSample_Proxy(
437     IMediaStream* This,
438     DWORD dwFlags,
439     IStreamSample** ppSample);
440 void __RPC_STUB IMediaStream_AllocateSample_Stub(
441     struct IRpcStubBuffer* This,
442     struct IRpcChannelBuffer* pRpcChannelBuffer,
443     PRPC_MESSAGE pRpcMessage,
444     DWORD* pdwStubPhase);
445 HRESULT CALLBACK IMediaStream_CreateSharedSample_Proxy(
446     IMediaStream* This,
447     IStreamSample* pExistingSample,
448     DWORD dwFlags,
449     IStreamSample** ppNewSample);
450 void __RPC_STUB IMediaStream_CreateSharedSample_Stub(
451     struct IRpcStubBuffer* This,
452     struct IRpcChannelBuffer* pRpcChannelBuffer,
453     PRPC_MESSAGE pRpcMessage,
454     DWORD* pdwStubPhase);
455 HRESULT CALLBACK IMediaStream_SendEndOfStream_Proxy(
456     IMediaStream* This,
457     DWORD dwFlags);
458 void __RPC_STUB IMediaStream_SendEndOfStream_Stub(
459     struct IRpcStubBuffer* This,
460     struct IRpcChannelBuffer* pRpcChannelBuffer,
461     PRPC_MESSAGE pRpcMessage,
462     DWORD* pdwStubPhase);
463
464 #endif  /* __IMediaStream_INTERFACE_DEFINED__ */
465
466 /*****************************************************************************
467  * IStreamSample interface
468  */
469 #ifndef __IStreamSample_INTERFACE_DEFINED__
470 #define __IStreamSample_INTERFACE_DEFINED__
471
472 DEFINE_GUID(IID_IStreamSample, 0xb502d1be, 0x9a57, 0x11d0, 0x8f,0xde, 0x00,0xc0,0x4f,0xd9,0x18,0x9d);
473 #if defined(__cplusplus) && !defined(CINTERFACE)
474 struct IStreamSample : public IUnknown
475 {
476     virtual HRESULT STDMETHODCALLTYPE GetMediaStream(
477         IMediaStream** ppMediaStream) = 0;
478
479     virtual HRESULT STDMETHODCALLTYPE GetSampleTimes(
480         STREAM_TIME* pStartTime,
481         STREAM_TIME* pEndTime,
482         STREAM_TIME* pCurrentTime) = 0;
483
484     virtual HRESULT STDMETHODCALLTYPE SetSampleTimes(
485         const STREAM_TIME* pStartTime,
486         const STREAM_TIME* pEndTime) = 0;
487
488     virtual HRESULT STDMETHODCALLTYPE Update(
489         DWORD dwFlags,
490         HANDLE hEvent,
491         PAPCFUNC pfnAPC,
492         DWORD dwAPCData) = 0;
493
494     virtual HRESULT STDMETHODCALLTYPE CompletionStatus(
495         DWORD dwFlags,
496         DWORD dwMilliseconds) = 0;
497
498 };
499 #else
500 typedef struct IStreamSampleVtbl IStreamSampleVtbl;
501 struct IStreamSample {
502     const IStreamSampleVtbl* lpVtbl;
503 };
504 struct IStreamSampleVtbl {
505     ICOM_MSVTABLE_COMPAT_FIELDS
506
507     /*** IUnknown methods ***/
508     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
509         IStreamSample* This,
510         REFIID riid,
511         void** ppvObject);
512
513     ULONG (STDMETHODCALLTYPE *AddRef)(
514         IStreamSample* This);
515
516     ULONG (STDMETHODCALLTYPE *Release)(
517         IStreamSample* This);
518
519     /*** IStreamSample methods ***/
520     HRESULT (STDMETHODCALLTYPE *GetMediaStream)(
521         IStreamSample* This,
522         IMediaStream** ppMediaStream);
523
524     HRESULT (STDMETHODCALLTYPE *GetSampleTimes)(
525         IStreamSample* This,
526         STREAM_TIME* pStartTime,
527         STREAM_TIME* pEndTime,
528         STREAM_TIME* pCurrentTime);
529
530     HRESULT (STDMETHODCALLTYPE *SetSampleTimes)(
531         IStreamSample* This,
532         const STREAM_TIME* pStartTime,
533         const STREAM_TIME* pEndTime);
534
535     HRESULT (STDMETHODCALLTYPE *Update)(
536         IStreamSample* This,
537         DWORD dwFlags,
538         HANDLE hEvent,
539         PAPCFUNC pfnAPC,
540         DWORD dwAPCData);
541
542     HRESULT (STDMETHODCALLTYPE *CompletionStatus)(
543         IStreamSample* This,
544         DWORD dwFlags,
545         DWORD dwMilliseconds);
546
547 };
548
549 /*** IUnknown methods ***/
550 #define IStreamSample_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
551 #define IStreamSample_AddRef(p) (p)->lpVtbl->AddRef(p)
552 #define IStreamSample_Release(p) (p)->lpVtbl->Release(p)
553 /*** IStreamSample methods ***/
554 #define IStreamSample_GetMediaStream(p,a) (p)->lpVtbl->GetMediaStream(p,a)
555 #define IStreamSample_GetSampleTimes(p,a,b,c) (p)->lpVtbl->GetSampleTimes(p,a,b,c)
556 #define IStreamSample_SetSampleTimes(p,a,b) (p)->lpVtbl->SetSampleTimes(p,a,b)
557 #define IStreamSample_Update(p,a,b,c,d) (p)->lpVtbl->Update(p,a,b,c,d)
558 #define IStreamSample_CompletionStatus(p,a,b) (p)->lpVtbl->CompletionStatus(p,a,b)
559
560 #endif
561
562 #define IStreamSample_METHODS \
563     ICOM_MSVTABLE_COMPAT_FIELDS \
564     /*** IUnknown methods ***/ \
565     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
566     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
567     STDMETHOD_(ULONG,Release)(THIS) PURE; \
568     /*** IStreamSample methods ***/ \
569     STDMETHOD_(HRESULT,GetMediaStream)(THIS_ IMediaStream** ppMediaStream) PURE; \
570     STDMETHOD_(HRESULT,GetSampleTimes)(THIS_ STREAM_TIME* pStartTime, STREAM_TIME* pEndTime, STREAM_TIME* pCurrentTime) PURE; \
571     STDMETHOD_(HRESULT,SetSampleTimes)(THIS_ const STREAM_TIME* pStartTime, const STREAM_TIME* pEndTime) PURE; \
572     STDMETHOD_(HRESULT,Update)(THIS_ DWORD dwFlags, HANDLE hEvent, PAPCFUNC pfnAPC, DWORD dwAPCData) PURE; \
573     STDMETHOD_(HRESULT,CompletionStatus)(THIS_ DWORD dwFlags, DWORD dwMilliseconds) PURE;
574
575 HRESULT CALLBACK IStreamSample_GetMediaStream_Proxy(
576     IStreamSample* This,
577     IMediaStream** ppMediaStream);
578 void __RPC_STUB IStreamSample_GetMediaStream_Stub(
579     struct IRpcStubBuffer* This,
580     struct IRpcChannelBuffer* pRpcChannelBuffer,
581     PRPC_MESSAGE pRpcMessage,
582     DWORD* pdwStubPhase);
583 HRESULT CALLBACK IStreamSample_GetSampleTimes_Proxy(
584     IStreamSample* This,
585     STREAM_TIME* pStartTime,
586     STREAM_TIME* pEndTime,
587     STREAM_TIME* pCurrentTime);
588 void __RPC_STUB IStreamSample_GetSampleTimes_Stub(
589     struct IRpcStubBuffer* This,
590     struct IRpcChannelBuffer* pRpcChannelBuffer,
591     PRPC_MESSAGE pRpcMessage,
592     DWORD* pdwStubPhase);
593 HRESULT CALLBACK IStreamSample_SetSampleTimes_Proxy(
594     IStreamSample* This,
595     const STREAM_TIME* pStartTime,
596     const STREAM_TIME* pEndTime);
597 void __RPC_STUB IStreamSample_SetSampleTimes_Stub(
598     struct IRpcStubBuffer* This,
599     struct IRpcChannelBuffer* pRpcChannelBuffer,
600     PRPC_MESSAGE pRpcMessage,
601     DWORD* pdwStubPhase);
602 HRESULT CALLBACK IStreamSample_Update_Proxy(
603     IStreamSample* This,
604     DWORD dwFlags,
605     HANDLE hEvent,
606     PAPCFUNC pfnAPC,
607     DWORD dwAPCData);
608 void __RPC_STUB IStreamSample_Update_Stub(
609     struct IRpcStubBuffer* This,
610     struct IRpcChannelBuffer* pRpcChannelBuffer,
611     PRPC_MESSAGE pRpcMessage,
612     DWORD* pdwStubPhase);
613 HRESULT CALLBACK IStreamSample_CompletionStatus_Proxy(
614     IStreamSample* This,
615     DWORD dwFlags,
616     DWORD dwMilliseconds);
617 void __RPC_STUB IStreamSample_CompletionStatus_Stub(
618     struct IRpcStubBuffer* This,
619     struct IRpcChannelBuffer* pRpcChannelBuffer,
620     PRPC_MESSAGE pRpcMessage,
621     DWORD* pdwStubPhase);
622
623 #endif  /* __IStreamSample_INTERFACE_DEFINED__ */
624
625 #ifdef __cplusplus
626 }
627 #endif
628 #endif /* __WIDL_MMSTREAM_H */