---
 mingw-w64-headers/include/dxva2api.idl | 320
++++++++++++++-------------------
 1 file changed, 139 insertions(+), 181 deletions(-)


diff --git a/mingw-w64-headers/include/dxva2api.idl b/mingw-w64-headers/include/dxva2api.idl
index 007a2e4..8aa0389 100644
--- a/mingw-w64-headers/include/dxva2api.idl
+++ b/mingw-w64-headers/include/dxva2api.idl
@@ -14,6 +14,8 @@ typedef DWORD D3DFORMAT;
 typedef DWORD D3DPOOL;
 cpp_quote("#endif")
 
+interface IDirectXVideoDecoderService;
+
 cpp_quote("#ifndef __REFERENCE_TIME_DEFINED")
 cpp_quote("#define __REFERENCE_TIME_DEFINED")
 cpp_quote("typedef LONGLONG REFERENCE_TIME;")
@@ -30,9 +32,6 @@ cpp_quote("#define DXVA2_E_NEW_VIDEO_DEVICE    MAKE_HRESULT(1, 4, 4097)")
 cpp_quote("#define DXVA2_E_VIDEO_DEVICE_LOCKED MAKE_HRESULT(1, 4, 4098)")
 cpp_quote("#define DXVA2_E_NOT_AVAILABLE       MAKE_HRESULT(1, 4, 4099)")
 cpp_quote("")
-cpp_quote("DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551, 0xd5e7, 0x11d9, 0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02);")
-cpp_quote("DEFINE_GUID(IID_IDirectXVideoAccelerationService, 0xfc51a550, 0xd5e7, 0x11d9, 0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02);")
-cpp_quote("")
 cpp_quote("DEFINE_GUID(DXVA2_ModeMPEG2_MoComp, 0xe6a9f44b, 0x61b0,0x4563, 0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66);")
 cpp_quote("DEFINE_GUID(DXVA2_ModeMPEG2_IDCT, 0xbf22ad00, 0x03ea,0x4690, 0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e);")
 cpp_quote("DEFINE_GUID(DXVA2_ModeMPEG2_VLD, 0xee27417f, 0x5e28,0x4e65, 0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9);")
@@ -52,8 +51,6 @@ cpp_quote("DEFINE_GUID(DXVA2_ModeVC1_B, 0x1b81beA1, 0xa0c7,0x11d3, 0xb9,0x84,0x0
 cpp_quote("DEFINE_GUID(DXVA2_ModeVC1_C, 0x1b81beA2, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
 cpp_quote("DEFINE_GUID(DXVA2_ModeVC1_D, 0x1b81beA3, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);")
 cpp_quote("")
-cpp_quote("typedef struct IDirectXVideoDecoderService IDirectXVideoDecoderService;")
-cpp_quote("")
 cpp_quote("typedef enum _DXVA2_SampleFormat {")
 cpp_quote("  DXVA2_SampleFormatMask                  = 0x00FF,")
 cpp_quote("  DXVA2_SampleUnknown                     = 0,")
@@ -158,70 +155,70 @@ cpp_quote("  UCHAR Cb;")
 cpp_quote("  UCHAR Y;")
 cpp_quote("  UCHAR Alpha;")
 cpp_quote("} DXVA2_AYUVSample8;")
-cpp_quote("")
-cpp_quote("typedef struct _DXVA2_ConfigPictureDecode {")
-cpp_quote("  GUID   guidConfigBitstreamEncryption;")
-cpp_quote("  GUID   guidConfigMBcontrolEncryption;")
-cpp_quote("  GUID   guidConfigResidDiffEncryption;")
-cpp_quote("  UINT   ConfigBitstreamRaw;")
-cpp_quote("  UINT   ConfigMBcontrolRasterOrder;")
-cpp_quote("  UINT   ConfigResidDiffHost;")
-cpp_quote("  UINT   ConfigSpatialResid8;")
-cpp_quote("  UINT   ConfigResid8Subtraction;")
-cpp_quote("  UINT   ConfigSpatialHost8or9Clipping;")
-cpp_quote("  UINT   ConfigSpatialResidInterleaved;")
-cpp_quote("  UINT   ConfigIntraResidUnsigned;")
-cpp_quote("  UINT   ConfigResidDiffAccelerator;")
-cpp_quote("  UINT   ConfigHostInverseScan;")
-cpp_quote("  UINT   ConfigSpecificIDCT;")
-cpp_quote("  UINT   Config4GroupedCoefs;")
-cpp_quote("  USHORT ConfigMinRenderTargetBuffCount;")
-cpp_quote("  USHORT ConfigDecoderSpecific;")
-cpp_quote("} DXVA2_ConfigPictureDecode;")
-cpp_quote("")
-cpp_quote("typedef struct _DXVA2_DecodeBufferDesc {")
-cpp_quote("  DWORD CompressedBufferType;")
-cpp_quote("  UINT  BufferIndex;")
-cpp_quote("  UINT  DataOffset;")
-cpp_quote("  UINT  DataSize;")
-cpp_quote("  UINT  FirstMBaddress;")
-cpp_quote("  UINT  NumMBsInBuffer;")
-cpp_quote("  UINT  Width;")
-cpp_quote("  UINT  Height;")
-cpp_quote("  UINT  Stride;")
-cpp_quote("  UINT  ReservedBits;")
-cpp_quote("  PVOID pvPVPState;")
-cpp_quote("} DXVA2_DecodeBufferDesc;")
-cpp_quote("")
-cpp_quote("typedef struct _DXVA2_DecodeExtensionData {")
-cpp_quote("  UINT  Function;")
-cpp_quote("  PVOID pPrivateInputData;")
-cpp_quote("  UINT  PrivateInputDataSize;")
-cpp_quote("  PVOID pPrivateOutputData;")
-cpp_quote("  UINT  PrivateOutputDataSize;")
-cpp_quote("} DXVA2_DecodeExtensionData;")
-cpp_quote("")
-cpp_quote("typedef struct _DXVA2_DecodeExecuteParams {")
-cpp_quote("  UINT                      NumCompBuffers;")
-cpp_quote("  DXVA2_DecodeBufferDesc    *pCompressedBuffers;")
-cpp_quote("  DXVA2_DecodeExtensionData *pExtensionData;")
-cpp_quote("} DXVA2_DecodeExecuteParams;")
-cpp_quote("")
-cpp_quote("typedef struct {")
-cpp_quote("  __C89_NAMELESS union {")
-cpp_quote("    __C89_NAMELESS struct {")
-cpp_quote("      UINT SampleFormat            :8;")
-cpp_quote("      UINT VideoChromaSubsampling  :4;")
-cpp_quote("      UINT NominalRange            :3;")
-cpp_quote("      UINT VideoTransferMatrix     :3;")
-cpp_quote("      UINT VideoLighting           :4;")
-cpp_quote("      UINT VideoPrimaries          :5;")
-cpp_quote("      UINT VideoTransferFunction   :5;")
-cpp_quote("    } DUMMYSTRUCTNAME;")
-cpp_quote("    UINT   value;")
-cpp_quote("  } DUMMYUNIONNAME;")
-cpp_quote("} DXVA2_ExtendedFormat;")
-cpp_quote("")
+
+typedef struct _DXVA2_ConfigPictureDecode {
+  GUID   guidConfigBitstreamEncryption;
+  GUID   guidConfigMBcontrolEncryption;
+  GUID   guidConfigResidDiffEncryption;
+  UINT   ConfigBitstreamRaw;
+  UINT   ConfigMBcontrolRasterOrder;
+  UINT   ConfigResidDiffHost;
+  UINT   ConfigSpatialResid8;
+  UINT   ConfigResid8Subtraction;
+  UINT   ConfigSpatialHost8or9Clipping;
+  UINT   ConfigSpatialResidInterleaved;
+  UINT   ConfigIntraResidUnsigned;
+  UINT   ConfigResidDiffAccelerator;
+  UINT   ConfigHostInverseScan;
+  UINT   ConfigSpecificIDCT;
+  UINT   Config4GroupedCoefs;
+  USHORT ConfigMinRenderTargetBuffCount;
+  USHORT ConfigDecoderSpecific;
+} DXVA2_ConfigPictureDecode;
+
+typedef struct _DXVA2_DecodeBufferDesc {
+  DWORD CompressedBufferType;
+  UINT  BufferIndex;
+  UINT  DataOffset;
+  UINT  DataSize;
+  UINT  FirstMBaddress;
+  UINT  NumMBsInBuffer;
+  UINT  Width;
+  UINT  Height;
+  UINT  Stride;
+  UINT  ReservedBits;
+  PVOID pvPVPState;
+} DXVA2_DecodeBufferDesc;
+
+typedef struct _DXVA2_DecodeExtensionData {
+  UINT  Function;
+  PVOID pPrivateInputData;
+  UINT  PrivateInputDataSize;
+  PVOID pPrivateOutputData;
+  UINT  PrivateOutputDataSize;
+} DXVA2_DecodeExtensionData;
+
+typedef struct _DXVA2_DecodeExecuteParams {
+  UINT                      NumCompBuffers;
+  DXVA2_DecodeBufferDesc    *pCompressedBuffers;
+  DXVA2_DecodeExtensionData *pExtensionData;
+} DXVA2_DecodeExecuteParams;
+
+typedef struct _DXVA2_ExtendedFormat {
+  union {
+    struct {
+      UINT SampleFormat            :8;
+      UINT VideoChromaSubsampling  :4;
+      UINT NominalRange            :3;
+      UINT VideoTransferMatrix     :3;
+      UINT VideoLighting           :4;
+      UINT VideoPrimaries          :5;
+      UINT VideoTransferFunction   :5;
+    };
+    UINT   value;
+  };
+} DXVA2_ExtendedFormat;
+
 cpp_quote("typedef struct _DXVA2_Fixed32 {")
 cpp_quote("  __C89_NAMELESS union {")
 cpp_quote("    __C89_NAMELESS struct {")
@@ -237,12 +234,12 @@ cpp_quote("  DXVA2_Fixed32 Level;")
 cpp_quote("  DXVA2_Fixed32 Threshold;")
 cpp_quote("  DXVA2_Fixed32 Radius;")
 cpp_quote("} DXVA2_FilterValues;")
-cpp_quote("")
-cpp_quote("typedef struct _DXVA2_Frequency {")
-cpp_quote("  UINT Numerator;")
-cpp_quote("  UINT Denominator;")
-cpp_quote("} DXVA2_Frequency;")
-cpp_quote("")
+
+typedef struct _DXVA2_Frequency {
+  UINT Numerator;
+  UINT Denominator;
+} DXVA2_Frequency;
+
 cpp_quote("typedef struct _DXVA2_ProcAmpValues {")
 cpp_quote("  DXVA2_Fixed32 Brightness;")
 cpp_quote("  DXVA2_Fixed32 Contrast;")
@@ -256,20 +253,18 @@ cpp_quote("  DXVA2_Fixed32 MaxValue;")
 cpp_quote("  DXVA2_Fixed32 DefaultValue;")
 cpp_quote("  DXVA2_Fixed32 StepSize;")
 cpp_quote("} DXVA2_ValueRange;")
-cpp_quote("")
-cpp_quote("#ifdef _D3D9_H_")
-cpp_quote("typedef struct _DXVA2_VideoDesc {")
-cpp_quote("  UINT                 SampleWidth;")
-cpp_quote("  UINT                 SampleHeight;")
-cpp_quote("  DXVA2_ExtendedFormat SampleFormat;")
-cpp_quote("  D3DFORMAT            Format;")
-cpp_quote("  DXVA2_Frequency      InputSampleFreq;")
-cpp_quote("  DXVA2_Frequency      OutputFrameFreq;")
-cpp_quote("  UINT                 UABProtectionLevel;")
-cpp_quote("  UINT                 Reserved;")
-cpp_quote("} DXVA2_VideoDesc;")
-cpp_quote("#endif")
-cpp_quote("")
+
+typedef struct _DXVA2_VideoDesc {
+  UINT                 SampleWidth;
+  UINT                 SampleHeight;
+  DXVA2_ExtendedFormat SampleFormat;
+  D3DFORMAT            Format;
+  DXVA2_Frequency      InputSampleFreq;
+  DXVA2_Frequency      OutputFrameFreq;
+  UINT                 UABProtectionLevel;
+  UINT                 Reserved;
+} DXVA2_VideoDesc;
+
 cpp_quote("/* DeviceCaps")
 cpp_quote("DXVA2_VPDev_EmulatedDXVA1")
 cpp_quote("DXVA2_VPDev_HardwareDevice")
@@ -412,8 +407,9 @@ cpp_quote("  f32.Value    = ((ULONG) (f * (1 << 16))) >> 16;")
 cpp_quote("  f32.Fraction = ((ULONG) (f * (1 << 16))) & 0xFFFF;")
 cpp_quote("  return f32;")
 cpp_quote("}")
-cpp_quote("")
+
 cpp_quote("#ifdef _D3D9_H_")
+
 cpp_quote("HRESULT WINAPI DXVA2CreateDirect3DDeviceManager9(UINT *pResetToken,IDirect3DDeviceManager9 **ppDXVAManager);")
 cpp_quote("HRESULT WINAPI DXVA2CreateVideoService(IDirect3DDevice9 *pDD,REFIID riid,void **ppService);")
 
@@ -433,94 +429,56 @@ interface IDirect3DDeviceManager9 : IUnknown
     HRESULT GetVideoService([in] HANDLE hDevice, [in] REFIID riid, [out] void **ppService);
 }
 
-cpp_quote("#undef  INTERFACE")
-cpp_quote("#define INTERFACE IDirectXVideoDecoder")
-cpp_quote("DECLARE_INTERFACE_(IDirectXVideoDecoder,IUnknown)")
-cpp_quote("{")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("")
-cpp_quote("    /* IUnknown methods */")
-cpp_quote("    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;")
-cpp_quote("    STDMETHOD_(ULONG, AddRef)(THIS) PURE;")
-cpp_quote("    STDMETHOD_(ULONG, Release)(THIS) PURE;")
-cpp_quote("")
-cpp_quote("    /* IDirectXVideoDecoder methods */")
-cpp_quote("    STDMETHOD_(HRESULT,GetVideoDecoderService)(THIS_ IDirectXVideoDecoderService **ppAccelServices) PURE;")
-cpp_quote("    STDMETHOD_(HRESULT,GetCreationParameters)(THIS_ GUID *pDeviceGuid,DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 ***pppDecoderRenderTargets,UINT *pNumSurfaces) PURE;")
-cpp_quote("    STDMETHOD_(HRESULT,GetBuffer)(THIS_ UINT BufferType,void **ppBuffer,UINT *pBufferSize) PURE;")
-cpp_quote("    STDMETHOD_(HRESULT,ReleaseBuffer)(THIS_ UINT BufferType) PURE;")
-cpp_quote("    STDMETHOD_(HRESULT,BeginFrame)(THIS_ IDirect3DSurface9 *pRenderTarget,void *pvPVPData) PURE;")
-cpp_quote("    STDMETHOD_(HRESULT,EndFrame)(THIS_ HANDLE *pHandleComplete) PURE;")
-cpp_quote("    STDMETHOD_(HRESULT,Execute)(THIS_ const DXVA2_DecodeExecuteParams *pExecuteParams) PURE;")
-cpp_quote("")
-cpp_quote("    END_INTERFACE")
-cpp_quote("};")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IDirectXVideoDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IDirectXVideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IDirectXVideoDecoder_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IDirectXVideoDecoder_GetVideoDecoderService(This,ppAccelServices) (This)->lpVtbl->GetVideoDecoderService(This,ppAccelServices)")
-cpp_quote("#define IDirectXVideoDecoder_GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pppDecoderRenderTargets,pNumSurfaces) (This)->lpVtbl->GetCreationParameters(This,pDeviceGuid,pVideoDesc,pConfig,pppDecoderRenderTargets,pNumSurfaces)")
-cpp_quote("#define IDirectXVideoDecoder_GetBuffer(This,BufferType,ppBuffer,pBufferSize) (This)->lpVtbl->GetBuffer(This,BufferType,ppBuffer,pBufferSize)")
-cpp_quote("#define IDirectXVideoDecoder_ReleaseBuffer(This,BufferType) (This)->lpVtbl->ReleaseBuffer(This,BufferType)")
-cpp_quote("#define IDirectXVideoDecoder_BeginFrame(This,pRenderTarget,pvPVPData) (This)->lpVtbl->BeginFrame(This,pRenderTarget,pvPVPData)")
-cpp_quote("#define IDirectXVideoDecoder_EndFrame(This,pHandleComplete) (This)->lpVtbl->EndFrame(This,pHandleComplete)")
-cpp_quote("#define IDirectXVideoDecoder_Execute(This,pExecuteParams) (This)->lpVtbl->Execute(This,pExecuteParams)")
-cpp_quote("#endif /*COBJMACROS*/")
-cpp_quote("")
-cpp_quote("#undef  INTERFACE")
-cpp_quote("#define INTERFACE IDirectXVideoAccelerationService")
-cpp_quote("DECLARE_INTERFACE_(IDirectXVideoAccelerationService,IUnknown)")
-cpp_quote("{")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("")
-cpp_quote("    /* IUnknown methods */")
-cpp_quote("    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;")
-cpp_quote("    STDMETHOD_(ULONG, AddRef)(THIS) PURE;")
-cpp_quote("    STDMETHOD_(ULONG, Release)(THIS) PURE;")
-cpp_quote("")
-cpp_quote("    /* IDirectXVideoAccelerationService methods */")
-cpp_quote("    STDMETHOD_(HRESULT,CreateSurface)(THIS_ UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) PURE;")
-cpp_quote("")
-cpp_quote("    END_INTERFACE")
-cpp_quote("};")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IDirectXVideoAccelerationService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IDirectXVideoAccelerationService_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IDirectXVideoAccelerationService_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IDirectXVideoAccelerationService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle)")
-cpp_quote("#endif /*COBJMACROS*/")
-cpp_quote("")
-cpp_quote("#undef  INTERFACE")
-cpp_quote("#define INTERFACE IDirectXVideoDecoderService")
-cpp_quote("DECLARE_INTERFACE_(IDirectXVideoDecoderService,IDirectXVideoAccelerationService)")
-cpp_quote("{")
-cpp_quote("    BEGIN_INTERFACE")
-cpp_quote("")
-cpp_quote("    /* IUnknown methods */")
-cpp_quote("    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;")
-cpp_quote("    STDMETHOD_(ULONG, AddRef)(THIS) PURE;")
-cpp_quote("    STDMETHOD_(ULONG, Release)(THIS) PURE;")
-cpp_quote("")
-cpp_quote("    /* IDirectXVideoAccelerationService methods */")
-cpp_quote("    STDMETHOD_(HRESULT,CreateSurface)(THIS_ UINT Width,UINT Height,UINT BackBuffers,D3DFORMAT Format,D3DPOOL Pool,DWORD Usage,DWORD DxvaType,IDirect3DSurface9 **ppSurface,HANDLE *pSharedHandle) PURE;")
-cpp_quote("    ")
-cpp_quote("    /* IDirectXVideoDecoderService methods */")
-cpp_quote("    STDMETHOD_(HRESULT,GetDecoderDeviceGuids)(THIS_ UINT *Count,GUID **pGuids) PURE;")
-cpp_quote("    STDMETHOD_(HRESULT,GetDecoderRenderTargets)(THIS_ REFGUID Guid,UINT *pCount,D3DFORMAT **pFormats) PURE;")
-cpp_quote("    STDMETHOD_(HRESULT,GetDecoderConfigurations)(THIS_ REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,IUnknown *pReserved,UINT *pCount,DXVA2_ConfigPictureDecode **ppConfigs) PURE;")
-cpp_quote("    STDMETHOD_(HRESULT,CreateVideoDecoder)(THIS_ REFGUID Guid,const DXVA2_VideoDesc *pVideoDesc,DXVA2_ConfigPictureDecode *pConfig,IDirect3DSurface9 **ppDecoderRenderTargets,UINT NumSurfaces,IDirectXVideoDecoder **ppDecode) PURE;")
-cpp_quote("")
-cpp_quote("    END_INTERFACE")
-cpp_quote("};")
-cpp_quote("#endif")
-cpp_quote("#ifdef COBJMACROS")
-cpp_quote("#define IDirectXVideoDecoderService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
-cpp_quote("#define IDirectXVideoDecoderService_AddRef(This) (This)->lpVtbl->AddRef(This)")
-cpp_quote("#define IDirectXVideoDecoderService_Release(This) (This)->lpVtbl->Release(This)")
-cpp_quote("#define IDirectXVideoDecoderService_CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle) (This)->lpVtbl->CreateSurface(This,Width,Height,BackBuffers,Format,Pool,Usage,DxvaType,ppSurface,pSharedHandle)")
-cpp_quote("#define IDirectXVideoDecoderService_GetDecoderDeviceGuids(This,Count,pGuids) (This)->lpVtbl->GetDecoderDeviceGuids(This,Count,pGuids)")
-cpp_quote("#define IDirectXVideoDecoderService_GetDecoderRenderTargets(This,Guid,pCount,pFormats) (This)->lpVtbl->GetDecoderRenderTargets(This,Guid,pCount,pFormats)")
-cpp_quote("#define IDirectXVideoDecoderService_GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs) (This)->lpVtbl->GetDecoderConfigurations(This,Guid,pVideoDesc,pReserved,pCount,ppConfigs)")
-cpp_quote("#define IDirectXVideoDecoderService_CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode) (This)->lpVtbl->CreateVideoDecoder(This,Guid,pVideoDesc,pConfig,ppDecoderRenderTargets,NumSurfaces,ppDecode)")
-cpp_quote("#endif /*COBJMACROS*/")
+[
+    object,
+    uuid(f2b0810a-fd00-43c9-918c-df94e2d8ef7d),
+    local
+]
+interface IDirectXVideoDecoder : IUnknown
+{
+    HRESULT GetVideoDecoderService([out] IDirectXVideoDecoderService **ppService);
+    HRESULT GetCreationParameters([out] GUID *pDeviceGuid, [out] DXVA2_VideoDesc *pVideoDesc,
+            [out] DXVA2_ConfigPictureDecode *pConfig,
+            [out, unique, size_is(*pNumSurfaces)] IDirect3DSurface9 ***pDecoderRenderTargets,
+            [out] UINT *pNumSurfaces);
+
+    HRESULT GetBuffer([in] UINT BufferType, [out] void **ppBuffer, [out] UINT *pBufferSize);
+    HRESULT ReleaseBuffer([in] UINT BufferType);
+    HRESULT BeginFrame([in] IDirect3DSurface9 *pRenderTarget, [in] void *pvPVPData);
+    HRESULT EndFrame([out] HANDLE *pHandleComplete);
+    HRESULT Execute([in] const DXVA2_DecodeExecuteParams *pExecuteParams);
+}
+
+[
+    object,
+    uuid(fc51a550-d5e7-11d9-af55-00054e43ff02),
+    local
+]
+interface IDirectXVideoAccelerationService : IUnknown
+{
+    HRESULT CreateSurface([in] UINT Width, [in] UINT Height, [in] UINT BackBuffers, [in] D3DFORMAT Format,
+            [in] D3DPOOL Pool, [in] DWORD Usage, [in] DWORD DxvaType, [out, size_is(BackBuffers+1)] IDirect3DSurface9 **ppSurface,
+            [in, out] HANDLE *pSharedHandle);
+}
+
+[
+    object,
+    uuid(fc51a551-d5e7-11d9-af55-00054e43ff02),
+    local
+]
+interface IDirectXVideoDecoderService : IDirectXVideoAccelerationService
+{
+    HRESULT GetDecoderDeviceGuids([out] UINT *pCount, [out, unique, size_is(*pCount)] GUID **pGuids);
+
+    HRESULT GetDecoderRenderTargets([in] REFGUID Guid, [out] UINT *pCount, [out, unique, size_is(*pCount)] D3DFORMAT **pFormats);
+
+    HRESULT GetDecoderConfigurations([in] REFGUID Guid, [in] const DXVA2_VideoDesc *pVideoDesc, [in] void *pReserved,
+            [out] UINT *pCount, [out, unique, size_is(*pCount)] DXVA2_ConfigPictureDecode **ppConfigs);
+
+    HRESULT CreateVideoDecoder([in] REFGUID Guid, [in] const DXVA2_VideoDesc *pVideoDesc,
+            [in] const DXVA2_ConfigPictureDecode *pConfig,
+            [in, size_is(NumRenderTargets)] IDirect3DSurface9 **ppDecoderRenderTargets,
+            [in] UINT NumRenderTargets, [out] IDirectXVideoDecoder **ppDecode);
+}
+
+cpp_quote("#endif /* _D3D9_H_ */")

------------------------------------------------------------------------------
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to