Hi,

I await review on Wine for it before giving further comments.

Regards,
Kai

2015-05-11 15:16 GMT+02:00 Steve Lhomme <rob...@videolabs.io>:
> ---
>  mingw-w64-headers/direct-x/include/d3d11.h   | 939 
> +++++++++++++++++++++++++++
>  mingw-w64-headers/direct-x/include/d3d11.idl | 201 ++++++
>  2 files changed, 1140 insertions(+)
>
> diff --git a/mingw-w64-headers/direct-x/include/d3d11.h 
> b/mingw-w64-headers/direct-x/include/d3d11.h
> index cc64c3f..9cfbd18 100644
> --- a/mingw-w64-headers/direct-x/include/d3d11.h
> +++ b/mingw-w64-headers/direct-x/include/d3d11.h
> @@ -172,6 +172,26 @@ typedef interface ID3D11DeviceContext 
> ID3D11DeviceContext;
>  typedef interface ID3D11Device ID3D11Device;
>  #endif
>
> +#ifndef __ID3D11VideoDecoderOutputView_FWD_DEFINED__
> +#define __ID3D11VideoDecoderOutputView_FWD_DEFINED__
> +typedef interface ID3D11VideoDecoderOutputView ID3D11VideoDecoderOutputView;
> +#endif
> +
> +#ifndef __ID3D11VideoDecoder_FWD_DEFINED__
> +#define __ID3D11VideoDecoder_FWD_DEFINED__
> +typedef interface ID3D11VideoDecoder ID3D11VideoDecoder;
> +#endif
> +
> +#ifndef __ID3D11VideoContext_FWD_DEFINED__
> +#define __ID3D11VideoContext_FWD_DEFINED__
> +typedef interface ID3D11VideoContext ID3D11VideoContext;
> +#endif
> +
> +#ifndef __ID3D11VideoDevice_FWD_DEFINED__
> +#define __ID3D11VideoDevice_FWD_DEFINED__
> +typedef interface ID3D11VideoDevice ID3D11VideoDevice;
> +#endif
> +
>  /* Headers for imported files */
>
>  #include <oaidl.h>
> @@ -8850,6 +8870,925 @@ void __RPC_STUB ID3D11Device_GetExceptionMode_Stub(
>
>  #endif  /* __ID3D11Device_INTERFACE_DEFINED__ */
>
> +typedef enum D3D11_VDOV_DIMENSION {
> +    D3D11_VDOV_DIMENSION_UNKNOWN = 0,
> +    D3D11_VDOV_DIMENSION_TEXTURE2D = 1
> +} D3D11_VDOV_DIMENSION;
> +typedef struct D3D11_TEX2D_VDOV {
> +    UINT ArraySlice;
> +} D3D11_TEX2D_VDOV;
> +typedef struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC {
> +    GUID DecodeProfile;
> +    D3D11_VDOV_DIMENSION ViewDimension;
> +    __C89_NAMELESS union {
> +        D3D11_TEX2D_VDOV Texture2D;
> +    } __C89_NAMELESSUNIONNAME;
> +} D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC;
> +/*****************************************************************************
> + * ID3D11VideoDecoderOutputView interface
> + */
> +#ifndef __ID3D11VideoDecoderOutputView_INTERFACE_DEFINED__
> +#define __ID3D11VideoDecoderOutputView_INTERFACE_DEFINED__
> +
> +DEFINE_GUID(IID_ID3D11VideoDecoderOutputView, 0xc2931aea, 0x2a85, 0x4f20, 
> 0x86,0x0f, 0xfb,0xa1,0xfd,0x25,0x6e,0x18);
> +#if defined(__cplusplus) && !defined(CINTERFACE)
> +MIDL_INTERFACE("c2931aea-2a85-4f20-860f-fba1fd256e18")
> +ID3D11VideoDecoderOutputView : public ID3D11View
> +{
> +    virtual void STDMETHODCALLTYPE GetDesc(
> +        D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc) = 0;
> +
> +};
> +#ifdef __CRT_UUID_DECL
> +__CRT_UUID_DECL(ID3D11VideoDecoderOutputView, 0xc2931aea, 0x2a85, 0x4f20, 
> 0x86,0x0f, 0xfb,0xa1,0xfd,0x25,0x6e,0x18)
> +#endif
> +#else
> +typedef struct ID3D11VideoDecoderOutputViewVtbl {
> +    BEGIN_INTERFACE
> +
> +    /*** IUnknown methods ***/
> +    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
> +        ID3D11VideoDecoderOutputView* This,
> +        REFIID riid,
> +        void **ppvObject);
> +
> +    ULONG (STDMETHODCALLTYPE *AddRef)(
> +        ID3D11VideoDecoderOutputView* This);
> +
> +    ULONG (STDMETHODCALLTYPE *Release)(
> +        ID3D11VideoDecoderOutputView* This);
> +
> +    /*** ID3D11DeviceChild methods ***/
> +    void (STDMETHODCALLTYPE *GetDevice)(
> +        ID3D11VideoDecoderOutputView* This,
> +        ID3D11Device **ppDevice);
> +
> +    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
> +        ID3D11VideoDecoderOutputView* This,
> +        REFGUID guid,
> +        UINT *pDataSize,
> +        void *pData);
> +
> +    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
> +        ID3D11VideoDecoderOutputView* This,
> +        REFGUID guid,
> +        UINT DataSize,
> +        const void *pData);
> +
> +    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
> +        ID3D11VideoDecoderOutputView* This,
> +        REFGUID guid,
> +        const IUnknown *pData);
> +
> +    /*** ID3D11View methods ***/
> +    void (STDMETHODCALLTYPE *GetResource)(
> +        ID3D11VideoDecoderOutputView* This,
> +        ID3D11Resource **ppResource);
> +
> +    /*** ID3D11VideoDecoderOutputView methods ***/
> +    void (STDMETHODCALLTYPE *GetDesc)(
> +        ID3D11VideoDecoderOutputView* This,
> +        D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc);
> +
> +    END_INTERFACE
> +} ID3D11VideoDecoderOutputViewVtbl;
> +interface ID3D11VideoDecoderOutputView {
> +    CONST_VTBL ID3D11VideoDecoderOutputViewVtbl* lpVtbl;
> +};
> +
> +#ifdef COBJMACROS
> +#ifndef WIDL_C_INLINE_WRAPPERS
> +/*** IUnknown methods ***/
> +#define ID3D11VideoDecoderOutputView_QueryInterface(This,riid,ppvObject) 
> (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
> +#define ID3D11VideoDecoderOutputView_AddRef(This) 
> (This)->lpVtbl->AddRef(This)
> +#define ID3D11VideoDecoderOutputView_Release(This) 
> (This)->lpVtbl->Release(This)
> +/*** ID3D11DeviceChild methods ***/
> +#define ID3D11VideoDecoderOutputView_GetDevice(This,ppDevice) 
> (This)->lpVtbl->GetDevice(This,ppDevice)
> +#define 
> ID3D11VideoDecoderOutputView_GetPrivateData(This,guid,pDataSize,pData) 
> (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
> +#define 
> ID3D11VideoDecoderOutputView_SetPrivateData(This,guid,DataSize,pData) 
> (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
> +#define 
> ID3D11VideoDecoderOutputView_SetPrivateDataInterface(This,guid,pData) 
> (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
> +/*** ID3D11View methods ***/
> +#define ID3D11VideoDecoderOutputView_GetResource(This,ppResource) 
> (This)->lpVtbl->GetResource(This,ppResource)
> +/*** ID3D11VideoDecoderOutputView methods ***/
> +#define ID3D11VideoDecoderOutputView_GetDesc(This,pDesc) 
> (This)->lpVtbl->GetDesc(This,pDesc)
> +#else
> +/*** IUnknown methods ***/
> +static FORCEINLINE HRESULT 
> ID3D11VideoDecoderOutputView_QueryInterface(ID3D11VideoDecoderOutputView* 
> This,REFIID riid,void **ppvObject) {
> +    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
> +}
> +static FORCEINLINE ULONG 
> ID3D11VideoDecoderOutputView_AddRef(ID3D11VideoDecoderOutputView* This) {
> +    return This->lpVtbl->AddRef(This);
> +}
> +static FORCEINLINE ULONG 
> ID3D11VideoDecoderOutputView_Release(ID3D11VideoDecoderOutputView* This) {
> +    return This->lpVtbl->Release(This);
> +}
> +/*** ID3D11DeviceChild methods ***/
> +static FORCEINLINE void 
> ID3D11VideoDecoderOutputView_GetDevice(ID3D11VideoDecoderOutputView* 
> This,ID3D11Device **ppDevice) {
> +    This->lpVtbl->GetDevice(This,ppDevice);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDecoderOutputView_GetPrivateData(ID3D11VideoDecoderOutputView* 
> This,REFGUID guid,UINT *pDataSize,void *pData) {
> +    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDecoderOutputView_SetPrivateData(ID3D11VideoDecoderOutputView* 
> This,REFGUID guid,UINT DataSize,const void *pData) {
> +    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDecoderOutputView_SetPrivateDataInterface(ID3D11VideoDecoderOutputView*
>  This,REFGUID guid,const IUnknown *pData) {
> +    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
> +}
> +/*** ID3D11View methods ***/
> +static FORCEINLINE void 
> ID3D11VideoDecoderOutputView_GetResource(ID3D11VideoDecoderOutputView* 
> This,ID3D11Resource **ppResource) {
> +    This->lpVtbl->GetResource(This,ppResource);
> +}
> +/*** ID3D11VideoDecoderOutputView methods ***/
> +static FORCEINLINE void 
> ID3D11VideoDecoderOutputView_GetDesc(ID3D11VideoDecoderOutputView* 
> This,D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc) {
> +    This->lpVtbl->GetDesc(This,pDesc);
> +}
> +#endif
> +#endif
> +
> +#endif
> +
> +void STDMETHODCALLTYPE ID3D11VideoDecoderOutputView_GetDesc_Proxy(
> +    ID3D11VideoDecoderOutputView* This,
> +    D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc);
> +void __RPC_STUB ID3D11VideoDecoderOutputView_GetDesc_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +
> +#endif  /* __ID3D11VideoDecoderOutputView_INTERFACE_DEFINED__ */
> +
> +/*****************************************************************************
> + * ID3D11VideoDecoder interface
> + */
> +#ifndef __ID3D11VideoDecoder_INTERFACE_DEFINED__
> +#define __ID3D11VideoDecoder_INTERFACE_DEFINED__
> +
> +DEFINE_GUID(IID_ID3D11VideoDecoder, 0x3c9c5b51, 0x995d, 0x48d1, 0x9b,0x8d, 
> 0xfa,0x5c,0xae,0xde,0xd6,0x5c);
> +#if defined(__cplusplus) && !defined(CINTERFACE)
> +MIDL_INTERFACE("3c9c5b51-995d-48d1-9b8d-fa5caeded65c")
> +ID3D11VideoDecoder : public ID3D11DeviceChild
> +{
> +};
> +#ifdef __CRT_UUID_DECL
> +__CRT_UUID_DECL(ID3D11VideoDecoder, 0x3c9c5b51, 0x995d, 0x48d1, 0x9b,0x8d, 
> 0xfa,0x5c,0xae,0xde,0xd6,0x5c)
> +#endif
> +#else
> +typedef struct ID3D11VideoDecoderVtbl {
> +    BEGIN_INTERFACE
> +
> +    /*** IUnknown methods ***/
> +    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
> +        ID3D11VideoDecoder* This,
> +        REFIID riid,
> +        void **ppvObject);
> +
> +    ULONG (STDMETHODCALLTYPE *AddRef)(
> +        ID3D11VideoDecoder* This);
> +
> +    ULONG (STDMETHODCALLTYPE *Release)(
> +        ID3D11VideoDecoder* This);
> +
> +    /*** ID3D11DeviceChild methods ***/
> +    void (STDMETHODCALLTYPE *GetDevice)(
> +        ID3D11VideoDecoder* This,
> +        ID3D11Device **ppDevice);
> +
> +    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
> +        ID3D11VideoDecoder* This,
> +        REFGUID guid,
> +        UINT *pDataSize,
> +        void *pData);
> +
> +    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
> +        ID3D11VideoDecoder* This,
> +        REFGUID guid,
> +        UINT DataSize,
> +        const void *pData);
> +
> +    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
> +        ID3D11VideoDecoder* This,
> +        REFGUID guid,
> +        const IUnknown *pData);
> +
> +    END_INTERFACE
> +} ID3D11VideoDecoderVtbl;
> +interface ID3D11VideoDecoder {
> +    CONST_VTBL ID3D11VideoDecoderVtbl* lpVtbl;
> +};
> +
> +#ifdef COBJMACROS
> +#ifndef WIDL_C_INLINE_WRAPPERS
> +/*** IUnknown methods ***/
> +#define ID3D11VideoDecoder_QueryInterface(This,riid,ppvObject) 
> (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
> +#define ID3D11VideoDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
> +#define ID3D11VideoDecoder_Release(This) (This)->lpVtbl->Release(This)
> +/*** ID3D11DeviceChild methods ***/
> +#define ID3D11VideoDecoder_GetDevice(This,ppDevice) 
> (This)->lpVtbl->GetDevice(This,ppDevice)
> +#define ID3D11VideoDecoder_GetPrivateData(This,guid,pDataSize,pData) 
> (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
> +#define ID3D11VideoDecoder_SetPrivateData(This,guid,DataSize,pData) 
> (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
> +#define ID3D11VideoDecoder_SetPrivateDataInterface(This,guid,pData) 
> (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
> +#else
> +/*** IUnknown methods ***/
> +static FORCEINLINE HRESULT 
> ID3D11VideoDecoder_QueryInterface(ID3D11VideoDecoder* This,REFIID riid,void 
> **ppvObject) {
> +    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
> +}
> +static FORCEINLINE ULONG ID3D11VideoDecoder_AddRef(ID3D11VideoDecoder* This) 
> {
> +    return This->lpVtbl->AddRef(This);
> +}
> +static FORCEINLINE ULONG ID3D11VideoDecoder_Release(ID3D11VideoDecoder* 
> This) {
> +    return This->lpVtbl->Release(This);
> +}
> +/*** ID3D11DeviceChild methods ***/
> +static FORCEINLINE void ID3D11VideoDecoder_GetDevice(ID3D11VideoDecoder* 
> This,ID3D11Device **ppDevice) {
> +    This->lpVtbl->GetDevice(This,ppDevice);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDecoder_GetPrivateData(ID3D11VideoDecoder* This,REFGUID guid,UINT 
> *pDataSize,void *pData) {
> +    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDecoder_SetPrivateData(ID3D11VideoDecoder* This,REFGUID guid,UINT 
> DataSize,const void *pData) {
> +    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDecoder_SetPrivateDataInterface(ID3D11VideoDecoder* This,REFGUID 
> guid,const IUnknown *pData) {
> +    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
> +}
> +#endif
> +#endif
> +
> +#endif
> +
> +
> +#endif  /* __ID3D11VideoDecoder_INTERFACE_DEFINED__ */
> +
> +typedef enum D3D11_VIDEO_DECODER_BUFFER_TYPE {
> +    D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
> +    D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL = 1,
> +    D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE = 2,
> +    D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL = 3,
> +    D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX = 4,
> +    D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL = 5,
> +    D3D11_VIDEO_DECODER_BUFFER_BITSTREAM = 6,
> +    D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR = 7,
> +    D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN = 8
> +} D3D11_VIDEO_DECODER_BUFFER_TYPE;
> +typedef struct D3D11_ENCRYPTED_BLOCK_INFO {
> +    UINT NumEncryptedBytesAtBeginning;
> +    UINT NumBytesInSkipPattern;
> +    UINT NumBytesInEncryptPattern;
> +} D3D11_ENCRYPTED_BLOCK_INFO;
> +typedef struct D3D11_VIDEO_DECODER_BUFFER_DESC {
> +    D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType;
> +    UINT BufferIndex;
> +    UINT DataOffset;
> +    UINT DataSize;
> +    UINT FirstMBaddress;
> +    UINT NumMBsInBuffer;
> +    UINT Width;
> +    UINT Height;
> +    UINT Stride;
> +    UINT ReservedBits;
> +    void *pIV;
> +    UINT IVSize;
> +    WINBOOL PartialEncryption;
> +    D3D11_ENCRYPTED_BLOCK_INFO EncryptedBlockInfo;
> +} D3D11_VIDEO_DECODER_BUFFER_DESC;
> +/*****************************************************************************
> + * ID3D11VideoContext interface
> + */
> +#ifndef __ID3D11VideoContext_INTERFACE_DEFINED__
> +#define __ID3D11VideoContext_INTERFACE_DEFINED__
> +
> +DEFINE_GUID(IID_ID3D11VideoContext, 0x61f21c45, 0x3c0e, 0x4a74, 0x9c,0xea, 
> 0x67,0x10,0x0d,0x9a,0xd5,0xe4);
> +#if defined(__cplusplus) && !defined(CINTERFACE)
> +MIDL_INTERFACE("61f21c45-3c0e-4a74-9cea-67100d9ad5e4")
> +ID3D11VideoContext : public ID3D11DeviceChild
> +{
> +    virtual HRESULT STDMETHODCALLTYPE GetDecoderBuffer(
> +        ID3D11VideoDecoder *pDecoder,
> +        D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType,
> +        UINT *pBufferSize,
> +        void **ppBuffer) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE ReleaseDecoderBuffer(
> +        ID3D11VideoDecoder *pDecoder,
> +        D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE DecoderBeginFrame(
> +        ID3D11VideoDecoder *pDecoder,
> +        ID3D11VideoDecoderOutputView *pVideoDecoderOutputView,
> +        UINT ContentKeySize,
> +        const void *pContentKey) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE DecoderEndFrame(
> +        ID3D11VideoDecoder *pDecoder) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE SubmitDecoderBuffers(
> +        ID3D11VideoDecoder *pDecoder,
> +        UINT NumBuffers,
> +        const D3D11_VIDEO_DECODER_BUFFER_DESC *pBufferDesc) = 0;
> +
> +};
> +#ifdef __CRT_UUID_DECL
> +__CRT_UUID_DECL(ID3D11VideoContext, 0x61f21c45, 0x3c0e, 0x4a74, 0x9c,0xea, 
> 0x67,0x10,0x0d,0x9a,0xd5,0xe4)
> +#endif
> +#else
> +typedef struct ID3D11VideoContextVtbl {
> +    BEGIN_INTERFACE
> +
> +    /*** IUnknown methods ***/
> +    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
> +        ID3D11VideoContext* This,
> +        REFIID riid,
> +        void **ppvObject);
> +
> +    ULONG (STDMETHODCALLTYPE *AddRef)(
> +        ID3D11VideoContext* This);
> +
> +    ULONG (STDMETHODCALLTYPE *Release)(
> +        ID3D11VideoContext* This);
> +
> +    /*** ID3D11DeviceChild methods ***/
> +    void (STDMETHODCALLTYPE *GetDevice)(
> +        ID3D11VideoContext* This,
> +        ID3D11Device **ppDevice);
> +
> +    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
> +        ID3D11VideoContext* This,
> +        REFGUID guid,
> +        UINT *pDataSize,
> +        void *pData);
> +
> +    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
> +        ID3D11VideoContext* This,
> +        REFGUID guid,
> +        UINT DataSize,
> +        const void *pData);
> +
> +    HRESULT (STDMETHODCALLTYPE *SetPrivateDataInterface)(
> +        ID3D11VideoContext* This,
> +        REFGUID guid,
> +        const IUnknown *pData);
> +
> +    /*** ID3D11VideoContext methods ***/
> +    HRESULT (STDMETHODCALLTYPE *GetDecoderBuffer)(
> +        ID3D11VideoContext* This,
> +        ID3D11VideoDecoder *pDecoder,
> +        D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType,
> +        UINT *pBufferSize,
> +        void **ppBuffer);
> +
> +    HRESULT (STDMETHODCALLTYPE *ReleaseDecoderBuffer)(
> +        ID3D11VideoContext* This,
> +        ID3D11VideoDecoder *pDecoder,
> +        D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType);
> +
> +    HRESULT (STDMETHODCALLTYPE *DecoderBeginFrame)(
> +        ID3D11VideoContext* This,
> +        ID3D11VideoDecoder *pDecoder,
> +        ID3D11VideoDecoderOutputView *pVideoDecoderOutputView,
> +        UINT ContentKeySize,
> +        const void *pContentKey);
> +
> +    HRESULT (STDMETHODCALLTYPE *DecoderEndFrame)(
> +        ID3D11VideoContext* This,
> +        ID3D11VideoDecoder *pDecoder);
> +
> +    HRESULT (STDMETHODCALLTYPE *SubmitDecoderBuffers)(
> +        ID3D11VideoContext* This,
> +        ID3D11VideoDecoder *pDecoder,
> +        UINT NumBuffers,
> +        const D3D11_VIDEO_DECODER_BUFFER_DESC *pBufferDesc);
> +
> +    END_INTERFACE
> +} ID3D11VideoContextVtbl;
> +interface ID3D11VideoContext {
> +    CONST_VTBL ID3D11VideoContextVtbl* lpVtbl;
> +};
> +
> +#ifdef COBJMACROS
> +#ifndef WIDL_C_INLINE_WRAPPERS
> +/*** IUnknown methods ***/
> +#define ID3D11VideoContext_QueryInterface(This,riid,ppvObject) 
> (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
> +#define ID3D11VideoContext_AddRef(This) (This)->lpVtbl->AddRef(This)
> +#define ID3D11VideoContext_Release(This) (This)->lpVtbl->Release(This)
> +/*** ID3D11DeviceChild methods ***/
> +#define ID3D11VideoContext_GetDevice(This,ppDevice) 
> (This)->lpVtbl->GetDevice(This,ppDevice)
> +#define ID3D11VideoContext_GetPrivateData(This,guid,pDataSize,pData) 
> (This)->lpVtbl->GetPrivateData(This,guid,pDataSize,pData)
> +#define ID3D11VideoContext_SetPrivateData(This,guid,DataSize,pData) 
> (This)->lpVtbl->SetPrivateData(This,guid,DataSize,pData)
> +#define ID3D11VideoContext_SetPrivateDataInterface(This,guid,pData) 
> (This)->lpVtbl->SetPrivateDataInterface(This,guid,pData)
> +/*** ID3D11VideoContext methods ***/
> +#define 
> ID3D11VideoContext_GetDecoderBuffer(This,pDecoder,BufferType,pBufferSize,ppBuffer)
>  
> (This)->lpVtbl->GetDecoderBuffer(This,pDecoder,BufferType,pBufferSize,ppBuffer)
> +#define ID3D11VideoContext_ReleaseDecoderBuffer(This,pDecoder,BufferType) 
> (This)->lpVtbl->ReleaseDecoderBuffer(This,pDecoder,BufferType)
> +#define 
> ID3D11VideoContext_DecoderBeginFrame(This,pDecoder,pVideoDecoderOutputView,ContentKeySize,pContentKey)
>  
> (This)->lpVtbl->DecoderBeginFrame(This,pDecoder,pVideoDecoderOutputView,ContentKeySize,pContentKey)
> +#define ID3D11VideoContext_DecoderEndFrame(This,pDecoder) 
> (This)->lpVtbl->DecoderEndFrame(This,pDecoder)
> +#define 
> ID3D11VideoContext_SubmitDecoderBuffers(This,pDecoder,NumBuffers,pBufferDesc) 
> (This)->lpVtbl->SubmitDecoderBuffers(This,pDecoder,NumBuffers,pBufferDesc)
> +#else
> +/*** IUnknown methods ***/
> +static FORCEINLINE HRESULT 
> ID3D11VideoContext_QueryInterface(ID3D11VideoContext* This,REFIID riid,void 
> **ppvObject) {
> +    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
> +}
> +static FORCEINLINE ULONG ID3D11VideoContext_AddRef(ID3D11VideoContext* This) 
> {
> +    return This->lpVtbl->AddRef(This);
> +}
> +static FORCEINLINE ULONG ID3D11VideoContext_Release(ID3D11VideoContext* 
> This) {
> +    return This->lpVtbl->Release(This);
> +}
> +/*** ID3D11DeviceChild methods ***/
> +static FORCEINLINE void ID3D11VideoContext_GetDevice(ID3D11VideoContext* 
> This,ID3D11Device **ppDevice) {
> +    This->lpVtbl->GetDevice(This,ppDevice);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoContext_GetPrivateData(ID3D11VideoContext* This,REFGUID guid,UINT 
> *pDataSize,void *pData) {
> +    return This->lpVtbl->GetPrivateData(This,guid,pDataSize,pData);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoContext_SetPrivateData(ID3D11VideoContext* This,REFGUID guid,UINT 
> DataSize,const void *pData) {
> +    return This->lpVtbl->SetPrivateData(This,guid,DataSize,pData);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoContext_SetPrivateDataInterface(ID3D11VideoContext* This,REFGUID 
> guid,const IUnknown *pData) {
> +    return This->lpVtbl->SetPrivateDataInterface(This,guid,pData);
> +}
> +/*** ID3D11VideoContext methods ***/
> +static FORCEINLINE HRESULT 
> ID3D11VideoContext_GetDecoderBuffer(ID3D11VideoContext* 
> This,ID3D11VideoDecoder *pDecoder,D3D11_VIDEO_DECODER_BUFFER_TYPE 
> BufferType,UINT *pBufferSize,void **ppBuffer) {
> +    return 
> This->lpVtbl->GetDecoderBuffer(This,pDecoder,BufferType,pBufferSize,ppBuffer);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoContext_ReleaseDecoderBuffer(ID3D11VideoContext* 
> This,ID3D11VideoDecoder *pDecoder,D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType) 
> {
> +    return This->lpVtbl->ReleaseDecoderBuffer(This,pDecoder,BufferType);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoContext_DecoderBeginFrame(ID3D11VideoContext* 
> This,ID3D11VideoDecoder *pDecoder,ID3D11VideoDecoderOutputView 
> *pVideoDecoderOutputView,UINT ContentKeySize,const void *pContentKey) {
> +    return 
> This->lpVtbl->DecoderBeginFrame(This,pDecoder,pVideoDecoderOutputView,ContentKeySize,pContentKey);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoContext_DecoderEndFrame(ID3D11VideoContext* 
> This,ID3D11VideoDecoder *pDecoder) {
> +    return This->lpVtbl->DecoderEndFrame(This,pDecoder);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoContext_SubmitDecoderBuffers(ID3D11VideoContext* 
> This,ID3D11VideoDecoder *pDecoder,UINT NumBuffers,const 
> D3D11_VIDEO_DECODER_BUFFER_DESC *pBufferDesc) {
> +    return 
> This->lpVtbl->SubmitDecoderBuffers(This,pDecoder,NumBuffers,pBufferDesc);
> +}
> +#endif
> +#endif
> +
> +#endif
> +
> +HRESULT STDMETHODCALLTYPE ID3D11VideoContext_GetDecoderBuffer_Proxy(
> +    ID3D11VideoContext* This,
> +    ID3D11VideoDecoder *pDecoder,
> +    D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType,
> +    UINT *pBufferSize,
> +    void **ppBuffer);
> +void __RPC_STUB ID3D11VideoContext_GetDecoderBuffer_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoContext_ReleaseDecoderBuffer_Proxy(
> +    ID3D11VideoContext* This,
> +    ID3D11VideoDecoder *pDecoder,
> +    D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType);
> +void __RPC_STUB ID3D11VideoContext_ReleaseDecoderBuffer_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoContext_DecoderBeginFrame_Proxy(
> +    ID3D11VideoContext* This,
> +    ID3D11VideoDecoder *pDecoder,
> +    ID3D11VideoDecoderOutputView *pVideoDecoderOutputView,
> +    UINT ContentKeySize,
> +    const void *pContentKey);
> +void __RPC_STUB ID3D11VideoContext_DecoderBeginFrame_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoContext_DecoderEndFrame_Proxy(
> +    ID3D11VideoContext* This,
> +    ID3D11VideoDecoder *pDecoder);
> +void __RPC_STUB ID3D11VideoContext_DecoderEndFrame_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoContext_SubmitDecoderBuffers_Proxy(
> +    ID3D11VideoContext* This,
> +    ID3D11VideoDecoder *pDecoder,
> +    UINT NumBuffers,
> +    const D3D11_VIDEO_DECODER_BUFFER_DESC *pBufferDesc);
> +void __RPC_STUB ID3D11VideoContext_SubmitDecoderBuffers_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +
> +#endif  /* __ID3D11VideoContext_INTERFACE_DEFINED__ */
> +
> +typedef struct D3D11_VIDEO_DECODER_DESC {
> +    GUID Guid;
> +    UINT SampleWidth;
> +    UINT SampleHeight;
> +    DXGI_FORMAT OutputFormat;
> +} D3D11_VIDEO_DECODER_DESC;
> +typedef struct D3D11_VIDEO_DECODER_CONFIG {
> +    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;
> +} D3D11_VIDEO_DECODER_CONFIG;
> +typedef enum D3D11_AUTHENTICATED_CHANNEL_TYPE {
> +    D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1,
> +    D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE = 2,
> +    D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE = 3
> +} D3D11_AUTHENTICATED_CHANNEL_TYPE;
> +/*****************************************************************************
> + * ID3D11VideoDevice interface
> + */
> +#ifndef __ID3D11VideoDevice_INTERFACE_DEFINED__
> +#define __ID3D11VideoDevice_INTERFACE_DEFINED__
> +
> +DEFINE_GUID(IID_ID3D11VideoDevice, 0x10ec4d5b, 0x975a, 0x4689, 0xb9,0xe4, 
> 0xd0,0xaa,0xc3,0x0f,0xe3,0x33);
> +#if defined(__cplusplus) && !defined(CINTERFACE)
> +MIDL_INTERFACE("10ec4d5b-975a-4689-b9e4-d0aac30fe333")
> +ID3D11VideoDevice : public IUnknown
> +{
> +    virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoder(
> +        const D3D11_VIDEO_DECODER_DESC *pVideoDesc,
> +        const D3D11_VIDEO_DECODER_CONFIG *pConfig,
> +        ID3D11VideoDecoder **ppVideoDecoder) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessor(
> +        void *pEnumerator,
> +        UINT RateConversionIndex,
> +        void **ppVideoProcessor) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE CreateAuthenticatedChannel(
> +        D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
> +        void **ppAuthenticatedChannel) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE CreateCryptoSession(
> +        const GUID *pCryptoType,
> +        const GUID *pDecoderProfile,
> +        const GUID *pKeyExchangeType,
> +        void **ppCryptoSession) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE CreateVideoDecoderOutputView(
> +        ID3D11Resource *pResource,
> +        const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,
> +        ID3D11VideoDecoderOutputView **ppVideoDecoderOutputView) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessorInputView(
> +        ID3D11Resource *pResource,
> +        void *pEnum,
> +        const void *pProcDesc,
> +        void **ppVPIView) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessorOutputView(
> +        ID3D11Resource *pResource,
> +        void *pEnum,
> +        const void *pDesc,
> +        void **ppVPOView) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessorEnumerator(
> +        const void *pDesc,
> +        void **ppEnum) = 0;
> +
> +    virtual UINT STDMETHODCALLTYPE GetVideoDecoderProfileCount(
> +        ) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderProfile(
> +        UINT Index,
> +        GUID *pDecoderProfile) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE CheckVideoDecoderFormat(
> +        const GUID *pDecoderProfile,
> +        DXGI_FORMAT Format,
> +        WINBOOL *pSupported) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderConfigCount(
> +        const D3D11_VIDEO_DECODER_DESC *pDesc,
> +        UINT *pCount) = 0;
> +
> +    virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderConfig(
> +        const D3D11_VIDEO_DECODER_DESC *pDesc,
> +        UINT Index,
> +        D3D11_VIDEO_DECODER_CONFIG *pConfig) = 0;
> +
> +};
> +#ifdef __CRT_UUID_DECL
> +__CRT_UUID_DECL(ID3D11VideoDevice, 0x10ec4d5b, 0x975a, 0x4689, 0xb9,0xe4, 
> 0xd0,0xaa,0xc3,0x0f,0xe3,0x33)
> +#endif
> +#else
> +typedef struct ID3D11VideoDeviceVtbl {
> +    BEGIN_INTERFACE
> +
> +    /*** IUnknown methods ***/
> +    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
> +        ID3D11VideoDevice* This,
> +        REFIID riid,
> +        void **ppvObject);
> +
> +    ULONG (STDMETHODCALLTYPE *AddRef)(
> +        ID3D11VideoDevice* This);
> +
> +    ULONG (STDMETHODCALLTYPE *Release)(
> +        ID3D11VideoDevice* This);
> +
> +    /*** ID3D11VideoDevice methods ***/
> +    HRESULT (STDMETHODCALLTYPE *CreateVideoDecoder)(
> +        ID3D11VideoDevice* This,
> +        const D3D11_VIDEO_DECODER_DESC *pVideoDesc,
> +        const D3D11_VIDEO_DECODER_CONFIG *pConfig,
> +        ID3D11VideoDecoder **ppVideoDecoder);
> +
> +    HRESULT (STDMETHODCALLTYPE *CreateVideoProcessor)(
> +        ID3D11VideoDevice* This,
> +        void *pEnumerator,
> +        UINT RateConversionIndex,
> +        void **ppVideoProcessor);
> +
> +    HRESULT (STDMETHODCALLTYPE *CreateAuthenticatedChannel)(
> +        ID3D11VideoDevice* This,
> +        D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
> +        void **ppAuthenticatedChannel);
> +
> +    HRESULT (STDMETHODCALLTYPE *CreateCryptoSession)(
> +        ID3D11VideoDevice* This,
> +        const GUID *pCryptoType,
> +        const GUID *pDecoderProfile,
> +        const GUID *pKeyExchangeType,
> +        void **ppCryptoSession);
> +
> +    HRESULT (STDMETHODCALLTYPE *CreateVideoDecoderOutputView)(
> +        ID3D11VideoDevice* This,
> +        ID3D11Resource *pResource,
> +        const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,
> +        ID3D11VideoDecoderOutputView **ppVideoDecoderOutputView);
> +
> +    HRESULT (STDMETHODCALLTYPE *CreateVideoProcessorInputView)(
> +        ID3D11VideoDevice* This,
> +        ID3D11Resource *pResource,
> +        void *pEnum,
> +        const void *pProcDesc,
> +        void **ppVPIView);
> +
> +    HRESULT (STDMETHODCALLTYPE *CreateVideoProcessorOutputView)(
> +        ID3D11VideoDevice* This,
> +        ID3D11Resource *pResource,
> +        void *pEnum,
> +        const void *pDesc,
> +        void **ppVPOView);
> +
> +    HRESULT (STDMETHODCALLTYPE *CreateVideoProcessorEnumerator)(
> +        ID3D11VideoDevice* This,
> +        const void *pDesc,
> +        void **ppEnum);
> +
> +    UINT (STDMETHODCALLTYPE *GetVideoDecoderProfileCount)(
> +        ID3D11VideoDevice* This);
> +
> +    HRESULT (STDMETHODCALLTYPE *GetVideoDecoderProfile)(
> +        ID3D11VideoDevice* This,
> +        UINT Index,
> +        GUID *pDecoderProfile);
> +
> +    HRESULT (STDMETHODCALLTYPE *CheckVideoDecoderFormat)(
> +        ID3D11VideoDevice* This,
> +        const GUID *pDecoderProfile,
> +        DXGI_FORMAT Format,
> +        WINBOOL *pSupported);
> +
> +    HRESULT (STDMETHODCALLTYPE *GetVideoDecoderConfigCount)(
> +        ID3D11VideoDevice* This,
> +        const D3D11_VIDEO_DECODER_DESC *pDesc,
> +        UINT *pCount);
> +
> +    HRESULT (STDMETHODCALLTYPE *GetVideoDecoderConfig)(
> +        ID3D11VideoDevice* This,
> +        const D3D11_VIDEO_DECODER_DESC *pDesc,
> +        UINT Index,
> +        D3D11_VIDEO_DECODER_CONFIG *pConfig);
> +
> +    END_INTERFACE
> +} ID3D11VideoDeviceVtbl;
> +interface ID3D11VideoDevice {
> +    CONST_VTBL ID3D11VideoDeviceVtbl* lpVtbl;
> +};
> +
> +#ifdef COBJMACROS
> +#ifndef WIDL_C_INLINE_WRAPPERS
> +/*** IUnknown methods ***/
> +#define ID3D11VideoDevice_QueryInterface(This,riid,ppvObject) 
> (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
> +#define ID3D11VideoDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
> +#define ID3D11VideoDevice_Release(This) (This)->lpVtbl->Release(This)
> +/*** ID3D11VideoDevice methods ***/
> +#define 
> ID3D11VideoDevice_CreateVideoDecoder(This,pVideoDesc,pConfig,ppVideoDecoder) 
> (This)->lpVtbl->CreateVideoDecoder(This,pVideoDesc,pConfig,ppVideoDecoder)
> +#define 
> ID3D11VideoDevice_CreateVideoProcessor(This,pEnumerator,RateConversionIndex,ppVideoProcessor)
>  
> (This)->lpVtbl->CreateVideoProcessor(This,pEnumerator,RateConversionIndex,ppVideoProcessor)
> +#define 
> ID3D11VideoDevice_CreateAuthenticatedChannel(This,ChannelType,ppAuthenticatedChannel)
>  
> (This)->lpVtbl->CreateAuthenticatedChannel(This,ChannelType,ppAuthenticatedChannel)
> +#define 
> ID3D11VideoDevice_CreateCryptoSession(This,pCryptoType,pDecoderProfile,pKeyExchangeType,ppCryptoSession)
>  
> (This)->lpVtbl->CreateCryptoSession(This,pCryptoType,pDecoderProfile,pKeyExchangeType,ppCryptoSession)
> +#define 
> ID3D11VideoDevice_CreateVideoDecoderOutputView(This,pResource,pDesc,ppVideoDecoderOutputView)
>  
> (This)->lpVtbl->CreateVideoDecoderOutputView(This,pResource,pDesc,ppVideoDecoderOutputView)
> +#define 
> ID3D11VideoDevice_CreateVideoProcessorInputView(This,pResource,pEnum,pProcDesc,ppVPIView)
>  
> (This)->lpVtbl->CreateVideoProcessorInputView(This,pResource,pEnum,pProcDesc,ppVPIView)
> +#define 
> ID3D11VideoDevice_CreateVideoProcessorOutputView(This,pResource,pEnum,pDesc,ppVPOView)
>  
> (This)->lpVtbl->CreateVideoProcessorOutputView(This,pResource,pEnum,pDesc,ppVPOView)
> +#define ID3D11VideoDevice_CreateVideoProcessorEnumerator(This,pDesc,ppEnum) 
> (This)->lpVtbl->CreateVideoProcessorEnumerator(This,pDesc,ppEnum)
> +#define ID3D11VideoDevice_GetVideoDecoderProfileCount(This) 
> (This)->lpVtbl->GetVideoDecoderProfileCount(This)
> +#define ID3D11VideoDevice_GetVideoDecoderProfile(This,Index,pDecoderProfile) 
> (This)->lpVtbl->GetVideoDecoderProfile(This,Index,pDecoderProfile)
> +#define 
> ID3D11VideoDevice_CheckVideoDecoderFormat(This,pDecoderProfile,Format,pSupported)
>  
> (This)->lpVtbl->CheckVideoDecoderFormat(This,pDecoderProfile,Format,pSupported)
> +#define ID3D11VideoDevice_GetVideoDecoderConfigCount(This,pDesc,pCount) 
> (This)->lpVtbl->GetVideoDecoderConfigCount(This,pDesc,pCount)
> +#define ID3D11VideoDevice_GetVideoDecoderConfig(This,pDesc,Index,pConfig) 
> (This)->lpVtbl->GetVideoDecoderConfig(This,pDesc,Index,pConfig)
> +#else
> +/*** IUnknown methods ***/
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_QueryInterface(ID3D11VideoDevice* This,REFIID riid,void 
> **ppvObject) {
> +    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
> +}
> +static FORCEINLINE ULONG ID3D11VideoDevice_AddRef(ID3D11VideoDevice* This) {
> +    return This->lpVtbl->AddRef(This);
> +}
> +static FORCEINLINE ULONG ID3D11VideoDevice_Release(ID3D11VideoDevice* This) {
> +    return This->lpVtbl->Release(This);
> +}
> +/*** ID3D11VideoDevice methods ***/
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_CreateVideoDecoder(ID3D11VideoDevice* This,const 
> D3D11_VIDEO_DECODER_DESC *pVideoDesc,const D3D11_VIDEO_DECODER_CONFIG 
> *pConfig,ID3D11VideoDecoder **ppVideoDecoder) {
> +    return 
> This->lpVtbl->CreateVideoDecoder(This,pVideoDesc,pConfig,ppVideoDecoder);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_CreateVideoProcessor(ID3D11VideoDevice* This,void 
> *pEnumerator,UINT RateConversionIndex,void **ppVideoProcessor) {
> +    return 
> This->lpVtbl->CreateVideoProcessor(This,pEnumerator,RateConversionIndex,ppVideoProcessor);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_CreateAuthenticatedChannel(ID3D11VideoDevice* 
> This,D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,void 
> **ppAuthenticatedChannel) {
> +    return 
> This->lpVtbl->CreateAuthenticatedChannel(This,ChannelType,ppAuthenticatedChannel);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_CreateCryptoSession(ID3D11VideoDevice* This,const GUID 
> *pCryptoType,const GUID *pDecoderProfile,const GUID *pKeyExchangeType,void 
> **ppCryptoSession) {
> +    return 
> This->lpVtbl->CreateCryptoSession(This,pCryptoType,pDecoderProfile,pKeyExchangeType,ppCryptoSession);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_CreateVideoDecoderOutputView(ID3D11VideoDevice* 
> This,ID3D11Resource *pResource,const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC 
> *pDesc,ID3D11VideoDecoderOutputView **ppVideoDecoderOutputView) {
> +    return 
> This->lpVtbl->CreateVideoDecoderOutputView(This,pResource,pDesc,ppVideoDecoderOutputView);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_CreateVideoProcessorInputView(ID3D11VideoDevice* 
> This,ID3D11Resource *pResource,void *pEnum,const void *pProcDesc,void 
> **ppVPIView) {
> +    return 
> This->lpVtbl->CreateVideoProcessorInputView(This,pResource,pEnum,pProcDesc,ppVPIView);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_CreateVideoProcessorOutputView(ID3D11VideoDevice* 
> This,ID3D11Resource *pResource,void *pEnum,const void *pDesc,void 
> **ppVPOView) {
> +    return 
> This->lpVtbl->CreateVideoProcessorOutputView(This,pResource,pEnum,pDesc,ppVPOView);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_CreateVideoProcessorEnumerator(ID3D11VideoDevice* 
> This,const void *pDesc,void **ppEnum) {
> +    return This->lpVtbl->CreateVideoProcessorEnumerator(This,pDesc,ppEnum);
> +}
> +static FORCEINLINE UINT 
> ID3D11VideoDevice_GetVideoDecoderProfileCount(ID3D11VideoDevice* This) {
> +    return This->lpVtbl->GetVideoDecoderProfileCount(This);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_GetVideoDecoderProfile(ID3D11VideoDevice* This,UINT 
> Index,GUID *pDecoderProfile) {
> +    return This->lpVtbl->GetVideoDecoderProfile(This,Index,pDecoderProfile);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_CheckVideoDecoderFormat(ID3D11VideoDevice* This,const GUID 
> *pDecoderProfile,DXGI_FORMAT Format,WINBOOL *pSupported) {
> +    return 
> This->lpVtbl->CheckVideoDecoderFormat(This,pDecoderProfile,Format,pSupported);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_GetVideoDecoderConfigCount(ID3D11VideoDevice* This,const 
> D3D11_VIDEO_DECODER_DESC *pDesc,UINT *pCount) {
> +    return This->lpVtbl->GetVideoDecoderConfigCount(This,pDesc,pCount);
> +}
> +static FORCEINLINE HRESULT 
> ID3D11VideoDevice_GetVideoDecoderConfig(ID3D11VideoDevice* This,const 
> D3D11_VIDEO_DECODER_DESC *pDesc,UINT Index,D3D11_VIDEO_DECODER_CONFIG 
> *pConfig) {
> +    return This->lpVtbl->GetVideoDecoderConfig(This,pDesc,Index,pConfig);
> +}
> +#endif
> +#endif
> +
> +#endif
> +
> +HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateVideoDecoder_Proxy(
> +    ID3D11VideoDevice* This,
> +    const D3D11_VIDEO_DECODER_DESC *pVideoDesc,
> +    const D3D11_VIDEO_DECODER_CONFIG *pConfig,
> +    ID3D11VideoDecoder **ppVideoDecoder);
> +void __RPC_STUB ID3D11VideoDevice_CreateVideoDecoder_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateVideoProcessor_Proxy(
> +    ID3D11VideoDevice* This,
> +    void *pEnumerator,
> +    UINT RateConversionIndex,
> +    void **ppVideoProcessor);
> +void __RPC_STUB ID3D11VideoDevice_CreateVideoProcessor_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateAuthenticatedChannel_Proxy(
> +    ID3D11VideoDevice* This,
> +    D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
> +    void **ppAuthenticatedChannel);
> +void __RPC_STUB ID3D11VideoDevice_CreateAuthenticatedChannel_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateCryptoSession_Proxy(
> +    ID3D11VideoDevice* This,
> +    const GUID *pCryptoType,
> +    const GUID *pDecoderProfile,
> +    const GUID *pKeyExchangeType,
> +    void **ppCryptoSession);
> +void __RPC_STUB ID3D11VideoDevice_CreateCryptoSession_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE 
> ID3D11VideoDevice_CreateVideoDecoderOutputView_Proxy(
> +    ID3D11VideoDevice* This,
> +    ID3D11Resource *pResource,
> +    const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,
> +    ID3D11VideoDecoderOutputView **ppVideoDecoderOutputView);
> +void __RPC_STUB ID3D11VideoDevice_CreateVideoDecoderOutputView_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE 
> ID3D11VideoDevice_CreateVideoProcessorInputView_Proxy(
> +    ID3D11VideoDevice* This,
> +    ID3D11Resource *pResource,
> +    void *pEnum,
> +    const void *pProcDesc,
> +    void **ppVPIView);
> +void __RPC_STUB ID3D11VideoDevice_CreateVideoProcessorInputView_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE 
> ID3D11VideoDevice_CreateVideoProcessorOutputView_Proxy(
> +    ID3D11VideoDevice* This,
> +    ID3D11Resource *pResource,
> +    void *pEnum,
> +    const void *pDesc,
> +    void **ppVPOView);
> +void __RPC_STUB ID3D11VideoDevice_CreateVideoProcessorOutputView_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE 
> ID3D11VideoDevice_CreateVideoProcessorEnumerator_Proxy(
> +    ID3D11VideoDevice* This,
> +    const void *pDesc,
> +    void **ppEnum);
> +void __RPC_STUB ID3D11VideoDevice_CreateVideoProcessorEnumerator_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +UINT STDMETHODCALLTYPE ID3D11VideoDevice_GetVideoDecoderProfileCount_Proxy(
> +    ID3D11VideoDevice* This);
> +void __RPC_STUB ID3D11VideoDevice_GetVideoDecoderProfileCount_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_GetVideoDecoderProfile_Proxy(
> +    ID3D11VideoDevice* This,
> +    UINT Index,
> +    GUID *pDecoderProfile);
> +void __RPC_STUB ID3D11VideoDevice_GetVideoDecoderProfile_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CheckVideoDecoderFormat_Proxy(
> +    ID3D11VideoDevice* This,
> +    const GUID *pDecoderProfile,
> +    DXGI_FORMAT Format,
> +    WINBOOL *pSupported);
> +void __RPC_STUB ID3D11VideoDevice_CheckVideoDecoderFormat_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_GetVideoDecoderConfigCount_Proxy(
> +    ID3D11VideoDevice* This,
> +    const D3D11_VIDEO_DECODER_DESC *pDesc,
> +    UINT *pCount);
> +void __RPC_STUB ID3D11VideoDevice_GetVideoDecoderConfigCount_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_GetVideoDecoderConfig_Proxy(
> +    ID3D11VideoDevice* This,
> +    const D3D11_VIDEO_DECODER_DESC *pDesc,
> +    UINT Index,
> +    D3D11_VIDEO_DECODER_CONFIG *pConfig);
> +void __RPC_STUB ID3D11VideoDevice_GetVideoDecoderConfig_Stub(
> +    IRpcStubBuffer* This,
> +    IRpcChannelBuffer* pRpcChannelBuffer,
> +    PRPC_MESSAGE pRpcMessage,
> +    DWORD* pdwStubPhase);
> +
> +#endif  /* __ID3D11VideoDevice_INTERFACE_DEFINED__ */
> +
>  typedef enum D3D11_CREATE_DEVICE_FLAG {
>      D3D11_CREATE_DEVICE_SINGLETHREADED = 0x1,
>      D3D11_CREATE_DEVICE_DEBUG = 0x2,
> diff --git a/mingw-w64-headers/direct-x/include/d3d11.idl 
> b/mingw-w64-headers/direct-x/include/d3d11.idl
> index c187463..32c5372 100644
> --- a/mingw-w64-headers/direct-x/include/d3d11.idl
> +++ b/mingw-w64-headers/direct-x/include/d3d11.idl
> @@ -2125,6 +2125,207 @@ interface ID3D11Device : IUnknown
>      UINT GetExceptionMode();
>  }
>
> +typedef enum D3D11_VDOV_DIMENSION
> +{
> +    D3D11_VDOV_DIMENSION_UNKNOWN = 0,
> +    D3D11_VDOV_DIMENSION_TEXTURE2D
> +} D3D11_VDOV_DIMENSION;
> +
> +typedef struct D3D11_TEX2D_VDOV
> +{
> +    UINT ArraySlice;
> +} D3D11_TEX2D_VDOV;
> +
> +typedef struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC
> +{
> +    GUID DecodeProfile;
> +    D3D11_VDOV_DIMENSION ViewDimension;
> +
> +    union
> +    {
> +        D3D11_TEX2D_VDOV Texture2D;
> +    };
> +} D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC;
> +
> +[
> +    object,
> +    local,
> +    uuid(c2931aea-2a85-4f20-860f-fba1fd256e18)
> +]
> +interface ID3D11VideoDecoderOutputView : ID3D11View
> +{
> +    void GetDesc(
> +        [out] D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc );
> +}
> +
> +[
> +    object,
> +    local,
> +    uuid(3c9c5b51-995d-48d1-9b8d-fa5caeded65c)
> +]
> +interface ID3D11VideoDecoder : ID3D11DeviceChild
> +{
> +}
> +
> +typedef enum D3D11_VIDEO_DECODER_BUFFER_TYPE
> +{
> +    D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
> +    D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL,
> +    D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE,
> +    D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL,
> +    D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX,
> +    D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL,
> +    D3D11_VIDEO_DECODER_BUFFER_BITSTREAM,
> +    D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR,
> +    D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN
> +} D3D11_VIDEO_DECODER_BUFFER_TYPE;
> +
> +typedef struct D3D11_ENCRYPTED_BLOCK_INFO
> +{
> +    UINT NumEncryptedBytesAtBeginning;
> +    UINT NumBytesInSkipPattern;
> +    UINT NumBytesInEncryptPattern;
> +} D3D11_ENCRYPTED_BLOCK_INFO;
> +
> +typedef struct D3D11_VIDEO_DECODER_BUFFER_DESC
> +{
> +    D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType;
> +    UINT BufferIndex;
> +    UINT DataOffset;
> +    UINT DataSize;
> +    UINT FirstMBaddress;
> +    UINT NumMBsInBuffer;
> +    UINT Width;
> +    UINT Height;
> +    UINT Stride;
> +    UINT ReservedBits;
> +    void *pIV;
> +    UINT IVSize;
> +    BOOL PartialEncryption;
> +    D3D11_ENCRYPTED_BLOCK_INFO EncryptedBlockInfo;
> +} D3D11_VIDEO_DECODER_BUFFER_DESC;
> +
> +[
> +    object,
> +    local,
> +    uuid(61f21c45-3c0e-4a74-9cea-67100d9ad5e4)
> +]
> +interface ID3D11VideoContext : ID3D11DeviceChild
> +{
> +    HRESULT GetDecoderBuffer(
> +        [in] ID3D11VideoDecoder *pDecoder,
> +        [in] D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType,
> +        [out] UINT *pBufferSize,
> +        [out] void **ppBuffer);
> +    HRESULT ReleaseDecoderBuffer(
> +        [in] ID3D11VideoDecoder *pDecoder,
> +        [in] D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType);
> +    HRESULT DecoderBeginFrame(
> +        [in] ID3D11VideoDecoder *pDecoder,
> +        [in] ID3D11VideoDecoderOutputView *pVideoDecoderOutputView,
> +        [in] UINT ContentKeySize,
> +        [in] const void *pContentKey);
> +    HRESULT DecoderEndFrame(
> +        [in] ID3D11VideoDecoder *pDecoder);
> +    HRESULT SubmitDecoderBuffers(
> +        [in] ID3D11VideoDecoder *pDecoder,
> +        [in] UINT NumBuffers,
> +        [in] const D3D11_VIDEO_DECODER_BUFFER_DESC *pBufferDesc);
> +}
> +
> +typedef struct D3D11_VIDEO_DECODER_DESC
> +{
> +    GUID Guid;
> +    UINT SampleWidth;
> +    UINT SampleHeight;
> +    DXGI_FORMAT OutputFormat;
> +} D3D11_VIDEO_DECODER_DESC;
> +
> +typedef struct D3D11_VIDEO_DECODER_CONFIG
> +{
> +    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;
> +} D3D11_VIDEO_DECODER_CONFIG;
> +
> +typedef enum D3D11_AUTHENTICATED_CHANNEL_TYPE
> +{
> +    D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1,
> +    D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE,
> +    D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE
> +} D3D11_AUTHENTICATED_CHANNEL_TYPE;
> +
> +[
> +    object,
> +    local,
> +    uuid(10ec4d5b-975a-4689-b9e4-d0aac30fe333)
> +]
> +interface ID3D11VideoDevice : IUnknown
> +{
> +    HRESULT CreateVideoDecoder(
> +        [in] const D3D11_VIDEO_DECODER_DESC *pVideoDesc,
> +        [in] const D3D11_VIDEO_DECODER_CONFIG *pConfig,
> +        [out] ID3D11VideoDecoder **ppVideoDecoder);
> +    HRESULT CreateVideoProcessor(
> +        [in] void *pEnumerator,         /* ID3D11VideoProcessorEnumerator */
> +        [in] UINT RateConversionIndex,
> +        [out] void **ppVideoProcessor); /* ID3D11VideoProcessor */
> +    HRESULT CreateAuthenticatedChannel(
> +        [in] D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
> +        [out] void **ppAuthenticatedChannel); /* ID3D11AuthenticatedChannel 
> */
> +    HRESULT CreateCryptoSession(
> +        [in] const GUID *pCryptoType,
> +        [in] const GUID *pDecoderProfile,
> +        [in] const GUID *pKeyExchangeType,
> +        [out] void **ppCryptoSession); /* ID3D11CryptoSession */
> +    HRESULT CreateVideoDecoderOutputView(
> +        [in] ID3D11Resource *pResource,
> +        [in] const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,
> +        [out] ID3D11VideoDecoderOutputView **ppVideoDecoderOutputView);
> +    HRESULT CreateVideoProcessorInputView(
> +        [in] ID3D11Resource *pResource,
> +        [in] void *pEnum,           /* ID3D11VideoProcessorEnumerator */
> +        [in] const void *pProcDesc, /* D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC 
> */
> +        [out] void **ppVPIView);    /* ID3D11VideoProcessorInputView */
> +    HRESULT CreateVideoProcessorOutputView(
> +        [in] ID3D11Resource *pResource,
> +        [in] void *pEnum,           /* ID3D11VideoProcessorEnumerator */
> +        [in] const void *pDesc,     /* 
> D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC */
> +        [out] void **ppVPOView);    /* ID3D11VideoProcessorOutputView */
> +    HRESULT CreateVideoProcessorEnumerator(
> +        [in] const void *pDesc,     /* D3D11_VIDEO_PROCESSOR_CONTENT_DESC */
> +        [out] void **ppEnum);       /* ID3D11VideoProcessorEnumerator */
> +    UINT GetVideoDecoderProfileCount(void);
> +    HRESULT GetVideoDecoderProfile(
> +        [in] UINT Index,
> +        [out] GUID *pDecoderProfile);
> +    HRESULT CheckVideoDecoderFormat(
> +        [in] const GUID *pDecoderProfile,
> +        [in] DXGI_FORMAT Format,
> +        [out] BOOL *pSupported);
> +    HRESULT GetVideoDecoderConfigCount(
> +        [in] const D3D11_VIDEO_DECODER_DESC *pDesc,
> +        [out] UINT *pCount);
> +    HRESULT GetVideoDecoderConfig(
> +        [in] const D3D11_VIDEO_DECODER_DESC *pDesc,
> +        [in] UINT Index,
> +        [out] D3D11_VIDEO_DECODER_CONFIG *pConfig);
> +}
> +
>  typedef enum D3D11_CREATE_DEVICE_FLAG {
>      D3D11_CREATE_DEVICE_SINGLETHREADED  = 0x0001,
>      D3D11_CREATE_DEVICE_DEBUG           = 0x0002,
> --
> 2.4.0
>
>
> ------------------------------------------------------------------------------
> One dashboard for servers and applications across Physical-Virtual-Cloud
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
> _______________________________________________
> Mingw-w64-public mailing list
> Mingw-w64-public@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to