[vlc-devel] [PATCH 1/4] add VideoProcessor capabilties in the local d3d11.h

Steve Lhomme robux4 at gmail.com
Mon Jul 20 13:33:04 CEST 2015


From: Steve Lhomme <robUx4 at gmail.com>

---
 contrib/src/d3d11/id3d11videodecoder.patch | 765 ++++++++++++++++++++++-------
 1 file changed, 578 insertions(+), 187 deletions(-)

diff --git a/contrib/src/d3d11/id3d11videodecoder.patch b/contrib/src/d3d11/id3d11videodecoder.patch
index 27f29c8..ca3c6ab 100644
--- a/contrib/src/d3d11/id3d11videodecoder.patch
+++ b/contrib/src/d3d11/id3d11videodecoder.patch
@@ -1,221 +1,612 @@
-diff --git a/d3d11.idl b/d3d11.idl
---- a/d3d11.idl
-+++ b/d3d11.idl
-@@ -2125,6 +2125,214 @@ interface ID3D11Device : IUnknown
-     UINT GetExceptionMode();
- }
-
-+typedef enum D3D11_VDOV_DIMENSION
+diff --git a/d3d11.idl b/d3d11.idl
+--- a/d3d11.idl
++++ b/d3d11.idl
+@@ -2125,6 +2125,605 @@ 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
++{
++}
++
++interface ID3D11VideoProcessorInputView;
++interface ID3D11VideoProcessorOutputView;
++
++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;
++
++typedef enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE
 +{
-+    D3D11_VDOV_DIMENSION_UNKNOWN = 0,
-+    D3D11_VDOV_DIMENSION_TEXTURE2D
-+} D3D11_VDOV_DIMENSION;
++    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE = 0,
++    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND = 1,
++    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION = 2,
++    D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM = 3
++} D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE;
 +
-+typedef struct D3D11_TEX2D_VDOV
++typedef enum D3D11_VIDEO_FRAME_FORMAT
 +{
-+    UINT ArraySlice;
-+} D3D11_TEX2D_VDOV;
++    D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE = 0,
++    D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1,
++    D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2
++} D3D11_VIDEO_FRAME_FORMAT;
 +
-+typedef struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC
++typedef enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE
 +{
-+    GUID DecodeProfile;
-+    D3D11_VDOV_DIMENSION ViewDimension;
++    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL = 0,
++    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF = 1,
++    D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM = 2
++} D3D11_VIDEO_PROCESSOR_OUTPUT_RATE;
 +
-+    union
-+    {
-+        D3D11_TEX2D_VDOV Texture2D;
-+    };
-+} D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC;
++typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FORMAT
++{
++    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO = 0,
++    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL = 1,
++    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL = 2,
++    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE = 3,
++    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET = 4,
++    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED = 5,
++    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED = 6,
++    D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD = 7
++} D3D11_VIDEO_PROCESSOR_STEREO_FORMAT;
 +
-+[
-+    object,
-+    local,
-+    uuid(c2931aea-2a85-4f20-860f-fba1fd256e18)
-+]
-+interface ID3D11VideoDecoderOutputView : ID3D11View
++typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE
 +{
-+    void GetDesc(
-+        [out] D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc );
-+}
++    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE = 0,
++    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 = 1,
++    D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 = 2,
++} D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE;
 +
-+[
-+    object,
-+    local,
-+    uuid(3c9c5b51-995d-48d1-9b8d-fa5caeded65c)
-+]
-+interface ID3D11VideoDecoder : ID3D11DeviceChild
++typedef enum D3D11_VIDEO_PROCESSOR_FILTER
 +{
-+}
++    D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS = 0,
++    D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST = 1,
++    D3D11_VIDEO_PROCESSOR_FILTER_HUE = 2,
++    D3D11_VIDEO_PROCESSOR_FILTER_SATURATION = 3,
++    D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION = 4,
++    D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT = 5,
++    D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING = 6,
++    D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT = 7,
++} D3D11_VIDEO_PROCESSOR_FILTER;
 +
-+typedef enum D3D11_VIDEO_DECODER_BUFFER_TYPE
++typedef struct D3D11_VIDEO_PROCESSOR_STREAM
 +{
-+    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
++    BOOL Enable;
++    UINT OutputIndex;
++    UINT InputFrameOrField;
++    UINT PastFrames;
++    UINT FutureFrames;
++    ID3D11VideoProcessorInputView **ppPastSurfaces;
++    ID3D11VideoProcessorInputView *pInputSurface;
++    ID3D11VideoProcessorInputView **ppFutureSurfaces;
++    ID3D11VideoProcessorInputView **ppPastSurfacesRight;
++    ID3D11VideoProcessorInputView *pInputSurfaceRight;
++    ID3D11VideoProcessorInputView **ppFutureSurfacesRight;
++} D3D11_VIDEO_PROCESSOR_STREAM;
++
++typedef enum D3D11_VIDEO_USAGE
 +{
-+    UINT NumEncryptedBytesAtBeginning;
-+    UINT NumBytesInSkipPattern;
-+    UINT NumBytesInEncryptPattern;
-+} D3D11_ENCRYPTED_BLOCK_INFO;
++    D3D11_VIDEO_USAGE_PLAYBACK_NORMAL = 0,
++    D3D11_VIDEO_USAGE_OPTIMAL_SPEED = 1,
++    D3D11_VIDEO_USAGE_OPTIMAL_QUALITY = 2
++} D3D11_VIDEO_USAGE;
 +
-+typedef struct D3D11_VIDEO_DECODER_BUFFER_DESC
++typedef struct D3D11_VIDEO_PROCESSOR_CONTENT_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;
++    D3D11_VIDEO_FRAME_FORMAT InputFrameFormat;
++    DXGI_RATIONAL InputFrameRate;
++    UINT InputWidth;
++    UINT InputHeight;
++    DXGI_RATIONAL OutputFrameRate;
++    UINT OutputWidth;
++    UINT OutputHeight;
++    D3D11_VIDEO_USAGE Usage;
++} D3D11_VIDEO_PROCESSOR_CONTENT_DESC;
 +
 +[
 +    object,
 +    local,
-+    uuid(61f21c45-3c0e-4a74-9cea-67100d9ad5e4)
++    uuid( 1D7B0652-185F-41c6-85CE-0C5BE3D4AE6C )
 +]
-+interface ID3D11VideoContext : ID3D11DeviceChild
++interface ID3D11VideoProcessor : 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);
-+}
++    void GetContentDesc(
++        [out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC* pDesc);
++    void GetRateConversionCaps(
++        [out] void *pCaps /* D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS */);
++};
 +
-+typedef struct D3D11_VIDEO_DECODER_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);
++    HRESULT DecoderExtension(
++        [in] ID3D11VideoDecoder* pDecoder,
++        [in] const void *pExtensionData /* D3D11_VIDEO_DECODER_EXTENSION */);
++    void VideoProcessorSetOutputTargetRect(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] BOOL Enable,
++        [in] const RECT* pRect);
++    void VideoProcessorSetOutputBackgroundColor(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] BOOL YCbCr,
++        [in] const void *pColor /* D3D11_VIDEO_COLOR */);
++    void VideoProcessorSetOutputColorSpace(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] const void *pColorSpace /* D3D11_VIDEO_PROCESSOR_COLOR_SPACE */);
++    void VideoProcessorSetOutputAlphaFillMode(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE AlphaFillMode,
++        [in] UINT StreamIndex);
++    void VideoProcessorSetOutputConstriction(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] BOOL Enable,
++        [in] SIZE Size);
++    void VideoProcessorSetOutputStereoMode(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] BOOL Enable);
++    HRESULT VideoProcessorSetOutputExtension(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] const GUID* pExtensionGuid,
++        [in] UINT DataSize,
++        [in] void *pData);
++    void VideoProcessorGetOutputTargetRect(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [out] BOOL* Enabled,
++        [out] RECT* pRect);
++    void VideoProcessorGetOutputBackgroundColor(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [out] BOOL* pYCbCr,
++        [out] void *pColor /* D3D11_VIDEO_COLOR */);
++    void VideoProcessorGetOutputColorSpace(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [out] void *pColorSpace /* D3D11_VIDEO_PROCESSOR_COLOR_SPACE */);
++    void VideoProcessorGetOutputAlphaFillMode(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [out] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE* pAlphaFillMode,
++        [out] UINT* pStreamIndex);
++    void VideoProcessorGetOutputConstriction(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [out] BOOL* pEnabled,
++        [out] SIZE* pSize);
++    void VideoProcessorGetOutputStereoMode(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [out] BOOL* pEnabled);
++    HRESULT VideoProcessorGetOutputExtension(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] const GUID* pExtensionGuid,
++        [in] UINT DataSize,
++        [out] void *pData);
++    void VideoProcessorSetStreamFrameFormat(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] D3D11_VIDEO_FRAME_FORMAT FrameFormat);
++    void VideoProcessorSetStreamColorSpace(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] const void *pColorSpace /* D3D11_VIDEO_PROCESSOR_COLOR_SPACE */);
++    void VideoProcessorSetStreamOutputRate(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE OutputRate,
++        [in] BOOL RepeatFrame,
++        [in] const DXGI_RATIONAL* pCustomRate);
++    void VideoProcessorSetStreamSourceRect(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] BOOL Enable,
++        [in] const RECT* pRect);
++    void VideoProcessorSetStreamDestRect(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] BOOL Enable,
++        [in] const RECT* pRect);
++    void VideoProcessorSetStreamAlpha(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] BOOL Enable,
++        [in] FLOAT Alpha);
++    void VideoProcessorSetStreamPalette(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] UINT Count,
++        [in] const UINT* pEntries);
++    void VideoProcessorSetStreamPixelAspectRatio(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] BOOL Enable,
++        [in] const DXGI_RATIONAL* pSourceAspectRatio,
++        [in] const DXGI_RATIONAL* pDestinationAspectRatio);
++    void VideoProcessorSetStreamLumaKey(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] BOOL Enable,
++        [in] FLOAT Lower,
++        [in] FLOAT Upper);
++    void VideoProcessorSetStreamStereoFormat(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] BOOL Enable,
++        [in] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT Format,
++        [in] BOOL LeftViewFrame0,
++        [in] BOOL BaseViewFrame0,
++        [in] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE FlipMode,
++        [in] int MonoOffset);
++    void VideoProcessorSetStreamAutoProcessingMode(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] BOOL Enable);
++    void VideoProcessorSetStreamFilter(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] D3D11_VIDEO_PROCESSOR_FILTER Filter,
++        [in] BOOL Enable,
++        [in] int Level);
++    HRESULT VideoProcessorSetStreamExtension(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] const GUID* pExtensionGuid,
++        [in] UINT DataSize,
++        [in] void *pData);
++    void VideoProcessorGetStreamFrameFormat(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [out] D3D11_VIDEO_FRAME_FORMAT* pFrameFormat);
++    void VideoProcessorGetStreamColorSpace(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [out] void *pColorSpace /* D3D11_VIDEO_PROCESSOR_COLOR_SPACE */);
++    void VideoProcessorGetStreamOutputRate(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [out] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE* pOutputRate,
++        [out] BOOL* pRepeatFrame,
++        [out] DXGI_RATIONAL* pCustomRate);
++    void VideoProcessorGetStreamSourceRect(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [out] BOOL* pEnabled,
++        [out] RECT* pRect);
++    void VideoProcessorGetStreamDestRect(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [out] BOOL* pEnabled,
++        [out] RECT* pRect);
++    void VideoProcessorGetStreamAlpha(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [out] BOOL* pEnabled,
++        [out] FLOAT* pAlpha);
++    void VideoProcessorGetStreamPalette(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] UINT Count,
++        [annotation("_Out_writes_(Count)")] UINT* pEntries);
++    void VideoProcessorGetStreamPixelAspectRatio(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [out] BOOL* pEnabled,
++        [out] DXGI_RATIONAL* pSourceAspectRatio,
++        [out] DXGI_RATIONAL* pDestinationAspectRatio);
++    void VideoProcessorGetStreamLumaKey(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [out] BOOL* pEnabled,
++        [out] FLOAT* pLower,
++        [out] FLOAT* pUpper);
++    void VideoProcessorGetStreamStereoFormat(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [out] BOOL* pEnable,
++        [out] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT* pFormat,
++        [out] BOOL* pLeftViewFrame0,
++        [out] BOOL* pBaseViewFrame0,
++        [out] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE* pFlipMode,
++        [out] int* MonoOffset);
++    void VideoProcessorGetStreamAutoProcessingMode(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [out] BOOL* pEnabled);
++    void VideoProcessorGetStreamFilter(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] D3D11_VIDEO_PROCESSOR_FILTER Filter,
++        [out] BOOL* pEnabled,
++        [out] int* pLevel);
++    HRESULT VideoProcessorGetStreamExtension(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] UINT StreamIndex,
++        [in] const GUID* pExtensionGuid,
++        [in] UINT DataSize,
++        [out] void *pData);
++    HRESULT VideoProcessorBlt(
++        [in] ID3D11VideoProcessor* pVideoProcessor,
++        [in] ID3D11VideoProcessorOutputView *pView,
++        [in] UINT OutputFrame,
++        [in] UINT StreamCount,
++        [in] const D3D11_VIDEO_PROCESSOR_STREAM *pStreams);
++}
++
++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;
++
++typedef enum D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT
 +{
-+    GUID Guid;
-+    UINT SampleWidth;
-+    UINT SampleHeight;
-+    DXGI_FORMAT OutputFormat;
-+} D3D11_VIDEO_DECODER_DESC;
++    D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_INPUT = 0x00000001,
++    D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_OUTPUT = 0x00000002,
++} D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT;
 +
-+typedef struct D3D11_VIDEO_DECODER_CONFIG
++typedef struct D3D11_VIDEO_PROCESSOR_CAPS
 +{
-+    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;
++    UINT DeviceCaps;
++    UINT FeatureCaps;
++    UINT FilterCaps;
++    UINT InputFormatCaps;
++    UINT AutoStreamCaps;
++    UINT StereoCaps;
++    UINT RateConversionCapsCount;
++    UINT MaxInputStreams;
++    UINT MaxStreamStates;
++} D3D11_VIDEO_PROCESSOR_CAPS;
 +
 +[
 +    object,
 +    local,
-+    uuid(10ec4d5b-975a-4689-b9e4-d0aac30fe333)
++    uuid( 31627037-53AB-4200-9061-05FAA9AB45F9 )
 +]
-+interface ID3D11VideoDevice : IUnknown
++interface ID3D11VideoProcessorEnumerator : ID3D11DeviceChild
 +{
-+    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,
++    HRESULT GetVideoProcessorContentDesc(
++        [out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc);
++    HRESULT CheckVideoProcessorFormat(
 +        [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);
++        [out] UINT* pFlags);
++    HRESULT GetVideoProcessorCaps(
++        [out] D3D11_VIDEO_PROCESSOR_CAPS *pCaps);
++    HRESULT GetVideoProcessorRateConversionCaps(
++        [in] UINT TypeIndex,
++        [out] void *pCaps /* D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS */);
++    HRESULT GetVideoProcessorCustomRate(
++        [in] UINT TypeIndex,
++        [in] UINT CustomRateIndex,
++        [out] void *pRate /* D3D11_VIDEO_PROCESSOR_CUSTOM_RATE */);
++    HRESULT GetVideoProcessorFilterRange(
++        [in] D3D11_VIDEO_PROCESSOR_FILTER Filter,
++        [out] void *pRange /* D3D11_VIDEO_PROCESSOR_FILTER_RANGE */);
 +}
 +
- typedef enum D3D11_CREATE_DEVICE_FLAG {
-     D3D11_CREATE_DEVICE_SINGLETHREADED  = 0x0001,
-     D3D11_CREATE_DEVICE_DEBUG           = 0x0002,
---
-1.9.5.msysgit.0
-
++interface ID3D11AuthenticatedChannel;
++interface ID3D11CryptoSession;
++
++typedef enum D3D11_VPOV_DIMENSION { 
++    D3D11_VPOV_DIMENSION_UNKNOWN = 0,
++    D3D11_VPOV_DIMENSION_TEXTURE2D = 1,
++    D3D11_VPOV_DIMENSION_TEXTURE2DARRAY = 2
++} D3D11_VPOV_DIMENSION;
++
++typedef struct D3D11_TEX2D_VPOV {
++    UINT MipSlice;
++} D3D11_TEX2D_VPOV;
++
++typedef struct D3D11_TEX2D_ARRAY_VPOV {
++    UINT MipSlice;
++    UINT FirstArraySlice;
++    UINT ArraySize;
++} D3D11_TEX2D_ARRAY_VPOV;
++
++typedef struct D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC
++{
++  D3D11_VPOV_DIMENSION ViewDimension;
++  union {
++    D3D11_TEX2D_VPOV Texture2D;
++    D3D11_TEX2D_ARRAY_VPOV Texture2DArray;
++  };
++} D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC;
++
++typedef enum D3D11_VPIV_DIMENSION { 
++  D3D11_VPIV_DIMENSION_UNKNOWN = 0,
++  D3D11_VPIV_DIMENSION_TEXTURE2D = 1
++} D3D11_VPIV_DIMENSION;
++
++typedef struct D3D11_TEX2D_VPIV {
++  UINT MipSlice;
++  UINT ArraySlice;
++} D3D11_TEX2D_VPIV;
++
++typedef struct D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC {
++  UINT FourCC;
++  D3D11_VPIV_DIMENSION ViewDimension;
++  union {
++    D3D11_TEX2D_VPIV Texture2D;
++  };
++} D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC;
++
++[
++    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 D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pInputDesc,
++        [out] ID3D11VideoProcessorInputView **ppVideoProcInputView);
++    HRESULT CreateVideoProcessorOutputView(
++        [in] ID3D11Resource *pResource,
++        [in] ID3D11VideoProcessorEnumerator *pEnumerator,
++        [in] const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pOutputDesc,
++        [out] ID3D11VideoProcessorOutputView **ppVideoProcOutputView);
++    HRESULT CreateVideoProcessorEnumerator(
++        [in] const D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pContentDesc,
++        [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,
+--
+1.9.5.msysgit.0
+
-- 
2.4.2




More information about the vlc-devel mailing list