1193 lines
50 KiB
Diff
1193 lines
50 KiB
Diff
From b952e857814e5cfe766626573e2f056ed91ceb09 Mon Sep 17 00:00:00 2001
|
|
From: Martell Malone <martellmalone@gmail.com>
|
|
Date: Sun, 14 Jun 2015 21:07:03 +0100
|
|
Subject: [PATCH 6/6] Add d3d11 video decoder
|
|
|
|
---
|
|
mingw-w64-headers/direct-x/include/d3d11.h | 949 +++++++++++++++++++++++++++
|
|
mingw-w64-headers/direct-x/include/d3d11.idl | 208 ++++++
|
|
2 files changed, 1157 insertions(+)
|
|
|
|
diff --git a/mingw-w64-headers/direct-x/include/d3d11.h b/mingw-w64-headers/direct-x/include/d3d11.h
|
|
index e49fd99..834a536 100644
|
|
--- a/mingw-w64-headers/direct-x/include/d3d11.h
|
|
+++ b/mingw-w64-headers/direct-x/include/d3d11.h
|
|
@@ -8850,6 +8850,955 @@ 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;
|
|
+#ifndef __ID3D11VideoProcessorEnumerator_FWD_DEFINED__
|
|
+#define __ID3D11VideoProcessorEnumerator_FWD_DEFINED__
|
|
+typedef interface ID3D11VideoProcessorEnumerator ID3D11VideoProcessorEnumerator;
|
|
+#endif
|
|
+
|
|
+#ifndef __ID3D11VideoProcessor_FWD_DEFINED__
|
|
+#define __ID3D11VideoProcessor_FWD_DEFINED__
|
|
+typedef interface ID3D11VideoProcessor ID3D11VideoProcessor;
|
|
+#endif
|
|
+
|
|
+#ifndef __ID3D11VideoProcessorInputView_FWD_DEFINED__
|
|
+#define __ID3D11VideoProcessorInputView_FWD_DEFINED__
|
|
+typedef interface ID3D11VideoProcessorInputView ID3D11VideoProcessorInputView;
|
|
+#endif
|
|
+
|
|
+#ifndef __ID3D11VideoProcessorOutputView_FWD_DEFINED__
|
|
+#define __ID3D11VideoProcessorOutputView_FWD_DEFINED__
|
|
+typedef interface ID3D11VideoProcessorOutputView ID3D11VideoProcessorOutputView;
|
|
+#endif
|
|
+
|
|
+#ifndef __ID3D11AuthenticatedChannel_FWD_DEFINED__
|
|
+#define __ID3D11AuthenticatedChannel_FWD_DEFINED__
|
|
+typedef interface ID3D11AuthenticatedChannel ID3D11AuthenticatedChannel;
|
|
+#endif
|
|
+
|
|
+#ifndef __ID3D11CryptoSession_FWD_DEFINED__
|
|
+#define __ID3D11CryptoSession_FWD_DEFINED__
|
|
+typedef interface ID3D11CryptoSession ID3D11CryptoSession;
|
|
+#endif
|
|
+
|
|
+/*****************************************************************************
|
|
+ * 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(
|
|
+ ID3D11VideoProcessorEnumerator *ppProcEnumerator,
|
|
+ UINT RateConversionIndex,
|
|
+ ID3D11VideoProcessor **ppVideoProcessor) = 0;
|
|
+
|
|
+ virtual HRESULT STDMETHODCALLTYPE CreateAuthenticatedChannel(
|
|
+ D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
|
|
+ ID3D11AuthenticatedChannel **ppAuthenticatedChannel) = 0;
|
|
+
|
|
+ virtual HRESULT STDMETHODCALLTYPE CreateCryptoSession(
|
|
+ const GUID *pCryptoType,
|
|
+ const GUID *pDecoderProfile,
|
|
+ const GUID *pKeyExchangeType,
|
|
+ ID3D11CryptoSession **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,
|
|
+ ID3D11VideoProcessorEnumerator *ppProcEnumerator,
|
|
+ const void *pInputDesc,
|
|
+ ID3D11VideoProcessorInputView **ppVideoProcInputView) = 0;
|
|
+
|
|
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessorOutputView(
|
|
+ ID3D11Resource *pResource,
|
|
+ ID3D11VideoProcessorEnumerator *pEnumerator,
|
|
+ const void *pOutputDesc,
|
|
+ ID3D11VideoProcessorOutputView **ppVideoProcOutputView) = 0;
|
|
+
|
|
+ virtual HRESULT STDMETHODCALLTYPE CreateVideoProcessorEnumerator(
|
|
+ const void *pContentDesc,
|
|
+ ID3D11VideoProcessorEnumerator **ppProcEnumerator) = 0;
|
|
+
|
|
+ virtual UINT STDMETHODCALLTYPE GetVideoDecoderProfileCount(
|
|
+ ) = 0;
|
|
+
|
|
+ virtual HRESULT STDMETHODCALLTYPE GetVideoDecoderProfile(
|
|
+ UINT DecoderIndex,
|
|
+ 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 DecoderIndex,
|
|
+ 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,
|
|
+ ID3D11VideoProcessorEnumerator *ppProcEnumerator,
|
|
+ UINT RateConversionIndex,
|
|
+ ID3D11VideoProcessor **ppVideoProcessor);
|
|
+
|
|
+ HRESULT (STDMETHODCALLTYPE *CreateAuthenticatedChannel)(
|
|
+ ID3D11VideoDevice* This,
|
|
+ D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
|
|
+ ID3D11AuthenticatedChannel **ppAuthenticatedChannel);
|
|
+
|
|
+ HRESULT (STDMETHODCALLTYPE *CreateCryptoSession)(
|
|
+ ID3D11VideoDevice* This,
|
|
+ const GUID *pCryptoType,
|
|
+ const GUID *pDecoderProfile,
|
|
+ const GUID *pKeyExchangeType,
|
|
+ ID3D11CryptoSession **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,
|
|
+ ID3D11VideoProcessorEnumerator *ppProcEnumerator,
|
|
+ const void *pInputDesc,
|
|
+ ID3D11VideoProcessorInputView **ppVideoProcInputView);
|
|
+
|
|
+ HRESULT (STDMETHODCALLTYPE *CreateVideoProcessorOutputView)(
|
|
+ ID3D11VideoDevice* This,
|
|
+ ID3D11Resource *pResource,
|
|
+ ID3D11VideoProcessorEnumerator *pEnumerator,
|
|
+ const void *pOutputDesc,
|
|
+ ID3D11VideoProcessorOutputView **ppVideoProcOutputView);
|
|
+
|
|
+ HRESULT (STDMETHODCALLTYPE *CreateVideoProcessorEnumerator)(
|
|
+ ID3D11VideoDevice* This,
|
|
+ const void *pContentDesc,
|
|
+ ID3D11VideoProcessorEnumerator **ppProcEnumerator);
|
|
+
|
|
+ UINT (STDMETHODCALLTYPE *GetVideoDecoderProfileCount)(
|
|
+ ID3D11VideoDevice* This);
|
|
+
|
|
+ HRESULT (STDMETHODCALLTYPE *GetVideoDecoderProfile)(
|
|
+ ID3D11VideoDevice* This,
|
|
+ UINT DecoderIndex,
|
|
+ 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 DecoderIndex,
|
|
+ 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,ppProcEnumerator,RateConversionIndex,ppVideoProcessor) (This)->lpVtbl->CreateVideoProcessor(This,ppProcEnumerator,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,ppProcEnumerator,pInputDesc,ppVideoProcInputView) (This)->lpVtbl->CreateVideoProcessorInputView(This,pResource,ppProcEnumerator,pInputDesc,ppVideoProcInputView)
|
|
+#define ID3D11VideoDevice_CreateVideoProcessorOutputView(This,pResource,pEnumerator,pOutputDesc,ppVideoProcOutputView) (This)->lpVtbl->CreateVideoProcessorOutputView(This,pResource,pEnumerator,pOutputDesc,ppVideoProcOutputView)
|
|
+#define ID3D11VideoDevice_CreateVideoProcessorEnumerator(This,pContentDesc,ppProcEnumerator) (This)->lpVtbl->CreateVideoProcessorEnumerator(This,pContentDesc,ppProcEnumerator)
|
|
+#define ID3D11VideoDevice_GetVideoDecoderProfileCount(This) (This)->lpVtbl->GetVideoDecoderProfileCount(This)
|
|
+#define ID3D11VideoDevice_GetVideoDecoderProfile(This,DecoderIndex,pDecoderProfile) (This)->lpVtbl->GetVideoDecoderProfile(This,DecoderIndex,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,DecoderIndex,pConfig) (This)->lpVtbl->GetVideoDecoderConfig(This,pDesc,DecoderIndex,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,ID3D11VideoProcessorEnumerator *ppProcEnumerator,UINT RateConversionIndex,ID3D11VideoProcessor **ppVideoProcessor) {
|
|
+ return This->lpVtbl->CreateVideoProcessor(This,ppProcEnumerator,RateConversionIndex,ppVideoProcessor);
|
|
+}
|
|
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateAuthenticatedChannel(ID3D11VideoDevice* This,D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,ID3D11AuthenticatedChannel **ppAuthenticatedChannel) {
|
|
+ return This->lpVtbl->CreateAuthenticatedChannel(This,ChannelType,ppAuthenticatedChannel);
|
|
+}
|
|
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateCryptoSession(ID3D11VideoDevice* This,const GUID *pCryptoType,const GUID *pDecoderProfile,const GUID *pKeyExchangeType,ID3D11CryptoSession **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,ID3D11VideoProcessorEnumerator *ppProcEnumerator,const void *pInputDesc,ID3D11VideoProcessorInputView **ppVideoProcInputView) {
|
|
+ return This->lpVtbl->CreateVideoProcessorInputView(This,pResource,ppProcEnumerator,pInputDesc,ppVideoProcInputView);
|
|
+}
|
|
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateVideoProcessorOutputView(ID3D11VideoDevice* This,ID3D11Resource *pResource,ID3D11VideoProcessorEnumerator *pEnumerator,const void *pOutputDesc,ID3D11VideoProcessorOutputView **ppVideoProcOutputView) {
|
|
+ return This->lpVtbl->CreateVideoProcessorOutputView(This,pResource,pEnumerator,pOutputDesc,ppVideoProcOutputView);
|
|
+}
|
|
+static FORCEINLINE HRESULT ID3D11VideoDevice_CreateVideoProcessorEnumerator(ID3D11VideoDevice* This,const void *pContentDesc,ID3D11VideoProcessorEnumerator **ppProcEnumerator) {
|
|
+ return This->lpVtbl->CreateVideoProcessorEnumerator(This,pContentDesc,ppProcEnumerator);
|
|
+}
|
|
+static FORCEINLINE UINT ID3D11VideoDevice_GetVideoDecoderProfileCount(ID3D11VideoDevice* This) {
|
|
+ return This->lpVtbl->GetVideoDecoderProfileCount(This);
|
|
+}
|
|
+static FORCEINLINE HRESULT ID3D11VideoDevice_GetVideoDecoderProfile(ID3D11VideoDevice* This,UINT DecoderIndex,GUID *pDecoderProfile) {
|
|
+ return This->lpVtbl->GetVideoDecoderProfile(This,DecoderIndex,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 DecoderIndex,D3D11_VIDEO_DECODER_CONFIG *pConfig) {
|
|
+ return This->lpVtbl->GetVideoDecoderConfig(This,pDesc,DecoderIndex,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,
|
|
+ ID3D11VideoProcessorEnumerator *ppProcEnumerator,
|
|
+ UINT RateConversionIndex,
|
|
+ ID3D11VideoProcessor **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,
|
|
+ ID3D11AuthenticatedChannel **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,
|
|
+ ID3D11CryptoSession **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,
|
|
+ ID3D11VideoProcessorEnumerator *ppProcEnumerator,
|
|
+ const void *pInputDesc,
|
|
+ ID3D11VideoProcessorInputView **ppVideoProcInputView);
|
|
+void __RPC_STUB ID3D11VideoDevice_CreateVideoProcessorInputView_Stub(
|
|
+ IRpcStubBuffer* This,
|
|
+ IRpcChannelBuffer* pRpcChannelBuffer,
|
|
+ PRPC_MESSAGE pRpcMessage,
|
|
+ DWORD* pdwStubPhase);
|
|
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateVideoProcessorOutputView_Proxy(
|
|
+ ID3D11VideoDevice* This,
|
|
+ ID3D11Resource *pResource,
|
|
+ ID3D11VideoProcessorEnumerator *pEnumerator,
|
|
+ const void *pOutputDesc,
|
|
+ ID3D11VideoProcessorOutputView **ppVideoProcOutputView);
|
|
+void __RPC_STUB ID3D11VideoDevice_CreateVideoProcessorOutputView_Stub(
|
|
+ IRpcStubBuffer* This,
|
|
+ IRpcChannelBuffer* pRpcChannelBuffer,
|
|
+ PRPC_MESSAGE pRpcMessage,
|
|
+ DWORD* pdwStubPhase);
|
|
+HRESULT STDMETHODCALLTYPE ID3D11VideoDevice_CreateVideoProcessorEnumerator_Proxy(
|
|
+ ID3D11VideoDevice* This,
|
|
+ const void *pContentDesc,
|
|
+ ID3D11VideoProcessorEnumerator **ppProcEnumerator);
|
|
+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 DecoderIndex,
|
|
+ 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 DecoderIndex,
|
|
+ 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 59beafb..cfae7c8 100644
|
|
--- a/mingw-w64-headers/direct-x/include/d3d11.idl
|
|
+++ b/mingw-w64-headers/direct-x/include/d3d11.idl
|
|
@@ -2126,6 +2126,214 @@ 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;
|
|
+
|
|
+interface ID3D11VideoProcessorEnumerator;
|
|
+interface ID3D11VideoProcessor;
|
|
+interface ID3D11VideoProcessorInputView;
|
|
+interface ID3D11VideoProcessorOutputView;
|
|
+interface ID3D11AuthenticatedChannel;
|
|
+interface ID3D11CryptoSession;
|
|
+
|
|
+[
|
|
+ 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] ID3D11VideoProcessorEnumerator *ppProcEnumerator,
|
|
+ [in] UINT RateConversionIndex,
|
|
+ [out] ID3D11VideoProcessor **ppVideoProcessor);
|
|
+ HRESULT CreateAuthenticatedChannel(
|
|
+ [in] D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,
|
|
+ [out] ID3D11AuthenticatedChannel **ppAuthenticatedChannel);
|
|
+ HRESULT CreateCryptoSession(
|
|
+ [in] const GUID *pCryptoType,
|
|
+ [in] const GUID *pDecoderProfile,
|
|
+ [in] const GUID *pKeyExchangeType,
|
|
+ [out] ID3D11CryptoSession **ppCryptoSession);
|
|
+ HRESULT CreateVideoDecoderOutputView(
|
|
+ [in] ID3D11Resource *pResource,
|
|
+ [in] const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc,
|
|
+ [out] ID3D11VideoDecoderOutputView **ppVideoDecoderOutputView);
|
|
+ HRESULT CreateVideoProcessorInputView(
|
|
+ [in] ID3D11Resource *pResource,
|
|
+ [in] ID3D11VideoProcessorEnumerator *ppProcEnumerator,
|
|
+ [in] const void *pInputDesc, /*D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC */
|
|
+ [out] ID3D11VideoProcessorInputView **ppVideoProcInputView);
|
|
+ HRESULT CreateVideoProcessorOutputView(
|
|
+ [in] ID3D11Resource *pResource,
|
|
+ [in] ID3D11VideoProcessorEnumerator *pEnumerator,
|
|
+ [in] const void *pOutputDesc, /*D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC */
|
|
+ [out] ID3D11VideoProcessorOutputView **ppVideoProcOutputView);
|
|
+ HRESULT CreateVideoProcessorEnumerator(
|
|
+ [in] const void *pContentDesc, /*D3D11_VIDEO_PROCESSOR_CONTENT_DESC */
|
|
+ [out] ID3D11VideoProcessorEnumerator **ppProcEnumerator);
|
|
+ UINT GetVideoDecoderProfileCount(void);
|
|
+ HRESULT GetVideoDecoderProfile(
|
|
+ [in] UINT DecoderIndex,
|
|
+ [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 DecoderIndex,
|
|
+ [out] D3D11_VIDEO_DECODER_CONFIG *pConfig);
|
|
+}
|
|
+
|
|
typedef enum D3D11_CREATE_DEVICE_FLAG {
|
|
D3D11_CREATE_DEVICE_SINGLETHREADED = 0x0001,
|
|
D3D11_CREATE_DEVICE_DEBUG = 0x0002,
|
|
--
|
|
2.4.5
|
|
|