summaryrefslogtreecommitdiffstats
path: root/libavcodec/allcodecs.c
diff options
context:
space:
mode:
authorPhilip Langdale <philipl@overt.org>2017-11-15 20:59:29 -0800
committerPhilip Langdale <philipl@overt.org>2017-11-20 07:21:41 -0800
commit6b77a10e43e1a8ed8ead20f344485d400440055c (patch)
tree995cac8170327efb23d70d0a372a6792ec1194ed /libavcodec/allcodecs.c
parent8bca292c3045a7f372299f71c8d88b541fe2a816 (diff)
downloadffmpeg-streaming-6b77a10e43e1a8ed8ead20f344485d400440055c.zip
ffmpeg-streaming-6b77a10e43e1a8ed8ead20f344485d400440055c.tar.gz
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.
Diffstat (limited to 'libavcodec/allcodecs.c')
-rw-r--r--libavcodec/allcodecs.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index e9df704..85c38c8 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -106,6 +106,7 @@ static void register_all(void)
REGISTER_HWACCEL(MPEG4_CUVID, mpeg4_cuvid);
REGISTER_HWACCEL(MPEG4_MEDIACODEC, mpeg4_mediacodec);
REGISTER_HWACCEL(MPEG4_MMAL, mpeg4_mmal);
+ REGISTER_HWACCEL(MPEG4_NVDEC, mpeg4_nvdec);
REGISTER_HWACCEL(MPEG4_VAAPI, mpeg4_vaapi);
REGISTER_HWACCEL(MPEG4_VDPAU, mpeg4_vdpau);
REGISTER_HWACCEL(MPEG4_VIDEOTOOLBOX, mpeg4_videotoolbox);
OpenPOWER on IntegriCloud