/*** Autogenerated by WIDL 11.0 from ../wine-11.0/include/medparam.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __medparam_h__
#define __medparam_h__

/* Forward declarations */

#ifndef __IMediaParamInfo_FWD_DEFINED__
#define __IMediaParamInfo_FWD_DEFINED__
typedef interface IMediaParamInfo IMediaParamInfo;
#ifdef __cplusplus
interface IMediaParamInfo;
#endif /* __cplusplus */
#endif

#ifndef __IMediaParams_FWD_DEFINED__
#define __IMediaParams_FWD_DEFINED__
typedef interface IMediaParams IMediaParams;
#ifdef __cplusplus
interface IMediaParams;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <strmif.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef float MP_DATA;
typedef DWORD MP_CAPS;
typedef DWORD MP_FLAGS;
typedef DWORD MP_TIMEDATA;
typedef enum _MP_Type {
    MPT_INT = 0,
    MPT_FLOAT = 1,
    MPT_BOOL = 2,
    MPT_ENUM = 3,
    MPT_MAX = 4
} MP_TYPE;
typedef struct _MP_PARAMINFO {
    MP_TYPE mpType;
    MP_CAPS mopCaps;
    MP_DATA mpdMinValue;
    MP_DATA mpdMaxValue;
    MP_DATA mpdNeutralValue;
    WCHAR szUnitText[32];
    WCHAR szLabel[32];
} MP_PARAMINFO;
typedef enum _MP_CURVE_TYPE {
    MP_CURVE_JUMP = 0x1,
    MP_CURVE_LINEAR = 0x2,
    MP_CURVE_SQUARE = 0x4,
    MP_CURVE_INVSQUARE = 0x8,
    MP_CURVE_SINE = 0x10
} MP_CURVE_TYPE;
#define MPF_ENVLP_STANDARD (0x0)

#define MPF_ENVLP_BEGIN_CURRENTVAL (0x1)

#define MPF_ENVLP_BEGIN_NEUTRALVAL (0x2)

typedef struct _MP_ENVELOPE_SEGMENT {
    REFERENCE_TIME rtStart;
    REFERENCE_TIME rtEnd;
    MP_DATA valStart;
    MP_DATA valEnd;
    MP_CURVE_TYPE iCurve;
    MP_FLAGS flags;
} MP_ENVELOPE_SEGMENT;
/*****************************************************************************
 * IMediaParamInfo interface
 */
#ifndef __IMediaParamInfo_INTERFACE_DEFINED__
#define __IMediaParamInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMediaParamInfo, 0x6d6cbb60, 0xa223, 0x44aa, 0x84,0x2f, 0xa2,0xf0,0x67,0x50,0xbe,0x6d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6d6cbb60-a223-44aa-842f-a2f06750be6d")
IMediaParamInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetParamCount(
        DWORD *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetParamInfo(
        DWORD index,
        MP_PARAMINFO *info) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetParamText(
        DWORD index,
        WCHAR **text) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNumTimeFormats(
        DWORD *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSupportedTimeFormat(
        DWORD index,
        GUID *guid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentTimeFormat(
        GUID *guid,
        MP_TIMEDATA *time_data) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMediaParamInfo, 0x6d6cbb60, 0xa223, 0x44aa, 0x84,0x2f, 0xa2,0xf0,0x67,0x50,0xbe,0x6d)
#endif
#else
typedef struct IMediaParamInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IMediaParamInfo *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IMediaParamInfo *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IMediaParamInfo *This);

    /*** IMediaParamInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetParamCount)(
        IMediaParamInfo *This,
        DWORD *count);

    HRESULT (STDMETHODCALLTYPE *GetParamInfo)(
        IMediaParamInfo *This,
        DWORD index,
        MP_PARAMINFO *info);

    HRESULT (STDMETHODCALLTYPE *GetParamText)(
        IMediaParamInfo *This,
        DWORD index,
        WCHAR **text);

    HRESULT (STDMETHODCALLTYPE *GetNumTimeFormats)(
        IMediaParamInfo *This,
        DWORD *count);

    HRESULT (STDMETHODCALLTYPE *GetSupportedTimeFormat)(
        IMediaParamInfo *This,
        DWORD index,
        GUID *guid);

    HRESULT (STDMETHODCALLTYPE *GetCurrentTimeFormat)(
        IMediaParamInfo *This,
        GUID *guid,
        MP_TIMEDATA *time_data);

    END_INTERFACE
} IMediaParamInfoVtbl;

interface IMediaParamInfo {
    CONST_VTBL IMediaParamInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IMediaParamInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaParamInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaParamInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IMediaParamInfo methods ***/
#define IMediaParamInfo_GetParamCount(This,count) (This)->lpVtbl->GetParamCount(This,count)
#define IMediaParamInfo_GetParamInfo(This,index,info) (This)->lpVtbl->GetParamInfo(This,index,info)
#define IMediaParamInfo_GetParamText(This,index,text) (This)->lpVtbl->GetParamText(This,index,text)
#define IMediaParamInfo_GetNumTimeFormats(This,count) (This)->lpVtbl->GetNumTimeFormats(This,count)
#define IMediaParamInfo_GetSupportedTimeFormat(This,index,guid) (This)->lpVtbl->GetSupportedTimeFormat(This,index,guid)
#define IMediaParamInfo_GetCurrentTimeFormat(This,guid,time_data) (This)->lpVtbl->GetCurrentTimeFormat(This,guid,time_data)
#else
/*** IUnknown methods ***/
static inline HRESULT IMediaParamInfo_QueryInterface(IMediaParamInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IMediaParamInfo_AddRef(IMediaParamInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IMediaParamInfo_Release(IMediaParamInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IMediaParamInfo methods ***/
static inline HRESULT IMediaParamInfo_GetParamCount(IMediaParamInfo* This,DWORD *count) {
    return This->lpVtbl->GetParamCount(This,count);
}
static inline HRESULT IMediaParamInfo_GetParamInfo(IMediaParamInfo* This,DWORD index,MP_PARAMINFO *info) {
    return This->lpVtbl->GetParamInfo(This,index,info);
}
static inline HRESULT IMediaParamInfo_GetParamText(IMediaParamInfo* This,DWORD index,WCHAR **text) {
    return This->lpVtbl->GetParamText(This,index,text);
}
static inline HRESULT IMediaParamInfo_GetNumTimeFormats(IMediaParamInfo* This,DWORD *count) {
    return This->lpVtbl->GetNumTimeFormats(This,count);
}
static inline HRESULT IMediaParamInfo_GetSupportedTimeFormat(IMediaParamInfo* This,DWORD index,GUID *guid) {
    return This->lpVtbl->GetSupportedTimeFormat(This,index,guid);
}
static inline HRESULT IMediaParamInfo_GetCurrentTimeFormat(IMediaParamInfo* This,GUID *guid,MP_TIMEDATA *time_data) {
    return This->lpVtbl->GetCurrentTimeFormat(This,guid,time_data);
}
#endif
#endif

#endif


#endif  /* __IMediaParamInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IMediaParams interface
 */
#ifndef __IMediaParams_INTERFACE_DEFINED__
#define __IMediaParams_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMediaParams, 0x6d6cbb61, 0xa223, 0x44aa, 0x84,0x2f, 0xa2,0xf0,0x67,0x50,0xbe,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6d6cbb61-a223-44aa-842f-a2f06750be6e")
IMediaParams : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetParam(
        DWORD index,
        MP_DATA *data) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetParam(
        DWORD index,
        MP_DATA data) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddEnvelope(
        DWORD index,
        DWORD count,
        MP_ENVELOPE_SEGMENT *segments) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushEnvelope(
        DWORD index,
        REFERENCE_TIME start,
        REFERENCE_TIME end) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTimeFormat(
        GUID guid,
        MP_TIMEDATA time_data) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMediaParams, 0x6d6cbb61, 0xa223, 0x44aa, 0x84,0x2f, 0xa2,0xf0,0x67,0x50,0xbe,0x6e)
#endif
#else
typedef struct IMediaParamsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IMediaParams *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IMediaParams *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IMediaParams *This);

    /*** IMediaParams methods ***/
    HRESULT (STDMETHODCALLTYPE *GetParam)(
        IMediaParams *This,
        DWORD index,
        MP_DATA *data);

    HRESULT (STDMETHODCALLTYPE *SetParam)(
        IMediaParams *This,
        DWORD index,
        MP_DATA data);

    HRESULT (STDMETHODCALLTYPE *AddEnvelope)(
        IMediaParams *This,
        DWORD index,
        DWORD count,
        MP_ENVELOPE_SEGMENT *segments);

    HRESULT (STDMETHODCALLTYPE *FlushEnvelope)(
        IMediaParams *This,
        DWORD index,
        REFERENCE_TIME start,
        REFERENCE_TIME end);

    HRESULT (STDMETHODCALLTYPE *SetTimeFormat)(
        IMediaParams *This,
        GUID guid,
        MP_TIMEDATA time_data);

    END_INTERFACE
} IMediaParamsVtbl;

interface IMediaParams {
    CONST_VTBL IMediaParamsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IMediaParams_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMediaParams_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMediaParams_Release(This) (This)->lpVtbl->Release(This)
/*** IMediaParams methods ***/
#define IMediaParams_GetParam(This,index,data) (This)->lpVtbl->GetParam(This,index,data)
#define IMediaParams_SetParam(This,index,data) (This)->lpVtbl->SetParam(This,index,data)
#define IMediaParams_AddEnvelope(This,index,count,segments) (This)->lpVtbl->AddEnvelope(This,index,count,segments)
#define IMediaParams_FlushEnvelope(This,index,start,end) (This)->lpVtbl->FlushEnvelope(This,index,start,end)
#define IMediaParams_SetTimeFormat(This,guid,time_data) (This)->lpVtbl->SetTimeFormat(This,guid,time_data)
#else
/*** IUnknown methods ***/
static inline HRESULT IMediaParams_QueryInterface(IMediaParams* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IMediaParams_AddRef(IMediaParams* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IMediaParams_Release(IMediaParams* This) {
    return This->lpVtbl->Release(This);
}
/*** IMediaParams methods ***/
static inline HRESULT IMediaParams_GetParam(IMediaParams* This,DWORD index,MP_DATA *data) {
    return This->lpVtbl->GetParam(This,index,data);
}
static inline HRESULT IMediaParams_SetParam(IMediaParams* This,DWORD index,MP_DATA data) {
    return This->lpVtbl->SetParam(This,index,data);
}
static inline HRESULT IMediaParams_AddEnvelope(IMediaParams* This,DWORD index,DWORD count,MP_ENVELOPE_SEGMENT *segments) {
    return This->lpVtbl->AddEnvelope(This,index,count,segments);
}
static inline HRESULT IMediaParams_FlushEnvelope(IMediaParams* This,DWORD index,REFERENCE_TIME start,REFERENCE_TIME end) {
    return This->lpVtbl->FlushEnvelope(This,index,start,end);
}
static inline HRESULT IMediaParams_SetTimeFormat(IMediaParams* This,GUID guid,MP_TIMEDATA time_data) {
    return This->lpVtbl->SetTimeFormat(This,guid,time_data);
}
#endif
#endif

#endif


#endif  /* __IMediaParams_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __medparam_h__ */
