zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

dxva2api.h (67220B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/dxva2api.idl - Do not edit ***/
      2 
      3 #ifdef _WIN32
      4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      6 #endif
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 #endif
     10 
     11 #ifndef COM_NO_WINDOWS_H
     12 #include <windows.h>
     13 #include <ole2.h>
     14 #endif
     15 
     16 #ifndef __dxva2api_h__
     17 #define __dxva2api_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IDirect3DDeviceManager9_FWD_DEFINED__
     22 #define __IDirect3DDeviceManager9_FWD_DEFINED__
     23 typedef interface IDirect3DDeviceManager9 IDirect3DDeviceManager9;
     24 #ifdef __cplusplus
     25 interface IDirect3DDeviceManager9;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IDirectXVideoAccelerationService_FWD_DEFINED__
     30 #define __IDirectXVideoAccelerationService_FWD_DEFINED__
     31 typedef interface IDirectXVideoAccelerationService IDirectXVideoAccelerationService;
     32 #ifdef __cplusplus
     33 interface IDirectXVideoAccelerationService;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IDirectXVideoDecoderService_FWD_DEFINED__
     38 #define __IDirectXVideoDecoderService_FWD_DEFINED__
     39 typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService;
     40 #ifdef __cplusplus
     41 interface IDirectXVideoDecoderService;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IDirectXVideoDecoder_FWD_DEFINED__
     46 #define __IDirectXVideoDecoder_FWD_DEFINED__
     47 typedef interface IDirectXVideoDecoder IDirectXVideoDecoder;
     48 #ifdef __cplusplus
     49 interface IDirectXVideoDecoder;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IDirectXVideoProcessorService_FWD_DEFINED__
     54 #define __IDirectXVideoProcessorService_FWD_DEFINED__
     55 typedef interface IDirectXVideoProcessorService IDirectXVideoProcessorService;
     56 #ifdef __cplusplus
     57 interface IDirectXVideoProcessorService;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IDirectXVideoProcessor_FWD_DEFINED__
     62 #define __IDirectXVideoProcessor_FWD_DEFINED__
     63 typedef interface IDirectXVideoProcessor IDirectXVideoProcessor;
     64 #ifdef __cplusplus
     65 interface IDirectXVideoProcessor;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IDirectXVideoMemoryConfiguration_FWD_DEFINED__
     70 #define __IDirectXVideoMemoryConfiguration_FWD_DEFINED__
     71 typedef interface IDirectXVideoMemoryConfiguration IDirectXVideoMemoryConfiguration;
     72 #ifdef __cplusplus
     73 interface IDirectXVideoMemoryConfiguration;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 /* Headers for imported files */
     78 
     79 #include <unknwn.h>
     80 
     81 #ifdef __cplusplus
     82 extern "C" {
     83 #endif
     84 
     85 #if 0
     86 typedef DWORD IDirect3DDevice9;
     87 typedef DWORD IDirect3DSurface9;
     88 typedef DWORD D3DFORMAT;
     89 typedef DWORD D3DPOOL;
     90 #endif
     91 DEFINE_GUID(DXVA2_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0,0x4563, 0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66);
     92 #define DXVA2_ModeMPEG2_MOCOMP      DXVA2_ModeMPEG2_MoComp
     93 DEFINE_GUID(DXVA2_ModeMPEG2_IDCT,   0xbf22ad00, 0x03ea,0x4690, 0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e);
     94 DEFINE_GUID(DXVA2_ModeMPEG2_VLD,    0xee27417f, 0x5e28,0x4e65, 0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9);
     95 DEFINE_GUID(DXVA2_ModeMPEG1_VLD,    0x6f3ec719, 0x3735,0x42cc, 0x80,0x63,0x65,0xcc,0x3c,0xb3,0x66,0x16);
     96 DEFINE_GUID(DXVA2_ModeMPEG2and1_VLD, 0x86695f12, 0x340e,0x4f04, 0x9f,0xd3,0x92,0x53,0xdd,0x32,0x74,0x60);
     97 DEFINE_GUID(DXVA2_ModeH264_A,       0x1b81be64, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     98 #define DXVA2_ModeH264_MoComp_NoFGT DXVA2_ModeH264_A
     99 DEFINE_GUID(DXVA2_ModeH264_B,       0x1b81be65, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    100 #define DXVA2_ModeH264_MoComp_FGT   DXVA2_ModeH264_B
    101 DEFINE_GUID(DXVA2_ModeH264_C,       0x1b81be66, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    102 #define DXVA2_ModeH264_IDCT_NoFGT   DXVA2_ModeH264_C
    103 DEFINE_GUID(DXVA2_ModeH264_D,       0x1b81be67, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    104 #define DXVA2_ModeH264_IDCT_FGT     DXVA2_ModeH264_D
    105 DEFINE_GUID(DXVA2_ModeH264_E,       0x1b81be68, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    106 #define DXVA2_ModeH264_VLD_NoFGT    DXVA2_ModeH264_E
    107 DEFINE_GUID(DXVA2_ModeH264_F,       0x1b81be69, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    108 #define DXVA2_ModeH264_VLD_FGT      DXVA2_ModeH264_F
    109 DEFINE_GUID(DXVA2_ModeH264_VLD_WithFMOASO_NoFGT,         0xd5f04ff9, 0x3418,0x45d8, 0x95,0x61,0x32,0xa7,0x6a,0xae,0x2d,0xdd);
    110 DEFINE_GUID(DXVA2_ModeH264_VLD_Stereo_Progressive_NoFGT, 0xd79be8da, 0x0cf1,0x4c81, 0xb8,0x2a,0x69,0xa4,0xe2,0x36,0xf4,0x3d);
    111 DEFINE_GUID(DXVA2_ModeH264_VLD_Stereo_NoFGT,             0xf9aaccbb, 0xc2b6,0x4cfc, 0x87,0x79,0x57,0x07,0xb1,0x76,0x05,0x52);
    112 DEFINE_GUID(DXVA2_ModeH264_VLD_Multiview_NoFGT,          0x705b9d82, 0x76cf,0x49d6, 0xb7,0xe6,0xac,0x88,0x72,0xdb,0x01,0x3c);
    113 DEFINE_GUID(DXVA2_ModeWMV8_A,       0x1b81be80, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    114 #define DXVA2_ModeWMV8_PostProc     DXVA2_ModeWMV8_A
    115 DEFINE_GUID(DXVA2_ModeWMV8_B,       0x1b81be81, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    116 #define DXVA2_ModeWMV8_MoComp       DXVA2_ModeWMV8_B
    117 DEFINE_GUID(DXVA2_ModeWMV9_A,       0x1b81be90, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    118 #define DXVA2_ModeWMV9_PostProc     DXVA2_ModeWMV9_A
    119 DEFINE_GUID(DXVA2_ModeWMV9_B,       0x1b81be91, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    120 #define DXVA2_ModeWMV9_MoComp       DXVA2_ModeWMV9_B
    121 DEFINE_GUID(DXVA2_ModeWMV9_C,       0x1b81be94, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    122 #define DXVA2_ModeWMV9_IDCT         DXVA2_ModeWMV9_C
    123 DEFINE_GUID(DXVA2_ModeVC1_A,        0x1b81beA0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    124 #define DXVA2_ModeVC1_PostProc      DXVA2_ModeVC1_A
    125 DEFINE_GUID(DXVA2_ModeVC1_B,        0x1b81beA1, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    126 #define DXVA2_ModeVC1_MoComp        DXVA2_ModeVC1_B
    127 DEFINE_GUID(DXVA2_ModeVC1_C,        0x1b81beA2, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    128 #define DXVA2_ModeVC1_IDCT          DXVA2_ModeVC1_C
    129 DEFINE_GUID(DXVA2_ModeVC1_D,        0x1b81beA3, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    130 #define DXVA2_ModeVC1_VLD           DXVA2_ModeVC1_D
    131 DEFINE_GUID(DXVA2_ModeVC1_D2010,    0x1b81bea4, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    132 DEFINE_GUID(DXVA2_NoEncrypt,        0x1b81bed0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
    133 DEFINE_GUID(DXVA2_VideoProcProgressiveDevice, 0x5a54a0c9, 0xc7ec,0x4bd9, 0x8e,0xde,0xf3,0xc7,0x5d,0xc4,0x39,0x3b);
    134 DEFINE_GUID(DXVA2_VideoProcBobDevice,         0x335aa36e, 0x7884,0x43a4, 0x9c,0x91,0x7f,0x87,0xfa,0xf3,0xe3,0x7e);
    135 DEFINE_GUID(DXVA2_VideoProcSoftwareDevice,    0x4553d47f, 0xee7e,0x4e3f, 0x94,0x75,0xdb,0xf1,0x37,0x6c,0x48,0x10);
    136 DEFINE_GUID(DXVA2_ModeMPEG4pt2_VLD_Simple,           0xefd64d74, 0xc9e8,0x41d7, 0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19);
    137 DEFINE_GUID(DXVA2_ModeMPEG4pt2_VLD_AdvSimple_NoGMC,  0xed418a9f, 0x010d,0x4eda, 0x9a,0xe3,0x9a,0x65,0x35,0x8d,0x8d,0x2e);
    138 DEFINE_GUID(DXVA2_ModeMPEG4pt2_VLD_AdvSimple_GMC,    0xab998b5b, 0x4258,0x44a9, 0x9f,0xeb,0x94,0xe5,0x97,0xa6,0xba,0xae);
    139 DEFINE_GUID(DXVA2_ModeHEVC_VLD_Main,    0x5b11d51b, 0x2f4c,0x4452, 0xbc,0xc3,0x09,0xf2,0xa1,0x16,0x0c,0xc0);
    140 DEFINE_GUID(DXVA2_ModeHEVC_VLD_Main10,  0x107af0e0, 0xef1a,0x4d19, 0xab,0xa8,0x67,0xa1,0x63,0x07,0x3d,0x13);
    141 DEFINE_GUID(DXVA2_ModeVP9_VLD_Profile0,       0x463707f8, 0xa1d0,0x4585, 0x87,0x6d,0x83,0xaa,0x6d,0x60,0xb8,0x9e);
    142 DEFINE_GUID(DXVA2_ModeVP9_VLD_10bit_Profile2, 0xa4c749ef, 0x6ecf,0x48aa, 0x84,0x48,0x50,0xa7,0xa1,0x16,0x5f,0xf7);
    143 DEFINE_GUID(DXVA2_ModeVP8_VLD,                0x90b899ea, 0x3a62,0x4705, 0x88,0xb3,0x8d,0xf0,0x4b,0x27,0x44,0xe7);
    144 #ifndef REFERENCE_TIME_DEFINED
    145 #define REFERENCE_TIME_DEFINED
    146 typedef LONGLONG REFERENCE_TIME;
    147 #endif
    148 #define DXVA2_E_NOT_INITIALIZED     ((HRESULT)0x80041000)
    149 #define DXVA2_E_NEW_VIDEO_DEVICE    ((HRESULT)0x80041001)
    150 #define DXVA2_E_VIDEO_DEVICE_LOCKED ((HRESULT)0x80041002)
    151 #define DXVA2_E_NOT_AVAILABLE       ((HRESULT)0x80041003)
    152 enum {
    153     DXVA2_PictureParametersBufferType = 0,
    154     DXVA2_MacroBlockControlBufferType = 1,
    155     DXVA2_ResidualDifferenceBufferType = 2,
    156     DXVA2_DeblockingControlBufferType = 3,
    157     DXVA2_InverseQuantizationMatrixBufferType = 4,
    158     DXVA2_SliceControlBufferType = 5,
    159     DXVA2_BitStreamDateBufferType = 6,
    160     DXVA2_MotionVectorBuffer = 7,
    161     DXVA2_FilmGrainBuffer = 8
    162 };
    163 enum {
    164     DXVA2_VideoDecoderRenderTarget = 0,
    165     DXVA2_VideoProcessorRenderTarget = 1,
    166     DXVA2_VideoSoftwareRenderTarget = 2
    167 };
    168 typedef struct _DXVA2_ExtendedFormat {
    169     __C89_NAMELESS union {
    170         __C89_NAMELESS struct {
    171             UINT SampleFormat : 8;
    172             UINT VideoChromaSubsampling : 4;
    173             UINT NominalRange : 3;
    174             UINT VideoTransferMatrix : 3;
    175             UINT VideoLighting : 4;
    176             UINT VideoPrimaries : 5;
    177             UINT VideoTransferFunction : 5;
    178         } __C89_NAMELESSSTRUCTNAME;
    179         UINT value;
    180     } __C89_NAMELESSUNIONNAME;
    181 } DXVA2_ExtendedFormat;
    182 typedef enum _DXVA2_SampleFormat {
    183     DXVA2_SampleFormatMask = 0xff,
    184     DXVA2_SampleUnknown = 0,
    185     DXVA2_SampleProgressiveFrame = 2,
    186     DXVA2_SampleFieldInterleavedEvenFirst = 3,
    187     DXVA2_SampleFieldInterleavedOddFirst = 4,
    188     DXVA2_SampleFieldSingleEven = 5,
    189     DXVA2_SampleFieldSingleOdd = 6,
    190     DXVA2_SampleSubStream = 7
    191 } DXVA2_SampleFormat;
    192 typedef enum _DXVA2_VideoChromaSubSampling {
    193     DXVA2_VideoChromaSubsamplingMask = 0xf,
    194     DXVA2_VideoChromaSubsampling_Unknown = 0,
    195     DXVA2_VideoChromaSubsampling_ProgressiveChroma = 0x8,
    196     DXVA2_VideoChromaSubsampling_Horizontally_Cosited = 0x4,
    197     DXVA2_VideoChromaSubsampling_Vertically_Cosited = 0x2,
    198     DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes = 0x1,
    199     DXVA2_VideoChromaSubsampling_MPEG2 = DXVA2_VideoChromaSubsampling_Horizontally_Cosited | DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,
    200     DXVA2_VideoChromaSubsampling_MPEG1 = DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,
    201     DXVA2_VideoChromaSubsampling_DV_PAL = DXVA2_VideoChromaSubsampling_Horizontally_Cosited | DXVA2_VideoChromaSubsampling_Vertically_Cosited,
    202     DXVA2_VideoChromaSubsampling_Cosited = (DXVA2_VideoChromaSubsampling_Horizontally_Cosited | DXVA2_VideoChromaSubsampling_Vertically_Cosited) | DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes
    203 } DXVA2_VideoChromaSubSampling;
    204 typedef enum _DXVA2_NominalRange {
    205     DXVA2_NominalRangeMask = 0x7,
    206     DXVA2_NominalRange_Unknown = 0,
    207     DXVA2_NominalRange_Normal = 1,
    208     DXVA2_NominalRange_Wide = 2,
    209     DXVA2_NominalRange_0_255 = 1,
    210     DXVA2_NominalRange_16_235 = 2,
    211     DXVA2_NominalRange_48_208 = 3
    212 } DXVA2_NominalRange;
    213 typedef enum _DXVA2_VideoTransferMatrix {
    214     DXVA2_VideoTransferMatrixMask = 0x7,
    215     DXVA2_VideoTransferMatrix_Unknown = 0,
    216     DXVA2_VideoTransferMatrix_BT709 = 1,
    217     DXVA2_VideoTransferMatrix_BT601 = 2,
    218     DXVA2_VideoTransferMatrix_SMPTE240M = 3
    219 } DXVA2_VideoTransferMatrix;
    220 typedef enum _DXVA2_VideoLighting {
    221     DXVA2_VideoLightingMask = 0xf,
    222     DXVA2_VideoLighting_Unknown = 0,
    223     DXVA2_VideoLighting_bright = 1,
    224     DXVA2_VideoLighting_office = 2,
    225     DXVA2_VideoLighting_dim = 3,
    226     DXVA2_VideoLighting_dark = 4
    227 } DXVA2_VideoLighting;
    228 typedef enum _DXVA2_VideoPrimaries {
    229     DXVA2_VideoPrimariesMask = 0x1f,
    230     DXVA2_VideoPrimaries_Unknown = 0,
    231     DXVA2_VideoPrimaries_reserved = 1,
    232     DXVA2_VideoPrimaries_BT709 = 2,
    233     DXVA2_VideoPrimaries_BT470_2_SysM = 3,
    234     DXVA2_VideoPrimaries_BT470_2_SysBG = 4,
    235     DXVA2_VideoPrimaries_SMPTE170M = 5,
    236     DXVA2_VideoPrimaries_SMPTE240M = 6,
    237     DXVA2_VideoPrimaries_EBU3213 = 7,
    238     DXVA2_VideoPrimaries_SMPTE_C = 8
    239 } DXVA2_VideoPrimaries;
    240 typedef enum _DXVA2_VideoTransferFunction {
    241     DXVA2_VideoTransFuncMask = 0x1f,
    242     DXVA2_VideoTransFunc_Unknown = 0,
    243     DXVA2_VideoTransFunc_10 = 1,
    244     DXVA2_VideoTransFunc_18 = 2,
    245     DXVA2_VideoTransFunc_20 = 3,
    246     DXVA2_VideoTransFunc_22 = 4,
    247     DXVA2_VideoTransFunc_709 = 5,
    248     DXVA2_VideoTransFunc_240M = 6,
    249     DXVA2_VideoTransFunc_sRGB = 7,
    250     DXVA2_VideoTransFunc_28 = 8
    251 } DXVA2_VideoTransferFunction;
    252 #define DXVA2_VideoTransFunc_22_709         DXVA2_VideoTransFunc_709
    253 #define DXVA2_VideoTransFunc_22_240M        DXVA2_VideoTransFunc_240M
    254 #define DXVA2_VideoTransFunc_22_8bit_sRGB   DXVA2_VideoTransFunc_sRGB
    255 typedef struct _DXVA2_Frequency {
    256     UINT Numerator;
    257     UINT Denominator;
    258 } DXVA2_Frequency;
    259 typedef struct _DXVA2_ConfigPictureDecode {
    260     GUID guidConfigBitstreamEncryption;
    261     GUID guidConfigMBcontrolEncryption;
    262     GUID guidConfigResidDiffEncryption;
    263     UINT ConfigBitstreamRaw;
    264     UINT ConfigMBcontrolRasterOrder;
    265     UINT ConfigResidDiffHost;
    266     UINT ConfigSpatialResid8;
    267     UINT ConfigResid8Subtraction;
    268     UINT ConfigSpatialHost8or9Clipping;
    269     UINT ConfigSpatialResidInterleaved;
    270     UINT ConfigIntraResidUnsigned;
    271     UINT ConfigResidDiffAccelerator;
    272     UINT ConfigHostInverseScan;
    273     UINT ConfigSpecificIDCT;
    274     UINT Config4GroupedCoefs;
    275     UINT ConfigMinRenderTargetBuffCount;
    276     USHORT ConfigDecoderSpecific;
    277 } DXVA2_ConfigPictureDecode;
    278 typedef struct _DXVA2_VideoDesc {
    279     UINT SampleWidth;
    280     UINT SampleHeight;
    281     DXVA2_ExtendedFormat SampleFormat;
    282     D3DFORMAT Format;
    283     DXVA2_Frequency InputSampleFreq;
    284     DXVA2_Frequency OutputFrameFreq;
    285     UINT UABProtectionLevel;
    286     UINT Reserved;
    287 } DXVA2_VideoDesc;
    288 enum {
    289     DXVA2_DeinterlaceTech_Unknown = 0x0,
    290     DXVA2_DeinterlaceTech_BOBLineReplicate = 0x1,
    291     DXVA2_DeinterlaceTech_BOBVerticalStretch = 0x2,
    292     DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap = 0x4,
    293     DXVA2_DeinterlaceTech_MedianFiltering = 0x8,
    294     DXVA2_DeinterlaceTech_EdgeFiltering = 0x10,
    295     DXVA2_DeinterlaceTech_FieldAdaptive = 0x20,
    296     DXVA2_DeinterlaceTech_PixelAdaptive = 0x40,
    297     DXVA2_DeinterlaceTech_MotionVectorSteered = 0x80,
    298     DXVA2_DeinterlaceTech_InverseTelecine = 0x100,
    299     DXVA2_DeinterlaceTech_Mask = 0x1ff
    300 };
    301 enum {
    302     DXVA2_NoiseFilterLumaLevel = 1,
    303     DXVA2_NoiseFilterLumaThreshold = 2,
    304     DXVA2_NoiseFilterLumaRadius = 3,
    305     DXVA2_NoiseFilterChromaLevel = 4,
    306     DXVA2_NoiseFilterChromaThreshold = 5,
    307     DXVA2_NoiseFilterChromaRadius = 6,
    308     DXVA2_DetailFilterLumaLevel = 7,
    309     DXVA2_DetailFilterLumaThreshold = 8,
    310     DXVA2_DetailFilterLumaRadius = 9,
    311     DXVA2_DetailFilterChromaLevel = 10,
    312     DXVA2_DetailFilterChromaThreshold = 11,
    313     DXVA2_DetailFilterChromaRadius = 12
    314 };
    315 enum {
    316     DXVA2_NoiseFilterTech_Unsupported = 0,
    317     DXVA2_NoiseFilterTech_Unknown = 0x1,
    318     DXVA2_NoiseFilterTech_Median = 0x2,
    319     DXVA2_NoiseFilterTech_Temporal = 0x4,
    320     DXVA2_NoiseFilterTech_BlockNoise = 0x8,
    321     DXVA2_NoiseFilterTech_MosquitoNoise = 0x10,
    322     DXVA2_NoiseFilterTech_Mask = 0x1f
    323 };
    324 enum {
    325     DXVA2_DetailFilterTech_Unsupported = 0,
    326     DXVA2_DetailFilterTech_Unknown = 0x1,
    327     DXVA2_DetailFilterTech_Edge = 0x2,
    328     DXVA2_DetailFilterTech_Sharpening = 0x4,
    329     DXVA2_DetailFilterTech_Mask = 0x7
    330 };
    331 enum {
    332     DXVA2_ProcAmp_None = 0x0,
    333     DXVA2_ProcAmp_Brightness = 0x1,
    334     DXVA2_ProcAmp_Contrast = 0x2,
    335     DXVA2_ProcAmp_Hue = 0x4,
    336     DXVA2_ProcAmp_Saturation = 0x8,
    337     DXVA2_ProcAmp_Mask = 0xf
    338 };
    339 enum {
    340     DXVA2_VideoProcess_None = 0x0,
    341     DXVA2_VideoProcess_YUV2RGB = 0x1,
    342     DXVA2_VideoProcess_StretchX = 0x2,
    343     DXVA2_VideoProcess_StretchY = 0x4,
    344     DXVA2_VideoProcess_AlphaBlend = 0x8,
    345     DXVA2_VideoProcess_SubRects = 0x10,
    346     DXVA2_VideoProcess_SubStreams = 0x20,
    347     DXVA2_VideoProcess_SubStreamsExtended = 0x40,
    348     DXVA2_VideoProcess_YUV2RGBExtended = 0x80,
    349     DXVA2_VideoProcess_AlphaBlendExtended = 0x100,
    350     DXVA2_VideoProcess_Constriction = 0x200,
    351     DXVA2_VideoProcess_NoiseFilter = 0x400,
    352     DXVA2_VideoProcess_DetailFilter = 0x800,
    353     DXVA2_VideoProcess_PlanarAlpha = 0x1000,
    354     DXVA2_VideoProcess_LinearScaling = 0x2000,
    355     DXVA2_VideoProcess_GammaCompensated = 0x4000,
    356     DXVA2_VideoProcess_MaintainsOriginalFieldData = 0x8000,
    357     DXVA2_VideoProcess_Mask = 0xffff
    358 };
    359 enum {
    360     DXVA2_VPDev_HardwareDevice = 0x1,
    361     DXVA2_VPDev_EmulatedDXVA1 = 0x2,
    362     DXVA2_VPDev_SoftwareDevice = 0x4,
    363     DXVA2_VPDev_Mask = 0x7
    364 };
    365 enum {
    366     DXVA2_SampleData_RFF = 0x1,
    367     DXVA2_SampleData_TFF = 0x2,
    368     DXVA2_SampleData_RFF_TFF_Present = 0x4,
    369     DXVA2_SampleData_Mask = 0xffff
    370 };
    371 enum {
    372     DXVA2_DestData_RFF = 0x1,
    373     DXVA2_DestData_TFF = 0x2,
    374     DXVA2_DestData_RFF_TFF_Present = 0x4,
    375     DXVA2_DestData_Mask = 0xffff
    376 };
    377 typedef struct _DXVA2_DecodeBufferDesc {
    378     DWORD CompressedBufferType;
    379     UINT BufferIndex;
    380     UINT DataOffset;
    381     UINT DataSize;
    382     UINT FirstMBaddress;
    383     UINT NumMBsInBuffer;
    384     UINT Width;
    385     UINT Height;
    386     UINT Stride;
    387     UINT ReservedBits;
    388     PVOID pvPVPState;
    389 } DXVA2_DecodeBufferDesc;
    390 typedef struct _DXVA2_AES_CTR_IV {
    391     UINT64 IV;
    392     UINT64 Count;
    393 } DXVA2_AES_CTR_IV;
    394 typedef struct _DXVA2_DecodeExtensionData {
    395     UINT Function;
    396     PVOID pPrivateInputData;
    397     UINT PrivateInputDataSize;
    398     PVOID pPrivateOutputData;
    399     UINT PrivateOutputDataSize;
    400 } DXVA2_DecodeExtensionData;
    401 typedef struct _DXVA2_DecodeExecuteParams {
    402     UINT NumCompBuffers;
    403     DXVA2_DecodeBufferDesc *pCompressedBuffers;
    404     DXVA2_DecodeExtensionData *pExtensionData;
    405 } DXVA2_DecodeExecuteParams;
    406 typedef struct _DXVA2_VideoProcessorCaps {
    407     UINT DeviceCaps;
    408     D3DPOOL InputPool;
    409     UINT NumForwardRefSamples;
    410     UINT NumBackwardRefSamples;
    411     UINT Reserved;
    412     UINT DeinterlaceTechnology;
    413     UINT ProcAmpControlCaps;
    414     UINT VideoProcessorOperations;
    415     UINT NoiseFilterTechnology;
    416     UINT DetailFilterTechnology;
    417 } DXVA2_VideoProcessorCaps;
    418 typedef struct _DXVA2_Fixed32 {
    419     __C89_NAMELESS union {
    420         __C89_NAMELESS struct {
    421             USHORT Fraction;
    422             SHORT Value;
    423         } __C89_NAMELESSSTRUCTNAME;
    424         LONG ll;
    425     } __C89_NAMELESSUNIONNAME;
    426 } DXVA2_Fixed32;
    427 typedef struct _DXVA2_ValueRange {
    428     DXVA2_Fixed32 MinValue;
    429     DXVA2_Fixed32 MaxValue;
    430     DXVA2_Fixed32 DefaultValue;
    431     DXVA2_Fixed32 StepSize;
    432 } DXVA2_ValueRange;
    433 typedef struct _DXVA2_AYUVSample8 {
    434     UCHAR Cr;
    435     UCHAR Cb;
    436     UCHAR Y;
    437     UCHAR Alpha;
    438 } DXVA2_AYUVSample8;
    439 typedef struct _DXVA2_AYUVSample16 {
    440     USHORT Cr;
    441     USHORT Cb;
    442     USHORT Y;
    443     USHORT Alpha;
    444 } DXVA2_AYUVSample16;
    445 typedef struct _DXVA2_ProcAmpValues {
    446     DXVA2_Fixed32 Brightness;
    447     DXVA2_Fixed32 Contrast;
    448     DXVA2_Fixed32 Hue;
    449     DXVA2_Fixed32 Saturation;
    450 } DXVA2_ProcAmpValues;
    451 typedef struct _DXVA2_FilterValues {
    452     DXVA2_Fixed32 Level;
    453     DXVA2_Fixed32 Threshold;
    454     DXVA2_Fixed32 Radius;
    455 } DXVA2_FilterValues;
    456 typedef struct _DXVA2_VideoProcessBltParams {
    457     REFERENCE_TIME TargetFrame;
    458     RECT TargetRect;
    459     SIZE ConstrictionSize;
    460     UINT StreamingFlags;
    461     DXVA2_AYUVSample16 BackgroundColor;
    462     DXVA2_ExtendedFormat DestFormat;
    463     DXVA2_ProcAmpValues ProcAmpValues;
    464     DXVA2_Fixed32 Alpha;
    465     DXVA2_FilterValues NoiseFilterLuma;
    466     DXVA2_FilterValues NoiseFilterChroma;
    467     DXVA2_FilterValues DetailFilterLuma;
    468     DXVA2_FilterValues DetailFilterChroma;
    469     DWORD DestData;
    470 } DXVA2_VideoProcessBltParams;
    471 #ifdef _D3D9_H_
    472 typedef struct _DXVA2_VideoSample {
    473     REFERENCE_TIME Start;
    474     REFERENCE_TIME End;
    475     DXVA2_ExtendedFormat SampleFormat;
    476     IDirect3DSurface9 *SrcSurface;
    477     RECT SrcRect;
    478     RECT DstRect;
    479     DXVA2_AYUVSample8 Pal[16];
    480     DXVA2_Fixed32 PlanarAlpha;
    481     DWORD SampleData;
    482 } DXVA2_VideoSample;
    483 typedef enum __WIDL_dxva2api_generated_name_0000000C {
    484     DXVA2_SurfaceType_DecoderRenderTarget = 0,
    485     DXVA2_SurfaceType_ProcessorRenderTarget = 1,
    486     DXVA2_SurfaceType_D3DRenderTargetTexture = 2
    487 } DXVA2_SurfaceType;
    488 #ifndef __IDirect3DDeviceManager9_FWD_DEFINED__
    489 #define __IDirect3DDeviceManager9_FWD_DEFINED__
    490 typedef interface IDirect3DDeviceManager9 IDirect3DDeviceManager9;
    491 #ifdef __cplusplus
    492 interface IDirect3DDeviceManager9;
    493 #endif /* __cplusplus */
    494 #endif
    495 
    496 #ifndef __IDirectXVideoAccelerationService_FWD_DEFINED__
    497 #define __IDirectXVideoAccelerationService_FWD_DEFINED__
    498 typedef interface IDirectXVideoAccelerationService IDirectXVideoAccelerationService;
    499 #ifdef __cplusplus
    500 interface IDirectXVideoAccelerationService;
    501 #endif /* __cplusplus */
    502 #endif
    503 
    504 #ifndef __IDirectXVideoDecoderService_FWD_DEFINED__
    505 #define __IDirectXVideoDecoderService_FWD_DEFINED__
    506 typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService;
    507 #ifdef __cplusplus
    508 interface IDirectXVideoDecoderService;
    509 #endif /* __cplusplus */
    510 #endif
    511 
    512 #ifndef __IDirectXVideoProcessorService_FWD_DEFINED__
    513 #define __IDirectXVideoProcessorService_FWD_DEFINED__
    514 typedef interface IDirectXVideoProcessorService IDirectXVideoProcessorService;
    515 #ifdef __cplusplus
    516 interface IDirectXVideoProcessorService;
    517 #endif /* __cplusplus */
    518 #endif
    519 
    520 #ifndef __IDirectXVideoDecoder_FWD_DEFINED__
    521 #define __IDirectXVideoDecoder_FWD_DEFINED__
    522 typedef interface IDirectXVideoDecoder IDirectXVideoDecoder;
    523 #ifdef __cplusplus
    524 interface IDirectXVideoDecoder;
    525 #endif /* __cplusplus */
    526 #endif
    527 
    528 #ifndef __IDirectXVideoProcessor_FWD_DEFINED__
    529 #define __IDirectXVideoProcessor_FWD_DEFINED__
    530 typedef interface IDirectXVideoProcessor IDirectXVideoProcessor;
    531 #ifdef __cplusplus
    532 interface IDirectXVideoProcessor;
    533 #endif /* __cplusplus */
    534 #endif
    535 
    536 /*****************************************************************************
    537  * IDirect3DDeviceManager9 interface
    538  */
    539 #ifndef __IDirect3DDeviceManager9_INTERFACE_DEFINED__
    540 #define __IDirect3DDeviceManager9_INTERFACE_DEFINED__
    541 
    542 DEFINE_GUID(IID_IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75);
    543 #if defined(__cplusplus) && !defined(CINTERFACE)
    544 MIDL_INTERFACE("a0cade0f-06d5-4cf4-a1c7-f3cdd725aa75")
    545 IDirect3DDeviceManager9 : public IUnknown
    546 {
    547     virtual HRESULT STDMETHODCALLTYPE ResetDevice(
    548         IDirect3DDevice9 *pDevice,
    549         UINT resetToken) = 0;
    550 
    551     virtual HRESULT STDMETHODCALLTYPE OpenDeviceHandle(
    552         HANDLE *phDevice) = 0;
    553 
    554     virtual HRESULT STDMETHODCALLTYPE CloseDeviceHandle(
    555         HANDLE hDevice) = 0;
    556 
    557     virtual HRESULT STDMETHODCALLTYPE TestDevice(
    558         HANDLE hDevice) = 0;
    559 
    560     virtual HRESULT STDMETHODCALLTYPE LockDevice(
    561         HANDLE hDevice,
    562         IDirect3DDevice9 **ppDevice,
    563         WINBOOL fBlock) = 0;
    564 
    565     virtual HRESULT STDMETHODCALLTYPE UnlockDevice(
    566         HANDLE hDevice,
    567         WINBOOL fSaveState) = 0;
    568 
    569     virtual HRESULT STDMETHODCALLTYPE GetVideoService(
    570         HANDLE hDevice,
    571         REFIID riid,
    572         void **ppService) = 0;
    573 
    574 };
    575 #ifdef __CRT_UUID_DECL
    576 __CRT_UUID_DECL(IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75)
    577 #endif
    578 #else
    579 typedef struct IDirect3DDeviceManager9Vtbl {
    580     BEGIN_INTERFACE
    581 
    582     /*** IUnknown methods ***/
    583     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    584         IDirect3DDeviceManager9 *This,
    585         REFIID riid,
    586         void **ppvObject);
    587 
    588     ULONG (STDMETHODCALLTYPE *AddRef)(
    589         IDirect3DDeviceManager9 *This);
    590 
    591     ULONG (STDMETHODCALLTYPE *Release)(
    592         IDirect3DDeviceManager9 *This);
    593 
    594     /*** IDirect3DDeviceManager9 methods ***/
    595     HRESULT (STDMETHODCALLTYPE *ResetDevice)(
    596         IDirect3DDeviceManager9 *This,
    597         IDirect3DDevice9 *pDevice,
    598         UINT resetToken);
    599 
    600     HRESULT (STDMETHODCALLTYPE *OpenDeviceHandle)(
    601         IDirect3DDeviceManager9 *This,
    602         HANDLE *phDevice);
    603 
    604     HRESULT (STDMETHODCALLTYPE *CloseDeviceHandle)(
    605         IDirect3DDeviceManager9 *This,
    606         HANDLE hDevice);
    607 
    608     HRESULT (STDMETHODCALLTYPE *TestDevice)(
    609         IDirect3DDeviceManager9 *This,
    610         HANDLE hDevice);
    611 
    612     HRESULT (STDMETHODCALLTYPE *LockDevice)(
    613         IDirect3DDeviceManager9 *This,
    614         HANDLE hDevice,
    615         IDirect3DDevice9 **ppDevice,
    616         WINBOOL fBlock);
    617 
    618     HRESULT (STDMETHODCALLTYPE *UnlockDevice)(
    619         IDirect3DDeviceManager9 *This,
    620         HANDLE hDevice,
    621         WINBOOL fSaveState);
    622 
    623     HRESULT (STDMETHODCALLTYPE *GetVideoService)(
    624         IDirect3DDeviceManager9 *This,
    625         HANDLE hDevice,
    626         REFIID riid,
    627         void **ppService);
    628 
    629     END_INTERFACE
    630 } IDirect3DDeviceManager9Vtbl;
    631 
    632 interface IDirect3DDeviceManager9 {
    633     CONST_VTBL IDirect3DDeviceManager9Vtbl* lpVtbl;
    634 };
    635 
    636 #ifdef COBJMACROS
    637 #ifndef WIDL_C_INLINE_WRAPPERS
    638 /*** IUnknown methods ***/
    639 #define IDirect3DDeviceManager9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    640 #define IDirect3DDeviceManager9_AddRef(This) (This)->lpVtbl->AddRef(This)
    641 #define IDirect3DDeviceManager9_Release(This) (This)->lpVtbl->Release(This)
    642 /*** IDirect3DDeviceManager9 methods ***/
    643 #define IDirect3DDeviceManager9_ResetDevice(This,pDevice,resetToken) (This)->lpVtbl->ResetDevice(This,pDevice,resetToken)
    644 #define IDirect3DDeviceManager9_OpenDeviceHandle(This,phDevice) (This)->lpVtbl->OpenDeviceHandle(This,phDevice)
    645 #define IDirect3DDeviceManager9_CloseDeviceHandle(This,hDevice) (This)->lpVtbl->CloseDeviceHandle(This,hDevice)
    646 #define IDirect3DDeviceManager9_TestDevice(This,hDevice) (This)->lpVtbl->TestDevice(This,hDevice)
    647 #define IDirect3DDeviceManager9_LockDevice(This,hDevice,ppDevice,fBlock) (This)->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock)
    648 #define IDirect3DDeviceManager9_UnlockDevice(This,hDevice,fSaveState) (This)->lpVtbl->UnlockDevice(This,hDevice,fSaveState)
    649 #define IDirect3DDeviceManager9_GetVideoService(This,hDevice,riid,ppService) (This)->lpVtbl->GetVideoService(This,hDevice,riid,ppService)
    650 #else
    651 /*** IUnknown methods ***/
    652 static inline HRESULT IDirect3DDeviceManager9_QueryInterface(IDirect3DDeviceManager9* This,REFIID riid,void **ppvObject) {
    653     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    654 }
    655 static inline ULONG IDirect3DDeviceManager9_AddRef(IDirect3DDeviceManager9* This) {
    656     return This->lpVtbl->AddRef(This);
    657 }
    658 static inline ULONG IDirect3DDeviceManager9_Release(IDirect3DDeviceManager9* This) {
    659     return This->lpVtbl->Release(This);
    660 }
    661 /*** IDirect3DDeviceManager9 methods ***/
    662 static inline HRESULT IDirect3DDeviceManager9_ResetDevice(IDirect3DDeviceManager9* This,IDirect3DDevice9 *pDevice,UINT resetToken) {
    663     return This->lpVtbl->ResetDevice(This,pDevice,resetToken);
    664 }
    665 static inline HRESULT IDirect3DDeviceManager9_OpenDeviceHandle(IDirect3DDeviceManager9* This,HANDLE *phDevice) {
    666     return This->lpVtbl->OpenDeviceHandle(This,phDevice);
    667 }
    668 static inline HRESULT IDirect3DDeviceManager9_CloseDeviceHandle(IDirect3DDeviceManager9* This,HANDLE hDevice) {
    669     return This->lpVtbl->CloseDeviceHandle(This,hDevice);
    670 }
    671 static inline HRESULT IDirect3DDeviceManager9_TestDevice(IDirect3DDeviceManager9* This,HANDLE hDevice) {
    672     return This->lpVtbl->TestDevice(This,hDevice);
    673 }
    674 static inline HRESULT IDirect3DDeviceManager9_LockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,IDirect3DDevice9 **ppDevice,WINBOOL fBlock) {
    675     return This->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock);
    676 }
    677 static inline HRESULT IDirect3DDeviceManager9_UnlockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,WINBOOL fSaveState) {
    678     return This->lpVtbl->UnlockDevice(This,hDevice,fSaveState);
    679 }
    680 static inline HRESULT IDirect3DDeviceManager9_GetVideoService(IDirect3DDeviceManager9* This,HANDLE hDevice,REFIID riid,void **ppService) {
    681     return This->lpVtbl->GetVideoService(This,hDevice,riid,ppService);
    682 }
    683 #endif
    684 #endif
    685 
    686 #endif
    687 
    688 
    689 #endif  /* __IDirect3DDeviceManager9_INTERFACE_DEFINED__ */
    690 
    691 /*****************************************************************************
    692  * IDirectXVideoAccelerationService interface
    693  */
    694 #ifndef __IDirectXVideoAccelerationService_INTERFACE_DEFINED__
    695 #define __IDirectXVideoAccelerationService_INTERFACE_DEFINED__
    696 
    697 DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02);
    698 #if defined(__cplusplus) && !defined(CINTERFACE)
    699 MIDL_INTERFACE("fc51a550-d5e7-11d9-af55-00054e43ff02")
    700 IDirectXVideoAccelerationService : public IUnknown
    701 {
    702     virtual HRESULT STDMETHODCALLTYPE CreateSurface(
    703         UINT width,
    704         UINT height,
    705         UINT backBuffers,
    706         D3DFORMAT format,
    707         D3DPOOL pool,
    708         DWORD usage,
    709         DWORD dxvaType,
    710         IDirect3DSurface9 **ppSurface,
    711         HANDLE *pSharedHandle) = 0;
    712 
    713 };
    714 #ifdef __CRT_UUID_DECL
    715 __CRT_UUID_DECL(IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02)
    716 #endif
    717 #else
    718 typedef struct IDirectXVideoAccelerationServiceVtbl {
    719     BEGIN_INTERFACE
    720 
    721     /*** IUnknown methods ***/
    722     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    723         IDirectXVideoAccelerationService *This,
    724         REFIID riid,
    725         void **ppvObject);
    726 
    727     ULONG (STDMETHODCALLTYPE *AddRef)(
    728         IDirectXVideoAccelerationService *This);
    729 
    730     ULONG (STDMETHODCALLTYPE *Release)(
    731         IDirectXVideoAccelerationService *This);
    732 
    733     /*** IDirectXVideoAccelerationService methods ***/
    734     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
    735         IDirectXVideoAccelerationService *This,
    736         UINT width,
    737         UINT height,
    738         UINT backBuffers,
    739         D3DFORMAT format,
    740         D3DPOOL pool,
    741         DWORD usage,
    742         DWORD dxvaType,
    743         IDirect3DSurface9 **ppSurface,
    744         HANDLE *pSharedHandle);
    745 
    746     END_INTERFACE
    747 } IDirectXVideoAccelerationServiceVtbl;
    748 
    749 interface IDirectXVideoAccelerationService {
    750     CONST_VTBL IDirectXVideoAccelerationServiceVtbl* lpVtbl;
    751 };
    752 
    753 #ifdef COBJMACROS
    754 #ifndef WIDL_C_INLINE_WRAPPERS
    755 /*** IUnknown methods ***/
    756 #define IDirectXVideoAccelerationService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    757 #define IDirectXVideoAccelerationService_AddRef(This) (This)->lpVtbl->AddRef(This)
    758 #define IDirectXVideoAccelerationService_Release(This) (This)->lpVtbl->Release(This)
    759 /*** IDirectXVideoAccelerationService methods ***/
    760 #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)
    761 #else
    762 /*** IUnknown methods ***/
    763 static inline HRESULT IDirectXVideoAccelerationService_QueryInterface(IDirectXVideoAccelerationService* This,REFIID riid,void **ppvObject) {
    764     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    765 }
    766 static inline ULONG IDirectXVideoAccelerationService_AddRef(IDirectXVideoAccelerationService* This) {
    767     return This->lpVtbl->AddRef(This);
    768 }
    769 static inline ULONG IDirectXVideoAccelerationService_Release(IDirectXVideoAccelerationService* This) {
    770     return This->lpVtbl->Release(This);
    771 }
    772 /*** IDirectXVideoAccelerationService methods ***/
    773 static inline HRESULT IDirectXVideoAccelerationService_CreateSurface(IDirectXVideoAccelerationService* This,UINT width,UINT height,UINT backBuffers,D3DFORMAT format,D3DPOOL pool,DWORD usage,DWORD dxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) {
    774     return This->lpVtbl->CreateSurface(This,width,height,backBuffers,format,pool,usage,dxvaType,ppSurface,pSharedHandle);
    775 }
    776 #endif
    777 #endif
    778 
    779 #endif
    780 
    781 
    782 #endif  /* __IDirectXVideoAccelerationService_INTERFACE_DEFINED__ */
    783 
    784 /*****************************************************************************
    785  * IDirectXVideoDecoderService interface
    786  */
    787 #ifndef __IDirectXVideoDecoderService_INTERFACE_DEFINED__
    788 #define __IDirectXVideoDecoderService_INTERFACE_DEFINED__
    789 
    790 DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02);
    791 #if defined(__cplusplus) && !defined(CINTERFACE)
    792 MIDL_INTERFACE("fc51a551-d5e7-11d9-af55-00054e43ff02")
    793 IDirectXVideoDecoderService : public IDirectXVideoAccelerationService
    794 {
    795     virtual HRESULT STDMETHODCALLTYPE GetDecoderDeviceGuids(
    796         UINT *count,
    797         GUID **pGuids) = 0;
    798 
    799     virtual HRESULT STDMETHODCALLTYPE GetDecoderRenderTargets(
    800         REFGUID guid,
    801         UINT *pCount,
    802         D3DFORMAT **pFormats) = 0;
    803 
    804     virtual HRESULT STDMETHODCALLTYPE GetDecoderConfigurations(
    805         REFGUID guid,
    806         const DXVA2_VideoDesc *pVideoDesc,
    807         void *pReserved,
    808         UINT *pCount,
    809         DXVA2_ConfigPictureDecode **ppConfigs) = 0;
    810 
    811     virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
    812         REFGUID guid,
    813         const DXVA2_VideoDesc *pVideoDesc,
    814         const DXVA2_ConfigPictureDecode *pConfig,
    815         IDirect3DSurface9 **ppDecoderRenderTargets,
    816         UINT NumSurfaces,
    817         IDirectXVideoDecoder **ppDecode) = 0;
    818 
    819 };
    820 #ifdef __CRT_UUID_DECL
    821 __CRT_UUID_DECL(IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02)
    822 #endif
    823 #else
    824 typedef struct IDirectXVideoDecoderServiceVtbl {
    825     BEGIN_INTERFACE
    826 
    827     /*** IUnknown methods ***/
    828     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    829         IDirectXVideoDecoderService *This,
    830         REFIID riid,
    831         void **ppvObject);
    832 
    833     ULONG (STDMETHODCALLTYPE *AddRef)(
    834         IDirectXVideoDecoderService *This);
    835 
    836     ULONG (STDMETHODCALLTYPE *Release)(
    837         IDirectXVideoDecoderService *This);
    838 
    839     /*** IDirectXVideoAccelerationService methods ***/
    840     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
    841         IDirectXVideoDecoderService *This,
    842         UINT width,
    843         UINT height,
    844         UINT backBuffers,
    845         D3DFORMAT format,
    846         D3DPOOL pool,
    847         DWORD usage,
    848         DWORD dxvaType,
    849         IDirect3DSurface9 **ppSurface,
    850         HANDLE *pSharedHandle);
    851 
    852     /*** IDirectXVideoDecoderService methods ***/
    853     HRESULT (STDMETHODCALLTYPE *GetDecoderDeviceGuids)(
    854         IDirectXVideoDecoderService *This,
    855         UINT *count,
    856         GUID **pGuids);
    857 
    858     HRESULT (STDMETHODCALLTYPE *GetDecoderRenderTargets)(
    859         IDirectXVideoDecoderService *This,
    860         REFGUID guid,
    861         UINT *pCount,
    862         D3DFORMAT **pFormats);
    863 
    864     HRESULT (STDMETHODCALLTYPE *GetDecoderConfigurations)(
    865         IDirectXVideoDecoderService *This,
    866         REFGUID guid,
    867         const DXVA2_VideoDesc *pVideoDesc,
    868         void *pReserved,
    869         UINT *pCount,
    870         DXVA2_ConfigPictureDecode **ppConfigs);
    871 
    872     HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
    873         IDirectXVideoDecoderService *This,
    874         REFGUID guid,
    875         const DXVA2_VideoDesc *pVideoDesc,
    876         const DXVA2_ConfigPictureDecode *pConfig,
    877         IDirect3DSurface9 **ppDecoderRenderTargets,
    878         UINT NumSurfaces,
    879         IDirectXVideoDecoder **ppDecode);
    880 
    881     END_INTERFACE
    882 } IDirectXVideoDecoderServiceVtbl;
    883 
    884 interface IDirectXVideoDecoderService {
    885     CONST_VTBL IDirectXVideoDecoderServiceVtbl* lpVtbl;
    886 };
    887 
    888 #ifdef COBJMACROS
    889 #ifndef WIDL_C_INLINE_WRAPPERS
    890 /*** IUnknown methods ***/
    891 #define IDirectXVideoDecoderService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    892 #define IDirectXVideoDecoderService_AddRef(This) (This)->lpVtbl->AddRef(This)
    893 #define IDirectXVideoDecoderService_Release(This) (This)->lpVtbl->Release(This)
    894 /*** IDirectXVideoAccelerationService methods ***/
    895 #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)
    896 /*** IDirectXVideoDecoderService methods ***/
    897 #define IDirectXVideoDecoderService_GetDecoderDeviceGuids(This,count,pGuids) (This)->lpVtbl->GetDecoderDeviceGuids(This,count,pGuids)
    898 #define IDirectXVideoDecoderService_GetDecoderRenderTargets(This,guid,pCount,pFormats) (This)->lpVtbl->GetDecoderRenderTargets(This,guid,pCount,pFormats)
    899 #define IDirectXVideoDecoderService_GetDecoderConfigurations(This,guid,pVideoDesc,pReserved,pCount,ppConfigs) (This)->lpVtbl->GetDecoderConfigurations(This,guid,pVideoDesc,pReserved,pCount,ppConfigs)
    900 #define IDirectXVideoDecoderService_CreateVideoDecoder(This,guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode) (This)->lpVtbl->CreateVideoDecoder(This,guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode)
    901 #else
    902 /*** IUnknown methods ***/
    903 static inline HRESULT IDirectXVideoDecoderService_QueryInterface(IDirectXVideoDecoderService* This,REFIID riid,void **ppvObject) {
    904     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    905 }
    906 static inline ULONG IDirectXVideoDecoderService_AddRef(IDirectXVideoDecoderService* This) {
    907     return This->lpVtbl->AddRef(This);
    908 }
    909 static inline ULONG IDirectXVideoDecoderService_Release(IDirectXVideoDecoderService* This) {
    910     return This->lpVtbl->Release(This);
    911 }
    912 /*** IDirectXVideoAccelerationService methods ***/
    913 static inline HRESULT IDirectXVideoDecoderService_CreateSurface(IDirectXVideoDecoderService* This,UINT width,UINT height,UINT backBuffers,D3DFORMAT format,D3DPOOL pool,DWORD usage,DWORD dxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) {
    914     return This->lpVtbl->CreateSurface(This,width,height,backBuffers,format,pool,usage,dxvaType,ppSurface,pSharedHandle);
    915 }
    916 /*** IDirectXVideoDecoderService methods ***/
    917 static inline HRESULT IDirectXVideoDecoderService_GetDecoderDeviceGuids(IDirectXVideoDecoderService* This,UINT *count,GUID **pGuids) {
    918     return This->lpVtbl->GetDecoderDeviceGuids(This,count,pGuids);
    919 }
    920 static inline HRESULT IDirectXVideoDecoderService_GetDecoderRenderTargets(IDirectXVideoDecoderService* This,REFGUID guid,UINT *pCount,D3DFORMAT **pFormats) {
    921     return This->lpVtbl->GetDecoderRenderTargets(This,guid,pCount,pFormats);
    922 }
    923 static inline HRESULT IDirectXVideoDecoderService_GetDecoderConfigurations(IDirectXVideoDecoderService* This,REFGUID guid,const DXVA2_VideoDesc *pVideoDesc,void *pReserved,UINT *pCount,DXVA2_ConfigPictureDecode **ppConfigs) {
    924     return This->lpVtbl->GetDecoderConfigurations(This,guid,pVideoDesc,pReserved,pCount,ppConfigs);
    925 }
    926 static inline HRESULT IDirectXVideoDecoderService_CreateVideoDecoder(IDirectXVideoDecoderService* This,REFGUID guid,const DXVA2_VideoDesc *pVideoDesc,const DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 **ppDecoderRenderTargets,UINT NumSurfaces,IDirectXVideoDecoder **ppDecode) {
    927     return This->lpVtbl->CreateVideoDecoder(This,guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode);
    928 }
    929 #endif
    930 #endif
    931 
    932 #endif
    933 
    934 
    935 #endif  /* __IDirectXVideoDecoderService_INTERFACE_DEFINED__ */
    936 
    937 /*****************************************************************************
    938  * IDirectXVideoDecoder interface
    939  */
    940 #ifndef __IDirectXVideoDecoder_INTERFACE_DEFINED__
    941 #define __IDirectXVideoDecoder_INTERFACE_DEFINED__
    942 
    943 DEFINE_GUID(IID_IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d);
    944 #if defined(__cplusplus) && !defined(CINTERFACE)
    945 MIDL_INTERFACE("f2b0810a-fd00-43c9-918c-df94e2d8ef7d")
    946 IDirectXVideoDecoder : public IUnknown
    947 {
    948     virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderService(
    949         IDirectXVideoDecoderService **ppService) = 0;
    950 
    951     virtual HRESULT STDMETHODCALLTYPE GetCreationParameters(
    952         GUID *pDeviceGuid,
    953         DXVA2_VideoDesc *pVideoDesc,
    954         DXVA2_ConfigPictureDecode *pConfig,
    955         IDirect3DSurface9 ***pDecoderRenderTargets,
    956         UINT *pNumSurfaces) = 0;
    957 
    958     virtual HRESULT STDMETHODCALLTYPE GetBuffer(
    959         UINT BufferType,
    960         void **ppBuffer,
    961         UINT *pBufferSize) = 0;
    962 
    963     virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
    964         UINT BufferType) = 0;
    965 
    966     virtual HRESULT STDMETHODCALLTYPE BeginFrame(
    967         IDirect3DSurface9 *pRenderTarget,
    968         void *pvPVPData) = 0;
    969 
    970     virtual HRESULT STDMETHODCALLTYPE EndFrame(
    971         HANDLE *pHandleComplete) = 0;
    972 
    973     virtual HRESULT STDMETHODCALLTYPE Execute(
    974         const DXVA2_DecodeExecuteParams *pExecuteParams) = 0;
    975 
    976 };
    977 #ifdef __CRT_UUID_DECL
    978 __CRT_UUID_DECL(IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d)
    979 #endif
    980 #else
    981 typedef struct IDirectXVideoDecoderVtbl {
    982     BEGIN_INTERFACE
    983 
    984     /*** IUnknown methods ***/
    985     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    986         IDirectXVideoDecoder *This,
    987         REFIID riid,
    988         void **ppvObject);
    989 
    990     ULONG (STDMETHODCALLTYPE *AddRef)(
    991         IDirectXVideoDecoder *This);
    992 
    993     ULONG (STDMETHODCALLTYPE *Release)(
    994         IDirectXVideoDecoder *This);
    995 
    996     /*** IDirectXVideoDecoder methods ***/
    997     HRESULT (STDMETHODCALLTYPE *GetVideoDecoderService)(
    998         IDirectXVideoDecoder *This,
    999         IDirectXVideoDecoderService **ppService);
   1000 
   1001     HRESULT (STDMETHODCALLTYPE *GetCreationParameters)(
   1002         IDirectXVideoDecoder *This,
   1003         GUID *pDeviceGuid,
   1004         DXVA2_VideoDesc *pVideoDesc,
   1005         DXVA2_ConfigPictureDecode *pConfig,
   1006         IDirect3DSurface9 ***pDecoderRenderTargets,
   1007         UINT *pNumSurfaces);
   1008 
   1009     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
   1010         IDirectXVideoDecoder *This,
   1011         UINT BufferType,
   1012         void **ppBuffer,
   1013         UINT *pBufferSize);
   1014 
   1015     HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
   1016         IDirectXVideoDecoder *This,
   1017         UINT BufferType);
   1018 
   1019     HRESULT (STDMETHODCALLTYPE *BeginFrame)(
   1020         IDirectXVideoDecoder *This,
   1021         IDirect3DSurface9 *pRenderTarget,
   1022         void *pvPVPData);
   1023 
   1024     HRESULT (STDMETHODCALLTYPE *EndFrame)(
   1025         IDirectXVideoDecoder *This,
   1026         HANDLE *pHandleComplete);
   1027 
   1028     HRESULT (STDMETHODCALLTYPE *Execute)(
   1029         IDirectXVideoDecoder *This,
   1030         const DXVA2_DecodeExecuteParams *pExecuteParams);
   1031 
   1032     END_INTERFACE
   1033 } IDirectXVideoDecoderVtbl;
   1034 
   1035 interface IDirectXVideoDecoder {
   1036     CONST_VTBL IDirectXVideoDecoderVtbl* lpVtbl;
   1037 };
   1038 
   1039 #ifdef COBJMACROS
   1040 #ifndef WIDL_C_INLINE_WRAPPERS
   1041 /*** IUnknown methods ***/
   1042 #define IDirectXVideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1043 #define IDirectXVideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
   1044 #define IDirectXVideoDecoder_Release(This) (This)->lpVtbl->Release(This)
   1045 /*** IDirectXVideoDecoder methods ***/
   1046 #define IDirectXVideoDecoder_GetVideoDecoderService(This,ppService) (This)->lpVtbl->GetVideoDecoderService(This,ppService)
   1047 #define IDirectXVideoDecoder_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces)
   1048 #define IDirectXVideoDecoder_GetBuffer(This,BufferType,ppBuffer,pBufferSize) (This)->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize)
   1049 #define IDirectXVideoDecoder_ReleaseBuffer(This,BufferType) (This)->lpVtbl->ReleaseBuffer(This,BufferType)
   1050 #define IDirectXVideoDecoder_BeginFrame(This,pRenderTarget,pvPVPData) (This)->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData)
   1051 #define IDirectXVideoDecoder_EndFrame(This,pHandleComplete) (This)->lpVtbl->EndFrame(This,pHandleComplete)
   1052 #define IDirectXVideoDecoder_Execute(This,pExecuteParams) (This)->lpVtbl->Execute(This,pExecuteParams)
   1053 #else
   1054 /*** IUnknown methods ***/
   1055 static inline HRESULT IDirectXVideoDecoder_QueryInterface(IDirectXVideoDecoder* This,REFIID riid,void **ppvObject) {
   1056     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1057 }
   1058 static inline ULONG IDirectXVideoDecoder_AddRef(IDirectXVideoDecoder* This) {
   1059     return This->lpVtbl->AddRef(This);
   1060 }
   1061 static inline ULONG IDirectXVideoDecoder_Release(IDirectXVideoDecoder* This) {
   1062     return This->lpVtbl->Release(This);
   1063 }
   1064 /*** IDirectXVideoDecoder methods ***/
   1065 static inline HRESULT IDirectXVideoDecoder_GetVideoDecoderService(IDirectXVideoDecoder* This,IDirectXVideoDecoderService **ppService) {
   1066     return This->lpVtbl->GetVideoDecoderService(This,ppService);
   1067 }
   1068 static inline HRESULT IDirectXVideoDecoder_GetCreationParameters(IDirectXVideoDecoder* This,GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 ***pDecoderRenderTargets,UINT *pNumSurfaces) {
   1069     return This->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces);
   1070 }
   1071 static inline HRESULT IDirectXVideoDecoder_GetBuffer(IDirectXVideoDecoder* This,UINT BufferType,void **ppBuffer,UINT *pBufferSize) {
   1072     return This->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize);
   1073 }
   1074 static inline HRESULT IDirectXVideoDecoder_ReleaseBuffer(IDirectXVideoDecoder* This,UINT BufferType) {
   1075     return This->lpVtbl->ReleaseBuffer(This,BufferType);
   1076 }
   1077 static inline HRESULT IDirectXVideoDecoder_BeginFrame(IDirectXVideoDecoder* This,IDirect3DSurface9 *pRenderTarget,void *pvPVPData) {
   1078     return This->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData);
   1079 }
   1080 static inline HRESULT IDirectXVideoDecoder_EndFrame(IDirectXVideoDecoder* This,HANDLE *pHandleComplete) {
   1081     return This->lpVtbl->EndFrame(This,pHandleComplete);
   1082 }
   1083 static inline HRESULT IDirectXVideoDecoder_Execute(IDirectXVideoDecoder* This,const DXVA2_DecodeExecuteParams *pExecuteParams) {
   1084     return This->lpVtbl->Execute(This,pExecuteParams);
   1085 }
   1086 #endif
   1087 #endif
   1088 
   1089 #endif
   1090 
   1091 
   1092 #endif  /* __IDirectXVideoDecoder_INTERFACE_DEFINED__ */
   1093 
   1094 /*****************************************************************************
   1095  * IDirectXVideoProcessorService interface
   1096  */
   1097 #ifndef __IDirectXVideoProcessorService_INTERFACE_DEFINED__
   1098 #define __IDirectXVideoProcessorService_INTERFACE_DEFINED__
   1099 
   1100 DEFINE_GUID(IID_IDirectXVideoProcessorService, 0xfc51a552, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02);
   1101 #if defined(__cplusplus) && !defined(CINTERFACE)
   1102 MIDL_INTERFACE("fc51a552-d5e7-11d9-af55-00054e43ff02")
   1103 IDirectXVideoProcessorService : public IDirectXVideoAccelerationService
   1104 {
   1105     virtual HRESULT STDMETHODCALLTYPE RegisterVideoProcessorSoftwareDevice(
   1106         void *pCallbacks) = 0;
   1107 
   1108     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorDeviceGuids(
   1109         const DXVA2_VideoDesc *pVideoDesc,
   1110         UINT *pCount,
   1111         GUID **pGuids) = 0;
   1112 
   1113     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorRenderTargets(
   1114         REFGUID VideoProcDeviceGuid,
   1115         const DXVA2_VideoDesc *pVideoDesc,
   1116         UINT *pCount,
   1117         D3DFORMAT **pFormats) = 0;
   1118 
   1119     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorSubStreamFormats(
   1120         REFGUID VideoProcDeviceGuid,
   1121         const DXVA2_VideoDesc *pVideoDesc,
   1122         D3DFORMAT RenderTargetFormat,
   1123         UINT *pCount,
   1124         D3DFORMAT **pFormats) = 0;
   1125 
   1126     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCaps(
   1127         REFGUID VideoProcDeviceGuid,
   1128         const DXVA2_VideoDesc *pVideoDesc,
   1129         D3DFORMAT RenderTargetFormat,
   1130         DXVA2_VideoProcessorCaps *pCaps) = 0;
   1131 
   1132     virtual HRESULT STDMETHODCALLTYPE GetProcAmpRange(
   1133         REFGUID VideoProcDeviceGuid,
   1134         const DXVA2_VideoDesc *pVideoDesc,
   1135         D3DFORMAT RenderTargetFormat,
   1136         UINT ProcAmpCap,
   1137         DXVA2_ValueRange *pRange) = 0;
   1138 
   1139     virtual HRESULT STDMETHODCALLTYPE GetFilterPropertyRange(
   1140         REFGUID VideoProcDeviceGuid,
   1141         const DXVA2_VideoDesc *pVideoDesc,
   1142         D3DFORMAT renderTargetFormat,
   1143         UINT FilterSetting,
   1144         DXVA2_ValueRange *pRange) = 0;
   1145 
   1146     virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
   1147         REFGUID VideoProcDeviceGuid,
   1148         const DXVA2_VideoDesc *pVideoDesc,
   1149         D3DFORMAT RenderTargetFormat,
   1150         UINT MaxNumSubStreams,
   1151         IDirectXVideoProcessor **ppVidProcess) = 0;
   1152 
   1153 };
   1154 #ifdef __CRT_UUID_DECL
   1155 __CRT_UUID_DECL(IDirectXVideoProcessorService, 0xfc51a552, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02)
   1156 #endif
   1157 #else
   1158 typedef struct IDirectXVideoProcessorServiceVtbl {
   1159     BEGIN_INTERFACE
   1160 
   1161     /*** IUnknown methods ***/
   1162     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1163         IDirectXVideoProcessorService *This,
   1164         REFIID riid,
   1165         void **ppvObject);
   1166 
   1167     ULONG (STDMETHODCALLTYPE *AddRef)(
   1168         IDirectXVideoProcessorService *This);
   1169 
   1170     ULONG (STDMETHODCALLTYPE *Release)(
   1171         IDirectXVideoProcessorService *This);
   1172 
   1173     /*** IDirectXVideoAccelerationService methods ***/
   1174     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
   1175         IDirectXVideoProcessorService *This,
   1176         UINT width,
   1177         UINT height,
   1178         UINT backBuffers,
   1179         D3DFORMAT format,
   1180         D3DPOOL pool,
   1181         DWORD usage,
   1182         DWORD dxvaType,
   1183         IDirect3DSurface9 **ppSurface,
   1184         HANDLE *pSharedHandle);
   1185 
   1186     /*** IDirectXVideoProcessorService methods ***/
   1187     HRESULT (STDMETHODCALLTYPE *RegisterVideoProcessorSoftwareDevice)(
   1188         IDirectXVideoProcessorService *This,
   1189         void *pCallbacks);
   1190 
   1191     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorDeviceGuids)(
   1192         IDirectXVideoProcessorService *This,
   1193         const DXVA2_VideoDesc *pVideoDesc,
   1194         UINT *pCount,
   1195         GUID **pGuids);
   1196 
   1197     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorRenderTargets)(
   1198         IDirectXVideoProcessorService *This,
   1199         REFGUID VideoProcDeviceGuid,
   1200         const DXVA2_VideoDesc *pVideoDesc,
   1201         UINT *pCount,
   1202         D3DFORMAT **pFormats);
   1203 
   1204     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorSubStreamFormats)(
   1205         IDirectXVideoProcessorService *This,
   1206         REFGUID VideoProcDeviceGuid,
   1207         const DXVA2_VideoDesc *pVideoDesc,
   1208         D3DFORMAT RenderTargetFormat,
   1209         UINT *pCount,
   1210         D3DFORMAT **pFormats);
   1211 
   1212     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorCaps)(
   1213         IDirectXVideoProcessorService *This,
   1214         REFGUID VideoProcDeviceGuid,
   1215         const DXVA2_VideoDesc *pVideoDesc,
   1216         D3DFORMAT RenderTargetFormat,
   1217         DXVA2_VideoProcessorCaps *pCaps);
   1218 
   1219     HRESULT (STDMETHODCALLTYPE *GetProcAmpRange)(
   1220         IDirectXVideoProcessorService *This,
   1221         REFGUID VideoProcDeviceGuid,
   1222         const DXVA2_VideoDesc *pVideoDesc,
   1223         D3DFORMAT RenderTargetFormat,
   1224         UINT ProcAmpCap,
   1225         DXVA2_ValueRange *pRange);
   1226 
   1227     HRESULT (STDMETHODCALLTYPE *GetFilterPropertyRange)(
   1228         IDirectXVideoProcessorService *This,
   1229         REFGUID VideoProcDeviceGuid,
   1230         const DXVA2_VideoDesc *pVideoDesc,
   1231         D3DFORMAT renderTargetFormat,
   1232         UINT FilterSetting,
   1233         DXVA2_ValueRange *pRange);
   1234 
   1235     HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
   1236         IDirectXVideoProcessorService *This,
   1237         REFGUID VideoProcDeviceGuid,
   1238         const DXVA2_VideoDesc *pVideoDesc,
   1239         D3DFORMAT RenderTargetFormat,
   1240         UINT MaxNumSubStreams,
   1241         IDirectXVideoProcessor **ppVidProcess);
   1242 
   1243     END_INTERFACE
   1244 } IDirectXVideoProcessorServiceVtbl;
   1245 
   1246 interface IDirectXVideoProcessorService {
   1247     CONST_VTBL IDirectXVideoProcessorServiceVtbl* lpVtbl;
   1248 };
   1249 
   1250 #ifdef COBJMACROS
   1251 #ifndef WIDL_C_INLINE_WRAPPERS
   1252 /*** IUnknown methods ***/
   1253 #define IDirectXVideoProcessorService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1254 #define IDirectXVideoProcessorService_AddRef(This) (This)->lpVtbl->AddRef(This)
   1255 #define IDirectXVideoProcessorService_Release(This) (This)->lpVtbl->Release(This)
   1256 /*** IDirectXVideoAccelerationService methods ***/
   1257 #define IDirectXVideoProcessorService_CreateSurface(This,width,height,backBuffers,format,pool,usage,dxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,width,height,backBuffers,format,pool,usage,dxvaType,ppSurface,pSharedHandle)
   1258 /*** IDirectXVideoProcessorService methods ***/
   1259 #define IDirectXVideoProcessorService_RegisterVideoProcessorSoftwareDevice(This,pCallbacks) (This)->lpVtbl->RegisterVideoProcessorSoftwareDevice(This,pCallbacks)
   1260 #define IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids(This,pVideoDesc,pCount,pGuids) (This)->lpVtbl->GetVideoProcessorDeviceGuids(This,pVideoDesc,pCount,pGuids)
   1261 #define IDirectXVideoProcessorService_GetVideoProcessorRenderTargets(This,VideoProcDeviceGuid,pVideoDesc,pCount,pFormats) (This)->lpVtbl->GetVideoProcessorRenderTargets(This,VideoProcDeviceGuid,pVideoDesc,pCount,pFormats)
   1262 #define IDirectXVideoProcessorService_GetVideoProcessorSubStreamFormats(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCount,pFormats) (This)->lpVtbl->GetVideoProcessorSubStreamFormats(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCount,pFormats)
   1263 #define IDirectXVideoProcessorService_GetVideoProcessorCaps(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCaps) (This)->lpVtbl->GetVideoProcessorCaps(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCaps)
   1264 #define IDirectXVideoProcessorService_GetProcAmpRange(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,ProcAmpCap,pRange) (This)->lpVtbl->GetProcAmpRange(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,ProcAmpCap,pRange)
   1265 #define IDirectXVideoProcessorService_GetFilterPropertyRange(This,VideoProcDeviceGuid,pVideoDesc,renderTargetFormat,FilterSetting,pRange) (This)->lpVtbl->GetFilterPropertyRange(This,VideoProcDeviceGuid,pVideoDesc,renderTargetFormat,FilterSetting,pRange)
   1266 #define IDirectXVideoProcessorService_CreateVideoProcessor(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,MaxNumSubStreams,ppVidProcess) (This)->lpVtbl->CreateVideoProcessor(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,MaxNumSubStreams,ppVidProcess)
   1267 #else
   1268 /*** IUnknown methods ***/
   1269 static inline HRESULT IDirectXVideoProcessorService_QueryInterface(IDirectXVideoProcessorService* This,REFIID riid,void **ppvObject) {
   1270     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1271 }
   1272 static inline ULONG IDirectXVideoProcessorService_AddRef(IDirectXVideoProcessorService* This) {
   1273     return This->lpVtbl->AddRef(This);
   1274 }
   1275 static inline ULONG IDirectXVideoProcessorService_Release(IDirectXVideoProcessorService* This) {
   1276     return This->lpVtbl->Release(This);
   1277 }
   1278 /*** IDirectXVideoAccelerationService methods ***/
   1279 static inline HRESULT IDirectXVideoProcessorService_CreateSurface(IDirectXVideoProcessorService* This,UINT width,UINT height,UINT backBuffers,D3DFORMAT format,D3DPOOL pool,DWORD usage,DWORD dxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) {
   1280     return This->lpVtbl->CreateSurface(This,width,height,backBuffers,format,pool,usage,dxvaType,ppSurface,pSharedHandle);
   1281 }
   1282 /*** IDirectXVideoProcessorService methods ***/
   1283 static inline HRESULT IDirectXVideoProcessorService_RegisterVideoProcessorSoftwareDevice(IDirectXVideoProcessorService* This,void *pCallbacks) {
   1284     return This->lpVtbl->RegisterVideoProcessorSoftwareDevice(This,pCallbacks);
   1285 }
   1286 static inline HRESULT IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids(IDirectXVideoProcessorService* This,const DXVA2_VideoDesc *pVideoDesc,UINT *pCount,GUID **pGuids) {
   1287     return This->lpVtbl->GetVideoProcessorDeviceGuids(This,pVideoDesc,pCount,pGuids);
   1288 }
   1289 static inline HRESULT IDirectXVideoProcessorService_GetVideoProcessorRenderTargets(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,UINT *pCount,D3DFORMAT **pFormats) {
   1290     return This->lpVtbl->GetVideoProcessorRenderTargets(This,VideoProcDeviceGuid,pVideoDesc,pCount,pFormats);
   1291 }
   1292 static inline HRESULT IDirectXVideoProcessorService_GetVideoProcessorSubStreamFormats(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,D3DFORMAT RenderTargetFormat,UINT *pCount,D3DFORMAT **pFormats) {
   1293     return This->lpVtbl->GetVideoProcessorSubStreamFormats(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCount,pFormats);
   1294 }
   1295 static inline HRESULT IDirectXVideoProcessorService_GetVideoProcessorCaps(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,D3DFORMAT RenderTargetFormat,DXVA2_VideoProcessorCaps *pCaps) {
   1296     return This->lpVtbl->GetVideoProcessorCaps(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,pCaps);
   1297 }
   1298 static inline HRESULT IDirectXVideoProcessorService_GetProcAmpRange(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,D3DFORMAT RenderTargetFormat,UINT ProcAmpCap,DXVA2_ValueRange *pRange) {
   1299     return This->lpVtbl->GetProcAmpRange(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,ProcAmpCap,pRange);
   1300 }
   1301 static inline HRESULT IDirectXVideoProcessorService_GetFilterPropertyRange(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,D3DFORMAT renderTargetFormat,UINT FilterSetting,DXVA2_ValueRange *pRange) {
   1302     return This->lpVtbl->GetFilterPropertyRange(This,VideoProcDeviceGuid,pVideoDesc,renderTargetFormat,FilterSetting,pRange);
   1303 }
   1304 static inline HRESULT IDirectXVideoProcessorService_CreateVideoProcessor(IDirectXVideoProcessorService* This,REFGUID VideoProcDeviceGuid,const DXVA2_VideoDesc *pVideoDesc,D3DFORMAT RenderTargetFormat,UINT MaxNumSubStreams,IDirectXVideoProcessor **ppVidProcess) {
   1305     return This->lpVtbl->CreateVideoProcessor(This,VideoProcDeviceGuid,pVideoDesc,RenderTargetFormat,MaxNumSubStreams,ppVidProcess);
   1306 }
   1307 #endif
   1308 #endif
   1309 
   1310 #endif
   1311 
   1312 
   1313 #endif  /* __IDirectXVideoProcessorService_INTERFACE_DEFINED__ */
   1314 
   1315 /*****************************************************************************
   1316  * IDirectXVideoProcessor interface
   1317  */
   1318 #ifndef __IDirectXVideoProcessor_INTERFACE_DEFINED__
   1319 #define __IDirectXVideoProcessor_INTERFACE_DEFINED__
   1320 
   1321 DEFINE_GUID(IID_IDirectXVideoProcessor, 0x8c3a39f0, 0x916e, 0x4690, 0x80,0x4f, 0x4c,0x80,0x01,0x35,0x5d,0x25);
   1322 #if defined(__cplusplus) && !defined(CINTERFACE)
   1323 MIDL_INTERFACE("8c3a39f0-916e-4690-804f-4c8001355d25")
   1324 IDirectXVideoProcessor : public IUnknown
   1325 {
   1326     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorService(
   1327         IDirectXVideoProcessorService **ppService) = 0;
   1328 
   1329     virtual HRESULT STDMETHODCALLTYPE GetCreationParameters(
   1330         GUID *pDeviceGuid,
   1331         DXVA2_VideoDesc *pVideoDesc,
   1332         D3DFORMAT *pRenderTargetFormat,
   1333         UINT *pMaxNumSubStreams) = 0;
   1334 
   1335     virtual HRESULT STDMETHODCALLTYPE GetVideoProcessorCaps(
   1336         DXVA2_VideoProcessorCaps *pCaps) = 0;
   1337 
   1338     virtual HRESULT STDMETHODCALLTYPE GetProcAmpRange(
   1339         UINT ProcAmpCap,
   1340         DXVA2_ValueRange *pRange) = 0;
   1341 
   1342     virtual HRESULT STDMETHODCALLTYPE GetFilterPropertyRange(
   1343         UINT FilterSetting,
   1344         DXVA2_ValueRange *pRange) = 0;
   1345 
   1346     virtual HRESULT STDMETHODCALLTYPE VideoProcessBlt(
   1347         IDirect3DSurface9 *pRenderTarget,
   1348         const DXVA2_VideoProcessBltParams *pBltParams,
   1349         const DXVA2_VideoSample *pSamples,
   1350         UINT NumSamples,
   1351         HANDLE *pHandleComplete) = 0;
   1352 
   1353 };
   1354 #ifdef __CRT_UUID_DECL
   1355 __CRT_UUID_DECL(IDirectXVideoProcessor, 0x8c3a39f0, 0x916e, 0x4690, 0x80,0x4f, 0x4c,0x80,0x01,0x35,0x5d,0x25)
   1356 #endif
   1357 #else
   1358 typedef struct IDirectXVideoProcessorVtbl {
   1359     BEGIN_INTERFACE
   1360 
   1361     /*** IUnknown methods ***/
   1362     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1363         IDirectXVideoProcessor *This,
   1364         REFIID riid,
   1365         void **ppvObject);
   1366 
   1367     ULONG (STDMETHODCALLTYPE *AddRef)(
   1368         IDirectXVideoProcessor *This);
   1369 
   1370     ULONG (STDMETHODCALLTYPE *Release)(
   1371         IDirectXVideoProcessor *This);
   1372 
   1373     /*** IDirectXVideoProcessor methods ***/
   1374     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorService)(
   1375         IDirectXVideoProcessor *This,
   1376         IDirectXVideoProcessorService **ppService);
   1377 
   1378     HRESULT (STDMETHODCALLTYPE *GetCreationParameters)(
   1379         IDirectXVideoProcessor *This,
   1380         GUID *pDeviceGuid,
   1381         DXVA2_VideoDesc *pVideoDesc,
   1382         D3DFORMAT *pRenderTargetFormat,
   1383         UINT *pMaxNumSubStreams);
   1384 
   1385     HRESULT (STDMETHODCALLTYPE *GetVideoProcessorCaps)(
   1386         IDirectXVideoProcessor *This,
   1387         DXVA2_VideoProcessorCaps *pCaps);
   1388 
   1389     HRESULT (STDMETHODCALLTYPE *GetProcAmpRange)(
   1390         IDirectXVideoProcessor *This,
   1391         UINT ProcAmpCap,
   1392         DXVA2_ValueRange *pRange);
   1393 
   1394     HRESULT (STDMETHODCALLTYPE *GetFilterPropertyRange)(
   1395         IDirectXVideoProcessor *This,
   1396         UINT FilterSetting,
   1397         DXVA2_ValueRange *pRange);
   1398 
   1399     HRESULT (STDMETHODCALLTYPE *VideoProcessBlt)(
   1400         IDirectXVideoProcessor *This,
   1401         IDirect3DSurface9 *pRenderTarget,
   1402         const DXVA2_VideoProcessBltParams *pBltParams,
   1403         const DXVA2_VideoSample *pSamples,
   1404         UINT NumSamples,
   1405         HANDLE *pHandleComplete);
   1406 
   1407     END_INTERFACE
   1408 } IDirectXVideoProcessorVtbl;
   1409 
   1410 interface IDirectXVideoProcessor {
   1411     CONST_VTBL IDirectXVideoProcessorVtbl* lpVtbl;
   1412 };
   1413 
   1414 #ifdef COBJMACROS
   1415 #ifndef WIDL_C_INLINE_WRAPPERS
   1416 /*** IUnknown methods ***/
   1417 #define IDirectXVideoProcessor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1418 #define IDirectXVideoProcessor_AddRef(This) (This)->lpVtbl->AddRef(This)
   1419 #define IDirectXVideoProcessor_Release(This) (This)->lpVtbl->Release(This)
   1420 /*** IDirectXVideoProcessor methods ***/
   1421 #define IDirectXVideoProcessor_GetVideoProcessorService(This,ppService) (This)->lpVtbl->GetVideoProcessorService(This,ppService)
   1422 #define IDirectXVideoProcessor_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pRenderTargetFormat,pMaxNumSubStreams) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pRenderTargetFormat,pMaxNumSubStreams)
   1423 #define IDirectXVideoProcessor_GetVideoProcessorCaps(This,pCaps) (This)->lpVtbl->GetVideoProcessorCaps(This,pCaps)
   1424 #define IDirectXVideoProcessor_GetProcAmpRange(This,ProcAmpCap,pRange) (This)->lpVtbl->GetProcAmpRange(This,ProcAmpCap,pRange)
   1425 #define IDirectXVideoProcessor_GetFilterPropertyRange(This,FilterSetting,pRange) (This)->lpVtbl->GetFilterPropertyRange(This,FilterSetting,pRange)
   1426 #define IDirectXVideoProcessor_VideoProcessBlt(This,pRenderTarget,pBltParams,pSamples,NumSamples,pHandleComplete) (This)->lpVtbl->VideoProcessBlt(This,pRenderTarget,pBltParams,pSamples,NumSamples,pHandleComplete)
   1427 #else
   1428 /*** IUnknown methods ***/
   1429 static inline HRESULT IDirectXVideoProcessor_QueryInterface(IDirectXVideoProcessor* This,REFIID riid,void **ppvObject) {
   1430     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1431 }
   1432 static inline ULONG IDirectXVideoProcessor_AddRef(IDirectXVideoProcessor* This) {
   1433     return This->lpVtbl->AddRef(This);
   1434 }
   1435 static inline ULONG IDirectXVideoProcessor_Release(IDirectXVideoProcessor* This) {
   1436     return This->lpVtbl->Release(This);
   1437 }
   1438 /*** IDirectXVideoProcessor methods ***/
   1439 static inline HRESULT IDirectXVideoProcessor_GetVideoProcessorService(IDirectXVideoProcessor* This,IDirectXVideoProcessorService **ppService) {
   1440     return This->lpVtbl->GetVideoProcessorService(This,ppService);
   1441 }
   1442 static inline HRESULT IDirectXVideoProcessor_GetCreationParameters(IDirectXVideoProcessor* This,GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,D3DFORMAT *pRenderTargetFormat,UINT *pMaxNumSubStreams) {
   1443     return This->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pRenderTargetFormat,pMaxNumSubStreams);
   1444 }
   1445 static inline HRESULT IDirectXVideoProcessor_GetVideoProcessorCaps(IDirectXVideoProcessor* This,DXVA2_VideoProcessorCaps *pCaps) {
   1446     return This->lpVtbl->GetVideoProcessorCaps(This,pCaps);
   1447 }
   1448 static inline HRESULT IDirectXVideoProcessor_GetProcAmpRange(IDirectXVideoProcessor* This,UINT ProcAmpCap,DXVA2_ValueRange *pRange) {
   1449     return This->lpVtbl->GetProcAmpRange(This,ProcAmpCap,pRange);
   1450 }
   1451 static inline HRESULT IDirectXVideoProcessor_GetFilterPropertyRange(IDirectXVideoProcessor* This,UINT FilterSetting,DXVA2_ValueRange *pRange) {
   1452     return This->lpVtbl->GetFilterPropertyRange(This,FilterSetting,pRange);
   1453 }
   1454 static inline HRESULT IDirectXVideoProcessor_VideoProcessBlt(IDirectXVideoProcessor* This,IDirect3DSurface9 *pRenderTarget,const DXVA2_VideoProcessBltParams *pBltParams,const DXVA2_VideoSample *pSamples,UINT NumSamples,HANDLE *pHandleComplete) {
   1455     return This->lpVtbl->VideoProcessBlt(This,pRenderTarget,pBltParams,pSamples,NumSamples,pHandleComplete);
   1456 }
   1457 #endif
   1458 #endif
   1459 
   1460 #endif
   1461 
   1462 
   1463 #endif  /* __IDirectXVideoProcessor_INTERFACE_DEFINED__ */
   1464 
   1465 /*****************************************************************************
   1466  * IDirectXVideoMemoryConfiguration interface
   1467  */
   1468 #ifndef __IDirectXVideoMemoryConfiguration_INTERFACE_DEFINED__
   1469 #define __IDirectXVideoMemoryConfiguration_INTERFACE_DEFINED__
   1470 
   1471 DEFINE_GUID(IID_IDirectXVideoMemoryConfiguration, 0xb7f916dd, 0xdb3b, 0x49c1, 0x84,0xd7, 0xe4,0x5e,0xf9,0x9e,0xc7,0x26);
   1472 #if defined(__cplusplus) && !defined(CINTERFACE)
   1473 MIDL_INTERFACE("b7f916dd-db3b-49c1-84d7-e45ef99ec726")
   1474 IDirectXVideoMemoryConfiguration : public IUnknown
   1475 {
   1476     virtual HRESULT STDMETHODCALLTYPE GetAvailableSurfaceTypeByIndex(
   1477         DWORD wTypeIndex,
   1478         DXVA2_SurfaceType *pdwType) = 0;
   1479 
   1480     virtual HRESULT STDMETHODCALLTYPE SetSurfaceType(
   1481         DXVA2_SurfaceType dwType) = 0;
   1482 
   1483 };
   1484 #ifdef __CRT_UUID_DECL
   1485 __CRT_UUID_DECL(IDirectXVideoMemoryConfiguration, 0xb7f916dd, 0xdb3b, 0x49c1, 0x84,0xd7, 0xe4,0x5e,0xf9,0x9e,0xc7,0x26)
   1486 #endif
   1487 #else
   1488 typedef struct IDirectXVideoMemoryConfigurationVtbl {
   1489     BEGIN_INTERFACE
   1490 
   1491     /*** IUnknown methods ***/
   1492     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1493         IDirectXVideoMemoryConfiguration *This,
   1494         REFIID riid,
   1495         void **ppvObject);
   1496 
   1497     ULONG (STDMETHODCALLTYPE *AddRef)(
   1498         IDirectXVideoMemoryConfiguration *This);
   1499 
   1500     ULONG (STDMETHODCALLTYPE *Release)(
   1501         IDirectXVideoMemoryConfiguration *This);
   1502 
   1503     /*** IDirectXVideoMemoryConfiguration methods ***/
   1504     HRESULT (STDMETHODCALLTYPE *GetAvailableSurfaceTypeByIndex)(
   1505         IDirectXVideoMemoryConfiguration *This,
   1506         DWORD wTypeIndex,
   1507         DXVA2_SurfaceType *pdwType);
   1508 
   1509     HRESULT (STDMETHODCALLTYPE *SetSurfaceType)(
   1510         IDirectXVideoMemoryConfiguration *This,
   1511         DXVA2_SurfaceType dwType);
   1512 
   1513     END_INTERFACE
   1514 } IDirectXVideoMemoryConfigurationVtbl;
   1515 
   1516 interface IDirectXVideoMemoryConfiguration {
   1517     CONST_VTBL IDirectXVideoMemoryConfigurationVtbl* lpVtbl;
   1518 };
   1519 
   1520 #ifdef COBJMACROS
   1521 #ifndef WIDL_C_INLINE_WRAPPERS
   1522 /*** IUnknown methods ***/
   1523 #define IDirectXVideoMemoryConfiguration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1524 #define IDirectXVideoMemoryConfiguration_AddRef(This) (This)->lpVtbl->AddRef(This)
   1525 #define IDirectXVideoMemoryConfiguration_Release(This) (This)->lpVtbl->Release(This)
   1526 /*** IDirectXVideoMemoryConfiguration methods ***/
   1527 #define IDirectXVideoMemoryConfiguration_GetAvailableSurfaceTypeByIndex(This,wTypeIndex,pdwType) (This)->lpVtbl->GetAvailableSurfaceTypeByIndex(This,wTypeIndex,pdwType)
   1528 #define IDirectXVideoMemoryConfiguration_SetSurfaceType(This,dwType) (This)->lpVtbl->SetSurfaceType(This,dwType)
   1529 #else
   1530 /*** IUnknown methods ***/
   1531 static inline HRESULT IDirectXVideoMemoryConfiguration_QueryInterface(IDirectXVideoMemoryConfiguration* This,REFIID riid,void **ppvObject) {
   1532     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1533 }
   1534 static inline ULONG IDirectXVideoMemoryConfiguration_AddRef(IDirectXVideoMemoryConfiguration* This) {
   1535     return This->lpVtbl->AddRef(This);
   1536 }
   1537 static inline ULONG IDirectXVideoMemoryConfiguration_Release(IDirectXVideoMemoryConfiguration* This) {
   1538     return This->lpVtbl->Release(This);
   1539 }
   1540 /*** IDirectXVideoMemoryConfiguration methods ***/
   1541 static inline HRESULT IDirectXVideoMemoryConfiguration_GetAvailableSurfaceTypeByIndex(IDirectXVideoMemoryConfiguration* This,DWORD wTypeIndex,DXVA2_SurfaceType *pdwType) {
   1542     return This->lpVtbl->GetAvailableSurfaceTypeByIndex(This,wTypeIndex,pdwType);
   1543 }
   1544 static inline HRESULT IDirectXVideoMemoryConfiguration_SetSurfaceType(IDirectXVideoMemoryConfiguration* This,DXVA2_SurfaceType dwType) {
   1545     return This->lpVtbl->SetSurfaceType(This,dwType);
   1546 }
   1547 #endif
   1548 #endif
   1549 
   1550 #endif
   1551 
   1552 
   1553 #endif  /* __IDirectXVideoMemoryConfiguration_INTERFACE_DEFINED__ */
   1554 
   1555 HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9(UINT *pResetToken,IDirect3DDeviceManager9 **ppDXVAManager);
   1556 HRESULT WINAPI DXVA2CreateVideoService(IDirect3DDevice9 *pDD,REFIID riid,void **ppService);
   1557 #endif
   1558 static inline DXVA2_Fixed32 DXVA2_Fixed32OpaqueAlpha(void) {
   1559   DXVA2_Fixed32 f32;
   1560   f32.ll = 0 + (1 << 16);
   1561   return f32;
   1562 }
   1563 
   1564 static inline DXVA2_Fixed32 DXVA2_Fixed32TransparentAlpha(void) {
   1565   DXVA2_Fixed32 f32;
   1566   f32.ll = 0;
   1567   return f32;
   1568 }
   1569 
   1570 static inline float DXVA2FixedToFloat(DXVA2_Fixed32 f32) {
   1571   return (float)f32.Value + (float)f32.Fraction / (1 << 16);
   1572 }
   1573 
   1574 static inline DXVA2_Fixed32 DXVA2FloatToFixed(float f) {
   1575   DXVA2_Fixed32 f32;
   1576   f32.Value    = ((ULONG) (f * (1 << 16))) >> 16;
   1577   f32.Fraction = ((ULONG) (f * (1 << 16))) & 0xFFFF;
   1578   return f32;
   1579 }
   1580 /* Begin additional prototypes for all interfaces */
   1581 
   1582 
   1583 /* End additional prototypes */
   1584 
   1585 #ifdef __cplusplus
   1586 }
   1587 #endif
   1588 
   1589 #endif /* __dxva2api_h__ */