]> git.sesse.net Git - ffmpeg/commit
avcodec: Implement mpeg4 nvdec hwaccel
authorPhilip Langdale <philipl@overt.org>
Thu, 16 Nov 2017 04:59:29 +0000 (20:59 -0800)
committerPhilip Langdale <philipl@overt.org>
Mon, 20 Nov 2017 15:21:41 +0000 (07:21 -0800)
commit6b77a10e43e1a8ed8ead20f344485d400440055c
tree995cac8170327efb23d70d0a372a6792ec1194ed
parent8bca292c3045a7f372299f71c8d88b541fe2a816
avcodec: Implement mpeg4 nvdec hwaccel

This was predictably nightmarish, given how ridiculous mpeg4 is.
I had to stare at the cuvid parser output for a long time to work
out what each field was supposed to be, and even then, I still don't
fully understand some of them. Particularly:

vop_coded: If I'm reading the decoder correctly, this flag will always
           be 1 as the decoder will not pass the hwaccel any frame
           where it is not 1.
divx_flags: There's obviously no documentation on what the possible
            flags are. I simply observed that this is '0' for a
            normal bitstream and '5' for packed b-frames.
gmc_enabled: I had a number of guesses as to what this mapped to.
             I picked the condition I did based on when the cuvid
             parser was setting flag.

Also note that as with the vdpau hwaccel, the decoder needs to
consume the entire frame and not the slice.
Changelog
configure
libavcodec/Makefile
libavcodec/allcodecs.c
libavcodec/h263dec.c
libavcodec/nvdec.c
libavcodec/nvdec_mpeg4.c [new file with mode: 0644]
libavcodec/version.h