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