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