NVIDIA Video Codec SDK
A comprehensive set of APIs including high-performance tools, samples and documentation for hardware-accelerated video encode and decode on Windows and Linux.
Hardware-Based Decoder and Encoder
NVIDIA GPUs contain one or more hardware-based decoders and encoders (separate from the CUDA cores) which provide 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 engines for video decoding (referred to as NVDEC) and video encoding (referred to as NVENC) support faster-than-real-time video processing, which makes them suitable to be used for transcoding applications, in addition to video playback. NVIDIAâs newest GPU architecture, Ada, features up to 3X NVENC and 4X NVDEC. Video Codec SDK lets you harness the NVENC and NVDEC for real-time 8K 60FPS AV1 and HEVC video on Ada Lovelace architecture.
Hardware-Accelerated Video Encoding - NVENC
Introducing AV1 encoding with Video Codec SDK 12.0 on NVIDIAâs Ada architecture. AV1 is the state of the art video coding format that supports higher quality with better performance compared to H.264 and HEVC. On Ada, multiple NVENC coupled with AV1 enables encoding 8k video at 60fps alongside a higher number of concurrent sessions. 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 and streaming scenario like streaming to Twitch.tv using Open Broadcaster Software (OBS), encoding being completely offloaded to NVENC makes the graphics engine bandwidth fully available for game rendering.
NVENC enables streaming applications at high quality and ultra-low latency without utilizing the CPU, encoding at very high quality for archiving, OTT streaming, web videos, and encoding with ultra-low power consumption per stream (watts/stream).
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 | AV1 | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MAX Color | MAX Res. | MAX Color | MAX Res. | MAX Color | MAX Res. | MAX Color | MAX Res. | MAX Color | MAX Res. | MAX Color | MAX Res. | MAX Color | MAX Res. | |
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 | N/A | N/A |
Maxwell (2nd Gen) | 8-bit | 4096 x 4096 | 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 | N/A | N/A |
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** | N/A | N/A |
Volta | 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 | N/A | N/A |
Turing | 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 | N/A | N/A |
Ampere (A100) |
No | No | No | No | No | No | No | No | No | No | No | No | No | No |
Ampere (non A100) |
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 | N/A | N/A |
Ada | 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 | 10-bit | 8192 x 8192 |
* Except GM108 and GP108 (not supported)
** Except GP100 (is limited to 4K resolution)
Hardware-Accelerated Video Decoding - NVDEC
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.
NVDECODE API enables software developers to configure this dedicated hardware video decoder. This dedicated accelerator supports hardware-accelerated decoding of the following video codecs on Windows and Linux platforms: MPEG-2, VC-1, H.264 (AVCHD), H.265 (HEVC), VP8, VP9 and AV1 (see table below for codec support for each GPU generation).
GPU | *H.265 (HEVC) 4:4:4 | H.265 (HEVC) 4:2:0 | H.264 (AVCHD) 4:2:0 | VP9 | VP8 | MPEG-2 | VC-1 | AV1 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MAX Color | MAX Res. | MAX Color | MAX Res. | 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 | N/A | N/A | N/A | N/A | 8-bit | 4096 x 4096 | N/A | N/A | N/A | N/A | 8-bit | 4080 x 4080 | 8-bit | 2048 x 1024 | N/A | N/A |
Maxwell (1st Gen)* | N/A | N/A | N/A | N/A | 8-bit | 4096 x 4096 | N/A | N/A | N/A | N/A | 8-bit | 4080 x 4080 | 8-bit | 2048 x 1024 | N/A | N/A |
Maxwell (2nd Gen) | N/A | N/A | N/A | N/A | 8-bit | 4096 x 4096 | N/A | N/A | 8-bit | 4096 x 4096 | 8-bit | 4080 x 4080 | 8-bit | 2048 x 1024 | N/A | N/A |
Maxwell (GM206) | N/A | N/A | 10-bit | 4096 x 2304 | 8-bit | 4096 x 4096 | 8-bit | 4096 x 2304 | 8-bit | 4096 x 4096 | 8-bit | 4080 x 4080 | 8-bit | 2048 x 1024 | N/A | N/A |
Pascal | N/A | N/A | 12-bit | 8192 x 8192** | 8-bit | 4096 x 4096 | 12-bit**** | 8192 x 8192** | 8-bit | 4096 x 4096*** | 8-bit | 4080 x 4080 | 8-bit | 2048 x 1024 | N/A | N/A |
Volta | N/A | N/A | 12-bit | 8192 x 8192 | 8-bit | 4096 x 4096 | 12-bit | 8192 x 8192 | 8-bit | 4096 x 4096 | 8-bit | 4080 x 4080 | 8-bit | 2048 x 1024 | N/A | N/A |
Turing | 12-bit | 8192 x 8192 | 12-bit | 8192 x 8192 | 8-bit | 4096 x 4096 | 12-bit | 8192 x 8192 | 8-bit | 4096 x 4096 | 8-bit | 4080 x 4080 | 8-bit | 2048 x 1024 | N/A | N/A |
Ampere
(A100) |
12-bit | 8192 x 8192 | 12-bit | 8192 x 8192 | 8-bit | 4096 x 4096 | 12-bit | 8192 x 8192 | 8-bit | 4096 x 4096 | 8-bit | 4080 x 4080 | 8-bit | 2048 x 1024 | N/A | N/A |
Ampere
(non A100) |
12-bit | 8192 x 8192 | 12-bit | 8192 x 8192 | 8-bit | 4096 x 4096 | 12-bit | 8192 x 8192 | 8-bit | 4096 x 4096 | 8-bit | 4080 x 4080 | 8-bit | 2048 x 1024 | 10-bit | 8192 x 8192 |
Ada | 12-bit | 8192 x 8192 | 12-bit | 8192 x 8192 | 8-bit | 4096 x 4096 | 12-bit | 8192 x 8192 | 8-bit | 4096 x 4096 | 8-bit | 4080 x 4080 | 8-bit | 2048 x 1024 | 10-bit | 8192 x 8192 |
* Except GM108 (not supported)
** Max resolution support is limited to selected Pascal chips
*** VP8 decode support is limited to selected Pascal chips
**** VP9 10/12 bit decode support is limited to select Pascal chips
Video Codec APIs
NVIDIA has provided hardware-accelerated video processing on GPUs for over a decade through the NVIDIA Video Codec SDK.
This is a comprehensive set of APIs, high-performance tools, samples, and documentation for hardware-accelerated video encoding and decoding on Windows and Linux.
NVIDIA also supports GPU-accelerated encoding and decoding through Microsoftâs DirectX Video, a cross-vendor API for Windows developers and Vulkan Video with support for both Linux and Windows. In contrast to the NVIDIA Video Codec SDK, both DirectX Video and Vulkan Video are low-level APIs. While the Video Codec SDK provides automation for C++ developers, DirectX Video and Vulkan Video provide precise control over video streaming through hardware acceleration blocks, empowering applications to orchestrate system resources efficiently.
Whether you prefer DirectX or Vulkan, you can combine flexible GPU-accelerated video encoding and decoding with other GPU acceleration, like 3D and AI, using the language of your choice.
The low-level Vulkan Video extensions are also attractive to developers of popular open-source streaming media frameworks such as GStreamer and FFmpeg, both of which are being actively ported to Vulkan Video. The cross-platform availability of Vulkan will enable accelerated GPU processing for these frameworks across multiple platforms without needing to port to multiple proprietary video APIs. Please refer to the Vulkan Video getting started page for more details.
PyNvVideoCodec is another set of APIs introduced in Q4 2023, which provides simple APIs for harnessing video encoding and decoding capabilities when working with videos in Python. PyNvVideoCodec is a library that provides python bindings over C++ APIs for hardware accelerated video encoding and decoding.
Video Codec SDK, DirectX Video, Vulkan Video and PyNvVideoCodec provide complementary support to GPU-accelerated video workflows. NVIDIA will continue to support all listed APIs providing developers with the option to use the ones that best suit their needs.
Vulkan Video | DirectX Video | NVIDIA Video Codec SDK | PyNvVideoCodec | |
---|---|---|---|---|
Platform | Windows and Linux | Windows | Windows and Linux | Windows and Linux |
Benefits |
|
|
|
|
Native API interface | Vulkan Graphics | D3D11 (Decode only) and D3D12 | D3D9, D3D10, D3D11, D3D12 (Encode only) CUDA (Encode and decode) | CUDA (Encode and decode) |
Partners and Examples
Latest Video Codec SDK News
New Video Creation and Streaming
Features Accelerated by the NVIDIA Video Codec SDK
Video Codec SDK 12.1 is available now, bringing improvements to split encoding and a new low-level NVENC API. Learn about the new features and how they've been used to accelerate video creation and streaming.
Improving Video Quality and
Performance With AV1 and NVIDIA Ada Lovelace Architecture
AV1 is the new gold standard video format, with superior efficiency and quality compared to older H.264 and H.265 formats. It's the most recent royalty-free, efficient video encoder standardized by the Alliance for Open Media.
AV1 Encoding and Optical Flow:
Video Performance Boosts and Higher Fidelity on the NVIDIA Ada Architecture
Updates to Video Codec SDK, including AV1 encoding on the new Ada GPU generation and updates to Optical Flow SDK, including the new frame rate up conversion library, are announced at GTC.