Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _INC_DXAVHD
      7 #define _INC_DXAVHD
      8 #if (_WIN32_WINNT >= 0x0601)
      9 #ifdef __cplusplus
     10 extern "C" {
     11 #endif
     12 
     13 #ifndef CALLBACK
     14 #if defined(_ARM_)
     15 #define CALLBACK
     16 #else
     17 #define CALLBACK __stdcall
     18 #endif
     19 #endif
     20 
     21 typedef struct IDXVAHD_Device IDXVAHD_Device;
     22 typedef struct IDXVAHD_VideoProcessor IDXVAHD_VideoProcessor;
     23 
     24   typedef enum _DXVAHD_ALPHA_FILL_MODE {
     25     DXVAHD_ALPHA_FILL_MODE_OPAQUE          = 0,
     26     DXVAHD_ALPHA_FILL_MODE_BACKGROUND      = 1,
     27     DXVAHD_ALPHA_FILL_MODE_DESTINATION     = 2,
     28     DXVAHD_ALPHA_FILL_MODE_SOURCE_STREAM   = 3
     29   } DXVAHD_ALPHA_FILL_MODE;
     30 
     31   typedef struct _DXVAHD_COLOR_YCbCrA {
     32     FLOAT Y;
     33     FLOAT Cb;
     34     FLOAT Cr;
     35     FLOAT A;
     36   } DXVAHD_COLOR_YCbCrA;
     37 
     38   typedef struct _DXVAHD_COLOR_RGBA {
     39     FLOAT R;
     40     FLOAT G;
     41     FLOAT B;
     42     FLOAT A;
     43   } DXVAHD_COLOR_RGBA;
     44 
     45   typedef union _DXVAHD_COLOR {
     46     DXVAHD_COLOR_RGBA   RGB;
     47     DXVAHD_COLOR_YCbCrA YCbCr;
     48   } DXVAHD_COLOR;
     49 
     50   typedef struct _DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA {
     51     WINBOOL         YCbCr;
     52     DXVAHD_COLOR BackgroundColor;
     53   } DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA;
     54 
     55 typedef enum _DXVAHD_BLT_STATE {
     56   DXVAHD_BLT_STATE_TARGET_RECT          = 0,
     57   DXVAHD_BLT_STATE_BACKGROUND_COLOR     = 1,
     58   DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE   = 2,
     59   DXVAHD_BLT_STATE_ALPHA_FILL           = 3,
     60   DXVAHD_BLT_STATE_CONSTRICTION         = 4,
     61   DXVAHD_BLT_STATE_PRIVATE              = 1000
     62 } DXVAHD_BLT_STATE;
     63 
     64 typedef enum _DXVAHD_DEVICE_CAPS {
     65   DXVAHD_DEVICE_CAPS_LINEAR_SPACE              = 0x1,
     66   DXVAHD_DEVICE_CAPS_xvYCC                     = 0x2,
     67   DXVAHD_DEVICE_CAPS_RGB_RANGE_CONVERSION      = 0x4,
     68   DXVAHD_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION   = 0x8
     69 } DXVAHD_DEVICE_CAPS;
     70 
     71 typedef enum _DXVAHD_DEVICE_TYPE {
     72   DXVAHD_DEVICE_TYPE_HARDWARE    = 0,
     73   DXVAHD_DEVICE_TYPE_SOFTWARE    = 1,
     74   DXVAHD_DEVICE_TYPE_REFERENCE   = 2,
     75   DXVAHD_DEVICE_TYPE_OTHER       = 3
     76 } DXVAHD_DEVICE_TYPE;
     77 
     78 typedef enum _DXVAHD_DEVICE_USAGE {
     79   DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL   = 0,
     80   DXVAHD_DEVICE_USAGE_OPTIMAL_SPEED     = 1,
     81   DXVAHD_DEVICE_USAGE_OPTIMAL_QUALITY   = 2
     82 } DXVAHD_DEVICE_USAGE;
     83 
     84 
     85 typedef enum _DXVAHD_FEATURE_CAPS {
     86   DXVAHD_FEATURE_CAPS_ALPHA_FILL      = 0x1,
     87   DXVAHD_FEATURE_CAPS_CONSTRICTION    = 0x2,
     88   DXVAHD_FEATURE_CAPS_LUMA_KEY        = 0x4,
     89   DXVAHD_FEATURE_CAPS_ALPHA_PALETTE   = 0x8
     90 } DXVAHD_FEATURE_CAPS;
     91 
     92 typedef enum _DXVAHD_FILTER {
     93   DXVAHD_FILTER_BRIGHTNESS           = 0,
     94   DXVAHD_FILTER_CONTRAST             = 1,
     95   DXVAHD_FILTER_HUE                  = 2,
     96   DXVAHD_FILTER_SATURATION           = 3,
     97   DXVAHD_FILTER_NOISE_REDUCTION      = 4,
     98   DXVAHD_FILTER_EDGE_ENHANCEMENT     = 5,
     99   DXVAHD_FILTER_ANAMORPHIC_SCALING   = 6
    100 } DXVAHD_FILTER;
    101 
    102 typedef enum _DXVAHD_FILTER_CAPS {
    103   DXVAHD_FILTER_CAPS_BRIGHTNESS           = 0x1,
    104   DXVAHD_FILTER_CAPS_CONTRAST             = 0x2,
    105   DXVAHD_FILTER_CAPS_HUE                  = 0x4,
    106   DXVAHD_FILTER_CAPS_SATURATION           = 0x8,
    107   DXVAHD_FILTER_CAPS_NOISE_REDUCTION      = 0x10,
    108   DXVAHD_FILTER_CAPS_EDGE_ENHANCEMENT     = 0x20,
    109   DXVAHD_FILTER_CAPS_ANAMORPHIC_SCALING   = 0x40
    110 } DXVAHD_FILTER_CAPS;
    111 
    112 typedef enum _DXVAHD_FRAME_FORMAT {
    113   DXVAHD_FRAME_FORMAT_PROGRESSIVE                     = 0,
    114   DXVAHD_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST      = 1,
    115   DXVAHD_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST   = 2
    116 } DXVAHD_FRAME_FORMAT;
    117 
    118 typedef enum _DXVAHD_INPUT_FORMAT_CAPS {
    119   DXVAHD_INPUT_FORMAT_CAPS_RGB_INTERLACED       = 0x1,
    120   DXVAHD_INPUT_FORMAT_CAPS_RGB_PROCAMP          = 0x2,
    121   DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY         = 0x4,
    122   DXVAHD_INPUT_FORMAT_CAPS_PALETTE_INTERLACED   = 0x8
    123 } DXVAHD_INPUT_FORMAT_CAPS;
    124 
    125 typedef enum _DXVAHD_ITELECINE_CAPS {
    126   DXVAHD_ITELECINE_CAPS_32             = 0x1,
    127   DXVAHD_ITELECINE_CAPS_22             = 0x2,
    128   DXVAHD_ITELECINE_CAPS_2224           = 0x4,
    129   DXVAHD_ITELECINE_CAPS_2332           = 0x8,
    130   DXVAHD_ITELECINE_CAPS_32322          = 0x10,
    131   DXVAHD_ITELECINE_CAPS_55             = 0x20,
    132   DXVAHD_ITELECINE_CAPS_64             = 0x40,
    133   DXVAHD_ITELECINE_CAPS_87             = 0x80,
    134   DXVAHD_ITELECINE_CAPS_222222222223   = 0x100,
    135   DXVAHD_ITELECINE_CAPS_OTHER          = 0x80000000
    136 } DXVAHD_ITELECINE_CAPS;
    137 
    138 typedef enum _DXVAHD_OUTPUT_RATE {
    139   DXVAHD_OUTPUT_RATE_NORMAL   = 0,
    140   DXVAHD_OUTPUT_RATE_HALF     = 1,
    141   DXVAHD_OUTPUT_RATE_CUSTOM   = 2
    142 } DXVAHD_OUTPUT_RATE;
    143 
    144 typedef enum _DXVAHD_PROCESSOR_CAPS {
    145   DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BLEND                 = 0x1,
    146   DXVAHD_PROCESSOR_CAPS_DEINTERLACE_BOB                   = 0x2,
    147   DXVAHD_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE              = 0x4,
    148   DXVAHD_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION   = 0x8,
    149   DXVAHD_PROCESSOR_CAPS_INVERSE_TELECINE                  = 0x10,
    150   DXVAHD_PROCESSOR_CAPS_FRAME_RATE_CONVERSION             = 0x20
    151 } DXVAHD_PROCESSOR_CAPS;
    152 
    153 typedef enum _DXVAHD_STREAM_STATE {
    154   DXVAHD_STREAM_STATE_D3DFORMAT                   = 0,
    155   DXVAHD_STREAM_STATE_FRAME_FORMAT                = 1,
    156   DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE           = 2,
    157   DXVAHD_STREAM_STATE_OUTPUT_RATE                 = 3,
    158   DXVAHD_STREAM_STATE_SOURCE_RECT                 = 4,
    159   DXVAHD_STREAM_STATE_DESTINATION_RECT            = 5,
    160   DXVAHD_STREAM_STATE_ALPHA                       = 6,
    161   DXVAHD_STREAM_STATE_PALETTE                     = 7,
    162   DXVAHD_STREAM_STATE_LUMA_KEY                    = 8,
    163   DXVAHD_STREAM_STATE_ASPECT_RATIO                = 9,
    164   DXVAHD_STREAM_STATE_FILTER_BRIGHTNESS           = 100,
    165   DXVAHD_STREAM_STATE_FILTER_CONTRAST             = 101,
    166   DXVAHD_STREAM_STATE_FILTER_HUE                  = 102,
    167   DXVAHD_STREAM_STATE_FILTER_SATURATION           = 103,
    168   DXVAHD_STREAM_STATE_FILTER_NOISE_REDUCTION      = 104,
    169   DXVAHD_STREAM_STATE_FILTER_EDGE_ENHANCEMENT     = 105,
    170   DXVAHD_STREAM_STATE_FILTER_ANAMORPHIC_SCALING   = 106,
    171   DXVAHD_STREAM_STATE_PRIVATE                     = 1000
    172 } DXVAHD_STREAM_STATE;
    173 
    174 typedef enum _DXVAHD_SURFACE_TYPE {
    175   DXVAHD_SURFACE_TYPE_VIDEO_INPUT           = 0,
    176   DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE   = 1,
    177   DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT          = 2
    178 } DXVAHD_SURFACE_TYPE;
    179 
    180 typedef struct _DXVAHD_VPDEVCAPS {
    181   DXVAHD_DEVICE_TYPE DeviceType;
    182   UINT               DeviceCaps;
    183   UINT               FeatureCaps;
    184   UINT               FilterCaps;
    185   UINT               InputFormatCaps;
    186   D3DPOOL            InputPool;
    187   UINT               OutputFormatCount;
    188   UINT               InputFormatCount;
    189   UINT               VideoProcessorCount;
    190   UINT               MaxInputStreams;
    191   UINT               MaxStreamStates;
    192 } DXVAHD_VPDEVCAPS;
    193 
    194 typedef struct _DXVAHD_BLT_STATE_ALPHA_FILL_DATA {
    195   DXVAHD_ALPHA_FILL_MODE Mode;
    196   UINT                   StreamNumber;
    197 } DXVAHD_BLT_STATE_ALPHA_FILL_DATA;
    198 
    199 typedef struct _DXVAHD_BLT_STATE_CONSTRICTION_DATA {
    200   WINBOOL Enable;
    201   SIZE Size;
    202 } DXVAHD_BLT_STATE_CONSTRICTION_DATA;
    203 
    204 typedef struct _DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA {
    205   UINT Usage  :1;
    206   UINT RGB_Range  :1;
    207   UINT YCbCr_Matrix  :1;
    208   UINT YCbCr_xvYCC  :1;
    209 } DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA;
    210 
    211 typedef struct _DXVAHD_BLT_STATE_PRIVATE_DATA {
    212   GUID Guid;
    213   UINT DataSize;
    214   void *pData;
    215 } DXVAHD_BLT_STATE_PRIVATE_DATA;
    216 
    217 typedef struct _DXVAHD_BLT_STATE_TARGET_RECT_DATA {
    218   WINBOOL Enable;
    219   RECT TargetRect;
    220 } DXVAHD_BLT_STATE_TARGET_RECT_DATA;
    221 
    222 typedef struct _DXVAHD_RATIONAL {
    223   UINT Numerator;
    224   UINT Denominator;
    225 } DXVAHD_RATIONAL;
    226 
    227 typedef struct _DXVAHD_CONTENT_DESC {
    228   DXVAHD_FRAME_FORMAT InputFrameFormat;
    229   DXVAHD_RATIONAL     InputFrameRate;
    230   UINT                InputWidth;
    231   UINT                InputHeight;
    232   DXVAHD_RATIONAL     OutputFrameRate;
    233   UINT                OutputWidth;
    234   UINT                OutputHeight;
    235 } DXVAHD_CONTENT_DESC;
    236 
    237 typedef struct _DXVAHD_CUSTOM_RATE_DATA {
    238   DXVAHD_RATIONAL CustomRate;
    239   UINT            OutputFrames;
    240   WINBOOL         InputInterlaced;
    241   UINT            InputFramesOrFields;
    242 } DXVAHD_CUSTOM_RATE_DATA;
    243 
    244 typedef struct _DXVAHD_FILTER_RANGE_DATA {
    245   INT   Minimum;
    246   INT   Maximum;
    247   INT   Default;
    248   FLOAT Multiplier;
    249 } DXVAHD_FILTER_RANGE_DATA;
    250 
    251 typedef struct _DXVAHD_STREAM_DATA {
    252   WINBOOL           Enable;
    253   UINT              OutputIndex;
    254   UINT              InputFrameOrField;
    255   UINT              PastFrames;
    256   UINT              FutureFrames;
    257   IDirect3DSurface9 **ppPastSurfaces;
    258   IDirect3DSurface9 *pInputSurface;
    259   IDirect3DSurface9 **ppFutureSurfaces;
    260 } DXVAHD_STREAM_DATA;
    261 
    262 typedef struct _DXVAHD_VPCAPS {
    263   GUID VPGuid;
    264   UINT PastFrames;
    265   UINT FutureFrames;
    266   UINT ProcessorCaps;
    267   UINT ITelecineCaps;
    268   UINT CustomRateCount;
    269 } DXVAHD_VPCAPS;
    270 
    271 typedef struct _DXVAHD_STREAM_STATE_ALPHA_DATA {
    272   WINBOOL Enable;
    273   FLOAT   Alpha;
    274 } DXVAHD_STREAM_STATE_ALPHA_DATA;
    275 
    276 typedef struct _DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA {
    277   WINBOOL         Enable;
    278   DXVAHD_RATIONAL SourceAspectRatio;
    279   DXVAHD_RATIONAL DestinationAspectRatio;
    280 } DXVAHD_STREAM_STATE_ASPECT_RATIO_DATA, *PDXVAHD_STREAM_STATE_ASPECT_RATIO_DATA;
    281 
    282 typedef struct _DXVAHD_STREAM_STATE_D3DFORMAT_DATA {
    283   D3DFORMAT Format;
    284 } DXVAHD_STREAM_STATE_D3DFORMAT_DATA;
    285 
    286 typedef struct _DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA {
    287   WINBOOL Enable;
    288   RECT    DestinationRect;
    289 } DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA;
    290 
    291 typedef struct _DXVAHD_STREAM_STATE_FILTER_DATA {
    292   WINBOOL Enable;
    293   INT     Level;
    294 } DXVAHD_STREAM_STATE_FILTER_DATA;
    295 
    296 typedef struct _DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA {
    297   DXVAHD_FRAME_FORMAT FrameFormat;
    298 } DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA;
    299 
    300 typedef struct _DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA {
    301   UINT Type  :1;
    302   UINT RGB_Range  :1;
    303   UINT YCbCr_Matrix  :1;
    304   UINT YCbCr_xvYCC  :1;
    305 } DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA;
    306 
    307 typedef struct _DXVAHD_STREAM_STATE_LUMA_KEY_DATA {
    308   WINBOOL Enable;
    309   FLOAT   Lower;
    310   FLOAT   Upper;
    311 } DXVAHD_STREAM_STATE_LUMA_KEY_DATA;
    312 
    313 typedef struct _DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA {
    314   WINBOOL            RepeatFrame;
    315   DXVAHD_OUTPUT_RATE OutputRate;
    316   DXVAHD_RATIONAL    CustomRate;
    317 } DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA;
    318 
    319 typedef struct _DXVAHD_STREAM_STATE_SOURCE_RECT_DATA {
    320   WINBOOL Enable;
    321   RECT    SourceRect;
    322 } DXVAHD_STREAM_STATE_SOURCE_RECT_DATA;
    323 
    324 typedef struct _DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA {
    325   WINBOOL Enable;
    326   UINT    ITelecineFlags;
    327   UINT    Frames;
    328   UINT    InputField;
    329 } DXVAHD_STREAM_STATE_PRIVATE_IVTC_DATA;
    330 
    331 typedef struct _DXVAHD_STREAM_STATE_PRIVATE_DATA {
    332   GUID Guid;
    333   UINT DataSize;
    334   void *pData;
    335 } DXVAHD_STREAM_STATE_PRIVATE_DATA;
    336 
    337 typedef struct _DXVAHD_STREAM_STATE_PALETTE_DATA {
    338   UINT     Count;
    339   D3DCOLOR *pEntries;
    340 } DXVAHD_STREAM_STATE_PALETTE_DATA;
    341 
    342 typedef HRESULT ( CALLBACK *PDXVAHDSW_CreateDevice )(IDirect3DDevice9Ex *pD3DDevice,HANDLE *phDevice);
    343 typedef HRESULT ( CALLBACK *PDXVAHDSW_ProposeVideoPrivateFormat )(HANDLE hDevice,D3DFORMAT *pFormat);
    344 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorDeviceCaps )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,DXVAHD_VPDEVCAPS *pCaps);
    345 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorOutputFormats )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,UINT Count,D3DFORMAT *pFormats);
    346 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorInputFormats )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,UINT Count,D3DFORMAT *pFormats);
    347 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorCaps )(HANDLE hDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,UINT Count,DXVAHD_VPCAPS *pCaps);
    348 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorCustomRates )(HANDLE hDevice,const GUID *pVPGuid,UINT Count,DXVAHD_CUSTOM_RATE_DATA *pRates);
    349 typedef HRESULT ( CALLBACK *PDXVAHDSW_SetVideoProcessBltState )(HANDLE hVideoProcessor,DXVAHD_BLT_STATE State,UINT DataSize,const void *pData);
    350 typedef HRESULT ( CALLBACK *PDXVAHDSW_CreateVideoProcessor )(HANDLE hDevice,const GUID *pVPGuid,HANDLE *phVideoProcessor);
    351 typedef HRESULT ( CALLBACK *PDXVAHDSW_DestroyDevice )(HANDLE hDevice);
    352 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessorFilterRange )(HANDLE hDevice,DXVAHD_FILTER Filter,DXVAHD_FILTER_RANGE_DATA *pRange);
    353 typedef HRESULT ( CALLBACK *PDXVAHDSW_DestroyVideoProcessor )(HANDLE hVideoProcessor);
    354 typedef HRESULT ( CALLBACK *PDXVAHDSW_VideoProcessBltHD )(HANDLE hVideoProcessor,IDirect3DSurface9 *pOutputSurface,UINT OutputFrame,UINT StreamCount,const DXVAHD_STREAM_DATA *pStreams);
    355 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessStreamStatePrivate )(HANDLE hVideoProcessor,UINT StreamNumber,DXVAHD_STREAM_STATE_PRIVATE_DATA *pData);
    356 typedef HRESULT ( CALLBACK *PDXVAHDSW_SetVideoProcessStreamState )(HANDLE hVideoProcessor,UINT StreamNumber,DXVAHD_STREAM_STATE State,UINT DataSize,const void *pData);
    357 typedef HRESULT ( CALLBACK *PDXVAHDSW_GetVideoProcessBltStatePrivate )(HANDLE hVideoProcessor,DXVAHD_BLT_STATE_PRIVATE_DATA *pData);
    358 typedef HRESULT ( CALLBACK *PDXVAHDSW_Plugin )(UINT Size,void *pCallbacks);
    359 
    360 typedef struct _DXVAHDSW_CALLBACKS {
    361   PDXVAHDSW_CreateDevice                      CreateDevice;
    362   PDXVAHDSW_ProposeVideoPrivateFormat         ProposeVideoPrivateFormat;
    363   PDXVAHDSW_GetVideoProcessorDeviceCaps       GetVideoProcessorDeviceCaps;
    364   PDXVAHDSW_GetVideoProcessorOutputFormats    GetVideoProcessorOutputFormats;
    365   PDXVAHDSW_GetVideoProcessorInputFormats     GetVideoProcessorInputFormats;
    366   PDXVAHDSW_GetVideoProcessorCaps             GetVideoProcessorCaps;
    367   PDXVAHDSW_GetVideoProcessorCustomRates      GetVideoProcessorCustomRates;
    368   PDXVAHDSW_GetVideoProcessorFilterRange      GetVideoProcessorFilterRange;
    369   PDXVAHDSW_DestroyDevice                     DestroyDevice;
    370   PDXVAHDSW_CreateVideoProcessor              CreateVideoProcessor;
    371   PDXVAHDSW_SetVideoProcessBltState           SetVideoProcessBltState;
    372   PDXVAHDSW_GetVideoProcessBltStatePrivate    GetVideoProcessBltStatePrivate;
    373   PDXVAHDSW_SetVideoProcessStreamState        SetVideoProcessStreamState;
    374   PDXVAHDSW_GetVideoProcessStreamStatePrivate GetVideoProcessStreamStatePrivate;
    375   PDXVAHDSW_VideoProcessBltHD                 VideoProcessBltHD;
    376   PDXVAHDSW_DestroyVideoProcessor             DestroyVideoProcessor;
    377 } DXVAHDSW_CALLBACKS;
    378 
    379 HRESULT DXVAHD_CreateDevice(IDirect3DDevice9Ex *pD3DDevice,const DXVAHD_CONTENT_DESC *pContentDesc,DXVAHD_DEVICE_USAGE Usage,PDXVAHDSW_Plugin pPlugin,IDXVAHD_Device **ppDevice);
    380 
    381 #ifdef __cplusplus
    382 }
    383 #endif
    384 
    385 #undef  INTERFACE
    386 #define INTERFACE IDXVAHD_Device
    387 #ifdef __GNUC__
    388 #warning COM interfaces layout in this header has not been verified.
    389 #warning COM interfaces with incorrect layout may not work at all.
    390 __MINGW_BROKEN_INTERFACE(INTERFACE)
    391 #endif
    392 DECLARE_INTERFACE_(IDXVAHD_Device,IUnknown)
    393 {
    394     BEGIN_INTERFACE
    395 
    396     /* IUnknown methods */
    397     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    398     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    399     STDMETHOD_(ULONG, Release)(THIS) PURE;
    400 
    401     /* IDXVAHD_Device methods */
    402     STDMETHOD_(HRESULT,CreateVideoProcessor)(THIS_ const GUID *pVPGuid,IDXVAHD_VideoProcessor **ppVideoProcessor) PURE;
    403     STDMETHOD_(HRESULT,CreateVideoSurface)(THIS_ UINT Width,UINT Height,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DXVAHD_SURFACE_TYPE Type,UINT NumSurfaces,IDirect3DSurface9 **ppSurfaces,HANDLE *pSharedHandle) PURE;
    404     STDMETHOD_(HRESULT,GetVideoProcessorCaps)(THIS_ UINT Count,DXVAHD_VPCAPS *pCaps) PURE;
    405     STDMETHOD_(HRESULT,GetVideoProcessorCustomRates)(THIS_ const GUID *pVPGuid,UINT Count,DXVAHD_CUSTOM_RATE_DATA *pRates) PURE;
    406     STDMETHOD_(HRESULT,GetVideoProcessorDeviceCaps)(THIS_ DXVAHD_VPDEVCAPS *pCaps) PURE;
    407     STDMETHOD_(HRESULT,GetVideoProcessorFilterRange)(THIS_ DXVAHD_FILTER Filter,DXVAHD_FILTER_RANGE_DATA *pRange) PURE;
    408     STDMETHOD_(HRESULT,GetVideoProcessorInputFormats)(THIS_ UINT Count,D3DFORMAT *pFormats) PURE;
    409     STDMETHOD_(HRESULT,GetVideoProcessorOutputFormats)(THIS_ UINT Count,D3DFORMAT *pFormats) PURE;
    410 
    411     END_INTERFACE
    412 };
    413 #ifdef COBJMACROS
    414 #define IDXVAHD_Device_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    415 #define IDXVAHD_Device_AddRef(This) (This)->lpVtbl->AddRef(This)
    416 #define IDXVAHD_Device_Release(This) (This)->lpVtbl->Release(This)
    417 #define IDXVAHD_Device_CreateVideoProcessor(This,pVPGuid,ppVideoProcessor) (This)->lpVtbl->CreateVideoProcessor(This,pVPGuid,ppVideoProcessor)
    418 #define IDXVAHD_Device_CreateVideoSurface(This,Width,Height,Format,Pool,Usage,Type,NumSurfaces,ppSurfaces,pSharedHandle) (This)->lpVtbl->CreateVideoSurface(This,Width,Height,Format,Pool,Usage,Type,NumSurfaces,ppSurfaces,pSharedHandle)
    419 #define IDXVAHD_Device_GetVideoProcessorCaps(This,Count,pCaps) (This)->lpVtbl->GetVideoProcessorCaps(This,Count,pCaps)
    420 #define IDXVAHD_Device_GetVideoProcessorCustomRates(This,pVPGuid,Count,pRates) (This)->lpVtbl->GetVideoProcessorCustomRates(This,pVPGuid,Count,pRates)
    421 #define IDXVAHD_Device_GetVideoProcessorDeviceCaps(This,pCaps) (This)->lpVtbl->GetVideoProcessorDeviceCaps(This,pCaps)
    422 #define IDXVAHD_Device_GetVideoProcessorFilterRange(This,Filter,pRange) (This)->lpVtbl->GetVideoProcessorFilterRange(This,Filter,pRange)
    423 #define IDXVAHD_Device_GetVideoProcessorInputFormats(This,Count,pFormats) (This)->lpVtbl->GetVideoProcessorInputFormats(This,Count,pFormats)
    424 #define IDXVAHD_Device_GetVideoProcessorOutputFormats(This,Count,pFormats) (This)->lpVtbl->GetVideoProcessorOutputFormats(This,Count,pFormats)
    425 #endif /*COBJMACROS*/
    426 
    427 #undef  INTERFACE
    428 #define INTERFACE IDXVAHD_VideoProcessor
    429 #ifdef __GNUC__
    430 #warning COM interfaces layout in this header has not been verified.
    431 #warning COM interfaces with incorrect layout may not work at all.
    432 __MINGW_BROKEN_INTERFACE(INTERFACE)
    433 #endif
    434 DECLARE_INTERFACE_(IDXVAHD_VideoProcessor,IUnknown)
    435 {
    436     BEGIN_INTERFACE
    437 
    438     /* IUnknown methods */
    439     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
    440     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    441     STDMETHOD_(ULONG, Release)(THIS) PURE;
    442 
    443     /* IDXVAHD_VideoProcessor methods */
    444     STDMETHOD_(HRESULT,GetVideoProcessBltState)(THIS_ DXVAHD_BLT_STATE State,UINT DataSize,void *pData) PURE;
    445     STDMETHOD_(HRESULT,GetVideoProcessStreamState)(THIS_ UINT StreamNumber,DXVAHD_STREAM_STATE State,UINT DataSize,void *pData) PURE;
    446     STDMETHOD_(HRESULT,SetVideoProcessBltState)(THIS_ DXVAHD_BLT_STATE State,UINT DataSize,const void *pData) PURE;
    447     STDMETHOD_(HRESULT,SetVideoProcessStreamState)(THIS_ UINT StreamNumber,DXVAHD_STREAM_STATE State,UINT DataSize,const void *pData) PURE;
    448     STDMETHOD_(HRESULT,VideoProcessBltHD)(THIS_ IDirect3DSurface9 *pOutputSurface,UINT OutputFrame,UINT StreamCount,const DXVAHD_STREAM_DATA *pStreams) PURE;
    449 
    450     END_INTERFACE
    451 };
    452 #ifdef COBJMACROS
    453 #define IDXVAHD_VideoProcessor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    454 #define IDXVAHD_VideoProcessor_AddRef(This) (This)->lpVtbl->AddRef(This)
    455 #define IDXVAHD_VideoProcessor_Release(This) (This)->lpVtbl->Release(This)
    456 #define IDXVAHD_VideoProcessor_GetVideoProcessBltState(This,State,DataSize,pData) (This)->lpVtbl->GetVideoProcessBltState(This,State,DataSize,pData)
    457 #define IDXVAHD_VideoProcessor_GetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData) (This)->lpVtbl->GetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData)
    458 #define IDXVAHD_VideoProcessor_SetVideoProcessBltState(This,State,DataSize,pData) (This)->lpVtbl->SetVideoProcessBltState(This,State,DataSize,pData)
    459 #define IDXVAHD_VideoProcessor_SetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData) (This)->lpVtbl->SetVideoProcessStreamState(This,StreamNumber,State,DataSize,pData)
    460 #define IDXVAHD_VideoProcessor_VideoProcessBltHD(This,pOutputSurface,OutputFrame,StreamCount,pStreams) (This)->lpVtbl->VideoProcessBltHD(This,pOutputSurface,OutputFrame,StreamCount,pStreams)
    461 #endif /*COBJMACROS*/
    462 
    463 #endif /*(_WIN32_WINNT >= 0x0601)*/
    464 #endif /*_INC_DXAVHD*/
    465