/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */

import "mfobjects.idl";

cpp_quote("  enum _MFT_DRAIN_TYPE {")
cpp_quote("    MFT_DRAIN_PRODUCE_TAILS   = 0x00000000,")
cpp_quote("    MFT_DRAIN_NO_TAILS        = 0x00000001 ")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  enum _MFT_INPUT_STATUS_FLAGS {")
cpp_quote("    MFT_INPUT_STATUS_ACCEPT_DATA   = 0x00000001 ")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  enum _MFT_INPUT_DATA_BUFFER_FLAGS {")
cpp_quote("    MFT_INPUT_DATA_BUFFER_PLACEHOLDER   = 0xFFFFFFFF ")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  enum _MFT_OUTPUT_STREAM_INFO_FLAGS {")
cpp_quote("    MFT_OUTPUT_STREAM_WHOLE_SAMPLES              = 0x00000001,")
cpp_quote("    MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER   = 0x00000002,")
cpp_quote("    MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE          = 0x00000004,")
cpp_quote("    MFT_OUTPUT_STREAM_DISCARDABLE                = 0x00000008,")
cpp_quote("    MFT_OUTPUT_STREAM_OPTIONAL                   = 0x00000010,")
cpp_quote("    MFT_OUTPUT_STREAM_PROVIDES_SAMPLES           = 0x00000100,")
cpp_quote("    MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES        = 0x00000200,")
cpp_quote("    MFT_OUTPUT_STREAM_LAZY_READ                  = 0x00000400,")
cpp_quote("    MFT_OUTPUT_STREAM_REMOVABLE                  = 0x00000800 ")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  enum _MFT_OUTPUT_STATUS_FLAGS {")
cpp_quote("    MFT_OUTPUT_STATUS_SAMPLE_READY   = 0x00000001 ")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  enum _MFT_OUTPUT_DATA_BUFFER_FLAGS {")
cpp_quote("    MFT_OUTPUT_DATA_BUFFER_INCOMPLETE      = 0x01000000,")
cpp_quote("    MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE   = 0x00000100,")
cpp_quote("    MFT_OUTPUT_DATA_BUFFER_STREAM_END      = 0x00000200,")
cpp_quote("    MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE       = 0x00000300 ")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  enum _MFT_INPUT_STREAM_INFO_FLAGS {")
cpp_quote("    MFT_INPUT_STREAM_WHOLE_SAMPLES              = 0x00000001,")
cpp_quote("    MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER   = 0x00000002,")
cpp_quote("    MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE          = 0x00000004,")
cpp_quote("    MFT_INPUT_STREAM_HOLDS_BUFFERS              = 0x00000008,")
cpp_quote("    MFT_INPUT_STREAM_DOES_NOT_ADDREF            = 0x00000100,")
cpp_quote("    MFT_INPUT_STREAM_REMOVABLE                  = 0x00000200,")
cpp_quote("    MFT_INPUT_STREAM_OPTIONAL                   = 0x00000400,")
cpp_quote("    MFT_INPUT_STREAM_PROCESSES_IN_PLACE         = 0x00000800 ")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  typedef enum _VSS_HARDWARE_OPTIONS {")
cpp_quote("    VSS_BREAKEX_FLAG_MASK_LUNS                      = 0x00000001,")
cpp_quote("    VSS_BREAKEX_FLAG_MAKE_READ_WRITE                = 0x00000002,")
cpp_quote("    VSS_BREAKEX_FLAG_REVERT_IDENTITY_ALL            = 0x00000004,")
cpp_quote("    VSS_BREAKEX_FLAG_REVERT_IDENTITY_NONE           = 0x00000008,")
cpp_quote("    VSS_ONLUNSTATECHANGE_NOTIFY_READ_WRITE          = 0x00000100,")
cpp_quote("    VSS_ONLUNSTATECHANGE_NOTIFY_LUN_PRE_RECOVERY    = 0x00000200,")
cpp_quote("    VSS_ONLUNSTATECHANGE_NOTIFY_LUN_POST_RECOVERY   = 0x00000400,")
cpp_quote("    VSS_ONLUNSTATECHANGE_DO_MASK_LUNS               = 0x00000800 ")
cpp_quote("  } VSS_HARDWARE_OPTIONS, *PVSS_HARDWARE_OPTIONS;")

enum _MFT_SET_TYPE_FLAGS {
    MFT_SET_TYPE_TEST_ONLY   = 0x00000001
};

enum _MFT_PROCESS_OUTPUT_STATUS {
    MFT_PROCESS_OUTPUT_STATUS_NEW_STREAMS   = 0x00000100
};

enum _MFT_PROCESS_OUTPUT_FLAGS {
    MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER   = 0x00000001
};

typedef enum _MFT_MESSAGE_TYPE {
    MFT_MESSAGE_COMMAND_FLUSH            = 0x00000000,
    MFT_MESSAGE_COMMAND_DRAIN            = 0x00000001,
    MFT_MESSAGE_SET_D3D_MANAGER          = 0x00000002,
    MFT_MESSAGE_NOTIFY_BEGIN_STREAMING   = 0x10000000,
    MFT_MESSAGE_NOTIFY_END_STREAMING     = 0x10000001,
    MFT_MESSAGE_NOTIFY_END_OF_STREAM     = 0x10000002,
    MFT_MESSAGE_NOTIFY_START_OF_STREAM   = 0x10000003,
    MFT_MESSAGE_COMMAND_MARKER           = 0x20000000
} MFT_MESSAGE_TYPE;

typedef struct _MFT_INPUT_STREAM_INFO {
    LONGLONG hnsMaxLatency;
    DWORD    dwFlags;
    DWORD    cbSize;
    DWORD    cbMaxLookahead;
    DWORD    cbAlignment;
} MFT_INPUT_STREAM_INFO;

typedef struct _MFT_OUTPUT_STREAM_INFO {
    DWORD dwFlags;
    DWORD cbSize;
    DWORD cbAlignment;
} MFT_OUTPUT_STREAM_INFO;

typedef struct _MFT_OUTPUT_DATA_BUFFER {
    DWORD         dwStreamID;
    IMFSample     *pSample;
    DWORD         dwStatus;
    IMFCollection *pEvents;
} MFT_OUTPUT_DATA_BUFFER;

[
    object,
    uuid(bf94c121-5b05-4e6f-8000-ba598961414d)
]
interface IMFTransform : IUnknown
{
    HRESULT GetStreamLimits([out] DWORD *pdwInputMinimum, [out] DWORD *pdwInputMaximum,
            [out] DWORD *pdwOutputMinimum, [out] DWORD *pdwOutputMaximum);
    HRESULT GetStreamCount([out] DWORD *pcInputStreams, [out] DWORD *pcOutputStreams);
    HRESULT GetStreamIDs(DWORD dwInputIDArraySize, [out,size_is(dwInputIDArraySize)] DWORD *pdwInputIDs,
            DWORD dwOutputIDArraySize, [out,size_is(dwOutputIDArraySize)] DWORD *pdwOutputIDs);
    HRESULT GetInputStreamInfo(DWORD dwInputStreamID, [out] MFT_INPUT_STREAM_INFO *pStreamInfo);
    HRESULT GetOutputStreamInfo(DWORD dwOutputStreamID, [out] MFT_OUTPUT_STREAM_INFO *pStreamInfo);
    HRESULT GetAttributes([out] IMFAttributes **pAttributes);
    HRESULT GetInputStreamAttributes(DWORD dwInputStreamID, [out] IMFAttributes **pAttributes);
    HRESULT GetOutputStreamAttributes(DWORD dwOutputStreamID, [out] IMFAttributes **pAttributes);
    HRESULT DeleteInputStream(DWORD dwStreamID);
    HRESULT AddInputStreams(DWORD cStreams, [in] DWORD *adwStreamIDs);
    HRESULT GetInputAvailableType(DWORD dwInputStreamID, DWORD dwTypeIndex, [out] IMFMediaType **ppType);
    HRESULT GetOutputAvailableType(DWORD dwOutputStreamID, DWORD dwTypeIndex, [out] IMFMediaType **ppType);
    HRESULT SetInputType(DWORD dwInputStreamID, [in]  IMFMediaType *pType, DWORD dwFlags);
    HRESULT SetOutputType(DWORD dwOutputStreamID, [in] IMFMediaType *pType, DWORD dwFlags);
    HRESULT GetInputCurrentType(DWORD dwInputStreamID, [out] IMFMediaType **ppType);
    HRESULT GetOutputCurrentType(DWORD dwOutputStreamID, [out] IMFMediaType **ppType);
    HRESULT GetInputStatus(DWORD dwInputStreamID, [out] DWORD *pdwFlags);
    HRESULT GetOutputStatus([out] DWORD *pdwFlags);
    HRESULT SetOutputBounds(LONGLONG hnsLowerBound, LONGLONG hnsUpperBound);
    HRESULT ProcessEvent(DWORD dwInputStreamID, [in] IMFMediaEvent *pEvent);
    HRESULT ProcessMessage(MFT_MESSAGE_TYPE eMessage, ULONG_PTR ulParam);
    [local] HRESULT ProcessInput(DWORD dwInputStreamID, IMFSample *pSample, DWORD dwFlags);
    [local] HRESULT ProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount,
                                  [in,out,size_is(cOutputBufferCount)] MFT_OUTPUT_DATA_BUFFER *pOutputSamples,
                                  [out] DWORD *pdwStatus);
}

cpp_quote("EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_CLSID = {{0xc57a84c0,0x1a80,0x40a3,{0x97,0xb5,0x92,0x72,0xa4,0x3,0xc8,0xae}}, 0x01};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_CATEGORY = {{0xc57a84c0,0x1a80,0x40a3,{0x97,0xb5,0x92,0x72,0xa4,0x3,0xc8,0xae}}, 0x02 };")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_EXATTRIBUTE_SUPPORTED = {{0x456fe843,0x3c87,0x40c0,{0x94,0x9d,0x14,0x9,0xc9,0x7d,0xab,0x2c}}, 0x01};")
cpp_quote( "EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MFPKEY_MULTICHANNEL_CHANNEL_MASK  = {{0x58bdaf8c,0x3224,0x4692,{0x86,0xd0,0x44,0xd6,0x5c,0x5b,0xf8,0x2b}}, 0x01};")

cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MF_SA_D3D_AWARE = {0xeaa35c29,0x775e,0x488e,{0x9b,0x61,0xb3,0x28,0x3e,0x49,0x58,0x3b}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MF_SA_REQUIRED_SAMPLE_COUNT = {0x18802c61,0x324b,0x4952,{0xab,0xd0,0x17,0x6f,0xf5,0xc6,0x96,0xff}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MF_TRANSFORM_ASYNC = {0xf81a699a,0x649a,0x497d,{0x8c,0x73,0x29,0xf8,0xfe,0xd6,0xad,0x7a}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MF_TRANSFORM_ASYNC_UNLOCK = {0xe5666d6b,0x3422,0x4eb6,{0xa4,0x21,0xda,0x7d,0xb1,0xf8,0xe2,0x7}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MF_TRANSFORM_FLAGS_Attribute = {0x9359bb7e,0x6275,0x46c4,{0xa0,0x25,0x1c,0x1,0xe4,0x5f,0x1a,0x86}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MF_TRANSFORM_CATEGORY_Attribute = {0xceabba49,0x506d,0x4757,{0xa6,0xff,0x66,0xc1,0x84,0x98,0x7e,0x4e}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_TRANSFORM_CLSID_Attribute = {0x6821c42b,0x65a4,0x4e82,{0x99,0xbc,0x9a,0x88,0x20,0x5e,0xcd,0xc}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_INPUT_TYPES_Attributes = {0x4276c9b1,0x759d,0x4bf3, {0x9c,0xd0,0xd,0x72,0x3d,0x13,0x8f,0x96}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_OUTPUT_TYPES_Attributes = {0x8eae8cf3,0xa44f,0x4306,{0xba,0x5c,0xbf,0x5d,0xda,0x24,0x28,0x18}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_ENUM_HARDWARE_URL_Attribute = {0x2fb866ac,0xb078,0x4942,{0xab,0x6c,0x0,0x3d,0x5,0xcd,0xa6,0x74}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_FRIENDLY_NAME_Attribute = {0x314ffbae,0x5b41,0x4c95,{0x9c,0x19,0x4e,0x7d,0x58,0x6f,0xac,0xe3}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_CONNECTED_STREAM_ATTRIBUTE  = {0x71eeb820,0xa59f,0x4de2,{0xbc,0xec,0x38,0xdb,0x1d,0xd6,0x11,0xa4}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_CONNECTED_TO_HW_STREAM = {0x34e6e728,0x6d6,0x4491,{0xa5,0x53,0x47,0x95,0x65,0xd,0xb9,0x12}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_PREFERRED_OUTPUTTYPE_Attribute = {0x7e700499,0x396a,0x49ee,{0xb1,0xb4,0xf6,0x28,0x2,0x1e,0x8c,0x9d}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_PROCESS_LOCAL_Attribute = {0x543186e4,0x4649,0x4e65,{0xb5,0x88,0x4a,0xa3,0x52,0xaf,0xf3,0x79}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_PREFERRED_ENCODER_PROFILE = {0x53004909,0x1ef5,0x46d7,{0xa1,0x8e,0x5a,0x75,0xf8,0xb5,0x90,0x5f}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_HW_TIMESTAMP_WITH_QPC_Attribute = {0x8d030fb8,0xcc43,0x4258,{0xa2,0x2e,0x92,0x10,0xbe,0xf8,0x9b,0xe4}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_FIELDOFUSE_UNLOCK_Attribute = {0x8ec2e9fd,0x9148,0x410d,{0x83,0x1e,0x70,0x24,0x39,0x46,0x1a,0x8e}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_CODEC_MERIT_Attribute = {0x88a7cb15,0x7b07,0x4a34,{0x91,0x28,0xe6,0x4c,0x67,0x3,0xc4,0xd3}};")
cpp_quote("EXTERN_C const DECLSPEC_SELECTANY GUID MFT_ENUM_TRANSCODE_ONLY_ATTRIBUTE = {0x111ea8cd,0xb62a,0x4bdb,{0x89,0xf6,0x67,0xff,0xcd,0xc2,0x45,0x8b}};")


cpp_quote("#if (WINVER >= 0x0601)")
cpp_quote("HRESULT WINAPI MFCreateTransformActivate(IMFActivate **ppActivate);")
cpp_quote("#endif /*(WINVER >= 0x0601)*/")
