High Performance Video Encoding Using Nvidia GPUs

GTC Session- High Performance Video Encoding Using NVIDIA GPUs

The missing part of the title of this session was that, instead of talking about encoding using CUDA, the point of discussion was using NVENC -- the fixed-function hardware encoder built into all Kepler GPUs to do h.264 encoding. They assured us that the NVENC encoder could handle eight streams of moderate quality h.264 video, regardless of GPU performance; the lower end GPUs would perform as well as higher end ones. Because the NVENC encoding is entirely hardware-accelerated on the fixed-function hardware, it also uses less power than CPU-based encoding or CUDA-based encoding.

Also discussed was the two different SDK models for using NVENC: first, the NVENC SDK, which lacks a provision for capture but allows more flexible encoder settings, and then the GRID SDK, which allows capture but has a small number of fixed encoder settings. The GRID SDK version is important because it allows us a peek into how the GRID cloud gaming systems work. They directly capture the output of the GPU and encode it into h.264 video for low-latency streaming, which is then streamed to the player. That is an answer to a portion of the 'how does GRID work?' and 'how will SHIELD work?' questions you might have.

Contact Us for News Tips, Corrections and Feedback

Create a new thread in the US News comments forum about this subject
This thread is closed for comments
11 comments
    Your comment
    Top Comments
  • majorlag
    Except GPU encoding has yet to produce the same quality as x264. Sure if your uploading to Youtube or some other stream sites and just need a h.264 stream quick and dirty it will look ok. If you want better results, then use those cuda to hardware accelerate the decoding of streams to feed to x264. x264 does have a fast encoding times if you use the basic settings, and those can churn out h.264 streams rather quick, and look closer to the original by a large factor compared to GPU encoding.

    See GPU encoding can't encode 10bit, they also take short cuts on what all profiles and settings are allowed to be feed. In fact the last time I tried to use a GPU, it had no settings to change what so ever, just input, output, resolution, You couldn't even select DXVA compliant!

    So please be kind to your archive of high quality encodes and choose a trusted encoder front end for x264. I recommend MeGUI or Handbreak

    ~Majorlag
    12
  • Other Comments
  • majorlag
    Except GPU encoding has yet to produce the same quality as x264. Sure if your uploading to Youtube or some other stream sites and just need a h.264 stream quick and dirty it will look ok. If you want better results, then use those cuda to hardware accelerate the decoding of streams to feed to x264. x264 does have a fast encoding times if you use the basic settings, and those can churn out h.264 streams rather quick, and look closer to the original by a large factor compared to GPU encoding.

    See GPU encoding can't encode 10bit, they also take short cuts on what all profiles and settings are allowed to be feed. In fact the last time I tried to use a GPU, it had no settings to change what so ever, just input, output, resolution, You couldn't even select DXVA compliant!

    So please be kind to your archive of high quality encodes and choose a trusted encoder front end for x264. I recommend MeGUI or Handbreak

    ~Majorlag
    12
  • A Bad Day
    Another issue is decreased stability when GPU acceleration is activated. On Youtube, sometimes the videos turn out to be plain green with audio, Firefox/IE/Chrome locks up, or cause an OS hard-lock.
    3
  • bison88
    High Performance != High Quality. Even though the ability to offload to the GPU has existed for well over 6 years, the quality is still really bad in comparisons to the much slower CPU encoding. At this point it's hard to tell whether it's the hardware or software that is the problem, but much work needs to be done to even consider GPU based encoding given the noticeable quality difference.
    8