NVIDIA GPUs contain one or more hardware-based decoder and encoder(s) (separate from the CUDA cores) which provides fully-accelerated hardware-based video decoding and encoding for several popular codecs. With decoding/encoding offloaded, the graphics engine and the CPU are free for other operations.

GPU hardware accelerator engine for video decoding (referred to as NVDEC) supports faster than real-time decoding which makes it suitable to be used for transcoding applications, in addition to video playback applications.

* Diagram represents support for the NVIDIA Pascal GPU family
** 4:2:2 is not natively supported on HW
*** Support is codec dependent

Get NVIDIA Video Codec SDK

If you are looking to make use of the dedicated decoding/encoding hardware on your GPU in an existing application you can leverage the integration already available in the FFmpeg/libav. FFmpeg/libav should be used for evaluation or quick integration, but it may not provide control over every encoder parameter. NVDECODE and NVENCODE APIs should be used for low-level granular control over various encode/decode parameters and if you want to directly tap into the hardware decoder/encoder. This access is available through the Video Codec SDK.

Key Features of Video Codec SDK

NVENC - Hardware-Accelerated Video Encoding

NVIDIA GPUs - beginning with the Kepler generation - contain a hardware-based encoder (referred to as NVENC) which provides fully-accelerated hardware-based video encoding and is independent of graphics performance. With
complete encoding (which is computationally complex) offloaded to NVENC, the graphics engine and the CPU are free for other operations. For example, in a game recording scenario, encoding being completely offloaded to NVENC makes the graphics
engine bandwidth fully available for game rendering.

* Diagram represents support for the NVIDIA Pascal GPU family
** 4:2:2 is not natively supported on HW

GPU

H.264 (AVCHD) YUV 4:2:0

H.264 (AVCHD) YUV 4:4:4

H.264 (AVCHD) LOSSLESS

H.265 (HEVC) YUV 4:2:0

H.265 (HEVC) YUV 4:4:4

H.265 (HEVC) LOSSLESS

MAX Color

MAX Res.

MAX Color

MAX Res.

MAX Color

MAX Res.

MAX Color

MAX Res.

MAX Color

MAX Res.

MAX Color

MAX Res.

Kepler

8-bit

4096 x 4096

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

N/A

Maxwell (1st Gen)*

8-bit

4096 x 4096

8-bit

4096 x 4096

8-bit

4096 x 4096

N/A

N/A

N/A

N/A

N/A

N/A

Maxwell (2nd Gen)

8-bit

4096 x 4096

8-bit

4096 x 4096

8-bit

4096 x 4096

N/A

N/A

N/A

N/A

N/A

N/A

Maxwell (GM206)

8-bit

4096 x 4096

8-bit

4096 x 4096

8-bit

4096 x 4096

8-bit

4096 x 4096

8-bit

4096 x 4096

8-bit

4096 x 4096

Pascal

8-bit

4096 x 4096

8-bit

4096 x 4096

8-bit

4096 x 4096

10-bit

8192 x 8192**

10-bit

8192 x 8192**

10-bit

8192 x 8192**

* Except GM108
** Except GP100

For a full list of GPUs, encode formats and number of streams supported, please see the available GPU Support Matrix.

Performance: 5X Increase over x264(CPU)

Performance represents measured average performance and quality of different classes of videos (camcorder, gaming, screen, synthetic, and telepresence). Performance may vary based on OS and software versions, and motherboard configuration.

Performance represents max performance and may vary based on OS and software versions, and motherboard configuration.

NVDEC - Hardware-Accelerated Video Decoding

NVIDIA GPUs contain a hardware-based decoder (referred to as NVDEC) which provides fully-accelerated hardware-based video decoding for several popular codecs. With complete decoding offloaded to NVDEC the graphics engine and the CPU are free for other operations. NVDEC supports much faster than real-time decoding which makes it suitable to be used for transcoding applications, in addition to video playback applications.

OUTPUT

Upon completion of the encoding process for an input picture, the client gets a CPU pointer to the encoded bit stream. The client can make a local copy of the encoded data or pass the CPU pointer for further processing (e.g. to a media file writer).