Home | History | Annotate | Download | only in include
      1 /*** Autogenerated by WIDL 1.6 from include/dxva2api.idl - Do not edit ***/
      2 
      3 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      4 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      5 #endif
      6 
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 
     10 #ifndef COM_NO_WINDOWS_H
     11 #include <windows.h>
     12 #include <ole2.h>
     13 #endif
     14 
     15 #ifndef __dxva2api_h__
     16 #define __dxva2api_h__
     17 
     18 /* Forward declarations */
     19 
     20 #ifndef __IDirect3DDeviceManager9_FWD_DEFINED__
     21 #define __IDirect3DDeviceManager9_FWD_DEFINED__
     22 typedef interface IDirect3DDeviceManager9 IDirect3DDeviceManager9;
     23 #endif
     24 
     25 #ifndef __IDirectXVideoDecoder_FWD_DEFINED__
     26 #define __IDirectXVideoDecoder_FWD_DEFINED__
     27 typedef interface IDirectXVideoDecoder IDirectXVideoDecoder;
     28 #endif
     29 
     30 #ifndef __IDirectXVideoAccelerationService_FWD_DEFINED__
     31 #define __IDirectXVideoAccelerationService_FWD_DEFINED__
     32 typedef interface IDirectXVideoAccelerationService IDirectXVideoAccelerationService;
     33 #endif
     34 
     35 #ifndef __IDirectXVideoDecoderService_FWD_DEFINED__
     36 #define __IDirectXVideoDecoderService_FWD_DEFINED__
     37 typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService;
     38 #endif
     39 
     40 /* Headers for imported files */
     41 
     42 #include <unknwn.h>
     43 
     44 #ifdef __cplusplus
     45 extern "C" {
     46 #endif
     47 
     48 #if 0
     49 typedef DWORD IDirect3DDevice9;
     50 typedef DWORD IDirect3DSurface9;
     51 typedef DWORD D3DFORMAT;
     52 typedef DWORD D3DPOOL;
     53 #endif
     54 #ifndef __IDirectXVideoDecoderService_FWD_DEFINED__
     55 #define __IDirectXVideoDecoderService_FWD_DEFINED__
     56 typedef interface IDirectXVideoDecoderService IDirectXVideoDecoderService;
     57 #endif
     58 
     59 #ifndef __REFERENCE_TIME_DEFINED
     60 #define __REFERENCE_TIME_DEFINED
     61 typedef LONGLONG REFERENCE_TIME;
     62 #endif /*__REFERENCE_TIME_DEFINED*/
     63 #define DXVA2_ProcAmp_None 0x0000
     64 #define DXVA2_ProcAmp_Brightness 0x0001
     65 #define DXVA2_ProcAmp_Contrast 0x0002
     66 #define DXVA2_ProcAmp_Hue 0x0004
     67 #define DXVA2_ProcAmp_Saturation 0x0008
     68 
     69 #define DXVA2_E_NOT_INITIALIZED     MAKE_HRESULT(1, 4, 4096)
     70 #define DXVA2_E_NEW_VIDEO_DEVICE    MAKE_HRESULT(1, 4, 4097)
     71 #define DXVA2_E_VIDEO_DEVICE_LOCKED MAKE_HRESULT(1, 4, 4098)
     72 #define DXVA2_E_NOT_AVAILABLE       MAKE_HRESULT(1, 4, 4099)
     73 
     74 DEFINE_GUID(DXVA2_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0,0x4563, 0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66);
     75 DEFINE_GUID(DXVA2_ModeMPEG2_IDCT, 0xbf22ad00, 0x03ea,0x4690, 0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e);
     76 DEFINE_GUID(DXVA2_ModeMPEG2_VLD, 0xee27417f, 0x5e28,0x4e65, 0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9);
     77 DEFINE_GUID(DXVA2_ModeH264_A, 0x1b81be64, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     78 DEFINE_GUID(DXVA2_ModeH264_B, 0x1b81be65, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     79 DEFINE_GUID(DXVA2_ModeH264_C, 0x1b81be66, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     80 DEFINE_GUID(DXVA2_ModeH264_D, 0x1b81be67, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     81 DEFINE_GUID(DXVA2_ModeH264_E, 0x1b81be68, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     82 DEFINE_GUID(DXVA2_ModeH264_F, 0x1b81be69, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     83 DEFINE_GUID(DXVA2_ModeWMV8_A, 0x1b81be80, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     84 DEFINE_GUID(DXVA2_ModeWMV8_B, 0x1b81be81, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     85 DEFINE_GUID(DXVA2_ModeWMV9_A, 0x1b81be90, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     86 DEFINE_GUID(DXVA2_ModeWMV9_B, 0x1b81be91, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     87 DEFINE_GUID(DXVA2_ModeWMV9_C, 0x1b81be94, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     88 DEFINE_GUID(DXVA2_ModeVC1_A, 0x1b81beA0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     89 DEFINE_GUID(DXVA2_ModeVC1_B, 0x1b81beA1, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     90 DEFINE_GUID(DXVA2_ModeVC1_C, 0x1b81beA2, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     91 DEFINE_GUID(DXVA2_ModeVC1_D, 0x1b81beA3, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
     92 
     93 typedef enum _DXVA2_SampleFormat {
     94   DXVA2_SampleFormatMask                  = 0x00FF,
     95   DXVA2_SampleUnknown                     = 0,
     96   DXVA2_SampleProgressiveFrame            = 2,
     97   DXVA2_SampleFieldInterleavedEvenFirst   = 3,
     98   DXVA2_SampleFieldInterleavedOddFirst    = 4,
     99   DXVA2_SampleFieldSingleEven             = 5,
    100   DXVA2_SampleFieldSingleOdd              = 6,
    101   DXVA2_SampleSubStream                   = 7
    102 } DXVA2_SampleFormat;
    103 
    104 typedef enum _DXVA2_VideoChromaSubSampling {
    105   DXVA2_VideoChromaSubsamplingMask                              = 0x0F,
    106   DXVA2_VideoChromaSubsampling_Unknown                          = 0,
    107   DXVA2_VideoChromaSubsampling_ProgressiveChroma                = 0x8,
    108   DXVA2_VideoChromaSubsampling_Horizontally_Cosited             = 0x4,
    109   DXVA2_VideoChromaSubsampling_Vertically_Cosited               = 0x2,
    110   DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes   = 0x1,
    111   DXVA2_VideoChromaSubsampling_MPEG2                            =
    112               DXVA2_VideoChromaSubsampling_Horizontally_Cosited |
    113               DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,
    114   DXVA2_VideoChromaSubsampling_MPEG1                            =
    115               DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,
    116   DXVA2_VideoChromaSubsampling_DV_PAL                           =
    117               DXVA2_VideoChromaSubsampling_Horizontally_Cosited |
    118               DXVA2_VideoChromaSubsampling_Vertically_Cosited,
    119   DXVA2_VideoChromaSubsampling_Cosited                          =
    120               DXVA2_VideoChromaSubsampling_Horizontally_Cosited |
    121               DXVA2_VideoChromaSubsampling_Vertically_Cosited |
    122               DXVA2_VideoChromaSubsampling_Vertically_AlignedChromaPlanes
    123 } DXVA2_VideoChromaSubSampling;
    124 
    125 typedef enum _DXVA2_NominalRange {
    126   DXVA2_NominalRangeMask       = 0x07,
    127   DXVA2_NominalRange_Unknown   = 0,
    128   DXVA2_NominalRange_Normal    = 1,
    129   DXVA2_NominalRange_Wide      = 2,
    130   DXVA2_NominalRange_0_255     = 1,
    131   DXVA2_NominalRange_16_235    = 2,
    132   DXVA2_NominalRange_48_208    = 3
    133 } DXVA2_NominalRange;
    134 
    135 typedef enum _DXVA2_VideoLighting {
    136   DXVA2_VideoLightingMask       = 0x0F,
    137   DXVA2_VideoLighting_Unknown   = 0,
    138   DXVA2_VideoLighting_bright    = 1,
    139   DXVA2_VideoLighting_office    = 2,
    140   DXVA2_VideoLighting_dim       = 3,
    141   DXVA2_VideoLighting_dark      = 4
    142 } DXVA2_VideoLighting;
    143 
    144 typedef enum _DXVA2_VideoPrimaries {
    145   DXVA2_VideoPrimariesMask             = 0x001f,
    146   DXVA2_VideoPrimaries_Unknown         = 0,
    147   DXVA2_VideoPrimaries_reserved        = 1,
    148   DXVA2_VideoPrimaries_BT709           = 2,
    149   DXVA2_VideoPrimaries_BT470_2_SysM    = 3,
    150   DXVA2_VideoPrimaries_BT470_2_SysBG   = 4,
    151   DXVA2_VideoPrimaries_SMPTE170M       = 5,
    152   DXVA2_VideoPrimaries_SMPTE240M       = 6,
    153   DXVA2_VideoPrimaries_EBU3213         = 7,
    154   DXVA2_VideoPrimaries_SMPTE_C         = 8
    155 } DXVA2_VideoPrimaries;
    156 
    157 typedef enum _DXVA2_VideoTransferFunction {
    158   DXVA2_VideoTransFuncMask       = 0x001f,
    159   DXVA2_VideoTransFunc_Unknown   = 0,
    160   DXVA2_VideoTransFunc_10        = 1,
    161   DXVA2_VideoTransFunc_18        = 2,
    162   DXVA2_VideoTransFunc_20        = 3,
    163   DXVA2_VideoTransFunc_22        = 4,
    164   DXVA2_VideoTransFunc_709       = 5,
    165   DXVA2_VideoTransFunc_240M      = 6,
    166   DXVA2_VideoTransFunc_sRGB      = 7,
    167   DXVA2_VideoTransFunc_28        = 8
    168 } DXVA2_VideoTransferFunction;
    169 
    170 typedef enum  {
    171   DXVA2_SurfaceType_DecoderRenderTarget      = 0,
    172   DXVA2_SurfaceType_ProcessorRenderTarget    = 1,
    173   DXVA2_SurfaceType_D3DRenderTargetTexture   = 2
    174 } DXVA2_SurfaceType;
    175 
    176 typedef enum _DXVA2_VideoTransferMatrix {
    177   DXVA2_VideoTransferMatrixMask         = 0x07,
    178   DXVA2_VideoTransferMatrix_Unknown     = 0,
    179   DXVA2_VideoTransferMatrix_BT709       = 1,
    180   DXVA2_VideoTransferMatrix_BT601       = 2,
    181   DXVA2_VideoTransferMatrix_SMPTE240M   = 3
    182 } DXVA2_VideoTransferMatrix;
    183 
    184 typedef struct _DXVA2_AYUVSample16 {
    185   USHORT Cr;
    186   USHORT Cb;
    187   USHORT Y;
    188   USHORT Alpha;
    189 } DXVA2_AYUVSample16;
    190 
    191 typedef struct _DXVA2_AYUVSample8 {
    192   UCHAR Cr;
    193   UCHAR Cb;
    194   UCHAR Y;
    195   UCHAR Alpha;
    196 } DXVA2_AYUVSample8;
    197 typedef struct _DXVA2_ConfigPictureDecode {
    198     GUID guidConfigBitstreamEncryption;
    199     GUID guidConfigMBcontrolEncryption;
    200     GUID guidConfigResidDiffEncryption;
    201     UINT ConfigBitstreamRaw;
    202     UINT ConfigMBcontrolRasterOrder;
    203     UINT ConfigResidDiffHost;
    204     UINT ConfigSpatialResid8;
    205     UINT ConfigResid8Subtraction;
    206     UINT ConfigSpatialHost8or9Clipping;
    207     UINT ConfigSpatialResidInterleaved;
    208     UINT ConfigIntraResidUnsigned;
    209     UINT ConfigResidDiffAccelerator;
    210     UINT ConfigHostInverseScan;
    211     UINT ConfigSpecificIDCT;
    212     UINT Config4GroupedCoefs;
    213     USHORT ConfigMinRenderTargetBuffCount;
    214     USHORT ConfigDecoderSpecific;
    215 } DXVA2_ConfigPictureDecode;
    216 typedef struct _DXVA2_DecodeBufferDesc {
    217     DWORD CompressedBufferType;
    218     UINT BufferIndex;
    219     UINT DataOffset;
    220     UINT DataSize;
    221     UINT FirstMBaddress;
    222     UINT NumMBsInBuffer;
    223     UINT Width;
    224     UINT Height;
    225     UINT Stride;
    226     UINT ReservedBits;
    227     PVOID pvPVPState;
    228 } DXVA2_DecodeBufferDesc;
    229 typedef struct _DXVA2_DecodeExtensionData {
    230     UINT Function;
    231     PVOID pPrivateInputData;
    232     UINT PrivateInputDataSize;
    233     PVOID pPrivateOutputData;
    234     UINT PrivateOutputDataSize;
    235 } DXVA2_DecodeExtensionData;
    236 typedef struct _DXVA2_DecodeExecuteParams {
    237     UINT NumCompBuffers;
    238     DXVA2_DecodeBufferDesc *pCompressedBuffers;
    239     DXVA2_DecodeExtensionData *pExtensionData;
    240 } DXVA2_DecodeExecuteParams;
    241 typedef struct _DXVA2_ExtendedFormat {
    242     __C89_NAMELESS union {
    243         __C89_NAMELESS struct {
    244             UINT SampleFormat : 8;
    245             UINT VideoChromaSubsampling : 4;
    246             UINT NominalRange : 3;
    247             UINT VideoTransferMatrix : 3;
    248             UINT VideoLighting : 4;
    249             UINT VideoPrimaries : 5;
    250             UINT VideoTransferFunction : 5;
    251         } __C89_NAMELESSSTRUCTNAME;
    252         UINT value;
    253     } __C89_NAMELESSUNIONNAME;
    254 } DXVA2_ExtendedFormat;
    255 typedef struct _DXVA2_Fixed32 {
    256   __C89_NAMELESS union {
    257     __C89_NAMELESS struct {
    258       USHORT Fraction;
    259       SHORT  Value;
    260     } DUMMYSTRUCTNAME;
    261     LONG   ll;
    262   } DUMMYUNIONNAME;
    263 } DXVA2_Fixed32;
    264 
    265 typedef struct _DXVA2_FilterValues {
    266   DXVA2_Fixed32 Level;
    267   DXVA2_Fixed32 Threshold;
    268   DXVA2_Fixed32 Radius;
    269 } DXVA2_FilterValues;
    270 typedef struct _DXVA2_Frequency {
    271     UINT Numerator;
    272     UINT Denominator;
    273 } DXVA2_Frequency;
    274 typedef struct _DXVA2_ProcAmpValues {
    275   DXVA2_Fixed32 Brightness;
    276   DXVA2_Fixed32 Contrast;
    277   DXVA2_Fixed32 Hue;
    278   DXVA2_Fixed32 Saturation;
    279 } DXVA2_ProcAmpValues;
    280 
    281 typedef struct _DXVA2_ValueRange {
    282   DXVA2_Fixed32 MinValue;
    283   DXVA2_Fixed32 MaxValue;
    284   DXVA2_Fixed32 DefaultValue;
    285   DXVA2_Fixed32 StepSize;
    286 } DXVA2_ValueRange;
    287 typedef struct _DXVA2_VideoDesc {
    288     UINT SampleWidth;
    289     UINT SampleHeight;
    290     DXVA2_ExtendedFormat SampleFormat;
    291     D3DFORMAT Format;
    292     DXVA2_Frequency InputSampleFreq;
    293     DXVA2_Frequency OutputFrameFreq;
    294     UINT UABProtectionLevel;
    295     UINT Reserved;
    296 } DXVA2_VideoDesc;
    297 /* DeviceCaps
    298 DXVA2_VPDev_EmulatedDXVA1
    299 DXVA2_VPDev_HardwareDevice
    300 DXVA2_VPDev_SoftwareDevice
    301 */
    302 /* DeinterlaceTechnology
    303 DXVA2_DeinterlaceTech_Unknown
    304 DXVA2_DeinterlaceTech_BOBLineReplicate
    305 DXVA2_DeinterlaceTech_BOBVerticalStretch
    306 DXVA2_DeinterlaceTech_BOBVerticalStretch4Tap
    307 DXVA2_DeinterlaceTech_MedianFiltering
    308 DXVA2_DeinterlaceTech_EdgeFiltering
    309 DXVA2_DeinterlaceTech_FieldAdaptive
    310 DXVA2_DeinterlaceTech_PixelAdaptive
    311 DXVA2_DeinterlaceTech_MotionVectorSteered
    312 DXVA2_DeinterlaceTech_InverseTelecine
    313 */
    314 
    315 /* VideoProcessorOperations
    316 DXVA2_VideoProcess_YUV2RGB
    317 DXVA2_VideoProcess_StretchX
    318 DXVA2_VideoProcess_StretchY
    319 DXVA2_VideoProcess_AlphaBlend
    320 DXVA2_VideoProcess_SubRects
    321 DXVA2_VideoProcess_SubStreams
    322 DXVA2_VideoProcess_SubStreamsExtended
    323 DXVA2_VideoProcess_YUV2RGBExtended
    324 DXVA2_VideoProcess_AlphaBlendExtended
    325 DXVA2_VideoProcess_Constriction
    326 DXVA2_VideoProcess_NoiseFilter
    327 DXVA2_VideoProcess_DetailFilter
    328 DXVA2_VideoProcess_PlanarAlpha
    329 DXVA2_VideoProcess_LinearScaling
    330 DXVA2_VideoProcess_GammaCompensated
    331 DXVA2_VideoProcess_MaintainsOriginalFieldData
    332 */
    333 
    334 /*NoiseFilterTechnology
    335 DXVA2_NoiseFilterTech_Unsupported
    336 DXVA2_NoiseFilterTech_Unknown
    337 DXVA2_NoiseFilterTech_Median
    338 DXVA2_NoiseFilterTech_Temporal
    339 DXVA2_NoiseFilterTech_BlockNoise
    340 DXVA2_NoiseFilterTech_MosquitoNoise
    341 */
    342 
    343 /* DetailFilterTechnology
    344 DXVA2_DetailFilterTech_Unsupported
    345 DXVA2_DetailFilterTech_Unknown
    346 DXVA2_DetailFilterTech_Edge
    347 DXVA2_DetailFilterTech_Sharpening
    348 */
    349 typedef struct _DXVA2_VideoProcessBltParams {
    350   REFERENCE_TIME       TargetFrame;
    351   RECT                 TargetRect;
    352   SIZE                 ConstrictionSize;
    353   UINT                 StreamingFlags;
    354   DXVA2_AYUVSample16   BackgroundColor;
    355   DXVA2_ExtendedFormat DestFormat;
    356   DXVA2_ProcAmpValues  ProcAmpValues;
    357   DXVA2_Fixed32        Alpha;
    358   DXVA2_FilterValues   NoiseFilterLuma;
    359   DXVA2_FilterValues   NoiseFilterChroma;
    360   DXVA2_FilterValues   DetailFilterLuma;
    361   DXVA2_FilterValues   DetailFilterChroma;
    362   DWORD                DestData;
    363 } DXVA2_VideoProcessBltParams;
    364 
    365 #ifdef _D3D9_H_
    366 typedef struct _DXVA2_VideoProcessorCaps {
    367   UINT    DeviceCaps;
    368   D3DPOOL InputPool;
    369   UINT    NumForwardRefSamples;
    370   UINT    NumBackwardRefSamples;
    371   UINT    Reserved;
    372   UINT    DeinterlaceTechnology;
    373   UINT    ProcAmpControlCaps;
    374   UINT    VideoProcessorOperations;
    375   UINT    NoiseFilterTechnology;
    376   UINT    DetailFilterTechnology;
    377 } DXVA2_VideoProcessorCaps;
    378 #endif
    379 
    380 /* SampleData
    381 DXVA2_SampleData_RFF
    382 DXVA2_SampleData_TFF
    383 DXVA2_SampleData_RFF_TFF_Present
    384 */
    385 
    386 #ifdef _D3D9_H_
    387 typedef struct _DXVA2_VideoSample {
    388   REFERENCE_TIME       Start;
    389   REFERENCE_TIME       End;
    390   DXVA2_ExtendedFormat SampleFormat;
    391   IDirect3DSurface9*   SrcSurface;
    392   RECT                 SrcRect;
    393   RECT                 DstRect;
    394   DXVA2_AYUVSample8    Pal[16];
    395   DXVA2_Fixed32        PlanarAlpha;
    396   DWORD                SampleData;
    397 } DXVA2_VideoSample;
    398 #endif
    399 
    400 /* Constants */
    401 
    402 #define DXVA2_VideoDecoderRenderTarget 0
    403 #define DXVA2_VideoProcessorRenderTarget 1
    404 #define DXVA2_VideoSoftwareRenderTarget 2
    405 
    406 /* CompressedBufferType */
    407 #define DXVA2_PictureParametersBufferType 0
    408 #define DXVA2_MacroBlockControlBufferType 1
    409 #define DXVA2_ResidualDifferenceBufferType 2
    410 #define DXVA2_DeblockingControlBufferType 3
    411 #define DXVA2_InverseQuantizationMatrixBufferType 4
    412 #define DXVA2_SliceControlBufferType 5
    413 #define DXVA2_BitStreamDateBufferType 6
    414 #define DXVA2_MotionVectorBuffer 7
    415 #define DXVA2_FilmGrainBuffer 8
    416 
    417 __forceinline const DXVA2_Fixed32 DXVA2_Fixed32OpaqueAlpha (void) {
    418   DXVA2_Fixed32 f32;
    419   f32.ll = 0 + (1 << 16);
    420   return f32;
    421 }
    422 
    423 __forceinline const DXVA2_Fixed32 DXVA2_Fixed32TransparentAlpha (void) {
    424   DXVA2_Fixed32 f32;
    425   f32.ll = 0;
    426   return f32;
    427 }
    428 
    429 __forceinline float DXVA2FixedToFloat (const DXVA2_Fixed32 f32) {
    430   return (float)f32.Value + (float)f32.Fraction / (1 << 16);
    431 }
    432 
    433 __forceinline DXVA2_Fixed32 DXVA2FloatToFixed (const float f) {
    434   DXVA2_Fixed32 f32;
    435   f32.Value    = ((ULONG) (f * (1 << 16))) >> 16;
    436   f32.Fraction = ((ULONG) (f * (1 << 16))) & 0xFFFF;
    437   return f32;
    438 }
    439 #ifdef _D3D9_H_
    440 HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9(UINT *pResetToken,IDirect3DDeviceManager9 **ppDXVAManager);
    441 HRESULT WINAPI DXVA2CreateVideoService(IDirect3DDevice9 *pDD,REFIID riid,void **ppService);
    442 /*****************************************************************************
    443  * IDirect3DDeviceManager9 interface
    444  */
    445 #ifndef __IDirect3DDeviceManager9_INTERFACE_DEFINED__
    446 #define __IDirect3DDeviceManager9_INTERFACE_DEFINED__
    447 
    448 DEFINE_GUID(IID_IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75);
    449 #if defined(__cplusplus) && !defined(CINTERFACE)
    450 MIDL_INTERFACE("a0cade0f-06d5-4cf4-a1c7-f3cdd725aa75")
    451 IDirect3DDeviceManager9 : public IUnknown
    452 {
    453     virtual HRESULT STDMETHODCALLTYPE ResetDevice(
    454         IDirect3DDevice9 *pDevice,
    455         UINT resetToken) = 0;
    456 
    457     virtual HRESULT STDMETHODCALLTYPE OpenDeviceHandle(
    458         HANDLE *phDevice) = 0;
    459 
    460     virtual HRESULT STDMETHODCALLTYPE CloseDeviceHandle(
    461         HANDLE hDevice) = 0;
    462 
    463     virtual HRESULT STDMETHODCALLTYPE TestDevice(
    464         HANDLE hDevice) = 0;
    465 
    466     virtual HRESULT STDMETHODCALLTYPE LockDevice(
    467         HANDLE hDevice,
    468         IDirect3DDevice9 **ppDevice,
    469         WINBOOL fBlock) = 0;
    470 
    471     virtual HRESULT STDMETHODCALLTYPE UnlockDevice(
    472         HANDLE hDevice,
    473         WINBOOL fSaveState) = 0;
    474 
    475     virtual HRESULT STDMETHODCALLTYPE GetVideoService(
    476         HANDLE hDevice,
    477         REFIID riid,
    478         void **ppService) = 0;
    479 
    480 };
    481 #ifdef __CRT_UUID_DECL
    482 __CRT_UUID_DECL(IDirect3DDeviceManager9, 0xa0cade0f, 0x06d5, 0x4cf4, 0xa1,0xc7, 0xf3,0xcd,0xd7,0x25,0xaa,0x75)
    483 #endif
    484 #else
    485 typedef struct IDirect3DDeviceManager9Vtbl {
    486     BEGIN_INTERFACE
    487 
    488     /*** IUnknown methods ***/
    489     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    490         IDirect3DDeviceManager9* This,
    491         REFIID riid,
    492         void **ppvObject);
    493 
    494     ULONG (STDMETHODCALLTYPE *AddRef)(
    495         IDirect3DDeviceManager9* This);
    496 
    497     ULONG (STDMETHODCALLTYPE *Release)(
    498         IDirect3DDeviceManager9* This);
    499 
    500     /*** IDirect3DDeviceManager9 methods ***/
    501     HRESULT (STDMETHODCALLTYPE *ResetDevice)(
    502         IDirect3DDeviceManager9* This,
    503         IDirect3DDevice9 *pDevice,
    504         UINT resetToken);
    505 
    506     HRESULT (STDMETHODCALLTYPE *OpenDeviceHandle)(
    507         IDirect3DDeviceManager9* This,
    508         HANDLE *phDevice);
    509 
    510     HRESULT (STDMETHODCALLTYPE *CloseDeviceHandle)(
    511         IDirect3DDeviceManager9* This,
    512         HANDLE hDevice);
    513 
    514     HRESULT (STDMETHODCALLTYPE *TestDevice)(
    515         IDirect3DDeviceManager9* This,
    516         HANDLE hDevice);
    517 
    518     HRESULT (STDMETHODCALLTYPE *LockDevice)(
    519         IDirect3DDeviceManager9* This,
    520         HANDLE hDevice,
    521         IDirect3DDevice9 **ppDevice,
    522         WINBOOL fBlock);
    523 
    524     HRESULT (STDMETHODCALLTYPE *UnlockDevice)(
    525         IDirect3DDeviceManager9* This,
    526         HANDLE hDevice,
    527         WINBOOL fSaveState);
    528 
    529     HRESULT (STDMETHODCALLTYPE *GetVideoService)(
    530         IDirect3DDeviceManager9* This,
    531         HANDLE hDevice,
    532         REFIID riid,
    533         void **ppService);
    534 
    535     END_INTERFACE
    536 } IDirect3DDeviceManager9Vtbl;
    537 interface IDirect3DDeviceManager9 {
    538     CONST_VTBL IDirect3DDeviceManager9Vtbl* lpVtbl;
    539 };
    540 
    541 #ifdef COBJMACROS
    542 #ifndef WIDL_C_INLINE_WRAPPERS
    543 /*** IUnknown methods ***/
    544 #define IDirect3DDeviceManager9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    545 #define IDirect3DDeviceManager9_AddRef(This) (This)->lpVtbl->AddRef(This)
    546 #define IDirect3DDeviceManager9_Release(This) (This)->lpVtbl->Release(This)
    547 /*** IDirect3DDeviceManager9 methods ***/
    548 #define IDirect3DDeviceManager9_ResetDevice(This,pDevice,resetToken) (This)->lpVtbl->ResetDevice(This,pDevice,resetToken)
    549 #define IDirect3DDeviceManager9_OpenDeviceHandle(This,phDevice) (This)->lpVtbl->OpenDeviceHandle(This,phDevice)
    550 #define IDirect3DDeviceManager9_CloseDeviceHandle(This,hDevice) (This)->lpVtbl->CloseDeviceHandle(This,hDevice)
    551 #define IDirect3DDeviceManager9_TestDevice(This,hDevice) (This)->lpVtbl->TestDevice(This,hDevice)
    552 #define IDirect3DDeviceManager9_LockDevice(This,hDevice,ppDevice,fBlock) (This)->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock)
    553 #define IDirect3DDeviceManager9_UnlockDevice(This,hDevice,fSaveState) (This)->lpVtbl->UnlockDevice(This,hDevice,fSaveState)
    554 #define IDirect3DDeviceManager9_GetVideoService(This,hDevice,riid,ppService) (This)->lpVtbl->GetVideoService(This,hDevice,riid,ppService)
    555 #else
    556 /*** IUnknown methods ***/
    557 static FORCEINLINE HRESULT IDirect3DDeviceManager9_QueryInterface(IDirect3DDeviceManager9* This,REFIID riid,void **ppvObject) {
    558     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    559 }
    560 static FORCEINLINE ULONG IDirect3DDeviceManager9_AddRef(IDirect3DDeviceManager9* This) {
    561     return This->lpVtbl->AddRef(This);
    562 }
    563 static FORCEINLINE ULONG IDirect3DDeviceManager9_Release(IDirect3DDeviceManager9* This) {
    564     return This->lpVtbl->Release(This);
    565 }
    566 /*** IDirect3DDeviceManager9 methods ***/
    567 static FORCEINLINE HRESULT IDirect3DDeviceManager9_ResetDevice(IDirect3DDeviceManager9* This,IDirect3DDevice9 *pDevice,UINT resetToken) {
    568     return This->lpVtbl->ResetDevice(This,pDevice,resetToken);
    569 }
    570 static FORCEINLINE HRESULT IDirect3DDeviceManager9_OpenDeviceHandle(IDirect3DDeviceManager9* This,HANDLE *phDevice) {
    571     return This->lpVtbl->OpenDeviceHandle(This,phDevice);
    572 }
    573 static FORCEINLINE HRESULT IDirect3DDeviceManager9_CloseDeviceHandle(IDirect3DDeviceManager9* This,HANDLE hDevice) {
    574     return This->lpVtbl->CloseDeviceHandle(This,hDevice);
    575 }
    576 static FORCEINLINE HRESULT IDirect3DDeviceManager9_TestDevice(IDirect3DDeviceManager9* This,HANDLE hDevice) {
    577     return This->lpVtbl->TestDevice(This,hDevice);
    578 }
    579 static FORCEINLINE HRESULT IDirect3DDeviceManager9_LockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,IDirect3DDevice9 **ppDevice,WINBOOL fBlock) {
    580     return This->lpVtbl->LockDevice(This,hDevice,ppDevice,fBlock);
    581 }
    582 static FORCEINLINE HRESULT IDirect3DDeviceManager9_UnlockDevice(IDirect3DDeviceManager9* This,HANDLE hDevice,WINBOOL fSaveState) {
    583     return This->lpVtbl->UnlockDevice(This,hDevice,fSaveState);
    584 }
    585 static FORCEINLINE HRESULT IDirect3DDeviceManager9_GetVideoService(IDirect3DDeviceManager9* This,HANDLE hDevice,REFIID riid,void **ppService) {
    586     return This->lpVtbl->GetVideoService(This,hDevice,riid,ppService);
    587 }
    588 #endif
    589 #endif
    590 
    591 #endif
    592 
    593 HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_ResetDevice_Proxy(
    594     IDirect3DDeviceManager9* This,
    595     IDirect3DDevice9 *pDevice,
    596     UINT resetToken);
    597 void __RPC_STUB IDirect3DDeviceManager9_ResetDevice_Stub(
    598     IRpcStubBuffer* This,
    599     IRpcChannelBuffer* pRpcChannelBuffer,
    600     PRPC_MESSAGE pRpcMessage,
    601     DWORD* pdwStubPhase);
    602 HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_OpenDeviceHandle_Proxy(
    603     IDirect3DDeviceManager9* This,
    604     HANDLE *phDevice);
    605 void __RPC_STUB IDirect3DDeviceManager9_OpenDeviceHandle_Stub(
    606     IRpcStubBuffer* This,
    607     IRpcChannelBuffer* pRpcChannelBuffer,
    608     PRPC_MESSAGE pRpcMessage,
    609     DWORD* pdwStubPhase);
    610 HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_CloseDeviceHandle_Proxy(
    611     IDirect3DDeviceManager9* This,
    612     HANDLE hDevice);
    613 void __RPC_STUB IDirect3DDeviceManager9_CloseDeviceHandle_Stub(
    614     IRpcStubBuffer* This,
    615     IRpcChannelBuffer* pRpcChannelBuffer,
    616     PRPC_MESSAGE pRpcMessage,
    617     DWORD* pdwStubPhase);
    618 HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_TestDevice_Proxy(
    619     IDirect3DDeviceManager9* This,
    620     HANDLE hDevice);
    621 void __RPC_STUB IDirect3DDeviceManager9_TestDevice_Stub(
    622     IRpcStubBuffer* This,
    623     IRpcChannelBuffer* pRpcChannelBuffer,
    624     PRPC_MESSAGE pRpcMessage,
    625     DWORD* pdwStubPhase);
    626 HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_LockDevice_Proxy(
    627     IDirect3DDeviceManager9* This,
    628     HANDLE hDevice,
    629     IDirect3DDevice9 **ppDevice,
    630     WINBOOL fBlock);
    631 void __RPC_STUB IDirect3DDeviceManager9_LockDevice_Stub(
    632     IRpcStubBuffer* This,
    633     IRpcChannelBuffer* pRpcChannelBuffer,
    634     PRPC_MESSAGE pRpcMessage,
    635     DWORD* pdwStubPhase);
    636 HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_UnlockDevice_Proxy(
    637     IDirect3DDeviceManager9* This,
    638     HANDLE hDevice,
    639     WINBOOL fSaveState);
    640 void __RPC_STUB IDirect3DDeviceManager9_UnlockDevice_Stub(
    641     IRpcStubBuffer* This,
    642     IRpcChannelBuffer* pRpcChannelBuffer,
    643     PRPC_MESSAGE pRpcMessage,
    644     DWORD* pdwStubPhase);
    645 HRESULT STDMETHODCALLTYPE IDirect3DDeviceManager9_GetVideoService_Proxy(
    646     IDirect3DDeviceManager9* This,
    647     HANDLE hDevice,
    648     REFIID riid,
    649     void **ppService);
    650 void __RPC_STUB IDirect3DDeviceManager9_GetVideoService_Stub(
    651     IRpcStubBuffer* This,
    652     IRpcChannelBuffer* pRpcChannelBuffer,
    653     PRPC_MESSAGE pRpcMessage,
    654     DWORD* pdwStubPhase);
    655 
    656 #endif  /* __IDirect3DDeviceManager9_INTERFACE_DEFINED__ */
    657 
    658 /*****************************************************************************
    659  * IDirectXVideoDecoder interface
    660  */
    661 #ifndef __IDirectXVideoDecoder_INTERFACE_DEFINED__
    662 #define __IDirectXVideoDecoder_INTERFACE_DEFINED__
    663 
    664 DEFINE_GUID(IID_IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d);
    665 #if defined(__cplusplus) && !defined(CINTERFACE)
    666 MIDL_INTERFACE("f2b0810a-fd00-43c9-918c-df94e2d8ef7d")
    667 IDirectXVideoDecoder : public IUnknown
    668 {
    669     virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderService(
    670         IDirectXVideoDecoderService **ppService) = 0;
    671 
    672     virtual HRESULT STDMETHODCALLTYPE GetCreationParameters(
    673         GUID *pDeviceGuid,
    674         DXVA2_VideoDesc *pVideoDesc,
    675         DXVA2_ConfigPictureDecode *pConfig,
    676         IDirect3DSurface9 ***pDecoderRenderTargets,
    677         UINT *pNumSurfaces) = 0;
    678 
    679     virtual HRESULT STDMETHODCALLTYPE GetBuffer(
    680         UINT BufferType,
    681         void **ppBuffer,
    682         UINT *pBufferSize) = 0;
    683 
    684     virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
    685         UINT BufferType) = 0;
    686 
    687     virtual HRESULT STDMETHODCALLTYPE BeginFrame(
    688         IDirect3DSurface9 *pRenderTarget,
    689         void *pvPVPData) = 0;
    690 
    691     virtual HRESULT STDMETHODCALLTYPE EndFrame(
    692         HANDLE *pHandleComplete) = 0;
    693 
    694     virtual HRESULT STDMETHODCALLTYPE Execute(
    695         const DXVA2_DecodeExecuteParams *pExecuteParams) = 0;
    696 
    697 };
    698 #ifdef __CRT_UUID_DECL
    699 __CRT_UUID_DECL(IDirectXVideoDecoder, 0xf2b0810a, 0xfd00, 0x43c9, 0x91,0x8c, 0xdf,0x94,0xe2,0xd8,0xef,0x7d)
    700 #endif
    701 #else
    702 typedef struct IDirectXVideoDecoderVtbl {
    703     BEGIN_INTERFACE
    704 
    705     /*** IUnknown methods ***/
    706     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    707         IDirectXVideoDecoder* This,
    708         REFIID riid,
    709         void **ppvObject);
    710 
    711     ULONG (STDMETHODCALLTYPE *AddRef)(
    712         IDirectXVideoDecoder* This);
    713 
    714     ULONG (STDMETHODCALLTYPE *Release)(
    715         IDirectXVideoDecoder* This);
    716 
    717     /*** IDirectXVideoDecoder methods ***/
    718     HRESULT (STDMETHODCALLTYPE *GetVideoDecoderService)(
    719         IDirectXVideoDecoder* This,
    720         IDirectXVideoDecoderService **ppService);
    721 
    722     HRESULT (STDMETHODCALLTYPE *GetCreationParameters)(
    723         IDirectXVideoDecoder* This,
    724         GUID *pDeviceGuid,
    725         DXVA2_VideoDesc *pVideoDesc,
    726         DXVA2_ConfigPictureDecode *pConfig,
    727         IDirect3DSurface9 ***pDecoderRenderTargets,
    728         UINT *pNumSurfaces);
    729 
    730     HRESULT (STDMETHODCALLTYPE *GetBuffer)(
    731         IDirectXVideoDecoder* This,
    732         UINT BufferType,
    733         void **ppBuffer,
    734         UINT *pBufferSize);
    735 
    736     HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
    737         IDirectXVideoDecoder* This,
    738         UINT BufferType);
    739 
    740     HRESULT (STDMETHODCALLTYPE *BeginFrame)(
    741         IDirectXVideoDecoder* This,
    742         IDirect3DSurface9 *pRenderTarget,
    743         void *pvPVPData);
    744 
    745     HRESULT (STDMETHODCALLTYPE *EndFrame)(
    746         IDirectXVideoDecoder* This,
    747         HANDLE *pHandleComplete);
    748 
    749     HRESULT (STDMETHODCALLTYPE *Execute)(
    750         IDirectXVideoDecoder* This,
    751         const DXVA2_DecodeExecuteParams *pExecuteParams);
    752 
    753     END_INTERFACE
    754 } IDirectXVideoDecoderVtbl;
    755 interface IDirectXVideoDecoder {
    756     CONST_VTBL IDirectXVideoDecoderVtbl* lpVtbl;
    757 };
    758 
    759 #ifdef COBJMACROS
    760 #ifndef WIDL_C_INLINE_WRAPPERS
    761 /*** IUnknown methods ***/
    762 #define IDirectXVideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    763 #define IDirectXVideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
    764 #define IDirectXVideoDecoder_Release(This) (This)->lpVtbl->Release(This)
    765 /*** IDirectXVideoDecoder methods ***/
    766 #define IDirectXVideoDecoder_GetVideoDecoderService(This,ppService) (This)->lpVtbl->GetVideoDecoderService(This,ppService)
    767 #define IDirectXVideoDecoder_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces)
    768 #define IDirectXVideoDecoder_GetBuffer(This,BufferType,ppBuffer,pBufferSize) (This)->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize)
    769 #define IDirectXVideoDecoder_ReleaseBuffer(This,BufferType) (This)->lpVtbl->ReleaseBuffer(This,BufferType)
    770 #define IDirectXVideoDecoder_BeginFrame(This,pRenderTarget,pvPVPData) (This)->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData)
    771 #define IDirectXVideoDecoder_EndFrame(This,pHandleComplete) (This)->lpVtbl->EndFrame(This,pHandleComplete)
    772 #define IDirectXVideoDecoder_Execute(This,pExecuteParams) (This)->lpVtbl->Execute(This,pExecuteParams)
    773 #else
    774 /*** IUnknown methods ***/
    775 static FORCEINLINE HRESULT IDirectXVideoDecoder_QueryInterface(IDirectXVideoDecoder* This,REFIID riid,void **ppvObject) {
    776     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    777 }
    778 static FORCEINLINE ULONG IDirectXVideoDecoder_AddRef(IDirectXVideoDecoder* This) {
    779     return This->lpVtbl->AddRef(This);
    780 }
    781 static FORCEINLINE ULONG IDirectXVideoDecoder_Release(IDirectXVideoDecoder* This) {
    782     return This->lpVtbl->Release(This);
    783 }
    784 /*** IDirectXVideoDecoder methods ***/
    785 static FORCEINLINE HRESULT IDirectXVideoDecoder_GetVideoDecoderService(IDirectXVideoDecoder* This,IDirectXVideoDecoderService **ppService) {
    786     return This->lpVtbl->GetVideoDecoderService(This,ppService);
    787 }
    788 static FORCEINLINE HRESULT IDirectXVideoDecoder_GetCreationParameters(IDirectXVideoDecoder* This,GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 ***pDecoderRenderTargets,UINT *pNumSurfaces) {
    789     return This->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pDecoderRenderTargets,pNumSurfaces);
    790 }
    791 static FORCEINLINE HRESULT IDirectXVideoDecoder_GetBuffer(IDirectXVideoDecoder* This,UINT BufferType,void **ppBuffer,UINT *pBufferSize) {
    792     return This->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize);
    793 }
    794 static FORCEINLINE HRESULT IDirectXVideoDecoder_ReleaseBuffer(IDirectXVideoDecoder* This,UINT BufferType) {
    795     return This->lpVtbl->ReleaseBuffer(This,BufferType);
    796 }
    797 static FORCEINLINE HRESULT IDirectXVideoDecoder_BeginFrame(IDirectXVideoDecoder* This,IDirect3DSurface9 *pRenderTarget,void *pvPVPData) {
    798     return This->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData);
    799 }
    800 static FORCEINLINE HRESULT IDirectXVideoDecoder_EndFrame(IDirectXVideoDecoder* This,HANDLE *pHandleComplete) {
    801     return This->lpVtbl->EndFrame(This,pHandleComplete);
    802 }
    803 static FORCEINLINE HRESULT IDirectXVideoDecoder_Execute(IDirectXVideoDecoder* This,const DXVA2_DecodeExecuteParams *pExecuteParams) {
    804     return This->lpVtbl->Execute(This,pExecuteParams);
    805 }
    806 #endif
    807 #endif
    808 
    809 #endif
    810 
    811 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetVideoDecoderService_Proxy(
    812     IDirectXVideoDecoder* This,
    813     IDirectXVideoDecoderService **ppService);
    814 void __RPC_STUB IDirectXVideoDecoder_GetVideoDecoderService_Stub(
    815     IRpcStubBuffer* This,
    816     IRpcChannelBuffer* pRpcChannelBuffer,
    817     PRPC_MESSAGE pRpcMessage,
    818     DWORD* pdwStubPhase);
    819 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetCreationParameters_Proxy(
    820     IDirectXVideoDecoder* This,
    821     GUID *pDeviceGuid,
    822     DXVA2_VideoDesc *pVideoDesc,
    823     DXVA2_ConfigPictureDecode *pConfig,
    824     IDirect3DSurface9 ***pDecoderRenderTargets,
    825     UINT *pNumSurfaces);
    826 void __RPC_STUB IDirectXVideoDecoder_GetCreationParameters_Stub(
    827     IRpcStubBuffer* This,
    828     IRpcChannelBuffer* pRpcChannelBuffer,
    829     PRPC_MESSAGE pRpcMessage,
    830     DWORD* pdwStubPhase);
    831 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_GetBuffer_Proxy(
    832     IDirectXVideoDecoder* This,
    833     UINT BufferType,
    834     void **ppBuffer,
    835     UINT *pBufferSize);
    836 void __RPC_STUB IDirectXVideoDecoder_GetBuffer_Stub(
    837     IRpcStubBuffer* This,
    838     IRpcChannelBuffer* pRpcChannelBuffer,
    839     PRPC_MESSAGE pRpcMessage,
    840     DWORD* pdwStubPhase);
    841 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_ReleaseBuffer_Proxy(
    842     IDirectXVideoDecoder* This,
    843     UINT BufferType);
    844 void __RPC_STUB IDirectXVideoDecoder_ReleaseBuffer_Stub(
    845     IRpcStubBuffer* This,
    846     IRpcChannelBuffer* pRpcChannelBuffer,
    847     PRPC_MESSAGE pRpcMessage,
    848     DWORD* pdwStubPhase);
    849 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_BeginFrame_Proxy(
    850     IDirectXVideoDecoder* This,
    851     IDirect3DSurface9 *pRenderTarget,
    852     void *pvPVPData);
    853 void __RPC_STUB IDirectXVideoDecoder_BeginFrame_Stub(
    854     IRpcStubBuffer* This,
    855     IRpcChannelBuffer* pRpcChannelBuffer,
    856     PRPC_MESSAGE pRpcMessage,
    857     DWORD* pdwStubPhase);
    858 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_EndFrame_Proxy(
    859     IDirectXVideoDecoder* This,
    860     HANDLE *pHandleComplete);
    861 void __RPC_STUB IDirectXVideoDecoder_EndFrame_Stub(
    862     IRpcStubBuffer* This,
    863     IRpcChannelBuffer* pRpcChannelBuffer,
    864     PRPC_MESSAGE pRpcMessage,
    865     DWORD* pdwStubPhase);
    866 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoder_Execute_Proxy(
    867     IDirectXVideoDecoder* This,
    868     const DXVA2_DecodeExecuteParams *pExecuteParams);
    869 void __RPC_STUB IDirectXVideoDecoder_Execute_Stub(
    870     IRpcStubBuffer* This,
    871     IRpcChannelBuffer* pRpcChannelBuffer,
    872     PRPC_MESSAGE pRpcMessage,
    873     DWORD* pdwStubPhase);
    874 
    875 #endif  /* __IDirectXVideoDecoder_INTERFACE_DEFINED__ */
    876 
    877 /*****************************************************************************
    878  * IDirectXVideoAccelerationService interface
    879  */
    880 #ifndef __IDirectXVideoAccelerationService_INTERFACE_DEFINED__
    881 #define __IDirectXVideoAccelerationService_INTERFACE_DEFINED__
    882 
    883 DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02);
    884 #if defined(__cplusplus) && !defined(CINTERFACE)
    885 MIDL_INTERFACE("fc51a550-d5e7-11d9-af55-00054e43ff02")
    886 IDirectXVideoAccelerationService : public IUnknown
    887 {
    888     virtual HRESULT STDMETHODCALLTYPE CreateSurface(
    889         UINT Width,
    890         UINT Height,
    891         UINT BackBuffers,
    892         D3DFORMAT Format,
    893         D3DPOOL Pool,
    894         DWORD Usage,
    895         DWORD DxvaType,
    896         IDirect3DSurface9 **ppSurface,
    897         HANDLE *pSharedHandle) = 0;
    898 
    899 };
    900 #ifdef __CRT_UUID_DECL
    901 __CRT_UUID_DECL(IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02)
    902 #endif
    903 #else
    904 typedef struct IDirectXVideoAccelerationServiceVtbl {
    905     BEGIN_INTERFACE
    906 
    907     /*** IUnknown methods ***/
    908     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    909         IDirectXVideoAccelerationService* This,
    910         REFIID riid,
    911         void **ppvObject);
    912 
    913     ULONG (STDMETHODCALLTYPE *AddRef)(
    914         IDirectXVideoAccelerationService* This);
    915 
    916     ULONG (STDMETHODCALLTYPE *Release)(
    917         IDirectXVideoAccelerationService* This);
    918 
    919     /*** IDirectXVideoAccelerationService methods ***/
    920     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
    921         IDirectXVideoAccelerationService* This,
    922         UINT Width,
    923         UINT Height,
    924         UINT BackBuffers,
    925         D3DFORMAT Format,
    926         D3DPOOL Pool,
    927         DWORD Usage,
    928         DWORD DxvaType,
    929         IDirect3DSurface9 **ppSurface,
    930         HANDLE *pSharedHandle);
    931 
    932     END_INTERFACE
    933 } IDirectXVideoAccelerationServiceVtbl;
    934 interface IDirectXVideoAccelerationService {
    935     CONST_VTBL IDirectXVideoAccelerationServiceVtbl* lpVtbl;
    936 };
    937 
    938 #ifdef COBJMACROS
    939 #ifndef WIDL_C_INLINE_WRAPPERS
    940 /*** IUnknown methods ***/
    941 #define IDirectXVideoAccelerationService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    942 #define IDirectXVideoAccelerationService_AddRef(This) (This)->lpVtbl->AddRef(This)
    943 #define IDirectXVideoAccelerationService_Release(This) (This)->lpVtbl->Release(This)
    944 /*** IDirectXVideoAccelerationService methods ***/
    945 #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)
    946 #else
    947 /*** IUnknown methods ***/
    948 static FORCEINLINE HRESULT IDirectXVideoAccelerationService_QueryInterface(IDirectXVideoAccelerationService* This,REFIID riid,void **ppvObject) {
    949     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    950 }
    951 static FORCEINLINE ULONG IDirectXVideoAccelerationService_AddRef(IDirectXVideoAccelerationService* This) {
    952     return This->lpVtbl->AddRef(This);
    953 }
    954 static FORCEINLINE ULONG IDirectXVideoAccelerationService_Release(IDirectXVideoAccelerationService* This) {
    955     return This->lpVtbl->Release(This);
    956 }
    957 /*** IDirectXVideoAccelerationService methods ***/
    958 static FORCEINLINE HRESULT IDirectXVideoAccelerationService_CreateSurface(IDirectXVideoAccelerationService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) {
    959     return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle);
    960 }
    961 #endif
    962 #endif
    963 
    964 #endif
    965 
    966 HRESULT STDMETHODCALLTYPE IDirectXVideoAccelerationService_CreateSurface_Proxy(
    967     IDirectXVideoAccelerationService* This,
    968     UINT Width,
    969     UINT Height,
    970     UINT BackBuffers,
    971     D3DFORMAT Format,
    972     D3DPOOL Pool,
    973     DWORD Usage,
    974     DWORD DxvaType,
    975     IDirect3DSurface9 **ppSurface,
    976     HANDLE *pSharedHandle);
    977 void __RPC_STUB IDirectXVideoAccelerationService_CreateSurface_Stub(
    978     IRpcStubBuffer* This,
    979     IRpcChannelBuffer* pRpcChannelBuffer,
    980     PRPC_MESSAGE pRpcMessage,
    981     DWORD* pdwStubPhase);
    982 
    983 #endif  /* __IDirectXVideoAccelerationService_INTERFACE_DEFINED__ */
    984 
    985 /*****************************************************************************
    986  * IDirectXVideoDecoderService interface
    987  */
    988 #ifndef __IDirectXVideoDecoderService_INTERFACE_DEFINED__
    989 #define __IDirectXVideoDecoderService_INTERFACE_DEFINED__
    990 
    991 DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02);
    992 #if defined(__cplusplus) && !defined(CINTERFACE)
    993 MIDL_INTERFACE("fc51a551-d5e7-11d9-af55-00054e43ff02")
    994 IDirectXVideoDecoderService : public IDirectXVideoAccelerationService
    995 {
    996     virtual HRESULT STDMETHODCALLTYPE GetDecoderDeviceGuids(
    997         UINT *pCount,
    998         GUID **pGuids) = 0;
    999 
   1000     virtual HRESULT STDMETHODCALLTYPE GetDecoderRenderTargets(
   1001         REFGUID Guid,
   1002         UINT *pCount,
   1003         D3DFORMAT **pFormats) = 0;
   1004 
   1005     virtual HRESULT STDMETHODCALLTYPE GetDecoderConfigurations(
   1006         REFGUID Guid,
   1007         const DXVA2_VideoDesc *pVideoDesc,
   1008         void *pReserved,
   1009         UINT *pCount,
   1010         DXVA2_ConfigPictureDecode **ppConfigs) = 0;
   1011 
   1012     virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
   1013         REFGUID Guid,
   1014         const DXVA2_VideoDesc *pVideoDesc,
   1015         const DXVA2_ConfigPictureDecode *pConfig,
   1016         IDirect3DSurface9 **ppDecoderRenderTargets,
   1017         UINT NumRenderTargets,
   1018         IDirectXVideoDecoder **ppDecode) = 0;
   1019 
   1020 };
   1021 #ifdef __CRT_UUID_DECL
   1022 __CRT_UUID_DECL(IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55, 0x00,0x05,0x4e,0x43,0xff,0x02)
   1023 #endif
   1024 #else
   1025 typedef struct IDirectXVideoDecoderServiceVtbl {
   1026     BEGIN_INTERFACE
   1027 
   1028     /*** IUnknown methods ***/
   1029     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1030         IDirectXVideoDecoderService* This,
   1031         REFIID riid,
   1032         void **ppvObject);
   1033 
   1034     ULONG (STDMETHODCALLTYPE *AddRef)(
   1035         IDirectXVideoDecoderService* This);
   1036 
   1037     ULONG (STDMETHODCALLTYPE *Release)(
   1038         IDirectXVideoDecoderService* This);
   1039 
   1040     /*** IDirectXVideoAccelerationService methods ***/
   1041     HRESULT (STDMETHODCALLTYPE *CreateSurface)(
   1042         IDirectXVideoDecoderService* This,
   1043         UINT Width,
   1044         UINT Height,
   1045         UINT BackBuffers,
   1046         D3DFORMAT Format,
   1047         D3DPOOL Pool,
   1048         DWORD Usage,
   1049         DWORD DxvaType,
   1050         IDirect3DSurface9 **ppSurface,
   1051         HANDLE *pSharedHandle);
   1052 
   1053     /*** IDirectXVideoDecoderService methods ***/
   1054     HRESULT (STDMETHODCALLTYPE *GetDecoderDeviceGuids)(
   1055         IDirectXVideoDecoderService* This,
   1056         UINT *pCount,
   1057         GUID **pGuids);
   1058 
   1059     HRESULT (STDMETHODCALLTYPE *GetDecoderRenderTargets)(
   1060         IDirectXVideoDecoderService* This,
   1061         REFGUID Guid,
   1062         UINT *pCount,
   1063         D3DFORMAT **pFormats);
   1064 
   1065     HRESULT (STDMETHODCALLTYPE *GetDecoderConfigurations)(
   1066         IDirectXVideoDecoderService* This,
   1067         REFGUID Guid,
   1068         const DXVA2_VideoDesc *pVideoDesc,
   1069         void *pReserved,
   1070         UINT *pCount,
   1071         DXVA2_ConfigPictureDecode **ppConfigs);
   1072 
   1073     HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
   1074         IDirectXVideoDecoderService* This,
   1075         REFGUID Guid,
   1076         const DXVA2_VideoDesc *pVideoDesc,
   1077         const DXVA2_ConfigPictureDecode *pConfig,
   1078         IDirect3DSurface9 **ppDecoderRenderTargets,
   1079         UINT NumRenderTargets,
   1080         IDirectXVideoDecoder **ppDecode);
   1081 
   1082     END_INTERFACE
   1083 } IDirectXVideoDecoderServiceVtbl;
   1084 interface IDirectXVideoDecoderService {
   1085     CONST_VTBL IDirectXVideoDecoderServiceVtbl* lpVtbl;
   1086 };
   1087 
   1088 #ifdef COBJMACROS
   1089 #ifndef WIDL_C_INLINE_WRAPPERS
   1090 /*** IUnknown methods ***/
   1091 #define IDirectXVideoDecoderService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1092 #define IDirectXVideoDecoderService_AddRef(This) (This)->lpVtbl->AddRef(This)
   1093 #define IDirectXVideoDecoderService_Release(This) (This)->lpVtbl->Release(This)
   1094 /*** IDirectXVideoAccelerationService methods ***/
   1095 #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)
   1096 /*** IDirectXVideoDecoderService methods ***/
   1097 #define IDirectXVideoDecoderService_GetDecoderDeviceGuids(This,pCount,pGuids) (This)->lpVtbl->GetDecoderDeviceGuids(This,pCount,pGuids)
   1098 #define IDirectXVideoDecoderService_GetDecoderRenderTargets(This,Guid,pCount,pFormats) (This)->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats)
   1099 #define IDirectXVideoDecoderService_GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs) (This)->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs)
   1100 #define IDirectXVideoDecoderService_CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode) (This)->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode)
   1101 #else
   1102 /*** IUnknown methods ***/
   1103 static FORCEINLINE HRESULT IDirectXVideoDecoderService_QueryInterface(IDirectXVideoDecoderService* This,REFIID riid,void **ppvObject) {
   1104     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1105 }
   1106 static FORCEINLINE ULONG IDirectXVideoDecoderService_AddRef(IDirectXVideoDecoderService* This) {
   1107     return This->lpVtbl->AddRef(This);
   1108 }
   1109 static FORCEINLINE ULONG IDirectXVideoDecoderService_Release(IDirectXVideoDecoderService* This) {
   1110     return This->lpVtbl->Release(This);
   1111 }
   1112 /*** IDirectXVideoAccelerationService methods ***/
   1113 static FORCEINLINE HRESULT IDirectXVideoDecoderService_CreateSurface(IDirectXVideoDecoderService* This,UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) {
   1114     return This->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle);
   1115 }
   1116 /*** IDirectXVideoDecoderService methods ***/
   1117 static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderDeviceGuids(IDirectXVideoDecoderService* This,UINT *pCount,GUID **pGuids) {
   1118     return This->lpVtbl->GetDecoderDeviceGuids(This,pCount,pGuids);
   1119 }
   1120 static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderRenderTargets(IDirectXVideoDecoderService* This,REFGUID Guid,UINT *pCount,D3DFORMAT **pFormats) {
   1121     return This->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats);
   1122 }
   1123 static FORCEINLINE HRESULT IDirectXVideoDecoderService_GetDecoderConfigurations(IDirectXVideoDecoderService* This,REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,void *pReserved,UINT *pCount,DXVA2_ConfigPictureDecode **ppConfigs) {
   1124     return This->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs);
   1125 }
   1126 static FORCEINLINE HRESULT IDirectXVideoDecoderService_CreateVideoDecoder(IDirectXVideoDecoderService* This,REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,const DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 **ppDecoderRenderTargets,UINT NumRenderTargets,IDirectXVideoDecoder **ppDecode) {
   1127     return This->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumRenderTargets,ppDecode);
   1128 }
   1129 #endif
   1130 #endif
   1131 
   1132 #endif
   1133 
   1134 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderDeviceGuids_Proxy(
   1135     IDirectXVideoDecoderService* This,
   1136     UINT *pCount,
   1137     GUID **pGuids);
   1138 void __RPC_STUB IDirectXVideoDecoderService_GetDecoderDeviceGuids_Stub(
   1139     IRpcStubBuffer* This,
   1140     IRpcChannelBuffer* pRpcChannelBuffer,
   1141     PRPC_MESSAGE pRpcMessage,
   1142     DWORD* pdwStubPhase);
   1143 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderRenderTargets_Proxy(
   1144     IDirectXVideoDecoderService* This,
   1145     REFGUID Guid,
   1146     UINT *pCount,
   1147     D3DFORMAT **pFormats);
   1148 void __RPC_STUB IDirectXVideoDecoderService_GetDecoderRenderTargets_Stub(
   1149     IRpcStubBuffer* This,
   1150     IRpcChannelBuffer* pRpcChannelBuffer,
   1151     PRPC_MESSAGE pRpcMessage,
   1152     DWORD* pdwStubPhase);
   1153 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_GetDecoderConfigurations_Proxy(
   1154     IDirectXVideoDecoderService* This,
   1155     REFGUID Guid,
   1156     const DXVA2_VideoDesc *pVideoDesc,
   1157     void *pReserved,
   1158     UINT *pCount,
   1159     DXVA2_ConfigPictureDecode **ppConfigs);
   1160 void __RPC_STUB IDirectXVideoDecoderService_GetDecoderConfigurations_Stub(
   1161     IRpcStubBuffer* This,
   1162     IRpcChannelBuffer* pRpcChannelBuffer,
   1163     PRPC_MESSAGE pRpcMessage,
   1164     DWORD* pdwStubPhase);
   1165 HRESULT STDMETHODCALLTYPE IDirectXVideoDecoderService_CreateVideoDecoder_Proxy(
   1166     IDirectXVideoDecoderService* This,
   1167     REFGUID Guid,
   1168     const DXVA2_VideoDesc *pVideoDesc,
   1169     const DXVA2_ConfigPictureDecode *pConfig,
   1170     IDirect3DSurface9 **ppDecoderRenderTargets,
   1171     UINT NumRenderTargets,
   1172     IDirectXVideoDecoder **ppDecode);
   1173 void __RPC_STUB IDirectXVideoDecoderService_CreateVideoDecoder_Stub(
   1174     IRpcStubBuffer* This,
   1175     IRpcChannelBuffer* pRpcChannelBuffer,
   1176     PRPC_MESSAGE pRpcMessage,
   1177     DWORD* pdwStubPhase);
   1178 
   1179 #endif  /* __IDirectXVideoDecoderService_INTERFACE_DEFINED__ */
   1180 
   1181 #endif /* _D3D9_H_ */
   1182 /* Begin additional prototypes for all interfaces */
   1183 
   1184 
   1185 /* End additional prototypes */
   1186 
   1187 #ifdef __cplusplus
   1188 }
   1189 #endif
   1190 
   1191 #endif /* __dxva2api_h__ */
   1192