- adapted kernel32 so that it no longer (directly) manages console
[wine.git] / include / strmif.h
blob66dd8b57960c5d47b577cab648ccdc443494dfd4
1 /*
2 * Copyright (C) 2002 Lionel Ulmer
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef __STRMIF_INCLUDED__
20 #define __STRMIF_INCLUDED__
22 #include "windef.h"
23 #include "wingdi.h"
24 #include "objbase.h"
26 /* FilterGraph object / interface */
27 typedef struct IFilterGraph IFilterGraph;
28 typedef struct IBaseFilter IBaseFilter;
29 typedef struct IEnumFilters IEnumFilters;
30 typedef struct IPin IPin;
31 typedef struct IEnumPins IEnumPins;
32 typedef struct IEnumMediaTypes IEnumMediaTypes;
33 typedef struct IMediaFilter IMediaFilter;
34 typedef struct IReferenceClock IReferenceClock;
35 typedef struct IGraphBuilder IGraphBuilder;
36 typedef struct IMediaSeeking IMediaSeeking;
38 typedef LONGLONG REFERENCE_TIME;
39 typedef double REFTIME;
41 typedef struct _MediaType {
42 GUID majortype;
43 GUID subtype;
44 BOOL bFixedSizeSamples;
45 BOOL bTemporalCompression;
46 ULONG lSampleSize;
47 GUID formattype;
48 IUnknown *pUnk;
49 ULONG cbFormat;
50 /* [size_is] */ BYTE *pbFormat;
51 } AM_MEDIA_TYPE;
53 #define MAX_FILTER_NAME 128
54 typedef struct _FilterInfo {
55 WCHAR achName[MAX_FILTER_NAME];
56 IFilterGraph *pGraph;
57 } FILTER_INFO;
59 typedef enum _FilterState {
60 State_Stopped = 0,
61 State_Paused = 1,
62 State_Running = 2
63 } FILTER_STATE;
65 typedef enum _PinDirection {
66 PINDIR_INPUT = 0,
67 PINDIR_OUTPUT = 1
68 } PIN_DIRECTION;
70 #define MAX_PIN_NAME 128
71 typedef struct _PinInfo {
72 IBaseFilter *pFilter;
73 PIN_DIRECTION dir;
74 WCHAR achName[MAX_PIN_NAME];
75 } PIN_INFO;
77 typedef DWORD_PTR HSEMAPHORE;
78 typedef DWORD_PTR HEVENT;
80 #define INTERFACE IPin
81 #define IPin_METHODS \
82 IUnknown_METHODS \
83 STDMETHOD(Connect)(THIS_ IPin * pReceivePin, AM_MEDIA_TYPE * pmt) PURE; \
84 STDMETHOD(ReceiveConnection)(THIS_ IPin * pConnector, AM_MEDIA_TYPE * pmt) PURE; \
85 STDMETHOD(Disconnect)(THIS) PURE; \
86 STDMETHOD(ConnectedTo)(THIS_ IPin ** pPin) PURE; \
87 STDMETHOD(ConnectionMediaType)(THIS_ AM_MEDIA_TYPE * pmt) PURE; \
88 STDMETHOD(QueryPinInfo)(THIS_ PIN_INFO * pInfo) PURE; \
89 STDMETHOD(QueryDirection)(THIS_ PIN_DIRECTION * pPinDir) PURE; \
90 STDMETHOD(QueryId)(THIS_ LPWSTR * Id) PURE; \
91 STDMETHOD(QueryAccept)(THIS_ AM_MEDIA_TYPE * pmt) PURE; \
92 STDMETHOD(EnumMediaTypes)(THIS_ IEnumMediaTypes ** ppEnum) PURE; \
93 STDMETHOD(QueryInternalConnections)(THIS_ IPin ** apPin, ULONG * nPin) PURE; \
94 STDMETHOD(EndOfStream)(THIS) PURE; \
95 STDMETHOD(BeginFlush)(THIS) PURE; \
96 STDMETHOD(EndFlush)(THIS) PURE; \
97 STDMETHOD(NewSegment)(THIS_ REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate) PURE;
98 ICOM_DEFINE(IPin,IUnknown)
99 #undef INTERFACE
101 #ifdef COBJMACROS
102 /*** IUnknown methods ***/
103 #define IPin_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
104 #define IPin_AddRef(p) (p)->lpVtbl->AddRef(p)
105 #define IPin_Release(p) (p)->lpVtbl->Release(p)
106 /*** IPin methods ***/
107 #define IPin_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b)
108 #define IPin_ReceiveConnection(p,a,b) (p)->lpVtbl->ReceiveConnection(p,a,b)
109 #define IPin_Disconnect(p) (p)->lpVtbl->Disconnect(p)
110 #define IPin_ConnectedTo(p,a) (p)->lpVtbl->ConnectedTo(p,a)
111 #define IPin_ConnectionMediaType(p,a) (p)->lpVtbl->ConnectionMediaType(p,a)
112 #define IPin_QueryPinInfo(p,a) (p)->lpVtbl->QueryPinInfo(p,a)
113 #define IPin_QueryDirection(p,a) (p)->lpVtbl->QueryDirection(p,a)
114 #define IPin_QueryId(p,a) (p)->lpVtbl->QueryId(p,a)
115 #define IPin_QueryAccept(p,a) (p)->lpVtbl->QueryAccept(p,a)
116 #define IPin_EnumMediaTypes(p,a) (p)->lpVtbl->EnumMediaTypes(p,a)
117 #define IPin_QueryInternalConnections(p,a,b) (p)->lpVtbl->QueryInternalConnections(p,a,b)
118 #define IPin_EndOfStream(p) (p)->lpVtbl->EndOfStream(p)
119 #define IPin_BeginFlush(p) (p)->lpVtbl->BeginFlush(p)
120 #define IPin_EndFlush(p) (p)->lpVtbl->EndFlush(p)
121 #define IPin_NewSegment(p,a,b,c) (p)->lpVtbl->NewSegment(p,a,b,c)
122 #endif
124 #define INTERFACE IEnumPins
125 #define IEnumPins_METHODS \
126 IUnknown_METHODS \
127 STDMETHOD(Next)(THIS_ ULONG cPins, IPin ** ppPins, ULONG * pcFetched) PURE; \
128 STDMETHOD(Skip)(THIS_ ULONG cPins) PURE; \
129 STDMETHOD(Reset)(THIS) PURE; \
130 STDMETHOD(Clone)(THIS_ IEnumPins ** ppEnum) PURE;
131 ICOM_DEFINE(IEnumPins,IUnknown)
132 #undef INTERFACE
134 #ifdef COBJMACROS
135 /*** IUnknown methods ***/
136 #define IEnumPins_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
137 #define IEnumPins_AddRef(p) (p)->lpVtbl->AddRef(p)
138 #define IEnumPins_Release(p) (p)->lpVtbl->Release(p)
139 /*** IEnumPins methods ***/
140 #define IEnumPins_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
141 #define IEnumPins_Skip(p,a) (p)->lpVtbl->Skip(p,a)
142 #define IEnumPins_Reset(p) (p)->lpVtbl->Reset(p)
143 #define IEnumPins_Clone(p,a) (p)->lpVtbl->Clone(p,a)
144 #endif
146 #define INTERFACE IMediaFilter
147 #define IMediaFilter_METHODS \
148 IPersist_METHODS \
149 STDMETHOD(Stop)(THIS) PURE; \
150 STDMETHOD(Pause)(THIS) PURE; \
151 STDMETHOD(Run)(THIS_ REFERENCE_TIME tStart) PURE; \
152 STDMETHOD(GetState)(THIS_ DWORD dwMilliSecsTimeout, FILTER_STATE * State) PURE; \
153 STDMETHOD(SetSyncSource)(THIS_ IReferenceClock * pClock) PURE; \
154 STDMETHOD(GetSyncSource)(THIS_ IReferenceClock ** pClock) PURE;
155 ICOM_DEFINE(IMediaFilter,IPersist)
156 #undef INTERFACE
158 #ifdef COBJMACROS
159 /*** IUnknown methods ***/
160 #define IMediaFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
161 #define IMediaFilter_AddRef(p) (p)->lpVtbl->AddRef(p)
162 #define IMediaFilter_Release(p) (p)->lpVtbl->Release(p)
163 /*** IPersist methods ***/
164 #define IMediaFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
165 /*** IMediaFilter methods ***/
166 #define IMediaFilter_Stop(p) (p)->lpVtbl->Stop(p)
167 #define IMediaFilter_Pause(p) (p)->lpVtbl->Pause(p)
168 #define IMediaFilter_Run(p,a) (p)->lpVtbl->Run(p,a)
169 #define IMediaFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b)
170 #define IMediaFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a)
171 #define IMediaFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a)
172 #endif
174 #define INTERFACE IBaseFilter
175 #define IBaseFilter_METHODS \
176 IMediaFilter_METHODS \
177 STDMETHOD(EnumPins)(THIS_ IEnumPins ** ppEnum) PURE; \
178 STDMETHOD(FindPin)(THIS_ LPCWSTR Id, IPin ** ppPin) PURE; \
179 STDMETHOD(QueryFilterInfo)(THIS_ FILTER_INFO * pInfo) PURE; \
180 STDMETHOD(JoinFilterGraph)(THIS_ IFilterGraph * pGraph, LPCWSTR pName) PURE; \
181 STDMETHOD(QueryVendorInfo)(THIS_ LPWSTR * pVendorInfo) PURE;
182 ICOM_DEFINE(IBaseFilter,IMediaFilter)
183 #undef INTERFACE
185 #ifdef COBJMACROS
186 /*** IUnknown methods ***/
187 #define IBaseFilter_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
188 #define IBaseFilter_AddRef(p) (p)->lpVtbl->AddRef(p)
189 #define IBaseFilter_Release(p) (p)->lpVtbl->Release(p)
190 /*** IPersist methods ***/
191 #define IBaseFilter_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
192 /*** IMediaFilter methods ***/
193 #define IBaseFilter_Stop(p) (p)->lpVtbl->Stop(p)
194 #define IBaseFilter_Pause(p) (p)->lpVtbl->Pause(p)
195 #define IBaseFilter_Run(p,a) (p)->lpVtbl->Run(p,a)
196 #define IBaseFilter_GetState(p,a,b) (p)->lpVtbl->GetState(p,a,b)
197 #define IBaseFilter_SetSyncSource(p,a) (p)->lpVtbl->SetSyncSource(p,a)
198 #define IBaseFilter_GetSyncSource(p,a) (p)->lpVtbl->GetSyncSource(p,a)
199 /*** IBaseFilter methods ***/
200 #define IBaseFilter_EnumPins(p,a) (p)->lpVtbl->EnumPins(p,a)
201 #define IBaseFilter_FindPin(p,a,b) (p)->lpVtbl->FindPin(p,a,b)
202 #define IBaseFilter_QueryFilterInfo(p,a) (p)->lpVtbl->QueryFilterInfo(p,a)
203 #define IBaseFilter_JoinFilterGraph(p,a,b) (p)->lpVtbl->JoinFilterGraph(p,a,b)
204 #define IBaseFilter_QueryVendorInfo(p,a) (p)->lpVtbl->QueryVendorInfo(p,a)
205 #endif
207 #define INTERFACE IFilterGraph
208 #define IFilterGraph_METHODS \
209 IUnknown_METHODS \
210 STDMETHOD(AddFilter)(THIS_ IBaseFilter * pFilter, LPCWSTR pName) PURE; \
211 STDMETHOD(RemoveFilter)(THIS_ IBaseFilter * pFilter) PURE; \
212 STDMETHOD(EnumFilter)(THIS_ IEnumFilters ** ppEnum) PURE; \
213 STDMETHOD(FindFilterByName)(THIS_ LPCWSTR pName, IBaseFilter ** ppFilter) PURE; \
214 STDMETHOD(ConnectDirect)(THIS_ IPin * ppinIn, IPin * ppinOut, const AM_MEDIA_TYPE * pmt) PURE; \
215 STDMETHOD(Reconnect)(THIS_ IPin * ppin) PURE; \
216 STDMETHOD(Disconnect)(THIS_ IPin * ppin) PURE; \
217 STDMETHOD(SetDefaultSyncSource)(THIS) PURE;
218 ICOM_DEFINE(IFilterGraph,IUnknown)
219 #undef INTERFACE
221 #ifdef COBJMACROS
222 /*** IUnknown methods ***/
223 #define IFilterGraph_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
224 #define IFilterGraph_AddRef(p) (p)->lpVtbl->AddRef(p)
225 #define IFilterGraph_Release(p) (p)->lpVtbl->Release(p)
226 /*** IFilterGraph methods ***/
227 #define IFilterGraph_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b)
228 #define IFilterGraph_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a)
229 #define IFilterGraph_EnumFilter(p,a) (p)->lpVtbl->EnumFilter(p,a)
230 #define IFilterGraph_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b)
231 #define IFilterGraph_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c)
232 #define IFilterGraph_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a)
233 #define IFilterGraph_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a)
234 #define IFilterGraph_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p)
235 #endif
237 #define INTERFACE IEnumFilters
238 #define IEnumFilters_METHODS \
239 IUnknown_METHODS \
240 STDMETHOD(Next)(THIS_ ULONG cFilters, IBaseFilter ** ppFilter, ULONG * pcFetched) PURE; \
241 STDMETHOD(Skip)(THIS_ ULONG cFilters) PURE; \
242 STDMETHOD(Reset)(THIS) PURE; \
243 STDMETHOD(Clone)(THIS_ IEnumFilters ** ppEnum) PURE;
244 ICOM_DEFINE(IEnumFilters,IUnknown)
245 #undef INTERFACE
247 #ifdef COBJMACROS
248 /*** IUnknown methods ***/
249 #define IEnumFilters_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
250 #define IEnumFilters_AddRef(p) (p)->lpVtbl->AddRef(p)
251 #define IEnumFilters_Release(p) (p)->lpVtbl->Release(p)
252 /*** IEnumFilters methods ***/
253 #define IEnumFilters_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
254 #define IEnumFilters_Skip(p,a) (p)->lpVtbl->Skip(p,a)
255 #define IEnumFilters_Reset(p) (p)->lpVtbl->Reset(p)
256 #define IEnumFilters_Clone(p,a) (p)->lpVtbl->Clone(p,a)
257 #endif
259 #define INTERFACE IEnumMediaTypes
260 #define IEnumMediaTypes_METHODS \
261 IUnknown_METHODS \
262 STDMETHOD(Next)(THIS_ ULONG cMediaTypes, AM_MEDIA_TYPE ** ppMediaTypes, ULONG * pcFetched) PURE; \
263 STDMETHOD(Skip)(THIS_ ULONG cMediaTypes) PURE; \
264 STDMETHOD(Reset)(THIS) PURE; \
265 STDMETHOD(Clone)(THIS_ IEnumMediaTypes ** ppEnum) PURE;
266 ICOM_DEFINE(IEnumMediaTypes,IUnknown)
267 #undef INTERFACE
269 #ifdef COBJMACROS
270 /*** IUnknown methods ***/
271 #define IEnumMediaTypes_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
272 #define IEnumMediaTypes_AddRef(p) (p)->lpVtbl->AddRef(p)
273 #define IEnumMediaTypes_Release(p) (p)->lpVtbl->Release(p)
274 /*** IEnumMediaTypes methods ***/
275 #define IEnumMediaTypes_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
276 #define IEnumMediaTypes_Skip(p,a) (p)->lpVtbl->Skip(p,a)
277 #define IEnumMediaTypes_Reset(p) (p)->lpVtbl->Reset(p)
278 #define IEnumMediaTypes_Clone(p,a) (p)->lpVtbl->Clone(p,a)
279 #endif
281 #define INTERFACE IReferenceClock
282 #define IReferenceClock_METHODS \
283 IUnknown_METHODS \
284 STDMETHOD(GetTime)(THIS_ REFERENCE_TIME * pTime) PURE; \
285 STDMETHOD(AdviseTime)(THIS_ REFERENCE_TIME baseTime, REFERENCE_TIME streamTime, HEVENT hEvent, DWORD_PTR * pdwAdviseCookie) PURE; \
286 STDMETHOD(AdvisePeriodic)(THIS_ REFERENCE_TIME startTime, REFERENCE_TIME periodTime, HSEMAPHORE hSemaphore, DWORD_PTR * pdwAdviseCookie) PURE; \
287 STDMETHOD(Unadvise)(THIS_ DWORD_PTR dwAdviseCookie) PURE;
288 ICOM_DEFINE(IReferenceClock,IUnknown)
289 #undef INTERFACE
291 #ifdef COBJMACROS
292 /*** IUnknown methods ***/
293 #define IReferenceClock_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
294 #define IReferenceClock_AddRef(p) (p)->lpVtbl->AddRef(p)
295 #define IReferenceClock_Release(p) (p)->lpVtbl->Release(p)
296 /*** IReferenceClock methods ***/
297 #define IReferenceClock_GetTime(p,a) (p)->lpVtbl->GetTime(p,a)
298 #define IReferenceClock_AdviseTime(p,a,b,c,d) (p)->lpVtbl->AdviseTime(p,a,b,c,d)
299 #define IReferenceClock_AdvisePeriodic(p,a,b,c,d) (p)->lpVtbl->AdvisePeriodic(p,a,b,c,d)
300 #define IReferenceClock_Unadvise(p,a) (p)->lpVtbl->Unadvise(p,a)
301 #endif
303 #define INTERFACE IGraphBuilder
304 #define IGraphBuilder_METHODS \
305 IFilterGraph_METHODS \
306 STDMETHOD(Connect)(THIS_ IPin * ppinOut, IPin * ppinIn) PURE; \
307 STDMETHOD(Render)(THIS_ IPin * ppinOut) PURE; \
308 STDMETHOD(RenderFile)(THIS_ LPCWSTR lpcwstrFile, LPCWSTR lpcwstrPlayList) PURE; \
309 STDMETHOD(AddSourceFilter)(THIS_ LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter ** ppFilter) PURE; \
310 STDMETHOD(SetLogFile)(THIS_ DWORD_PTR hFile) PURE; \
311 STDMETHOD(Abort)(THIS) PURE; \
312 STDMETHOD(ShouldOperationContinue)(THIS) PURE;
313 ICOM_DEFINE(IGraphBuilder,IFilterGraph)
314 #undef INTERFACE
316 #ifdef COBJMACROS
317 /*** IUnknown methods ***/
318 #define IGraphBuilder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
319 #define IGraphBuilder_AddRef(p) (p)->lpVtbl->AddRef(p)
320 #define IGraphBuilder_Release(p) (p)->lpVtbl->Release(p)
321 /*** IFilterGraph methods ***/
322 #define IGraphBuilder_AddFilter(p,a,b) (p)->lpVtbl->AddFilter(p,a,b)
323 #define IGraphBuilder_RemoveFilter(p,a) (p)->lpVtbl->RemoveFilter(p,a)
324 #define IGraphBuilder_EnumFilter(p,a) (p)->lpVtbl->EnumFilter(p,a)
325 #define IGraphBuilder_FindFilterByName(p,a,b) (p)->lpVtbl->FindFilterByName(p,a,b)
326 #define IGraphBuilder_ConnectDirect(p,a,b,c) (p)->lpVtbl->ConnectDirect(p,a,b,c)
327 #define IGraphBuilder_Reconnect(p,a) (p)->lpVtbl->Reconnect(p,a)
328 #define IGraphBuilder_Disconnect(p,a) (p)->lpVtbl->Disconnect(p,a)
329 #define IGraphBuilder_SetDefaultSyncSource(p) (p)->lpVtbl->SetDefaultSyncSource(p)
330 /*** IGraphBuilder methods ***/
331 #define IGraphBuilder_Connect(p,a,b) (p)->lpVtbl->Connect(p,a,b)
332 #define IGraphBuilder_Render(p,a) (p)->lpVtbl->Render(p,a)
333 #define IGraphBuilder_RenderFile(p,a,b) (p)->lpVtbl->RenderFile(p,a,b)
334 #define IGraphBuilder_AddSourceFilter(p,a,b,c) (p)->lpVtbl->AddSourceFilter(p,a,b,c)
335 #define IGraphBuilder_SetLogFile(p,a) (p)->lpVtbl->SetLogFile(p,a)
336 #define IGraphBuilder_Abort(p) (p)->lpVtbl->Abort(p)
337 #define IGraphBuilder_ShouldOperationContinue(p) (p)->lpVtbl->ShouldOperationContinue(p)
338 #endif
340 #define INTERFACE IMediaSeeking
341 #define IMediaSeeking_METHODS \
342 IUnknown_METHODS \
343 STDMETHOD(GetCapabilities)(THIS_ DWORD * pCapabilities) PURE; \
344 STDMETHOD(CheckCapabilities)(THIS_ DWORD * pCapabilities) PURE; \
345 STDMETHOD(IsFormatSupported)(THIS_ GUID * pFormat) PURE; \
346 STDMETHOD(QueryPreferredFormat)(THIS_ GUID * pFormat) PURE; \
347 STDMETHOD(GetTimeFormat)(THIS_ GUID * pFormat) PURE; \
348 STDMETHOD(IsUsingTimeFormat)(THIS_ GUID * pFormat) PURE; \
349 STDMETHOD(SetTimeFormat)(THIS_ GUID * pFormat) PURE; \
350 STDMETHOD(GetDuration)(THIS_ LONGLONG * pDuration) PURE; \
351 STDMETHOD(GetStopPosition)(THIS_ LONGLONG * pStop) PURE; \
352 STDMETHOD(GetCurrentPosition)(THIS_ LONGLONG * pCurrent) PURE; \
353 STDMETHOD(ConvertTimeFormat)(THIS_ LONGLONG * pTarget, GUID * pTargetFormat, LONGLONG Source, GUID * pSourceFormat) PURE; \
354 STDMETHOD(SetPositions)(THIS_ LONGLONG * pCurrent, DWORD dwCurrentFlags, LONGLONG * pStop, DWORD dwStopFlags) PURE; \
355 STDMETHOD(GetPositions)(THIS_ LONGLONG * pCurrent, LONGLONG * pStop) PURE; \
356 STDMETHOD(GetAvailable)(THIS_ LONGLONG * pEarliest, LONGLONG * pLatest) PURE; \
357 STDMETHOD(SetRate)(THIS_ double dRate) PURE; \
358 STDMETHOD(GetRate)(THIS_ double * pdRate) PURE; \
359 STDMETHOD(GetPreroll)(THIS_ LONGLONG * pllPreroll) PURE;
360 ICOM_DEFINE(IMediaSeeking,IUnknown)
361 #undef INTERFACE
363 #ifdef COBJMACROS
364 /*** IUnknown methods ***/
365 #define IMediaSeeking_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
366 #define IMediaSeeking_AddRef(p) (p)->lpVtbl->AddRef(p)
367 #define IMediaSeeking_Release(p) (p)->lpVtbl->Release(p)
368 /*** IMediaSeeking methods ***/
369 #define IMediaSeeking_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
370 #define IMediaSeeking_CheckCapabilities(p,a) (p)->lpVtbl->CheckCapabilities(p,a)
371 #define IMediaSeeking_IsFormatSupported(p,a) (p)->lpVtbl->IsFormatSupported(p,a)
372 #define IMediaSeeking_QueryPreferredFormat(p,a) (p)->lpVtbl->QueryPreferredFormat(p,a)
373 #define IMediaSeeking_GetTimeFormat(p,a) (p)->lpVtbl->GetTimeFormat(p,a)
374 #define IMediaSeeking_IsUsingTimeFormat(p,a) (p)->lpVtbl->IsUsingTimeFormat(p,a)
375 #define IMediaSeeking_SetTimeFormat(p,a) (p)->lpVtbl->SetTimeFormat(p,a)
376 #define IMediaSeeking_GetDuration(p,a) (p)->lpVtbl->GetDuration(p,a)
377 #define IMediaSeeking_GetStopPosition(p,a) (p)->lpVtbl->GetStopPosition(p,a)
378 #define IMediaSeeking_GetCurrentPosition(p,a) (p)->lpVtbl->GetCurrentPosition(p,a)
379 #define IMediaSeeking_ConvertTimeFormat(p,a,b,c,d) (p)->lpVtbl->ConvertTimeFormat(p,a,b,c,d)
380 #define IMediaSeeking_SetPositions(p,a,b,c,d) (p)->lpVtbl->SetPositions(p,a,b,c,d)
381 #define IMediaSeeking_GetPositions(p,a,b) (p)->lpVtbl->GetPositions(p,a,b)
382 #define IMediaSeeking_GetAvailable(p,a,b) (p)->lpVtbl->GetAvailable(p,a,b)
383 #define IMediaSeeking_SetRate(p,a) (p)->lpVtbl->SetRate(p,a)
384 #define IMediaSeeking_GetRate(p,a) (p)->lpVtbl->GetRate(p,a)
385 #define IMediaSeeking_GetPreroll(p,a) (p)->lpVtbl->GetPreroll(p,a)
386 #endif
388 #endif /* __STRMIF_INCLUDED__ */