/**
 * 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 "unknwn.idl";

/* Fake widl types */
cpp_quote("#if 0")
typedef DWORD IDirect3DDevice9;
typedef DWORD IDirect3DSurface9;
typedef DWORD D3DFORMAT;
typedef DWORD D3DPOOL;
cpp_quote("#endif")

cpp_quote("#ifndef __REFERENCE_TIME_DEFINED")
cpp_quote("#define __REFERENCE_TIME_DEFINED")
cpp_quote("typedef LONGLONG REFERENCE_TIME;")
cpp_quote("#endif /*__REFERENCE_TIME_DEFINED*/")

cpp_quote("#define DXVA2_ProcAmp_None 0x0000")
cpp_quote("#define DXVA2_ProcAmp_Brightness 0x0001")
cpp_quote("#define DXVA2_ProcAmp_Contrast 0x0002")
cpp_quote("#define DXVA2_ProcAmp_Hue 0x0004")
cpp_quote("#define DXVA2_ProcAmp_Saturation 0x0008")
cpp_quote("")
cpp_quote("#define DXVA2_E_NOT_INITIALIZED     MAKE_HRESULT(1, 4, 4096)")
cpp_quote("#define DXVA2_E_NEW_VIDEO_DEVICE    MAKE_HRESULT(1, 4, 4097)")
cpp_quote("#define DXVA2_E_VIDEO_DEVICE_LOCKED MAKE_HRESULT(1, 4, 4098)")
cpp_quote("#define DXVA2_E_NOT_AVAILABLE       MAKE_HRESULT(1, 4, 4099)")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02);")
cpp_quote("DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02);")
cpp_quote("")
cpp_quote("DEFINE_GUID(DXVA2_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0,0x4563, 0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66);")
cpp_quote("DEFINE_GUID(DXVA2_ModeMPEG2_IDCT, 0xbf22ad00, 0x03ea,0x4690, 0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e);")
cpp_quote("DEFINE_GUID(DXVA2_ModeMPEG2_VLD, 0xee27417f, 0x5e28,0x4e65, 0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9);")
cpp_quote("DEFINE_GUID(DXVA2_ModeH264_A, 0x1b81be64, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeH264_B, 0x1b81be65, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeH264_C, 0x1b81be66, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeH264_D, 0x1b81be67, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeH264_E, 0x1b81be68, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeH264_F, 0x1b81be69, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeWMV8_A, 0x1b81be80, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeWMV8_B, 0x1b81be81, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeWMV9_A, 0x1b81be90, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeWMV9_B, 0x1b81be91, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeWMV9_C, 0x1b81be94, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeVC1_A, 0x1b81beA0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeVC1_B, 0x1b81beA1, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeVC1_C, 0x1b81beA2, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("DEFINE_GUID(DXVA2_ModeVC1_D, 0x1b81beA3, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
cpp_quote("")
cpp_quote("typedef struct IDirectXVideoDecoderService IDirectXVideoDecoderService;")
cpp_quote("")
cpp_quote("typedef enum _DXVA2_SampleFormat {")
cpp_quote("  DXVA2_SampleFormatMask                  = 0x00FF,")
cpp_quote("  DXVA2_SampleUnknown                     = 0,")
cpp_quote("  DXVA2_SampleProgressiveFrame            = 2,")
cpp_quote("  DXVA2_SampleFieldInterleavedEvenFirst   = 3,")
cpp_quote("  DXVA2_SampleFieldInterleavedOddFirst    = 4,")
cpp_quote("  DXVA2_SampleFieldSingleEven             = 5,")
cpp_quote("  DXVA2_SampleFieldSingleOdd              = 6,")
cpp_quote("  DXVA2_SampleSubStream                   = 7 ")
cpp_quote("} DXVA2_SampleFormat;")
cpp_quote("")
cpp_quote("typedef enum _DXVA2_VideoChromaSubSampling {")
cpp_quote("  DXVA2_VideoChromaSubsamplingMask                              = 0x0F,")
cpp_quote("  DXVA2_VideoChromaSubsampling_Unknown                          = 0,")
cpp_quote("  DXVA2_VideoChromaSubsampling_ProgressiveChroma                = 0x8,")
cpp_quote("  DXVA2_VideoChromaSubsampling_Horizontally_Cosited             = 0x4,")
cpp_quote("  DXVA2_VideoChromaSubsampling_Vertically_Cosited               = 0x2,")
cpp_quote("  DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes   = 0x1,")
cpp_quote("  DXVA2_VideoChromaSubsampling_MPEG2                            = ")
cpp_quote("              DXVA2_VideoChromaSubsampling_Horizontally_Cosited |")
cpp_quote("              DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,")
cpp_quote("  DXVA2_VideoChromaSubsampling_MPEG1                            = ")
cpp_quote("              DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,")
cpp_quote("  DXVA2_VideoChromaSubsampling_DV_PAL                           = ")
cpp_quote("              DXVA2_VideoChromaSubsampling_Horizontally_Cosited | ")
cpp_quote("              DXVA2_VideoChromaSubsampling_Vertically_Cosited,")
cpp_quote("  DXVA2_VideoChromaSubsampling_Cosited                          = ")
cpp_quote("              DXVA2_VideoChromaSubsampling_Horizontally_Cosited | ")
cpp_quote("              DXVA2_VideoChromaSubsampling_Vertically_Cosited | ")
cpp_quote("              DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes ")
cpp_quote("} DXVA2_VideoChromaSubSampling;")
cpp_quote("")
cpp_quote("typedef enum _DXVA2_NominalRange {")
cpp_quote("  DXVA2_NominalRangeMask       = 0x07,")
cpp_quote("  DXVA2_NominalRange_Unknown   = 0,")
cpp_quote("  DXVA2_NominalRange_Normal    = 1,")
cpp_quote("  DXVA2_NominalRange_Wide      = 2,")
cpp_quote("  DXVA2_NominalRange_0_255     = 1,")
cpp_quote("  DXVA2_NominalRange_16_235    = 2,")
cpp_quote("  DXVA2_NominalRange_48_208    = 3 ")
cpp_quote("} DXVA2_NominalRange;")
cpp_quote("")
cpp_quote("typedef enum _DXVA2_VideoLighting {")
cpp_quote("  DXVA2_VideoLightingMask       = 0x0F,")
cpp_quote("  DXVA2_VideoLighting_Unknown   = 0,")
cpp_quote("  DXVA2_VideoLighting_bright    = 1,")
cpp_quote("  DXVA2_VideoLighting_office    = 2,")
cpp_quote("  DXVA2_VideoLighting_dim       = 3,")
cpp_quote("  DXVA2_VideoLighting_dark      = 4 ")
cpp_quote("} DXVA2_VideoLighting;")
cpp_quote("")
cpp_quote("typedef enum _DXVA2_VideoPrimaries {")
cpp_quote("  DXVA2_VideoPrimariesMask             = 0x001f,")
cpp_quote("  DXVA2_VideoPrimaries_Unknown         = 0,")
cpp_quote("  DXVA2_VideoPrimaries_reserved        = 1,")
cpp_quote("  DXVA2_VideoPrimaries_BT709           = 2,")
cpp_quote("  DXVA2_VideoPrimaries_BT470_2_SysM    = 3,")
cpp_quote("  DXVA2_VideoPrimaries_BT470_2_SysBG   = 4,")
cpp_quote("  DXVA2_VideoPrimaries_SMPTE170M       = 5,")
cpp_quote("  DXVA2_VideoPrimaries_SMPTE240M       = 6,")
cpp_quote("  DXVA2_VideoPrimaries_EBU3213         = 7,")
cpp_quote("  DXVA2_VideoPrimaries_SMPTE_C         = 8 ")
cpp_quote("} DXVA2_VideoPrimaries;")
cpp_quote("")
cpp_quote("typedef enum _DXVA2_VideoTransferFunction {")
cpp_quote("  DXVA2_VideoTransFuncMask       = 0x001f,")
cpp_quote("  DXVA2_VideoTransFunc_Unknown   = 0,")
cpp_quote("  DXVA2_VideoTransFunc_10        = 1,")
cpp_quote("  DXVA2_VideoTransFunc_18        = 2,")
cpp_quote("  DXVA2_VideoTransFunc_20        = 3,")
cpp_quote("  DXVA2_VideoTransFunc_22        = 4,")
cpp_quote("  DXVA2_VideoTransFunc_709       = 5,")
cpp_quote("  DXVA2_VideoTransFunc_240M      = 6,")
cpp_quote("  DXVA2_VideoTransFunc_sRGB      = 7,")
cpp_quote("  DXVA2_VideoTransFunc_28        = 8 ")
cpp_quote("} DXVA2_VideoTransferFunction;")
cpp_quote("")
cpp_quote("typedef enum  {")
cpp_quote("  DXVA2_SurfaceType_DecoderRenderTarget      = 0,")
cpp_quote("  DXVA2_SurfaceType_ProcessorRenderTarget    = 1,")
cpp_quote("  DXVA2_SurfaceType_D3DRenderTargetTexture   = 2 ")
cpp_quote("} DXVA2_SurfaceType;")
cpp_quote("")
cpp_quote("typedef enum _DXVA2_VideoTransferMatrix {")
cpp_quote("  DXVA2_VideoTransferMatrixMask         = 0x07,")
cpp_quote("  DXVA2_VideoTransferMatrix_Unknown     = 0,")
cpp_quote("  DXVA2_VideoTransferMatrix_BT709       = 1,")
cpp_quote("  DXVA2_VideoTransferMatrix_BT601       = 2,")
cpp_quote("  DXVA2_VideoTransferMatrix_SMPTE240M   = 3 ")
cpp_quote("} DXVA2_VideoTransferMatrix;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_AYUVSample16 {")
cpp_quote("  USHORT Cr;")
cpp_quote("  USHORT Cb;")
cpp_quote("  USHORT Y;")
cpp_quote("  USHORT Alpha;")
cpp_quote("} DXVA2_AYUVSample16;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_AYUVSample8 {")
cpp_quote("  UCHAR Cr;")
cpp_quote("  UCHAR Cb;")
cpp_quote("  UCHAR Y;")
cpp_quote("  UCHAR Alpha;")
cpp_quote("} DXVA2_AYUVSample8;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_ConfigPictureDecode {")
cpp_quote("  GUID   guidConfigBitstreamEncryption;")
cpp_quote("  GUID   guidConfigMBcontrolEncryption;")
cpp_quote("  GUID   guidConfigResidDiffEncryption;")
cpp_quote("  UINT   ConfigBitstreamRaw;")
cpp_quote("  UINT   ConfigMBcontrolRasterOrder;")
cpp_quote("  UINT   ConfigResidDiffHost;")
cpp_quote("  UINT   ConfigSpatialResid8;")
cpp_quote("  UINT   ConfigResid8Subtraction;")
cpp_quote("  UINT   ConfigSpatialHost8or9Clipping;")
cpp_quote("  UINT   ConfigSpatialResidInterleaved;")
cpp_quote("  UINT   ConfigIntraResidUnsigned;")
cpp_quote("  UINT   ConfigResidDiffAccelerator;")
cpp_quote("  UINT   ConfigHostInverseScan;")
cpp_quote("  UINT   ConfigSpecificIDCT;")
cpp_quote("  UINT   Config4GroupedCoefs;")
cpp_quote("  USHORT ConfigMinRenderTargetBuffCount;")
cpp_quote("  USHORT ConfigDecoderSpecific;")
cpp_quote("} DXVA2_ConfigPictureDecode;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_DecodeBufferDesc {")
cpp_quote("  DWORD CompressedBufferType;")
cpp_quote("  UINT  BufferIndex;")
cpp_quote("  UINT  DataOffset;")
cpp_quote("  UINT  DataSize;")
cpp_quote("  UINT  FirstMBaddress;")
cpp_quote("  UINT  NumMBsInBuffer;")
cpp_quote("  UINT  Width;")
cpp_quote("  UINT  Height;")
cpp_quote("  UINT  Stride;")
cpp_quote("  UINT  ReservedBits;")
cpp_quote("  PVOID pvPVPState;")
cpp_quote("} DXVA2_DecodeBufferDesc;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_DecodeExtensionData {")
cpp_quote("  UINT  Function;")
cpp_quote("  PVOID pPrivateInputData;")
cpp_quote("  UINT  PrivateInputDataSize;")
cpp_quote("  PVOID pPrivateOutputData;")
cpp_quote("  UINT  PrivateOutputDataSize;")
cpp_quote("} DXVA2_DecodeExtensionData;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_DecodeExecuteParams {")
cpp_quote("  UINT                      NumCompBuffers;")
cpp_quote("  DXVA2_DecodeBufferDesc    *pCompressedBuffers;")
cpp_quote("  DXVA2_DecodeExtensionData *pExtensionData;")
cpp_quote("} DXVA2_DecodeExecuteParams;")
cpp_quote("")
cpp_quote("typedef struct {")
cpp_quote("  __C89_NAMELESS union {")
cpp_quote("    __C89_NAMELESS struct {")
cpp_quote("      UINT SampleFormat            :8;")
cpp_quote("      UINT VideoChromaSubsampling  :4;")
cpp_quote("      UINT NominalRange            :3;")
cpp_quote("      UINT VideoTransferMatrix     :3;")
cpp_quote("      UINT VideoLighting           :4;")
cpp_quote("      UINT VideoPrimaries          :5;")
cpp_quote("      UINT VideoTransferFunction   :5;")
cpp_quote("    } DUMMYSTRUCTNAME;")
cpp_quote("    UINT   value;")
cpp_quote("  } DUMMYUNIONNAME;")
cpp_quote("} DXVA2_ExtendedFormat;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_Fixed32 {")
cpp_quote("  __C89_NAMELESS union {")
cpp_quote("    __C89_NAMELESS struct {")
cpp_quote("      USHORT Fraction;")
cpp_quote("      SHORT  Value;")
cpp_quote("    } DUMMYSTRUCTNAME;")
cpp_quote("    LONG   ll;")
cpp_quote("  } DUMMYUNIONNAME;")
cpp_quote("} DXVA2_Fixed32;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_FilterValues {")
cpp_quote("  DXVA2_Fixed32 Level;")
cpp_quote("  DXVA2_Fixed32 Threshold;")
cpp_quote("  DXVA2_Fixed32 Radius;")
cpp_quote("} DXVA2_FilterValues;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_Frequency {")
cpp_quote("  UINT Numerator;")
cpp_quote("  UINT Denominator;")
cpp_quote("} DXVA2_Frequency;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_ProcAmpValues {")
cpp_quote("  DXVA2_Fixed32 Brightness;")
cpp_quote("  DXVA2_Fixed32 Contrast;")
cpp_quote("  DXVA2_Fixed32 Hue;")
cpp_quote("  DXVA2_Fixed32 Saturation;")
cpp_quote("} DXVA2_ProcAmpValues;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_ValueRange {")
cpp_quote("  DXVA2_Fixed32 MinValue;")
cpp_quote("  DXVA2_Fixed32 MaxValue;")
cpp_quote("  DXVA2_Fixed32 DefaultValue;")
cpp_quote("  DXVA2_Fixed32 StepSize;")
cpp_quote("} DXVA2_ValueRange;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_VideoDesc {")
cpp_quote("  UINT                 SampleWidth;")
cpp_quote("  UINT                 SampleHeight;")
cpp_quote("  DXVA2_ExtendedFormat SampleFormat;")
cpp_quote("  D3DFORMAT            Format;")
cpp_quote("  DXVA2_Frequency      InputSampleFreq;")
cpp_quote("  DXVA2_Frequency      OutputFrameFreq;")
cpp_quote("  UINT                 UABProtectionLevel;")
cpp_quote("  UINT                 Reserved;")
cpp_quote("} DXVA2_VideoDesc;")
cpp_quote("")
cpp_quote("/* DeviceCaps")
cpp_quote("DXVA2_VPDev_EmulatedDXVA1")
cpp_quote("DXVA2_VPDev_HardwareDevice")
cpp_quote("DXVA2_VPDev_SoftwareDevice")
cpp_quote("*/")
cpp_quote("/* DeinterlaceTechnology")
cpp_quote("DXVA2_DeinterlaceTech_Unknown")
cpp_quote("DXVA2_DeinterlaceTech_BOBLineReplicate")
cpp_quote("DXVA2_DeinterlaceTech_BOBVerticalStretch")
cpp_quote("DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap")
cpp_quote("DXVA2_DeinterlaceTech_MedianFiltering")
cpp_quote("DXVA2_DeinterlaceTech_EdgeFiltering")
cpp_quote("DXVA2_DeinterlaceTech_FieldAdaptive")
cpp_quote("DXVA2_DeinterlaceTech_PixelAdaptive")
cpp_quote("DXVA2_DeinterlaceTech_MotionVectorSteered")
cpp_quote("DXVA2_DeinterlaceTech_InverseTelecine")
cpp_quote("*/")
cpp_quote("")
cpp_quote("/* VideoProcessorOperations")
cpp_quote("DXVA2_VideoProcess_YUV2RGB")
cpp_quote("DXVA2_VideoProcess_StretchX")
cpp_quote("DXVA2_VideoProcess_StretchY")
cpp_quote("DXVA2_VideoProcess_AlphaBlend")
cpp_quote("DXVA2_VideoProcess_SubRects")
cpp_quote("DXVA2_VideoProcess_SubStreams")
cpp_quote("DXVA2_VideoProcess_SubStreamsExtended")
cpp_quote("DXVA2_VideoProcess_YUV2RGBExtended")
cpp_quote("DXVA2_VideoProcess_AlphaBlendExtended")
cpp_quote("DXVA2_VideoProcess_Constriction")
cpp_quote("DXVA2_VideoProcess_NoiseFilter")
cpp_quote("DXVA2_VideoProcess_DetailFilter")
cpp_quote("DXVA2_VideoProcess_PlanarAlpha")
cpp_quote("DXVA2_VideoProcess_LinearScaling")
cpp_quote("DXVA2_VideoProcess_GammaCompensated")
cpp_quote("DXVA2_VideoProcess_MaintainsOriginalFieldData")
cpp_quote("*/")
cpp_quote("")
cpp_quote("/*NoiseFilterTechnology")
cpp_quote("DXVA2_NoiseFilterTech_Unsupported")
cpp_quote("DXVA2_NoiseFilterTech_Unknown")
cpp_quote("DXVA2_NoiseFilterTech_Median")
cpp_quote("DXVA2_NoiseFilterTech_Temporal")
cpp_quote("DXVA2_NoiseFilterTech_BlockNoise")
cpp_quote("DXVA2_NoiseFilterTech_MosquitoNoise")
cpp_quote("*/")
cpp_quote("")
cpp_quote("/* DetailFilterTechnology")
cpp_quote("DXVA2_DetailFilterTech_Unsupported")
cpp_quote("DXVA2_DetailFilterTech_Unknown")
cpp_quote("DXVA2_DetailFilterTech_Edge")
cpp_quote("DXVA2_DetailFilterTech_Sharpening")
cpp_quote("*/")
cpp_quote("typedef struct _DXVA2_VideoProcessBltParams {")
cpp_quote("  REFERENCE_TIME       TargetFrame;")
cpp_quote("  RECT                 TargetRect;")
cpp_quote("  SIZE                 ConstrictionSize;")
cpp_quote("  UINT                 StreamingFlags;")
cpp_quote("  DXVA2_AYUVSample16   BackgroundColor;")
cpp_quote("  DXVA2_ExtendedFormat DestFormat;")
cpp_quote("  DXVA2_ProcAmpValues  ProcAmpValues;")
cpp_quote("  DXVA2_Fixed32        Alpha;")
cpp_quote("  DXVA2_FilterValues   NoiseFilterLuma;")
cpp_quote("  DXVA2_FilterValues   NoiseFilterChroma;")
cpp_quote("  DXVA2_FilterValues   DetailFilterLuma;")
cpp_quote("  DXVA2_FilterValues   DetailFilterChroma;")
cpp_quote("  DWORD                DestData;")
cpp_quote("} DXVA2_VideoProcessBltParams;")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_VideoProcessorCaps {")
cpp_quote("  UINT    DeviceCaps;")
cpp_quote("  D3DPOOL InputPool;")
cpp_quote("  UINT    NumForwardRefSamples;")
cpp_quote("  UINT    NumBackwardRefSamples;")
cpp_quote("  UINT    Reserved;")
cpp_quote("  UINT    DeinterlaceTechnology;")
cpp_quote("  UINT    ProcAmpControlCaps;")
cpp_quote("  UINT    VideoProcessorOperations;")
cpp_quote("  UINT    NoiseFilterTechnology;")
cpp_quote("  UINT    DetailFilterTechnology;")
cpp_quote("} DXVA2_VideoProcessorCaps;")
cpp_quote("")
cpp_quote("/* SampleData")
cpp_quote("DXVA2_SampleData_RFF")
cpp_quote("DXVA2_SampleData_TFF")
cpp_quote("DXVA2_SampleData_RFF_TFF_Present")
cpp_quote("*/")
cpp_quote("")
cpp_quote("typedef struct _DXVA2_VideoSample {")
cpp_quote("  REFERENCE_TIME       Start;")
cpp_quote("  REFERENCE_TIME       End;")
cpp_quote("  DXVA2_ExtendedFormat SampleFormat;")
cpp_quote("  IDirect3DSurface9*   SrcSurface;")
cpp_quote("  RECT                 SrcRect;")
cpp_quote("  RECT                 DstRect;")
cpp_quote("  DXVA2_AYUVSample8    Pal[16];")
cpp_quote("  DXVA2_Fixed32        PlanarAlpha;")
cpp_quote("  DWORD                SampleData;")
cpp_quote("} DXVA2_VideoSample;")
cpp_quote("")
cpp_quote("/* Constants */")
cpp_quote("")
cpp_quote("#define DXVA2_VideoDecoderRenderTarget 0")
cpp_quote("#define DXVA2_VideoProcessorRenderTarget 1")
cpp_quote("#define DXVA2_VideoSoftwareRenderTarget 2")
cpp_quote("")
cpp_quote("/* CompressedBufferType */")
cpp_quote("#define DXVA2_PictureParametersBufferType 0")
cpp_quote("#define DXVA2_MacroBlockControlBufferType 1")
cpp_quote("#define DXVA2_ResidualDifferenceBufferType 2")
cpp_quote("#define DXVA2_DeblockingControlBufferType 3")
cpp_quote("#define DXVA2_InverseQuantizationMatrixBufferType 4")
cpp_quote("#define DXVA2_SliceControlBufferType 5")
cpp_quote("#define DXVA2_BitStreamDateBufferType 6")
cpp_quote("#define DXVA2_MotionVectorBuffer 7")
cpp_quote("#define DXVA2_FilmGrainBuffer 8")
cpp_quote("")
cpp_quote("__forceinline const DXVA2_Fixed32 DXVA2_Fixed32OpaqueAlpha (void) {")
cpp_quote("  DXVA2_Fixed32 f32;")
cpp_quote("  f32.ll = 0 + (1 << 16);")
cpp_quote("  return f32;")
cpp_quote("}")
cpp_quote("")
cpp_quote("__forceinline const DXVA2_Fixed32 DXVA2_Fixed32TransparentAlpha (void) {")
cpp_quote("  DXVA2_Fixed32 f32;")
cpp_quote("  f32.ll = 0;")
cpp_quote("  return f32;")
cpp_quote("}")
cpp_quote("")
cpp_quote("__forceinline float DXVA2FixedToFloat (const DXVA2_Fixed32 f32) {")
cpp_quote("  return (float)f32.Value + (float)f32.Fraction / (1 << 16);")
cpp_quote("}")
cpp_quote("")
cpp_quote("__forceinline DXVA2_Fixed32 DXVA2FloatToFixed (const float f) {")
cpp_quote("  DXVA2_Fixed32 f32;")
cpp_quote("  f32.Value    = ((ULONG) (f * (1 << 16))) >> 16;")
cpp_quote("  f32.Fraction = ((ULONG) (f * (1 << 16))) & 0xFFFF;")
cpp_quote("  return f32;")
cpp_quote("}")
cpp_quote("")
cpp_quote("HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9(UINT *pResetToken,IDirect3DDeviceManager9 **ppDXVAManager);")
cpp_quote("HRESULT WINAPI DXVA2CreateVideoService(IDirect3DDevice9 *pDD,REFIID riid,void **ppService);")

[
    object,
    uuid(a0cade0f-06d5-4cf4-a1c7-f3cdd725aa75),
    local
]
interface IDirect3DDeviceManager9 : IUnknown
{
    HRESULT ResetDevice([in] IDirect3DDevice9 *pDevice, [in] UINT resetToken);
    HRESULT OpenDeviceHandle([out] HANDLE *phDevice);
    HRESULT CloseDeviceHandle([in] HANDLE hDevice);
    HRESULT TestDevice([in] HANDLE hDevice);
    HRESULT LockDevice([in] HANDLE hDevice, [out] IDirect3DDevice9 **ppDevice, [in] BOOL fBlock);
    HRESULT UnlockDevice([in] HANDLE hDevice, [in] BOOL fSaveState);
    HRESULT GetVideoService([in] HANDLE hDevice, [in] REFIID riid, [out] void **ppService);
}

cpp_quote("#undef  INTERFACE")
cpp_quote("#define INTERFACE IDirectXVideoDecoder")
cpp_quote("DECLARE_INTERFACE_(IDirectXVideoDecoder,IUnknown)")
cpp_quote("{")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /* IUnknown methods */")
cpp_quote("    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;")
cpp_quote("    STDMETHOD_(ULONG, AddRef)(THIS) PURE;")
cpp_quote("    STDMETHOD_(ULONG, Release)(THIS) PURE;")
cpp_quote("")
cpp_quote("    /* IDirectXVideoDecoder methods */")
cpp_quote("    STDMETHOD_(HRESULT,GetVideoDecoderService)(THIS_ IDirectXVideoDecoderService **ppAccelServices) PURE;")
cpp_quote("    STDMETHOD_(HRESULT,GetCreationParameters)(THIS_ GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 ***pppDecoderRenderTargets,UINT *pNumSurfaces) PURE;")
cpp_quote("    STDMETHOD_(HRESULT,GetBuffer)(THIS_ UINT BufferType,void **ppBuffer,UINT *pBufferSize) PURE;")
cpp_quote("    STDMETHOD_(HRESULT,ReleaseBuffer)(THIS_ UINT BufferType) PURE;")
cpp_quote("    STDMETHOD_(HRESULT,BeginFrame)(THIS_ IDirect3DSurface9 *pRenderTarget,void *pvPVPData) PURE;")
cpp_quote("    STDMETHOD_(HRESULT,EndFrame)(THIS_ HANDLE *pHandleComplete) PURE;")
cpp_quote("    STDMETHOD_(HRESULT,Execute)(THIS_ const DXVA2_DecodeExecuteParams *pExecuteParams) PURE;")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("};")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IDirectXVideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IDirectXVideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IDirectXVideoDecoder_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IDirectXVideoDecoder_GetVideoDecoderService(This,ppAccelServices) (This)->lpVtbl->GetVideoDecoderService(This,ppAccelServices)")
cpp_quote("#define IDirectXVideoDecoder_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pppDecoderRenderTargets,pNumSurfaces) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pppDecoderRenderTargets,pNumSurfaces)")
cpp_quote("#define IDirectXVideoDecoder_GetBuffer(This,BufferType,ppBuffer,pBufferSize) (This)->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize)")
cpp_quote("#define IDirectXVideoDecoder_ReleaseBuffer(This,BufferType) (This)->lpVtbl->ReleaseBuffer(This,BufferType)")
cpp_quote("#define IDirectXVideoDecoder_BeginFrame(This,pRenderTarget,pvPVPData) (This)->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData)")
cpp_quote("#define IDirectXVideoDecoder_EndFrame(This,pHandleComplete) (This)->lpVtbl->EndFrame(This,pHandleComplete)")
cpp_quote("#define IDirectXVideoDecoder_Execute(This,pExecuteParams) (This)->lpVtbl->Execute(This,pExecuteParams)")
cpp_quote("#endif /*COBJMACROS*/")
cpp_quote("")
cpp_quote("#undef  INTERFACE")
cpp_quote("#define INTERFACE IDirectXVideoAccelerationService")
cpp_quote("DECLARE_INTERFACE_(IDirectXVideoAccelerationService,IUnknown)")
cpp_quote("{")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /* IUnknown methods */")
cpp_quote("    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;")
cpp_quote("    STDMETHOD_(ULONG, AddRef)(THIS) PURE;")
cpp_quote("    STDMETHOD_(ULONG, Release)(THIS) PURE;")
cpp_quote("")
cpp_quote("    /* IDirectXVideoAccelerationService methods */")
cpp_quote("    STDMETHOD_(HRESULT,CreateSurface)(THIS_ UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) PURE;")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("};")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IDirectXVideoAccelerationService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IDirectXVideoAccelerationService_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IDirectXVideoAccelerationService_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IDirectXVideoAccelerationService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle)")
cpp_quote("#endif /*COBJMACROS*/")
cpp_quote("")
cpp_quote("#undef  INTERFACE")
cpp_quote("#define INTERFACE IDirectXVideoDecoderService")
cpp_quote("DECLARE_INTERFACE_(IDirectXVideoDecoderService,IDirectXVideoAccelerationService)")
cpp_quote("{")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /* IUnknown methods */")
cpp_quote("    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;")
cpp_quote("    STDMETHOD_(ULONG, AddRef)(THIS) PURE;")
cpp_quote("    STDMETHOD_(ULONG, Release)(THIS) PURE;")
cpp_quote("")
cpp_quote("    /* IDirectXVideoAccelerationService methods */")
cpp_quote("    STDMETHOD_(HRESULT,CreateSurface)(THIS_ UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) PURE;")
cpp_quote("    ")
cpp_quote("    /* IDirectXVideoDecoderService methods */")
cpp_quote("    STDMETHOD_(HRESULT,GetDecoderDeviceGuids)(THIS_ UINT *Count,GUID **pGuids) PURE;")
cpp_quote("    STDMETHOD_(HRESULT,GetDecoderRenderTargets)(THIS_ REFGUID Guid,UINT *pCount,D3DFORMAT **pFormats) PURE;")
cpp_quote("    STDMETHOD_(HRESULT,GetDecoderConfigurations)(THIS_ REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,IUnknown *pReserved,UINT *pCount,DXVA2_ConfigPictureDecode **ppConfigs) PURE;")
cpp_quote("    STDMETHOD_(HRESULT,CreateVideoDecoder)(THIS_ REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 **ppDecoderRenderTargets,UINT NumSurfaces,IDirectXVideoDecoder **ppDecode) PURE;")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("};")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IDirectXVideoDecoderService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IDirectXVideoDecoderService_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IDirectXVideoDecoderService_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IDirectXVideoDecoderService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle)")
cpp_quote("#define IDirectXVideoDecoderService_GetDecoderDeviceGuids(This,Count,pGuids) (This)->lpVtbl->GetDecoderDeviceGuids(This,Count,pGuids)")
cpp_quote("#define IDirectXVideoDecoderService_GetDecoderRenderTargets(This,Guid,pCount,pFormats) (This)->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats)")
cpp_quote("#define IDirectXVideoDecoderService_GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs) (This)->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs)")
cpp_quote("#define IDirectXVideoDecoderService_CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode) (This)->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode)")
cpp_quote("#endif /*COBJMACROS*/")
