/*** Autogenerated by WIDL 0.1 from mediaobj.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_MEDIAOBJ_H
#define __WIDL_MEDIAOBJ_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif
#include <unknwn.h>
#include <objidl.h>
#ifndef __IDMOQualityControl_FWD_DEFINED__
#define __IDMOQualityControl_FWD_DEFINED__
typedef struct IDMOQualityControl IDMOQualityControl;
#endif

#ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__
#define __IDMOVideoOutputOptimizations_FWD_DEFINED__
typedef struct IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations;
#endif

#ifndef __IMediaBuffer_FWD_DEFINED__
#define __IMediaBuffer_FWD_DEFINED__
typedef struct IMediaBuffer IMediaBuffer;
#endif

#ifndef __IMediaObject_FWD_DEFINED__
#define __IMediaObject_FWD_DEFINED__
typedef struct IMediaObject IMediaObject;
#endif

#ifndef __IMediaObjectInPlace_FWD_DEFINED__
#define __IMediaObjectInPlace_FWD_DEFINED__
typedef struct IMediaObjectInPlace IMediaObjectInPlace;
#endif

typedef struct _DMOMediaType {
    GUID majortype;
    GUID subtype;
    BOOL bFixedSizeSamples;
    BOOL bTemporalCompression;
    ULONG lSampleSize;
    GUID formattype;
    IUnknown *pUnk;
    ULONG cbFormat;
    BYTE *pbFormat;
} DMO_MEDIA_TYPE;

#ifndef __IEnumDMO_FWD_DEFINED__
#define __IEnumDMO_FWD_DEFINED__
typedef struct IEnumDMO IEnumDMO;
#endif

/*****************************************************************************
 * IEnumDMO interface
 */
#ifndef __IEnumDMO_INTERFACE_DEFINED__
#define __IEnumDMO_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f);
#if defined(__cplusplus) && !defined(CINTERFACE)
struct IEnumDMO : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        DWORD cItemsToFetch,
        CLSID* pCLSID,
        WCHAR** Names,
        DWORD* pcItemsFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        DWORD cItemsToSkip) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumDMO** ppEnum) = 0;

};
#else
typedef struct IEnumDMOVtbl IEnumDMOVtbl;
struct IEnumDMO {
    const IEnumDMOVtbl* lpVtbl;
};
struct IEnumDMOVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumDMO methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumDMO* This,
        DWORD cItemsToFetch,
        CLSID* pCLSID,
        WCHAR** Names,
        DWORD* pcItemsFetched);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumDMO* This,
        DWORD cItemsToSkip);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumDMO* This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumDMO* This,
        IEnumDMO** ppEnum);

    END_INTERFACE
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumDMO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IEnumDMO_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IEnumDMO_Release(p) (p)->lpVtbl->Release(p)
/*** IEnumDMO methods ***/
#define IEnumDMO_Next(p,a,b,c,d) (p)->lpVtbl->Next(p,a,b,c,d)
#define IEnumDMO_Skip(p,a) (p)->lpVtbl->Skip(p,a)
#define IEnumDMO_Reset(p) (p)->lpVtbl->Reset(p)
#define IEnumDMO_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#endif

#endif

HRESULT CALLBACK IEnumDMO_Skip_Proxy(
    IEnumDMO* This,
    DWORD cItemsToSkip);
void __RPC_STUB IEnumDMO_Skip_Stub(
    struct IRpcStubBuffer* This,
    struct IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumDMO_Reset_Proxy(
    IEnumDMO* This);
void __RPC_STUB IEnumDMO_Reset_Stub(
    struct IRpcStubBuffer* This,
    struct IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumDMO_Clone_Proxy(
    IEnumDMO* This,
    IEnumDMO** ppEnum);
void __RPC_STUB IEnumDMO_Clone_Stub(
    struct IRpcStubBuffer* This,
    struct IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumDMO_INTERFACE_DEFINED__ */

#ifdef __cplusplus
}
#endif
#endif /* __WIDL_MEDIAOBJ_H */
