summaryrefslogtreecommitdiff
path: root/libavcodec/vdpau_internal.h
diff options
context:
space:
mode:
authorPhilip Langdale <philipl@overt.org>2015-06-13 09:42:48 -0700
committerPhilip Langdale <philipl@overt.org>2015-06-25 20:06:47 -0700
commit6e5e139fe37063e64568c5ebc43b6c7c9d8eb3ec (patch)
tree51f323effc5220fc904562fd345fea725f2ee013 /libavcodec/vdpau_internal.h
parentf1e173049ecc9de03817385ba8962d14cba779db (diff)
downloadffmpeg-6e5e139fe37063e64568c5ebc43b6c7c9d8eb3ec.tar.gz
avcodec/vdpau: Support for VDPAU accelerated HEVC decoding
This change introduces basic support for HEVC decoding through vdpau. Right now, there are problems with the nvidia driver/library implementation that mean that frames are incorrectly laid out in memory when they are returned from the decoder, and it is normally impossible to recover the complete decoded frame due to loss of data from alignment inconsistencies. I obviously hope that nvidia will be fixing it in due course - I've verified the problems exist with their example application. As such, this support is not useful for any real world application, but I believe that it is correct (with the caveat that the mangled frames may hide problems) and will work properly once the nvidia problem is fixed. Right now it appears that any file encoded by x265 or nvenc is decoded correctly, but that's because these files don't use a bunch of HEVC features. Quick summary: Features that seem to work: 1) Short Term References 2) Scaling Lists 3) Tiling Features with known problems: 1) Long Term References It's hard to tell what's going on here. After I read the nvidia example app that does not set the IsLongTerm flag on LTRs, and changed my code, a bunch of frames using LTR started to display correctly, but there are still samples with glitches that are related to LTRs. In terms of real world files, both x265 and nvenc only use short term refs from this list. The divx encoder seems similar. Signed-off-by: Philip Langdale <philipl@overt.org>
Diffstat (limited to 'libavcodec/vdpau_internal.h')
-rw-r--r--libavcodec/vdpau_internal.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/vdpau_internal.h b/libavcodec/vdpau_internal.h
index 6f762e41db..8a63733546 100644
--- a/libavcodec/vdpau_internal.h
+++ b/libavcodec/vdpau_internal.h
@@ -50,6 +50,9 @@ union VDPAUPictureInfo {
#ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
VdpPictureInfoH264Predictive h264_predictive;
#endif
+#ifdef VDP_DECODER_PROFILE_HEVC_MAIN
+ VdpPictureInfoHEVC hevc;
+#endif
};
#include "vdpau.h"