• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
DECLARE_INTERFACE_(IDXVAHD_Device,IUnknown)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
DECLARE_INTERFACE_(IDXVAHD_VideoProcessor,IUnknown)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