/**
 * 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("#ifdef _D3D9_H_")
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("#endif")
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("#ifdef _D3D9_H_")
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("#endif")
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("#ifdef _D3D9_H_")
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("#endif")
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("#ifdef _D3D9_H_")
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("#endif")
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*/")
