| /* |
| * Copyright 2015 Jacek Caban for CodeWeavers |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| import "unknwn.idl"; |
| import "propsys.idl"; |
| import "mediaobj.idl"; |
| |
| cpp_quote("#include <mmreg.h>") |
| #include <mmreg.h> |
| |
| typedef ULONGLONG QWORD; |
| |
| typedef enum _MF_ATTRIBUTE_TYPE { |
| MF_ATTRIBUTE_UINT32 = VT_UI4, |
| MF_ATTRIBUTE_UINT64 = VT_UI8, |
| MF_ATTRIBUTE_DOUBLE = VT_R8, |
| MF_ATTRIBUTE_GUID = VT_CLSID, |
| MF_ATTRIBUTE_STRING = VT_LPWSTR, |
| MF_ATTRIBUTE_BLOB = VT_VECTOR | VT_UI1, |
| MF_ATTRIBUTE_IUNKNOWN = VT_UNKNOWN |
| } MF_ATTRIBUTE_TYPE; |
| |
| typedef enum _MF_ATTRIBUTES_MATCH_TYPE { |
| MF_ATTRIBUTES_MATCH_OUR_ITEMS = 0, |
| MF_ATTRIBUTES_MATCH_THEIR_ITEMS = 1, |
| MF_ATTRIBUTES_MATCH_ALL_ITEMS = 2, |
| MF_ATTRIBUTES_MATCH_INTERSECTION = 3, |
| MF_ATTRIBUTES_MATCH_SMALLER = 4 |
| } MF_ATTRIBUTES_MATCH_TYPE; |
| |
| [ |
| object, |
| uuid(2cd2d921-c447-44a7-a13c-4adabfc247e3) |
| ] |
| interface IMFAttributes : IUnknown |
| { |
| HRESULT GetItem(REFGUID guidKey, [in, out, ptr] PROPVARIANT *pValue); |
| HRESULT GetItemType(REFGUID guidKey, [out] MF_ATTRIBUTE_TYPE *pType); |
| HRESULT CompareItem(REFGUID guidKey, REFPROPVARIANT Value, [out] BOOL *pbResult); |
| HRESULT Compare(IMFAttributes *pTheirs, MF_ATTRIBUTES_MATCH_TYPE MatchType, [out] BOOL *pbResult); |
| HRESULT GetUINT32(REFGUID guidKey, [out] UINT32 *punValue); |
| HRESULT GetUINT64(REFGUID guidKey, [out] UINT64 *punValue); |
| HRESULT GetDouble(REFGUID guidKey, [out] double *pfValue); |
| HRESULT GetGUID(REFGUID guidKey, [out] GUID *pguidValue); |
| HRESULT GetStringLength(REFGUID guidKey, [out] UINT32 *pcchLength); |
| HRESULT GetString(REFGUID guidKey, [out, size_is(cchBufSize)] LPWSTR pwszValue, UINT32 cchBufSize, |
| [in, out, ptr] UINT32 *pcchLength); |
| HRESULT GetAllocatedString(REFGUID guidKey, [out, size_is(,*pcchLength+1)] LPWSTR *ppwszValue, |
| [out] UINT32 *pcchLength); |
| HRESULT GetBlobSize(REFGUID guidKey, [out] UINT32 *pcbBlobSize); |
| HRESULT GetBlob(REFGUID guidKey, [out, size_is(cbBufSize)] UINT8 *pBuf, UINT32 cbBufSize, |
| [in, out, ptr] UINT32 *pcbBlobSize); |
| HRESULT GetAllocatedBlob(REFGUID guidKey, [out, size_is(,*pcbSize)] UINT8 **ppBuf, [out] UINT32 *pcbSize); |
| HRESULT GetUnknown(REFGUID guidKey, REFIID riid, [out, iid_is(riid)] LPVOID *ppv); |
| HRESULT SetItem(REFGUID guidKey, REFPROPVARIANT Value); |
| HRESULT DeleteItem(REFGUID guidKey); |
| HRESULT DeleteAllItems(); |
| HRESULT SetUINT32(REFGUID guidKey, UINT32 unValue); |
| HRESULT SetUINT64(REFGUID guidKey, UINT64 unValue); |
| HRESULT SetDouble(REFGUID guidKey, double fValue); |
| HRESULT SetGUID(REFGUID guidKey, REFGUID guidValue); |
| HRESULT SetString(REFGUID guidKey, [in, string] LPCWSTR wszValue); |
| HRESULT SetBlob(REFGUID guidKey, [in, size_is(cbBufSize)] const UINT8* pBuf, UINT32 cbBufSize); |
| HRESULT SetUnknown(REFGUID guidKey, [in] IUnknown *pUnknown); |
| HRESULT LockStore(); |
| HRESULT UnlockStore(); |
| HRESULT GetCount([out] UINT32 *pcItems); |
| HRESULT GetItemByIndex(UINT32 unIndex, [out] GUID *pguidKey, [in, out, ptr] PROPVARIANT *pValue); |
| HRESULT CopyAllItems([in] IMFAttributes *pDest); |
| } |
| |
| enum MF_ATTRIBUTE_SERIALIZE_OPTIONS { |
| MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF = 0x00000001 |
| }; |
| |
| [ |
| object, |
| uuid(045fa593-8799-42b8-bc8d-8968c6453507), |
| local |
| ] |
| interface IMFMediaBuffer : IUnknown |
| { |
| HRESULT Lock([out] BYTE **ppbBuffer, [out] DWORD *pcbMaxLength, [out] DWORD *pcbCurrentLength); |
| HRESULT Unlock(); |
| HRESULT GetCurrentLength([out] DWORD *pcbCurrentLength); |
| HRESULT SetCurrentLength([in] DWORD cbCurrentLength); |
| HRESULT GetMaxLength([out] DWORD *pcbMaxLength); |
| } |
| |
| [ |
| object, |
| uuid(c40a00f2-b93a-4d80-ae8c-5a1c634f58e4), |
| local |
| ] |
| interface IMFSample : IMFAttributes |
| { |
| HRESULT GetSampleFlags([out] DWORD *pdwSampleFlags); |
| HRESULT SetSampleFlags([in] DWORD dwSampleFlags); |
| HRESULT GetSampleTime([out] LONGLONG *phnsSampleTime); |
| HRESULT SetSampleTime([in] LONGLONG hnsSampleTime); |
| HRESULT GetSampleDuration([out] LONGLONG *phnsSampleDuration); |
| HRESULT SetSampleDuration([in] LONGLONG hnsSampleDuration); |
| HRESULT GetBufferCount([out] DWORD *pdwBufferCount); |
| HRESULT GetBufferByIndex([in] DWORD dwIndex, [out] IMFMediaBuffer **ppBuffer); |
| HRESULT ConvertToContiguousBuffer([out] IMFMediaBuffer **ppBuffer); |
| HRESULT AddBuffer([in] IMFMediaBuffer *pBuffer); |
| HRESULT RemoveBufferByIndex([in] DWORD dwIndex); |
| HRESULT RemoveAllBuffers(); |
| HRESULT GetTotalLength([out] DWORD *pcbTotalLength); |
| HRESULT CopyToBuffer([in] IMFMediaBuffer *pBuffer); |
| } |
| |
| [ |
| object, |
| uuid(7dc9d5f9-9ed9-44ec-9bbf-0600bb589fbb), |
| local |
| ] |
| interface IMF2DBuffer : IUnknown |
| { |
| HRESULT Lock2D([out] BYTE **pbScanline0, [out] LONG *plPitch); |
| HRESULT Unlock2D(); |
| HRESULT GetScanline0AndPitch([out] BYTE **pbScanline0, [out] LONG *plPitch); |
| HRESULT IsContiguousFormat([out] BOOL *pfIsContiguous); |
| HRESULT GetContiguousLength([out] DWORD *pcbLength); |
| HRESULT ContiguousCopyTo([out, size_is(cbDestBuffer)] BYTE *pbDestBuffer, [in] DWORD cbDestBuffer); |
| HRESULT ContiguousCopyFrom([in, size_is(cbSrcBuffer)] const BYTE *pbSrcBuffer, [in] DWORD cbSrcBuffer); |
| } |
| |
| [ |
| object, |
| uuid(44ae0fa8-ea31-4109-8d2e-4cae4997c555), |
| local |
| ] |
| interface IMFMediaType : IMFAttributes |
| { |
| HRESULT GetMajorType([out] GUID *pguidMajorType); |
| HRESULT IsCompressedFormat([out] BOOL *pfCompressed); |
| HRESULT IsEqual([in] IMFMediaType *pIMediaType, [out] DWORD *pdwFlags); |
| HRESULT GetRepresentation([in] GUID guidRepresentation, [out] LPVOID *ppvRepresentation); |
| HRESULT FreeRepresentation([in] GUID guidRepresentation, [in] LPVOID pvRepresentation); |
| } |
| |
| cpp_quote("#define MF_MEDIATYPE_EQUAL_MAJOR_TYPES 0x00000001") |
| cpp_quote("#define MF_MEDIATYPE_EQUAL_FORMAT_TYPES 0x00000002") |
| cpp_quote("#define MF_MEDIATYPE_EQUAL_FORMAT_DATA 0x00000004") |
| cpp_quote("#define MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA 0x00000008") |
| |
| [ |
| object, |
| uuid(26a0adc3-ce26-4672-9304-69552edd3faf), |
| local |
| ] |
| interface IMFAudioMediaType : IMFMediaType |
| { |
| const WAVEFORMATEX *GetAudioFormat(); |
| } |
| |
| typedef struct { |
| GUID guidMajorType; |
| GUID guidSubtype; |
| } MFT_REGISTER_TYPE_INFO; |
| |
| typedef enum _MFVideoFlags { |
| MFVideoFlag_PAD_TO_Mask = 0x00000003, |
| MFVideoFlag_PAD_TO_None = 0, |
| MFVideoFlag_PAD_TO_4x3 = 0x00000001, |
| MFVideoFlag_PAD_TO_16x9 = 0x00000002, |
| MFVideoFlag_SrcContentHintMask = 0x0000001c, |
| MFVideoFlag_SrcContentHintNone = 0, |
| MFVideoFlag_SrcContentHint16x9 = 0x00000004, |
| MFVideoFlag_SrcContentHint235_1 = 0x00000008, |
| MFVideoFlag_AnalogProtected = 0x00000020, |
| MFVideoFlag_DigitallyProtected = 0x00000040, |
| MFVideoFlag_ProgressiveContent = 0x00000080, |
| MFVideoFlag_FieldRepeatCountMask = 0x00000700, |
| MFVideoFlag_FieldRepeatCountShift = 8, |
| MFVideoFlag_ProgressiveSeqReset = 0x00000800, |
| MFVideoFlag_PanScanEnabled = 0x00020000, |
| MFVideoFlag_LowerFieldFirst = 0x00040000, |
| MFVideoFlag_BottomUpLinearRep = 0x00080000, |
| MFVideoFlags_DXVASurface = 0x00100000, |
| MFVideoFlags_RenderTargetSurface = 0x00400000, |
| MFVideoFlags_ForceQWORD = 0x7fffffff |
| } MFVideoFlags; |
| |
| typedef struct _MFRatio { |
| DWORD Numerator; |
| DWORD Denominator; |
| } MFRatio; |
| |
| typedef struct _MFOffset { |
| WORD fract; |
| short value; |
| } MFOffset; |
| |
| typedef struct _MFVideoArea { |
| MFOffset OffsetX; |
| MFOffset OffsetY; |
| SIZE Area; |
| } MFVideoArea; |
| |
| typedef enum _MFVideoChromaSubsampling { |
| MFVideoChromaSubsampling_Unknown = 0, |
| MFVideoChromaSubsampling_ProgressiveChroma = 0x8, |
| MFVideoChromaSubsampling_Horizontally_Cosited = 0x4, |
| MFVideoChromaSubsampling_Vertically_Cosited = 0x2, |
| MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes = 0x1, |
| MFVideoChromaSubsampling_MPEG2 |
| = MFVideoChromaSubsampling_Horizontally_Cosited |
| | MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes, |
| MFVideoChromaSubsampling_MPEG1 |
| = MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes, |
| MFVideoChromaSubsampling_DV_PAL |
| = MFVideoChromaSubsampling_Horizontally_Cosited |
| | MFVideoChromaSubsampling_Vertically_Cosited, |
| MFVideoChromaSubsampling_Cosited |
| = MFVideoChromaSubsampling_Horizontally_Cosited |
| | MFVideoChromaSubsampling_Vertically_Cosited |
| | MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes, |
| MFVideoChromaSubsampling_Last = MFVideoChromaSubsampling_Cosited + 1, |
| MFVideoChromaSubsampling_ForceDWORD = 0x7fffffff |
| } MFVideoChromaSubsampling; |
| |
| typedef enum _MFVideoInterlaceMode { |
| MFVideoInterlace_Unknown = 0, |
| MFVideoInterlace_Progressive = 2, |
| MFVideoInterlace_FieldInterleavedUpperFirst = 3, |
| MFVideoInterlace_FieldInterleavedLowerFirst = 4, |
| MFVideoInterlace_FieldSingleUpper = 5, |
| MFVideoInterlace_FieldSingleLower = 6, |
| MFVideoInterlace_MixedInterlaceOrProgressive = 7, |
| MFVideoInterlace_Last, |
| MFVideoInterlace_ForceDWORD = 0x7fffffff |
| } MFVideoInterlaceMode; |
| |
| typedef enum _MFVideoTransferFunction { |
| MFVideoTransFunc_Unknown = 0, |
| MFVideoTransFunc_10 = 1, |
| MFVideoTransFunc_18 = 2, |
| MFVideoTransFunc_20 = 3, |
| MFVideoTransFunc_22 = 4, |
| MFVideoTransFunc_709 = 5, |
| MFVideoTransFunc_240M = 6, |
| MFVideoTransFunc_sRGB = 7, |
| MFVideoTransFunc_28 = 8, |
| MFVideoTransFunc_Log_100 = 9, |
| MFVideoTransFunc_Log_316 = 10, |
| MFVideoTransFunc_709_sym = 11, |
| MFVideoTransFunc_Last, |
| MFVideoTransFunc_ForceDWORD = 0x7fffffff |
| } MFVideoTransferFunction; |
| |
| typedef enum _MFVideoTransferMatrix { |
| MFVideoTransferMatrix_Unknown = 0, |
| MFVideoTransferMatrix_BT709 = 1, |
| MFVideoTransferMatrix_BT601 = 2, |
| MFVideoTransferMatrix_SMPTE240M = 3, |
| MFVideoTransferMatrix_Last, |
| MFVideoTransferMatrix_ForceDWORD = 0x7fffffff |
| } MFVideoTransferMatrix; |
| |
| typedef enum _MFVideoPrimaries { |
| MFVideoPrimaries_Unknown = 0, |
| MFVideoPrimaries_reserved = 1, |
| MFVideoPrimaries_BT709 = 2, |
| MFVideoPrimaries_BT470_2_SysM = 3, |
| MFVideoPrimaries_BT470_2_SysBG = 4, |
| MFVideoPrimaries_SMPTE170M = 5, |
| MFVideoPrimaries_SMPTE240M = 6, |
| MFVideoPrimaries_EBU3213 = 7, |
| MFVideoPrimaries_SMPTE_C = 8, |
| MFVideoPrimaries_Last, |
| MFVideoPrimaries_ForceDWORD = 0x7fffffff |
| } MFVideoPrimaries; |
| |
| typedef enum _MFVideoLighting { |
| MFVideoLighting_Unknown = 0, |
| MFVideoLighting_bright = 1, |
| MFVideoLighting_office = 2, |
| MFVideoLighting_dim = 3, |
| MFVideoLighting_dark = 4, |
| MFVideoLighting_Last, |
| MFVideoLighting_ForceDWORD = 0x7fffffff |
| } MFVideoLighting; |
| |
| typedef enum _MFNominalRange { |
| MFNominalRange_Unknown = 0, |
| MFNominalRange_Normal = 1, |
| MFNominalRange_Wide = 2, |
| MFNominalRange_0_255 = 1, |
| MFNominalRange_16_235 = 2, |
| MFNominalRange_48_208 = 3, |
| MFNominalRange_64_127 = 4 |
| } MFNominalRange; |
| |
| typedef struct _MFVideoInfo { |
| DWORD dwWidth; |
| DWORD dwHeight; |
| MFRatio PixelAspectRatio; |
| MFVideoChromaSubsampling SourceChromaSubsampling; |
| MFVideoInterlaceMode InterlaceMode; |
| MFVideoTransferFunction TransferFunction; |
| MFVideoPrimaries ColorPrimaries; |
| MFVideoTransferMatrix TransferMatrix; |
| MFVideoLighting SourceLighting; |
| MFRatio FramesPerSecond; |
| MFNominalRange NominalRange; |
| MFVideoArea GeometricAperture; |
| MFVideoArea MinimumDisplayAperture; |
| MFVideoArea PanScanAperture; |
| unsigned __int64 VideoFlags; |
| } MFVideoInfo; |
| |
| typedef struct _MFVideoCompressedInfo { |
| LONGLONG AvgBitrate; |
| LONGLONG AvgBitErrorRate; |
| DWORD MaxKeyFrameSpacing; |
| } MFVideoCompressedInfo; |
| |
| typedef struct _MFARGB { |
| BYTE rgbBlue; |
| BYTE rgbGreen; |
| BYTE rgbRed; |
| BYTE rgbAlpha; |
| } MFARGB; |
| |
| typedef struct __MFAYUVSample { |
| BYTE bCrValue; |
| BYTE bCbValue; |
| BYTE bYValue; |
| BYTE bSampleAlpha8; |
| } MFAYUVSample; |
| |
| typedef union _MFPaletteEntry { |
| MFARGB ARGB; |
| MFAYUVSample AYCbCr; |
| } MFPaletteEntry; |
| |
| typedef struct _MFVideoSurfaceInfo { |
| DWORD Format; |
| DWORD PaletteEntries; |
| MFPaletteEntry Palette[]; |
| } MFVideoSurfaceInfo; |
| |
| typedef struct _MFVIDEOFORMAT { |
| DWORD dwSize; |
| MFVideoInfo videoInfo; |
| GUID guidFormat; |
| MFVideoCompressedInfo compressedInfo; |
| MFVideoSurfaceInfo surfaceInfo; |
| } MFVIDEOFORMAT; |
| |
| typedef enum _MFStandardVideoFormat { |
| MFStdVideoFormat_reserved = 0, |
| MFStdVideoFormat_NTSC, |
| MFStdVideoFormat_PAL, |
| MFStdVideoFormat_DVD_NTSC, |
| MFStdVideoFormat_DVD_PAL, |
| MFStdVideoFormat_DV_PAL, |
| MFStdVideoFormat_DV_NTSC, |
| MFStdVideoFormat_ATSC_SD480i, |
| MFStdVideoFormat_ATSC_HD1080i, |
| MFStdVideoFormat_ATSC_HD720p |
| } MFStandardVideoFormat; |
| |
| [ |
| object, |
| uuid(b99f381f-a8f9-47a2-a5af-ca3a225a3890), |
| local |
| ] |
| interface IMFVideoMediaType : IMFMediaType |
| { |
| const MFVIDEOFORMAT *GetVideoFormat(); |
| |
| HRESULT GetVideoRepresentation([in] GUID guidRepresentation, [out] LPVOID *ppvRepresentation, |
| [in] LONG lStride); |
| } |
| |
| [ |
| object, |
| uuid(ac6b7889-0740-4d51-8619-905994a55cc6) |
| ] |
| interface IMFAsyncResult : IUnknown |
| { |
| HRESULT GetState([out] IUnknown **ppunkState); |
| HRESULT GetStatus(); |
| HRESULT SetStatus([in] HRESULT hrStatus); |
| HRESULT GetObject([out] IUnknown **ppObject); |
| [local] IUnknown *GetStateNoAddRef(); |
| } |
| |
| [ |
| object, |
| uuid(a27003cf-2354-4f2a-8d6a-ab7cff15437e), |
| ] |
| interface IMFAsyncCallback : IUnknown |
| { |
| HRESULT GetParameters([out] DWORD *pdwFlags, [out] DWORD *pdwQueue); |
| HRESULT Invoke([in] IMFAsyncResult *pAsyncResult); |
| } |
| |
| [ |
| object, |
| uuid(a27003d0-2354-4f2a-8d6a-ab7cff15437e), |
| ] |
| interface IMFRemoteAsyncCallback : IUnknown |
| { |
| HRESULT Invoke([in] HRESULT hr, [in] IUnknown *pRemoteResult); |
| } |
| |
| cpp_quote("#define MFASYNC_FAST_IO_PROCESSING_CALLBACK 0x0001") |
| cpp_quote("#define MFASYNC_SIGNAL_CALLBACK 0x0002" ) |
| |
| cpp_quote("#define MFASYNC_CALLBACK_QUEUE_UNDEFINED 0x00000000") |
| cpp_quote("#define MFASYNC_CALLBACK_QUEUE_STANDARD 0x00000001") |
| cpp_quote("#define MFASYNC_CALLBACK_QUEUE_RT 0x00000002") |
| cpp_quote("#define MFASYNC_CALLBACK_QUEUE_IO 0x00000003") |
| cpp_quote("#define MFASYNC_CALLBACK_QUEUE_TIMER 0x00000004") |
| cpp_quote("#define MFASYNC_CALLBACK_QUEUE_LONG_FUNCTION 0x00000007") |
| cpp_quote("#define MFASYNC_CALLBACK_QUEUE_PRIVATE_MASK 0xffff0000") |
| cpp_quote("#define MFASYNC_CALLBACK_QUEUE_ALL 0xffffffff") |
| |
| typedef DWORD MediaEventType; |
| |
| [ |
| object, |
| uuid(df598932-f10c-4e39-bba2-c308f101daa3) |
| ] |
| interface IMFMediaEvent : IMFAttributes |
| { |
| HRESULT GetType([out] MediaEventType *pmet); |
| HRESULT GetExtendedType([out] GUID *pguidExtendedType); |
| HRESULT GetStatus([out] HRESULT *phrStatus); |
| HRESULT GetValue([out] PROPVARIANT *pvValue); |
| } |
| |
| [ |
| object, |
| uuid(2cd0bd52-bcd5-4b89-b62c-eadc0c031e7d) |
| ] |
| interface IMFMediaEventGenerator : IUnknown |
| { |
| HRESULT GetEvent([in] DWORD dwFlags, [out] IMFMediaEvent **ppEvent); |
| |
| [local] HRESULT BeginGetEvent([in] IMFAsyncCallback *pCallback, [in] IUnknown *punkState); |
| [call_as(BeginGetEvent)] HRESULT RemoteBeginGetEvent([in] IMFRemoteAsyncCallback *pCallback); |
| |
| [local] HRESULT EndGetEvent([in] IMFAsyncResult *pResult, [out] IMFMediaEvent **ppEvent); |
| [call_as(EndGetEvent)] HRESULT RemoteEndGetEvent([in] IUnknown *pResult, [out] DWORD *pcbEvent, |
| [out, size_is(,*pcbEvent)] BYTE **ppbEvent); |
| |
| HRESULT QueueEvent([in] MediaEventType met, [in] REFGUID guidExtendedType, [in] HRESULT hrStatus, |
| [in, unique] const PROPVARIANT *pvValue); |
| } |
| |
| typedef enum _MFBYTESTREAM_SEEK_ORIGIN { |
| msoBegin, |
| msoCurrent |
| } MFBYTESTREAM_SEEK_ORIGIN; |
| |
| [ |
| object, |
| uuid(ad4c1b00-4bf7-422f-9175-756693d9130d), |
| ] |
| interface IMFByteStream : IUnknown |
| { |
| HRESULT GetCapabilities([out] DWORD *pdwCapabilities); |
| HRESULT GetLength([out] QWORD *pqwLength); |
| HRESULT SetLength([in] QWORD qwLength); |
| HRESULT GetCurrentPosition([out] QWORD *pqwPosition); |
| HRESULT SetCurrentPosition([in] QWORD qwPosition); |
| HRESULT IsEndOfStream([out] BOOL *pfEndOfStream); |
| |
| [local] HRESULT Read([in] BYTE* pb, [in] ULONG cb, [out] ULONG *pcbRead); |
| [local] HRESULT BeginRead([in] BYTE *pb, [in] ULONG cb, [in] IMFAsyncCallback *pCallback, [in] IUnknown *punkState); |
| [local] HRESULT EndRead([in] IMFAsyncResult *pResult, [out] ULONG *pcbRead); |
| [local] HRESULT Write([in] const BYTE *pb, [in] ULONG cb, [out] ULONG *pcbWritten); |
| [local] HRESULT BeginWrite([in] const BYTE *pb, [in] ULONG cb, [in] IMFAsyncCallback *pCallback, [in] IUnknown *punkState); |
| [local] HRESULT EndWrite([in] IMFAsyncResult *pResult, [out] ULONG *pcbWritten); |
| [local] HRESULT Seek([in] MFBYTESTREAM_SEEK_ORIGIN SeekOrigin, [in] LONGLONG llSeekOffset, [in] DWORD dwSeekFlags, |
| [out] QWORD *pqwCurrentPosition); |
| |
| HRESULT Flush(); |
| HRESULT Close(); |
| } |
| |
| cpp_quote("#define MFBYTESTREAM_IS_READABLE 0x00000001") |
| cpp_quote("#define MFBYTESTREAM_IS_WRITABLE 0x00000002") |
| cpp_quote("#define MFBYTESTREAM_IS_SEEKABLE 0x00000004") |
| cpp_quote("#define MFBYTESTREAM_IS_REMOTE 0x00000008") |
| cpp_quote("#define MFBYTESTREAM_IS_DIRECTORY 0x00000080") |
| cpp_quote("#define MFBYTESTREAM_HAS_SLOW_SEEK 0x00000100") |
| cpp_quote("#define MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED 0x00000200") |
| cpp_quote("#define MFBYTESTREAM_SHARE_WRITE 0x00000400") |
| |
| cpp_quote("#define MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO 0x00000001") |
| |
| cpp_quote("EXTERN_GUID(MF_BYTESTREAM_ORIGIN_NAME, 0xfc358288,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);") |
| cpp_quote("EXTERN_GUID(MF_BYTESTREAM_CONTENT_TYPE, 0xfc358289,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);") |
| cpp_quote("EXTERN_GUID(MF_BYTESTREAM_DURATION, 0xfc35828a,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);") |
| cpp_quote("EXTERN_GUID(MF_BYTESTREAM_LAST_MODIFIED_TIME, 0xfc35828b,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);") |
| cpp_quote("EXTERN_GUID(MF_BYTESTREAM_IFO_FILE_URI, 0xfc35828c,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);") |
| cpp_quote("EXTERN_GUID(MF_BYTESTREAM_DLNA_PROFILE_ID, 0xfc35828d,0x3cb6,0x460c,0xa4,0x24,0xb6,0x68,0x12,0x60,0x37,0x5a);") |
| |
| typedef enum MF_FILE_ACCESSMODE { |
| MF_ACCESSMODE_READ = 1, |
| MF_ACCESSMODE_WRITE = 2, |
| MF_ACCESSMODE_READWRITE = 3 |
| } MF_FILE_ACCESSMODE; |
| |
| typedef enum { |
| MF_OPENMODE_FAIL_IF_NOT_EXIST = 0, |
| MF_OPENMODE_FAIL_IF_EXIST = 1, |
| MF_OPENMODE_RESET_IF_EXIST = 2, |
| MF_OPENMODE_APPEND_IF_EXIST = 3, |
| MF_OPENMODE_DELETE_IF_EXIST = 4 |
| } MF_FILE_OPENMODE; |
| |
| typedef enum { |
| MF_FILEFLAGS_NONE = 0x00000000, |
| MF_FILEFLAGS_NOBUFFERING = 0x00000001, |
| MF_FILEFLAGS_ALLOW_WRITE_SHARING = 0x00000002 |
| } MF_FILE_FLAGS; |
| |
| [ |
| object, |
| uuid(5bc8a76b-869a-46a3-9b03-fa218a66aebe) |
| ] |
| interface IMFCollection : IUnknown |
| { |
| HRESULT GetElementCount([out] DWORD *pcElements); |
| HRESULT GetElement([in] DWORD dwElementIndex, [out] IUnknown **ppUnkElement); |
| HRESULT AddElement([in] IUnknown *pUnkElement); |
| HRESULT RemoveElement([in] DWORD dwElementIndex, [out] IUnknown **ppUnkElement); |
| HRESULT InsertElementAt([in] DWORD dwIndex, [in] IUnknown *pUnknown); |
| HRESULT RemoveAllElements(); |
| } |
| |
| [ |
| object, |
| uuid(7fee9e9a-4a89-47a6-899c-b6a53a70fb67), |
| pointer_default(unique) |
| ] |
| interface IMFActivate : IMFAttributes |
| { |
| HRESULT ActivateObject([in] REFIID riid, [out, iid_is(riid), retval] void **ppv); |
| HRESULT ShutdownObject(); |
| HRESULT DetachObject(); |
| } |
| |
| typedef enum _MF_Plugin_Type { |
| MF_Plugin_Type_MFT = 0, |
| MF_Plugin_Type_MediaSource = 1 |
| } MF_Plugin_Type; |
| |
| [ |
| object, |
| local, |
| uuid(5c6c44bf-1db6-435b-9249-e8cd10fdec96), |
| pointer_default(unique) |
| ] |
| interface IMFPluginControl : IUnknown |
| { |
| HRESULT GetPreferredClsid(DWORD pluginType, LPCWSTR selector, CLSID *clsid); |
| HRESULT GetPreferredClsidByIndex(DWORD pluginType, DWORD index, LPWSTR *selector, CLSID *clsid); |
| HRESULT SetPreferredClsid(DWORD pluginType, LPCWSTR selector, const CLSID *clsid); |
| HRESULT IsDisabled(DWORD pluginType, REFCLSID clsid); |
| HRESULT GetDisabledByIndex(DWORD pluginType, DWORD index, CLSID *clsid); |
| HRESULT SetDisabled(DWORD pluginType, REFCLSID clsid, BOOL disabled); |
| } |