/*** Autogenerated by WIDL 9.0 from include/videoacc.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 __videoacc_h__
#define __videoacc_h__

#ifndef __WIDL_INLINE
#if defined(__cplusplus) || defined(_MSC_VER)
#define __WIDL_INLINE inline
#elif defined(__GNUC__)
#define __WIDL_INLINE __inline__
#endif
#endif

/* Forward declarations */

#ifndef __IAMVideoAccelerator_FWD_DEFINED__
#define __IAMVideoAccelerator_FWD_DEFINED__
typedef interface IAMVideoAccelerator IAMVideoAccelerator;
#ifdef __cplusplus
interface IAMVideoAccelerator;
#endif /* __cplusplus */
#endif

#ifndef __IAMVideoAcceleratorNotify_FWD_DEFINED__
#define __IAMVideoAcceleratorNotify_FWD_DEFINED__
typedef interface IAMVideoAcceleratorNotify IAMVideoAcceleratorNotify;
#ifdef __cplusplus
interface IAMVideoAcceleratorNotify;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <unknwn.h>
#include <amva.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __IMediaSample_FWD_DEFINED__
#define __IMediaSample_FWD_DEFINED__
typedef interface IMediaSample IMediaSample;
#ifdef __cplusplus
interface IMediaSample;
#endif /* __cplusplus */
#endif

#if 0
typedef struct _DDSCAPS2 {
    DWORD dwCaps;
    DWORD dwCaps2;
    DWORD dwCaps3;
    union {
        DWORD dwCaps4;
        DWORD dwVolumeDepth;
    } DUMMYUNIONNAME1;
} DDSCAPS2;
typedef struct _DDPIXELFORMAT {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwFourCC;
    union {
        DWORD dwRGBBitCount;
        DWORD dwYUVBitCount;
        DWORD dwZBufferBitDepth;
        DWORD dwAlphaBitDepth;
        DWORD dwLuminanceBitCount;
        DWORD dwBumpBitCount;
        DWORD dwPrivateFormatBitCount;
    } DUMMYUNIONNAME1;
    union {
        DWORD dwRBitMask;
        DWORD dwYBitMask;
        DWORD dwStencilBitDepth;
        DWORD dwLuminanceBitMask;
        DWORD dwBumpDuBitMask;
        DWORD dwOperations;
    } DUMMYUNIONNAME2;
    union {
        DWORD dwGBitMask;
        DWORD dwUBitMask;
        DWORD dwZBitMask;
        DWORD dwBumpDvBitMask;
        struct {
            WORD wFlipMSTypes;
            WORD wBltMSTypes;
        } MultiSampleCaps;
    } DUMMYUNIONNAME3;
    union {
        DWORD dwBBitMask;
        DWORD dwVBitMask;
        DWORD dwStencilBitMask;
        DWORD dwBumpLuminanceBitMask;
    } DUMMYUNIONNAME4;
    union {
        DWORD dwRGBAlphaBitMask;
        DWORD dwYUVAlphaBitMask;
        DWORD dwLuminanceAlphaBitMask;
        DWORD dwRGBZBitMask;
        DWORD dwYUVZBitMask;
    } DUMMYUNIONNAME5;
} DDPIXELFORMAT;
#endif
/*****************************************************************************
 * IAMVideoAccelerator interface
 */
#ifndef __IAMVideoAccelerator_INTERFACE_DEFINED__
#define __IAMVideoAccelerator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAMVideoAccelerator, 0x256a6a22, 0xfbad, 0x11d1, 0x82,0xbf, 0x00,0xa0,0xc9,0x69,0x6c,0x8f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("256a6a22-fbad-11d1-82bf-00a0c9696c8f")
IAMVideoAccelerator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetVideoAcceleratorGUIDs(
        DWORD *count,
        GUID *accelerators) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUncompFormatsSupported(
        const GUID *accelerator,
        DWORD *count,
        DDPIXELFORMAT *formats) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInternalMemInfo(
        const GUID *accelerator,
        const AMVAUncompDataInfo *format_info,
        AMVAInternalMemInfo *mem_info) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCompBufferInfo(
        const GUID *accelerator,
        const AMVAUncompDataInfo *uncompressed_info,
        DWORD *compressed_info_count,
        AMVACompBufferInfo *compressed_infos) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInternalCompBufferInfo(
        DWORD *count,
        AMVACompBufferInfo *infos) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginFrame(
        const AMVABeginFrameInfo *info) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndFrame(
        const AMVAEndFrameInfo *info) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBuffer(
        DWORD type_index,
        DWORD buffer_index,
        BOOL read_only,
        void **buffer,
        LONG *stride) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
        DWORD type_index,
        DWORD buffer_index) = 0;

    virtual HRESULT STDMETHODCALLTYPE Execute(
        DWORD function,
        void *in_data,
        DWORD in_size,
        void *out_data,
        DWORD out_size,
        DWORD buffer_count,
        const AMVABUFFERINFO *buffers) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryRenderStatus(
        DWORD type_index,
        DWORD buffer_index,
        DWORD flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayFrame(
        DWORD index,
        IMediaSample *sample) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAMVideoAccelerator, 0x256a6a22, 0xfbad, 0x11d1, 0x82,0xbf, 0x00,0xa0,0xc9,0x69,0x6c,0x8f)
#endif
#else
typedef struct IAMVideoAcceleratorVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAMVideoAccelerator methods ***/
    HRESULT (STDMETHODCALLTYPE *GetVideoAcceleratorGUIDs)(
        IAMVideoAccelerator *This,
        DWORD *count,
        GUID *accelerators);

    HRESULT (STDMETHODCALLTYPE *GetUncompFormatsSupported)(
        IAMVideoAccelerator *This,
        const GUID *accelerator,
        DWORD *count,
        DDPIXELFORMAT *formats);

    HRESULT (STDMETHODCALLTYPE *GetInternalMemInfo)(
        IAMVideoAccelerator *This,
        const GUID *accelerator,
        const AMVAUncompDataInfo *format_info,
        AMVAInternalMemInfo *mem_info);

    HRESULT (STDMETHODCALLTYPE *GetCompBufferInfo)(
        IAMVideoAccelerator *This,
        const GUID *accelerator,
        const AMVAUncompDataInfo *uncompressed_info,
        DWORD *compressed_info_count,
        AMVACompBufferInfo *compressed_infos);

    HRESULT (STDMETHODCALLTYPE *GetInternalCompBufferInfo)(
        IAMVideoAccelerator *This,
        DWORD *count,
        AMVACompBufferInfo *infos);

    HRESULT (STDMETHODCALLTYPE *BeginFrame)(
        IAMVideoAccelerator *This,
        const AMVABeginFrameInfo *info);

    HRESULT (STDMETHODCALLTYPE *EndFrame)(
        IAMVideoAccelerator *This,
        const AMVAEndFrameInfo *info);

    HRESULT (STDMETHODCALLTYPE *GetBuffer)(
        IAMVideoAccelerator *This,
        DWORD type_index,
        DWORD buffer_index,
        BOOL read_only,
        void **buffer,
        LONG *stride);

    HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
        IAMVideoAccelerator *This,
        DWORD type_index,
        DWORD buffer_index);

    HRESULT (STDMETHODCALLTYPE *Execute)(
        IAMVideoAccelerator *This,
        DWORD function,
        void *in_data,
        DWORD in_size,
        void *out_data,
        DWORD out_size,
        DWORD buffer_count,
        const AMVABUFFERINFO *buffers);

    HRESULT (STDMETHODCALLTYPE *QueryRenderStatus)(
        IAMVideoAccelerator *This,
        DWORD type_index,
        DWORD buffer_index,
        DWORD flags);

    HRESULT (STDMETHODCALLTYPE *DisplayFrame)(
        IAMVideoAccelerator *This,
        DWORD index,
        IMediaSample *sample);

    END_INTERFACE
} IAMVideoAcceleratorVtbl;

interface IAMVideoAccelerator {
    CONST_VTBL IAMVideoAcceleratorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAMVideoAccelerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAMVideoAccelerator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAMVideoAccelerator_Release(This) (This)->lpVtbl->Release(This)
/*** IAMVideoAccelerator methods ***/
#define IAMVideoAccelerator_GetVideoAcceleratorGUIDs(This,count,accelerators) (This)->lpVtbl->GetVideoAcceleratorGUIDs(This,count,accelerators)
#define IAMVideoAccelerator_GetUncompFormatsSupported(This,accelerator,count,formats) (This)->lpVtbl->GetUncompFormatsSupported(This,accelerator,count,formats)
#define IAMVideoAccelerator_GetInternalMemInfo(This,accelerator,format_info,mem_info) (This)->lpVtbl->GetInternalMemInfo(This,accelerator,format_info,mem_info)
#define IAMVideoAccelerator_GetCompBufferInfo(This,accelerator,uncompressed_info,compressed_info_count,compressed_infos) (This)->lpVtbl->GetCompBufferInfo(This,accelerator,uncompressed_info,compressed_info_count,compressed_infos)
#define IAMVideoAccelerator_GetInternalCompBufferInfo(This,count,infos) (This)->lpVtbl->GetInternalCompBufferInfo(This,count,infos)
#define IAMVideoAccelerator_BeginFrame(This,info) (This)->lpVtbl->BeginFrame(This,info)
#define IAMVideoAccelerator_EndFrame(This,info) (This)->lpVtbl->EndFrame(This,info)
#define IAMVideoAccelerator_GetBuffer(This,type_index,buffer_index,read_only,buffer,stride) (This)->lpVtbl->GetBuffer(This,type_index,buffer_index,read_only,buffer,stride)
#define IAMVideoAccelerator_ReleaseBuffer(This,type_index,buffer_index) (This)->lpVtbl->ReleaseBuffer(This,type_index,buffer_index)
#define IAMVideoAccelerator_Execute(This,function,in_data,in_size,out_data,out_size,buffer_count,buffers) (This)->lpVtbl->Execute(This,function,in_data,in_size,out_data,out_size,buffer_count,buffers)
#define IAMVideoAccelerator_QueryRenderStatus(This,type_index,buffer_index,flags) (This)->lpVtbl->QueryRenderStatus(This,type_index,buffer_index,flags)
#define IAMVideoAccelerator_DisplayFrame(This,index,sample) (This)->lpVtbl->DisplayFrame(This,index,sample)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IAMVideoAccelerator_QueryInterface(IAMVideoAccelerator* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IAMVideoAccelerator_AddRef(IAMVideoAccelerator* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IAMVideoAccelerator_Release(IAMVideoAccelerator* This) {
    return This->lpVtbl->Release(This);
}
/*** IAMVideoAccelerator methods ***/
static __WIDL_INLINE HRESULT IAMVideoAccelerator_GetVideoAcceleratorGUIDs(IAMVideoAccelerator* This,DWORD *count,GUID *accelerators) {
    return This->lpVtbl->GetVideoAcceleratorGUIDs(This,count,accelerators);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_GetUncompFormatsSupported(IAMVideoAccelerator* This,const GUID *accelerator,DWORD *count,DDPIXELFORMAT *formats) {
    return This->lpVtbl->GetUncompFormatsSupported(This,accelerator,count,formats);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_GetInternalMemInfo(IAMVideoAccelerator* This,const GUID *accelerator,const AMVAUncompDataInfo *format_info,AMVAInternalMemInfo *mem_info) {
    return This->lpVtbl->GetInternalMemInfo(This,accelerator,format_info,mem_info);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_GetCompBufferInfo(IAMVideoAccelerator* This,const GUID *accelerator,const AMVAUncompDataInfo *uncompressed_info,DWORD *compressed_info_count,AMVACompBufferInfo *compressed_infos) {
    return This->lpVtbl->GetCompBufferInfo(This,accelerator,uncompressed_info,compressed_info_count,compressed_infos);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_GetInternalCompBufferInfo(IAMVideoAccelerator* This,DWORD *count,AMVACompBufferInfo *infos) {
    return This->lpVtbl->GetInternalCompBufferInfo(This,count,infos);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_BeginFrame(IAMVideoAccelerator* This,const AMVABeginFrameInfo *info) {
    return This->lpVtbl->BeginFrame(This,info);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_EndFrame(IAMVideoAccelerator* This,const AMVAEndFrameInfo *info) {
    return This->lpVtbl->EndFrame(This,info);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_GetBuffer(IAMVideoAccelerator* This,DWORD type_index,DWORD buffer_index,BOOL read_only,void **buffer,LONG *stride) {
    return This->lpVtbl->GetBuffer(This,type_index,buffer_index,read_only,buffer,stride);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_ReleaseBuffer(IAMVideoAccelerator* This,DWORD type_index,DWORD buffer_index) {
    return This->lpVtbl->ReleaseBuffer(This,type_index,buffer_index);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_Execute(IAMVideoAccelerator* This,DWORD function,void *in_data,DWORD in_size,void *out_data,DWORD out_size,DWORD buffer_count,const AMVABUFFERINFO *buffers) {
    return This->lpVtbl->Execute(This,function,in_data,in_size,out_data,out_size,buffer_count,buffers);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_QueryRenderStatus(IAMVideoAccelerator* This,DWORD type_index,DWORD buffer_index,DWORD flags) {
    return This->lpVtbl->QueryRenderStatus(This,type_index,buffer_index,flags);
}
static __WIDL_INLINE HRESULT IAMVideoAccelerator_DisplayFrame(IAMVideoAccelerator* This,DWORD index,IMediaSample *sample) {
    return This->lpVtbl->DisplayFrame(This,index,sample);
}
#endif
#endif

#endif


#endif  /* __IAMVideoAccelerator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAMVideoAcceleratorNotify interface
 */
#ifndef __IAMVideoAcceleratorNotify_INTERFACE_DEFINED__
#define __IAMVideoAcceleratorNotify_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAMVideoAcceleratorNotify, 0x256a6a21, 0xfbad, 0x11d1, 0x82,0xbf, 0x00,0xa0,0xc9,0x69,0x6c,0x8f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("256a6a21-fbad-11d1-82bf-00a0c9696c8f")
IAMVideoAcceleratorNotify : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetUncompSurfacesInfo(
        const GUID *accelerator,
        AMVAUncompBufferInfo *info) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetUncompSurfacesInfo(
        DWORD allocated_count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCreateVideoAcceleratorData(
        const GUID *accelerator,
        DWORD *size,
        void **data) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAMVideoAcceleratorNotify, 0x256a6a21, 0xfbad, 0x11d1, 0x82,0xbf, 0x00,0xa0,0xc9,0x69,0x6c,0x8f)
#endif
#else
typedef struct IAMVideoAcceleratorNotifyVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAMVideoAcceleratorNotify methods ***/
    HRESULT (STDMETHODCALLTYPE *GetUncompSurfacesInfo)(
        IAMVideoAcceleratorNotify *This,
        const GUID *accelerator,
        AMVAUncompBufferInfo *info);

    HRESULT (STDMETHODCALLTYPE *SetUncompSurfacesInfo)(
        IAMVideoAcceleratorNotify *This,
        DWORD allocated_count);

    HRESULT (STDMETHODCALLTYPE *GetCreateVideoAcceleratorData)(
        IAMVideoAcceleratorNotify *This,
        const GUID *accelerator,
        DWORD *size,
        void **data);

    END_INTERFACE
} IAMVideoAcceleratorNotifyVtbl;

interface IAMVideoAcceleratorNotify {
    CONST_VTBL IAMVideoAcceleratorNotifyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAMVideoAcceleratorNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAMVideoAcceleratorNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAMVideoAcceleratorNotify_Release(This) (This)->lpVtbl->Release(This)
/*** IAMVideoAcceleratorNotify methods ***/
#define IAMVideoAcceleratorNotify_GetUncompSurfacesInfo(This,accelerator,info) (This)->lpVtbl->GetUncompSurfacesInfo(This,accelerator,info)
#define IAMVideoAcceleratorNotify_SetUncompSurfacesInfo(This,allocated_count) (This)->lpVtbl->SetUncompSurfacesInfo(This,allocated_count)
#define IAMVideoAcceleratorNotify_GetCreateVideoAcceleratorData(This,accelerator,size,data) (This)->lpVtbl->GetCreateVideoAcceleratorData(This,accelerator,size,data)
#else
/*** IUnknown methods ***/
static __WIDL_INLINE HRESULT IAMVideoAcceleratorNotify_QueryInterface(IAMVideoAcceleratorNotify* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static __WIDL_INLINE ULONG IAMVideoAcceleratorNotify_AddRef(IAMVideoAcceleratorNotify* This) {
    return This->lpVtbl->AddRef(This);
}
static __WIDL_INLINE ULONG IAMVideoAcceleratorNotify_Release(IAMVideoAcceleratorNotify* This) {
    return This->lpVtbl->Release(This);
}
/*** IAMVideoAcceleratorNotify methods ***/
static __WIDL_INLINE HRESULT IAMVideoAcceleratorNotify_GetUncompSurfacesInfo(IAMVideoAcceleratorNotify* This,const GUID *accelerator,AMVAUncompBufferInfo *info) {
    return This->lpVtbl->GetUncompSurfacesInfo(This,accelerator,info);
}
static __WIDL_INLINE HRESULT IAMVideoAcceleratorNotify_SetUncompSurfacesInfo(IAMVideoAcceleratorNotify* This,DWORD allocated_count) {
    return This->lpVtbl->SetUncompSurfacesInfo(This,allocated_count);
}
static __WIDL_INLINE HRESULT IAMVideoAcceleratorNotify_GetCreateVideoAcceleratorData(IAMVideoAcceleratorNotify* This,const GUID *accelerator,DWORD *size,void **data) {
    return This->lpVtbl->GetCreateVideoAcceleratorData(This,accelerator,size,data);
}
#endif
#endif

#endif


#endif  /* __IAMVideoAcceleratorNotify_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __videoacc_h__ */
