• Philip Langdale's avatar
    avcodec/vdpau: Support for VDPAU accelerated HEVC decoding · 6e5e139f
    Philip Langdale authored
    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: 's avatarPhilip Langdale <philipl@overt.org>
    6e5e139f
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
arch.mak Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_common_opts.h Loading commit data...
cmdutils_opencl.c Loading commit data...
common.mak Loading commit data...
configure Loading commit data...
ffmpeg.c Loading commit data...
ffmpeg.h Loading commit data...
ffmpeg_dxva2.c Loading commit data...
ffmpeg_filter.c Loading commit data...
ffmpeg_opt.c Loading commit data...
ffmpeg_vda.c Loading commit data...
ffmpeg_vdpau.c Loading commit data...
ffplay.c Loading commit data...
ffprobe.c Loading commit data...
ffserver.c Loading commit data...
ffserver_config.c Loading commit data...
ffserver_config.h Loading commit data...
library.mak Loading commit data...
version.sh Loading commit data...