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