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