Announcement: New bug-fix version for Video Codec SDK 8.2

Hi everyone,

We’ve uploaded a new bug-fixed version for Video Codec SDK 8.2.

Please visit https://developer.nvidia.com/nvidia-video-codec-sdk for more information and download the latest release

Changes & Improvements

  • Fixed the AppEncMe crash

Thanks,
Ryan Park

Hi Ryan,

I’ve got a few questions that maybe you or other blog members can answer.

First Question relates to use of multiple GPUs within a server for video transcoding.

We’ve been using 16 GB P100s to transcode MPEG2 and H264 to HEVC 720p, but have not been able to get 4 GPUs to work simultaneously in one SuperMicro SYS-1029GQ-TRT server, even though all server I/O, CPU, Internal Bus thruput and Memory resources are in the 15-20% range.

At most we’ve been able to transcode about 22 channels (`660 FPS). When we try to add transcodes on a second or third GPU, the total number of channels does not increase. Do any ideas come up as to what may be causing this limitation?

Second Question is:

Would 32 GB Tesla V100s, or Quadro GV100, or Turing TU104s be able to increase the total number of simultaneous live video transcodes versus the Tesla P100s?

Third Question is:

Do you know when the new Video Codec SDK, which exposes new encoder improvements and features of Turing will be released?

Thanks,

Max

I noticed today that FFmpeg source was updated so that it requires the driver to report NVENC API version 8.2.

However, even the latest drivers only report in the FFmpeg log that they have loaded NVEncodeAPI 8.1. Is that correct - if the 8.2 SDK is out, shouldn’t the latest drivers (released just 3 days ago) be reporting 8.2 too?

+1 same issue.
@oviano did you find a solution ?

Yes, I rebuilt FFmpeg using the jb suite:

https://github.com/jb-alvarado/media-autobuild_suite

I had to change one line in media_suite_compile.sh:

<<<<<

do_vcs “https://git.videolan.org/git/ffmpeg/nv-codec-headers.git” ffnvcodec; then

becomes

do_vcs “https://git.videolan.org/git/ffmpeg/nv-codec-headers.git#tag=n8.2.15.5” ffnvcodec; then

I also made it build FFmpeg 4.1, but that isn’t necessary if you’re happy with master:

<<<<<

if do_vcs “https://git.ffmpeg.org/ffmpeg.git”; then

becomes

if do_vcs “https://git.ffmpeg.org/ffmpeg.git#branch=4.1”; then

This is for Windows, if you’re on a different platform I guess the principle is the same, don’t compile against the latest nv-codec-headers!

Lifesaver !!! Thanks :)

@oviano: If you checkout the 8.2.15.5 tag, you will see that inside nvEncodeAPI.h the version is still 8.1 . So the issue still exists, and probably is in the driver that still reports 8.1

#define NVENCAPI_MAJOR_VERSION 8
#define NVENCAPI_MINOR_VERSION 1

#define NVENCAPI_VERSION (NVENCAPI_MAJOR_VERSION | (NVENCAPI_MINOR_VERSION << 24))

Commit from 11/11/2018 https://github.com/FFmpeg/nv-codec-headers/commit/fd0669486c35d1c62be3442f73025ebac28df928 changes the version for cuvid and nvenc to 8.2 but it seems driver still replies at call NvEncodeAPIGetMaxSupportedVersion with 8.1

err = dl_fn->nvenc_dl->NvEncodeAPIGetMaxSupportedVersion(&nvenc_max_ver);
    if (err != NV_ENC_SUCCESS)
        return nvenc_print_error(avctx, err, "Failed to query nvenc max version");

    av_log(avctx, AV_LOG_VERBOSE, "Loaded Nvenc version %d.%d\n", nvenc_max_ver >> 4, nvenc_max_ver & 0xf);

    if ((NVENCAPI_MAJOR_VERSION << 4 | NVENCAPI_MINOR_VERSION) > nvenc_max_ver) {
        av_log(avctx, AV_LOG_ERROR, "Driver does not support the required nvenc API version. "
               "Required: %d.%d Found: %d.%d\n",
               NVENCAPI_MAJOR_VERSION, NVENCAPI_MINOR_VERSION,
               nvenc_max_ver >> 4, nvenc_max_ver & 0xf);
        nvenc_print_driver_requirement(avctx, AV_LOG_ERROR);
        return AVERROR(ENOSYS);
    }

or there is an error in the handling of the replied value in ffmpeg source, which for my understanding of the code, I don’t find one.

Yes, the 8.2.15.5 tag defines it as 8.1 which means it works for the current driver release…which was what I was suggesting.

Hi, I also faced the same problem about 8.2 today but just a few hours ago someone updated the nv-codedc-headers which fixed the issue. All I needed to do was to delete the ffnvcodec-git and ffmpeg-git folders as well as the related files in the local64 folder in the media-autobuild_suite and rebuild. Hope this helps!

Thanks for letting us know!