• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1cpp_quote("/**")
2cpp_quote(" * This file is part of the mingw-w64 runtime package.")
3cpp_quote(" * No warranty is given; refer to the file DISCLAIMER within this package.")
4cpp_quote(" */")
5cpp_quote("")
6cpp_quote("#include <winapifamily.h>")
7cpp_quote("")
8cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
9cpp_quote("")
10
11#define CHARS_IN_GUID 39
12
13cpp_quote("#define CHARS_IN_GUID 39")
14cpp_quote("")
15
16/* GetTimeFormat is defined in winnls.h as
17 * either the W or A suffixed version */
18cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
19cpp_quote("#undef GetTimeFormat")
20cpp_quote("#endif")
21cpp_quote("")
22
23typedef struct _AMMediaType {
24  GUID majortype;
25  GUID subtype;
26  BOOL bFixedSizeSamples;
27  BOOL bTemporalCompression;
28  ULONG lSampleSize;
29  GUID formattype;
30  IUnknown *pUnk;
31  ULONG cbFormat;
32  [size_is (cbFormat)] BYTE *pbFormat;
33} AM_MEDIA_TYPE;
34
35cpp_quote("")
36typedef enum _PinDirection {
37  PINDIR_INPUT,
38  PINDIR_OUTPUT
39} PIN_DIRECTION;
40
41#define MAX_PIN_NAME 128
42#define MAX_FILTER_NAME 128
43
44cpp_quote("")
45cpp_quote("#define MAX_PIN_NAME 128")
46cpp_quote("#define MAX_FILTER_NAME 128")
47
48cpp_quote("")
49cpp_quote("#ifndef REFERENCE_TIME_DEFINED")
50cpp_quote("#define REFERENCE_TIME_DEFINED")
51typedef LONGLONG REFERENCE_TIME;
52cpp_quote("#endif")
53cpp_quote("")
54cpp_quote("#ifndef REFTIME_DEFINED")
55cpp_quote("#define REFTIME_DEFINED")
56typedef double REFTIME;
57cpp_quote("#endif")
58cpp_quote("")
59typedef DWORD_PTR HSEMAPHORE;
60typedef DWORD_PTR HEVENT;
61
62cpp_quote("")
63typedef struct _AllocatorProperties {
64  long cBuffers;
65  long cbBuffer;
66  long cbAlign;
67  long cbPrefix;
68} ALLOCATOR_PROPERTIES;
69
70cpp_quote("")
71interface IAMovieSetup;
72interface IEnumFilters;
73interface IEnumMediaTypes;
74interface IEnumPins;
75interface IBaseFilter;
76interface IFilterGraph;
77interface IMediaFilter;
78interface IMediaSample;
79interface IMemAllocator;
80interface IMemAllocatorCallbackTemp;
81interface IMemAllocatorNotifyCallbackTemp;
82interface IMemInputPin;
83interface IPin;
84interface IReferenceClock;
85
86cpp_quote("")
87[object, local, uuid (56a86891-0ad4-11ce-b03a-0020af0ba770), pointer_default (unique)]
88interface IPin : IUnknown {
89  typedef struct _PinInfo {
90    IBaseFilter *pFilter;
91    PIN_DIRECTION dir;
92    WCHAR achName[MAX_PIN_NAME];
93  } PIN_INFO;
94cpp_quote("")
95  HRESULT Connect ([in] IPin *pReceivePin, [in] const AM_MEDIA_TYPE *pmt);
96  HRESULT ReceiveConnection ([in] IPin *pConnector, [in] const AM_MEDIA_TYPE *pmt);
97  HRESULT Disconnect (void);
98  HRESULT ConnectedTo ([out] IPin **pPin);
99  HRESULT ConnectionMediaType ([out] AM_MEDIA_TYPE *pmt);
100  HRESULT QueryPinInfo ([out] PIN_INFO *pInfo);
101  HRESULT QueryDirection ([out] PIN_DIRECTION *pPinDir);
102  HRESULT QueryId ([out] LPWSTR *Id);
103  HRESULT QueryAccept ([in] const AM_MEDIA_TYPE *pmt);
104  HRESULT EnumMediaTypes ([out] IEnumMediaTypes **ppEnum);
105  HRESULT QueryInternalConnections ([out] IPin **apPin, [in, out] ULONG *nPin);
106  HRESULT EndOfStream (void);
107  HRESULT BeginFlush (void);
108  HRESULT EndFlush (void);
109  HRESULT NewSegment ([in] REFERENCE_TIME tStart, [in] REFERENCE_TIME tStop, [in] double dRate);
110}
111typedef IPin *PPIN;
112
113cpp_quote("")
114[object, local, uuid (56a86892-0ad4-11ce-b03a-0020af0ba770), pointer_default (unique)]
115interface IEnumPins : IUnknown {
116  HRESULT Next ([in] ULONG cPins, [out, size_is (cPins)] IPin **ppPins, [out] ULONG *pcFetched);
117  HRESULT Skip ([in] ULONG cPins);
118  HRESULT Reset (void);
119  HRESULT Clone ([out] IEnumPins **ppEnum);
120}
121typedef IEnumPins *PENUMPINS;
122
123cpp_quote("")
124[object, local, uuid (89c31040-846b-11ce-97d3-00aa0055595a), pointer_default (unique)]
125interface IEnumMediaTypes : IUnknown {
126  HRESULT Next ([in] ULONG cMediaTypes, [out, size_is (cMediaTypes)] AM_MEDIA_TYPE **ppMediaTypes, [out] ULONG *pcFetched);
127  HRESULT Skip ([in] ULONG cMediaTypes);
128  HRESULT Reset (void);
129  HRESULT Clone ([out] IEnumMediaTypes **ppEnum);
130}
131typedef IEnumMediaTypes *PENUMMEDIATYPES;
132
133cpp_quote("")
134[object, local, uuid (56a8689f-0ad4-11ce-b03a-0020af0ba770), pointer_default (unique)]
135interface IFilterGraph : IUnknown {
136  HRESULT AddFilter ([in] IBaseFilter *pFilter, [in, string] LPCWSTR pName);
137  HRESULT RemoveFilter ([in] IBaseFilter *pFilter);
138  HRESULT EnumFilters ([out] IEnumFilters **ppEnum);
139  HRESULT FindFilterByName ([in, string] LPCWSTR pName, [out] IBaseFilter **ppFilter);
140  HRESULT ConnectDirect ([in] IPin *ppinOut, [in] IPin *ppinIn, [in, unique] const AM_MEDIA_TYPE *pmt);
141  HRESULT Reconnect ([in] IPin *ppin);
142  HRESULT Disconnect ([in] IPin *ppin);
143  HRESULT SetDefaultSyncSource (void);
144}
145typedef IFilterGraph *PFILTERGRAPH;
146
147cpp_quote("")
148[object, local, uuid (56a86893-0ad4-11ce-b03a-0020af0ba770), pointer_default (unique)]
149interface IEnumFilters : IUnknown {
150  HRESULT Next ([in] ULONG cFilters, [out] IBaseFilter **ppFilter, [out] ULONG *pcFetched);
151  HRESULT Skip ([in] ULONG cFilters);
152  HRESULT Reset (void);
153  HRESULT Clone ([out] IEnumFilters **ppEnum);
154}
155typedef IEnumFilters *PENUMFILTERS;
156
157cpp_quote("")
158[object, local, uuid (56a86899-0ad4-11ce-b03a-0020af0ba770), pointer_default (unique)]
159interface IMediaFilter : IPersist {
160  typedef enum _FilterState {
161    State_Stopped,
162    State_Paused,
163    State_Running
164  } FILTER_STATE;
165cpp_quote("")
166  HRESULT Stop (void);
167  HRESULT Pause (void);
168  HRESULT Run (REFERENCE_TIME tStart);
169  HRESULT GetState ([in] DWORD dwMilliSecsTimeout, [out] FILTER_STATE *State);
170  HRESULT SetSyncSource ([in] IReferenceClock *pClock);
171  HRESULT GetSyncSource ([out] IReferenceClock **pClock);
172}
173typedef IMediaFilter *PMEDIAFILTER;
174
175cpp_quote("")
176[object, local, uuid (56a86895-0ad4-11ce-b03a-0020af0ba770), pointer_default (unique)]
177interface IBaseFilter : IMediaFilter {
178  typedef struct _FilterInfo {
179    WCHAR achName[MAX_FILTER_NAME];
180    IFilterGraph *pGraph;
181  } FILTER_INFO;
182cpp_quote("")
183  HRESULT EnumPins ([out] IEnumPins **ppEnum);
184  HRESULT FindPin ([in, string] LPCWSTR Id, [out] IPin **ppPin);
185  HRESULT QueryFilterInfo ([out] FILTER_INFO *pInfo);
186  HRESULT JoinFilterGraph ([in] IFilterGraph *pGraph, [in, string] LPCWSTR pName);
187  HRESULT QueryVendorInfo ([out, string] LPWSTR *pVendorInfo);
188}
189typedef IBaseFilter *PFILTER;
190
191cpp_quote("")
192[object, local, uuid (56a86897-0ad4-11ce-b03a-0020af0ba770), pointer_default (unique)]
193interface IReferenceClock : IUnknown {
194  HRESULT GetTime ([out] REFERENCE_TIME *pTime);
195  HRESULT AdviseTime ([in] REFERENCE_TIME baseTime, [in] REFERENCE_TIME streamTime, [in] HEVENT hEvent, [out] DWORD_PTR *pdwAdviseCookie);
196  HRESULT AdvisePeriodic ([in] REFERENCE_TIME startTime, [in] REFERENCE_TIME periodTime, [in] HSEMAPHORE hSemaphore, [out] DWORD_PTR *pdwAdviseCookie);
197  HRESULT Unadvise ([in] DWORD_PTR dwAdviseCookie);
198}
199typedef IReferenceClock *PREFERENCECLOCK;
200
201cpp_quote("")
202[object, local, uuid (ebec459c-2eca-4d42-a8af-30df557614b8), pointer_default (unique)]
203interface IReferenceClockTimerControl : IUnknown {
204  HRESULT SetDefaultTimerResolution (REFERENCE_TIME timerResolution);
205  HRESULT GetDefaultTimerResolution (REFERENCE_TIME *pTimerResolution);
206}
207
208cpp_quote("")
209[object, local, uuid (36b73885-c2c8-11cf-8b46-00805f6cef60), pointer_default (unique)]
210interface IReferenceClock2 : IReferenceClock {
211}
212typedef IReferenceClock2 *PREFERENCECLOCK2;
213
214cpp_quote("")
215[object, local, uuid (56a8689a-0ad4-11ce-b03a-0020af0ba770), pointer_default (unique)]
216interface IMediaSample : IUnknown {
217  HRESULT GetPointer ([out] BYTE **ppBuffer);
218  long GetSize (void);
219  HRESULT GetTime ([out] REFERENCE_TIME *pTimeStart, [out] REFERENCE_TIME *pTimeEnd);
220  HRESULT SetTime ([in] REFERENCE_TIME *pTimeStart, [in] REFERENCE_TIME *pTimeEnd);
221  HRESULT IsSyncPoint (void);
222  HRESULT SetSyncPoint (BOOL bIsSyncPoint);
223  HRESULT IsPreroll (void);
224  HRESULT SetPreroll (BOOL bIsPreroll);
225  long GetActualDataLength (void);
226  HRESULT SetActualDataLength (long);
227  HRESULT GetMediaType ([out] AM_MEDIA_TYPE **ppMediaType);
228  HRESULT SetMediaType ([in] AM_MEDIA_TYPE *pMediaType);
229  HRESULT IsDiscontinuity (void);
230  HRESULT SetDiscontinuity (BOOL bDiscontinuity);
231  HRESULT GetMediaTime ([out] LONGLONG *pTimeStart, [out] LONGLONG *pTimeEnd);
232  HRESULT SetMediaTime ([in] LONGLONG *pTimeStart, [in] LONGLONG *pTimeEnd);
233}
234typedef IMediaSample *PMEDIASAMPLE;
235
236cpp_quote("")
237enum tagAM_SAMPLE_PROPERTY_FLAGS {
238  AM_SAMPLE_SPLICEPOINT = 0x1,
239  AM_SAMPLE_PREROLL = 0x2,
240  AM_SAMPLE_DATADISCONTINUITY = 0x4,
241  AM_SAMPLE_TYPECHANGED = 0x8,
242  AM_SAMPLE_TIMEVALID = 0x10,
243  AM_SAMPLE_TIMEDISCONTINUITY = 0x40,
244  AM_SAMPLE_FLUSH_ON_PAUSE = 0x80,
245  AM_SAMPLE_STOPVALID = 0x100,
246  AM_SAMPLE_ENDOFSTREAM = 0x200,
247  AM_STREAM_MEDIA = 0,
248  AM_STREAM_CONTROL = 1
249};
250
251cpp_quote("")
252typedef struct tagAM_SAMPLE2_PROPERTIES {
253  DWORD cbData;
254  DWORD dwTypeSpecificFlags;
255  DWORD dwSampleFlags;
256  LONG lActual;
257  REFERENCE_TIME tStart;
258  REFERENCE_TIME tStop;
259  DWORD dwStreamId;
260  AM_MEDIA_TYPE *pMediaType;
261  BYTE *pbBuffer;
262  LONG cbBuffer;
263} AM_SAMPLE2_PROPERTIES;
264
265cpp_quote("")
266[object, local, uuid (36b73884-c2c8-11cf-8b46-00805f6cef60), pointer_default (unique)]
267interface IMediaSample2 : IMediaSample {
268  HRESULT GetProperties ([in] DWORD cbProperties, [out, size_is (cbProperties)] BYTE *pbProperties);
269  HRESULT SetProperties ([in] DWORD cbProperties, [in, size_is (cbProperties)] const BYTE *pbProperties);
270}
271typedef IMediaSample2 *PMEDIASAMPLE2;
272
273cpp_quote("")
274[object, uuid (68961e68-832b-41ea-BC91-63593f3e70e3), pointer_default (unique)]
275interface IMediaSample2Config : IUnknown {
276  HRESULT GetSurface ([out] IUnknown **ppDirect3DSurface9);
277};
278
279#define AM_GBF_PREVFRAMESKIPPED 1
280#define AM_GBF_NOTASYNCPOINT 2
281
282cpp_quote("")
283cpp_quote("#define AM_GBF_PREVFRAMESKIPPED 1")
284cpp_quote("#define AM_GBF_NOTASYNCPOINT 2")
285cpp_quote("#define AM_GBF_NOWAIT 4")
286cpp_quote("#define AM_GBF_NODDSURFACELOCK 8")
287
288cpp_quote("")
289[object, local, uuid (56a8689c-0ad4-11ce-b03a-0020af0ba770), pointer_default (unique)]
290interface IMemAllocator : IUnknown {
291  HRESULT SetProperties ([in] ALLOCATOR_PROPERTIES *pRequest, [out] ALLOCATOR_PROPERTIES *pActual);
292  HRESULT GetProperties ([out] ALLOCATOR_PROPERTIES *pProps);
293  HRESULT Commit (void);
294  HRESULT Decommit (void);
295  HRESULT GetBuffer ([out] IMediaSample **ppBuffer, [in, unique] REFERENCE_TIME *pStartTime, [in, unique] REFERENCE_TIME *pEndTime, [in] DWORD dwFlags);
296  HRESULT ReleaseBuffer ([in] IMediaSample *pBuffer);
297}
298typedef IMemAllocator *PMEMALLOCATOR;
299
300cpp_quote("")
301[object, local, uuid (379a0cf0-c1de-11d2-abf5-00a0c905f375), pointer_default (unique)]
302interface IMemAllocatorCallbackTemp : IMemAllocator {
303  HRESULT SetNotify ([in] IMemAllocatorNotifyCallbackTemp *pNotify);
304  HRESULT GetFreeCount ([out] LONG *plBuffersFree);
305}
306
307cpp_quote("")
308[object, local, uuid (92980b30-c1de-11d2-abf5-00a0c905f375), pointer_default (unique)]
309interface IMemAllocatorNotifyCallbackTemp : IUnknown {
310  HRESULT NotifyRelease ();
311}
312
313cpp_quote("")
314[object, local, uuid (56a8689d-0ad4-11ce-b03a-0020af0ba770), pointer_default (unique)]
315interface IMemInputPin : IUnknown {
316  HRESULT GetAllocator ([out] IMemAllocator **ppAllocator);
317  HRESULT NotifyAllocator ([in] IMemAllocator *pAllocator, [in] BOOL bReadOnly);
318  HRESULT GetAllocatorRequirements ([out] ALLOCATOR_PROPERTIES *pProps);
319  HRESULT Receive ([in] IMediaSample *pSample);
320  HRESULT ReceiveMultiple ([in, size_is (nSamples)] IMediaSample **pSamples, [in] long nSamples, [out] long *nSamplesProcessed);
321  HRESULT ReceiveCanBlock ();
322}
323typedef IMemInputPin *PMEMINPUTPIN;
324
325cpp_quote("")
326[object, local, uuid (a3d8cec0-7e5a-11cf-bbc5-00805f6cef20), pointer_default (unique)]
327interface IAMovieSetup : IUnknown {
328  HRESULT Register ();
329  HRESULT Unregister ();
330}
331typedef IAMovieSetup *PAMOVIESETUP;
332
333cpp_quote("")
334typedef enum AM_SEEKING_SeekingFlags {
335  AM_SEEKING_NoPositioning = 0x0,
336  AM_SEEKING_AbsolutePositioning = 0x1,
337  AM_SEEKING_RelativePositioning = 0x2,
338  AM_SEEKING_IncrementalPositioning = 0x3,
339  AM_SEEKING_PositioningBitsMask = 0x3,
340  AM_SEEKING_SeekToKeyFrame = 0x4,
341  AM_SEEKING_ReturnTime = 0x8,
342  AM_SEEKING_Segment = 0x10,
343  AM_SEEKING_NoFlush = 0x20
344} AM_SEEKING_SEEKING_FLAGS;
345
346cpp_quote("")
347typedef enum AM_SEEKING_SeekingCapabilities {
348  AM_SEEKING_CanSeekAbsolute = 0x1,
349  AM_SEEKING_CanSeekForwards = 0x2,
350  AM_SEEKING_CanSeekBackwards = 0x4,
351  AM_SEEKING_CanGetCurrentPos = 0x8,
352  AM_SEEKING_CanGetStopPos = 0x10,
353  AM_SEEKING_CanGetDuration = 0x20,
354  AM_SEEKING_CanPlayBackwards = 0x40,
355  AM_SEEKING_CanDoSegments = 0x80,
356  AM_SEEKING_Source = 0x100
357} AM_SEEKING_SEEKING_CAPABILITIES;
358
359cpp_quote("")
360[object, local, uuid (36b73880-c2c8-11cf-8b46-00805f6cef60), pointer_default (unique)]
361interface IMediaSeeking : IUnknown {
362  HRESULT GetCapabilities ([out] DWORD *pCapabilities);
363  HRESULT CheckCapabilities ([in, out] DWORD *pCapabilities);
364  HRESULT IsFormatSupported ([in] const GUID *pFormat);
365  HRESULT QueryPreferredFormat ([out] GUID *pFormat);
366  HRESULT GetTimeFormat ([out] GUID *pFormat);
367  HRESULT IsUsingTimeFormat ([in] const GUID *pFormat);
368  HRESULT SetTimeFormat ([in] const GUID *pFormat);
369  HRESULT GetDuration ([out] LONGLONG *pDuration);
370  HRESULT GetStopPosition ([out] LONGLONG *pStop);
371  HRESULT GetCurrentPosition ([out] LONGLONG *pCurrent);
372  HRESULT ConvertTimeFormat ([out] LONGLONG *pTarget, [in] const GUID *pTargetFormat, [in] LONGLONG Source, [in] const GUID *pSourceFormat);
373  HRESULT SetPositions ([in, out] LONGLONG *pCurrent, [in] DWORD dwCurrentFlags, [in, out] LONGLONG *pStop, [in] DWORD dwStopFlags);
374  HRESULT GetPositions ([out] LONGLONG *pCurrent, [out] LONGLONG *pStop);
375  HRESULT GetAvailable ([out] LONGLONG *pEarliest, [out] LONGLONG *pLatest);
376  HRESULT SetRate ([in] double dRate);
377  HRESULT GetRate ([out] double *pdRate);
378  HRESULT GetPreroll ([out] LONGLONG *pllPreroll);
379}
380typedef IMediaSeeking *PMEDIASEEKING;
381cpp_quote("")
382cpp_quote("enum tagAM_MEDIAEVENT_FLAGS {")
383cpp_quote("  AM_MEDIAEVENT_NONOTIFY = 0x1")
384cpp_quote("};")
385
386cpp_quote("")
387cpp_quote("#endif")
388