diff options
author | wm4 <nfxjfg@googlemail.com> | 2017-06-06 19:51:07 +0300 |
---|---|---|
committer | wm4 <nfxjfg@googlemail.com> | 2017-06-27 19:05:02 +0300 |
commit | 3303511f33dcc1b708fc18072cd93bca62196676 (patch) | |
tree | dac5552e874abc4bb737da03e3731efbf2579f97 /libavutil/pixfmt.h | |
parent | 4d62ee674699645c7b7105213e7d339665144069 (diff) |
lavu: add new D3D11 pixfmt and hwcontext
To be used with the new d3d11 hwaccel decode API.
With the new hwaccel API, we don't want surfaces to depend on the
decoder (other than the required dimension and format). The old D3D11VA
pixfmt uses ID3D11VideoDecoderOutputView pointers, which include the
decoder configuration, and thus is incompatible with the new hwaccel
API. This patch introduces AV_PIX_FMT_D3D11, which uses ID3D11Texture2D
and an index. It's simpler and compatible with the new hwaccel API.
The introduced hwcontext supports only the new pixfmt.
Frame upload code untested.
Significantly based on work by Steve Lhomme <robux4@gmail.com>, but with
heavy changes/rewrites.
Merges Libav commit fff90422d181744cd75dbf011687ee7095f02875.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Diffstat (limited to 'libavutil/pixfmt.h')
-rw-r--r-- | libavutil/pixfmt.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index 6b7eea8c4e..e1e4074bee 100644 --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@ -240,7 +240,7 @@ enum AVPixelFormat { */ AV_PIX_FMT_MMAL, - AV_PIX_FMT_D3D11VA_VLD, ///< HW decoding through Direct3D11, Picture.data[3] contains a ID3D11VideoDecoderOutputView pointer + AV_PIX_FMT_D3D11VA_VLD, ///< HW decoding through Direct3D11 via old API, Picture.data[3] contains a ID3D11VideoDecoderOutputView pointer /** * HW acceleration through CUDA. data[i] contain CUdeviceptr pointers @@ -314,6 +314,18 @@ enum AVPixelFormat { AV_PIX_FMT_P016LE, ///< like NV12, with 16bpp per component, little-endian AV_PIX_FMT_P016BE, ///< like NV12, with 16bpp per component, big-endian + /** + * Hardware surfaces for Direct3D11. + * + * This is preferred over the legacy AV_PIX_FMT_D3D11VA_VLD. The new D3D11 + * hwaccel API and filtering support AV_PIX_FMT_D3D11 only. + * + * data[0] contains a ID3D11Texture2D pointer, and data[1] contains the + * texture array index of the frame as intptr_t if the ID3D11Texture2D is + * an array texture (or always 0 if it's a normal texture). + */ + AV_PIX_FMT_D3D11, + AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions }; |