2 * Copyright (C) 2015 Austin English
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef __WINE_MFAPI_H
20 #define __WINE_MFAPI_H
22 #include <mfobjects.h>
26 #if defined(__cplusplus)
30 #if !defined(MF_VERSION)
31 /* Default to Windows XP */
32 #define MF_SDK_VERSION 0x0001
33 #define MF_API_VERSION 0x0070
34 #define MF_VERSION (MF_SDK_VERSION << 16 | MF_API_VERSION)
37 #define MFSTARTUP_NOSOCKET 0x1
38 #define MFSTARTUP_LITE (MFSTARTUP_NOSOCKET)
39 #define MFSTARTUP_FULL 0
42 #define MAKEFOURCC(ch0, ch1, ch2, ch3) \
43 ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
44 ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
47 #define DEFINE_MEDIATYPE_GUID(name, format) \
48 DEFINE_GUID(name, format, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
50 #ifndef DIRECT3D_VERSION
51 #define D3DFMT_X8R8G8B8 22
54 DEFINE_MEDIATYPE_GUID(MFVideoFormat_WMV3
, MAKEFOURCC('W','M','V','3'));
55 DEFINE_MEDIATYPE_GUID(MFVideoFormat_RGB32
, D3DFMT_X8R8G8B8
);
58 DEFINE_GUID(MF_MT_AVG_BITRATE
, 0x20332624, 0xfb0d, 0x4d9e, 0xbd, 0x0d, 0xcb, 0xf6, 0x78, 0x6c, 0x10, 0x2e);
59 DEFINE_GUID(MF_MT_FRAME_RATE
, 0xc459a2e8, 0x3d2c, 0x4e44, 0xb1, 0x32, 0xfe, 0xe5, 0x15, 0x6c, 0x7b, 0xb0);
60 DEFINE_GUID(MF_MT_FRAME_SIZE
, 0x1652c33d, 0xd6b2, 0x4012, 0xb8, 0x34, 0x72, 0x03, 0x08, 0x49, 0xa3, 0x7d);
61 DEFINE_GUID(MF_MT_INTERLACE_MODE
, 0xe2724bb8, 0xe676, 0x4806, 0xb4, 0xb2, 0xa8, 0xd6, 0xef, 0xb4, 0x4c, 0xcd);
62 DEFINE_GUID(MF_MT_MAJOR_TYPE
, 0x48eba18e, 0xf8c9, 0x4687, 0xbf, 0x11, 0x0a, 0x74, 0xc9, 0xf9, 0x6a, 0x8f);
63 DEFINE_GUID(MF_MT_PIXEL_ASPECT_RATIO
, 0xc6376a1e, 0x8d0a, 0x4027, 0xbe, 0x45, 0x6d, 0x9a, 0x0a, 0xd3, 0x9b, 0xb6);
64 DEFINE_GUID(MF_MT_SUBTYPE
, 0xf7e34c9a, 0x42e8, 0x4714, 0xb7, 0x4b, 0xcb, 0x29, 0xd7, 0x2c, 0x35, 0xe5);
66 DEFINE_GUID(MFMediaType_Video
, 0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
68 typedef unsigned __int64 MFWORKITEM_KEY
;
70 HRESULT WINAPI
MFCancelWorkItem(MFWORKITEM_KEY key
);
71 HRESULT WINAPI
MFCopyImage(BYTE
*dest
, LONG deststride
, const BYTE
*src
, LONG srcstride
, DWORD width
, DWORD lines
);
72 HRESULT WINAPI
MFCreateAttributes(IMFAttributes
**attributes
, UINT32 size
);
73 HRESULT WINAPI
MFCreateEventQueue(IMFMediaEventQueue
**queue
);
74 HRESULT WINAPI
MFCreateFile(MF_FILE_ACCESSMODE accessmode
, MF_FILE_OPENMODE openmode
, MF_FILE_FLAGS flags
,
75 LPCWSTR url
, IMFByteStream
**bytestream
);
76 HRESULT WINAPI
MFCreateMediaEvent(MediaEventType type
, REFGUID extended_type
, HRESULT status
,
77 const PROPVARIANT
*value
, IMFMediaEvent
**event
);
78 HRESULT WINAPI
MFCreateMediaType(IMFMediaType
**type
);
79 HRESULT WINAPI
MFCreateSample(IMFSample
**sample
);
80 HRESULT WINAPI
MFCreateMemoryBuffer(DWORD max_length
, IMFMediaBuffer
**buffer
);
81 HRESULT WINAPI
MFGetTimerPeriodicity(DWORD
*periodicity
);
82 HRESULT WINAPI
MFTEnum(GUID category
, UINT32 flags
, MFT_REGISTER_TYPE_INFO
*input_type
,
83 MFT_REGISTER_TYPE_INFO
*output_type
, IMFAttributes
*attributes
,
84 CLSID
**pclsids
, UINT32
*pcount
);
85 HRESULT WINAPI
MFTEnumEx(GUID category
, UINT32 flags
, const MFT_REGISTER_TYPE_INFO
*input_type
,
86 const MFT_REGISTER_TYPE_INFO
*output_type
, IMFActivate
***activate
,
88 HRESULT WINAPI
MFLockPlatform(void);
89 HRESULT WINAPI
MFTRegister(CLSID clsid
, GUID category
, LPWSTR name
, UINT32 flags
, UINT32 cinput
,
90 MFT_REGISTER_TYPE_INFO
*input_types
, UINT32 coutput
,
91 MFT_REGISTER_TYPE_INFO
*output_types
, IMFAttributes
*attributes
);
92 HRESULT WINAPI
MFTRegisterLocal(IClassFactory
*factory
, REFGUID category
, LPCWSTR name
,
93 UINT32 flags
, UINT32 cinput
, const MFT_REGISTER_TYPE_INFO
*input_types
,
94 UINT32 coutput
, const MFT_REGISTER_TYPE_INFO
* output_types
);
95 HRESULT WINAPI
MFShutdown(void);
96 HRESULT WINAPI
MFStartup(ULONG version
, DWORD flags
);
97 HRESULT WINAPI
MFUnlockPlatform(void);
98 HRESULT WINAPI
MFTUnregister(CLSID clsid
);
99 HRESULT WINAPI
MFTUnregisterLocal(IClassFactory
*factory
);
100 HRESULT WINAPI
MFGetPluginControl(IMFPluginControl
**);
102 #if defined(__cplusplus)
106 #endif /* __WINE_MFAPI_H */