Nvidia NVDEC

Last updated

Nvidia NVDEC (formerly known as NVCUVID [1] ) is a feature in its graphics cards that performs video decoding, offloading this compute-intensive task from the CPU. [2]

Contents

It is accompanied by NVENC for video encoding in Nvidia's Video Codec SDK. [2]

Technology

NVDEC can offload video decoding to full fixed-function decoding hardware (Nvidia PureVideo), or (partially) decode via CUDA software running on the GPU, if fixed-function hardware is not available. [2] [3]

Depending on the GPU architecture, the following codecs are supported: [4]

Versions

NVCUVID was originally distributed as part of the Nvidia CUDA Toolkit. [3] Later, it was renamed to NVDEC and moved to the Nvidia Video Codec SDK. [1]

Operating system support

NVDEC is available for Windows and Linux operating systems. [2] As NVDEC is a proprietary API (as opposed to the open-source VDPAU API), it is only supported by the proprietary Nvidia driver on Linux.

Application and library support

GPU support

HW accelerated decode and encode are supported on Nvidia GeForce, Quadro, Tesla, and GRID products with Fermi or newer generation GPUs. [8]

BoardFamilyChipDesktop/
Mobile/
Server
# Of Chips# Of NVDEC
/Chip
Total # of NVDECMPEG-1MPEG-2VC-1VP8 VP9 H.264
(AVCHD)
(except High 10)
H.265 (HEVC) 4:2:0 H.265 (HEVC) 4:4:4 AV1 4:2:0
8 bit10 bit12 bit8 bit10 bit12 bit8 bit10 bit12 bit8 bit10 bit12 bit
GeForce 710A > 810A Kepler GK208M111YesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GT 723A / 740AYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GT 720M > 740MYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GT 630 / 635/ 640 / 710 / 730DYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce 710A / 810M / 820MGK107YesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GT 640M > 755M / GTX 660MYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GT 630 - 640 GeForce GTX 650 GeForce GT 740YesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 645 -650 Ti Boost GeForce GT 740GK106YesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 660 - 690 GeForce GTX 760 - 770GK104YesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 760A/M > 880MGK104YesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 680M/MX > 880MMYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 780 - 780 Ti Kepler (2nd Gen)GK110DYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX Titan / Titan BlackYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX Titan Z22YesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 745 - 750 Ti Maxwell (1st Gen)GM10711YesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce 840M / 845M / 940M / 940MX / 945MMYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 850A > 960AYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 850M > 960MYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce 830A > 945AGM10800NoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
GeForce 830M > 945MYesNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
GeForce GTX 920MX - 940MXYesNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
GeForce MX110 / MX130YesNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
GeForce GTX 750 / 950 - 960 Maxwell (2nd Gen)GM206D11YesYesYesYesYesNoNoYesYesYesNoNoNoNoNoNoNo
GeForce GTX 965MGM206MYesYesYesYesYesNoNoYesYesYesNoNoNoNoNoNoNo
GeForce GTX 910M / 920M / 920AGM208BYesYesYesNoNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 980M / 980MXGM204YesYesYesYesNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 960 Ti / 970 / 980DYesYesYesYesNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX 980 TiGM200YesYesYesYesNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce GTX Titan XYesYesYesYesNoNoNoYesNoNoNoNoNoNoNoNoNo
GeForce MX150 Pascal GP108M00NoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
GeForce MX230 / MX250 / MX330YesNoNoNoNoNoNoNoNoNoNoNoNoNoNoNoNo
GeForce GT 1030D11YesYesYesNoYesYesYesYesYesYesYesNoNoNoNoNoNo
GeForce GTX 1050 / 1050 Ti / MX350GP107D/MYesYesYesNoYesYesYesYesYesYesYesNoNoNoNoNoNo
GeForce GTX 1050 / 1050 TiGP106YesYesYesNoYesNoNoYesYesYesYesNoNoNoNoNoNo
GeForce GTX 1060YesYesYesNoYesNoNoYesYesYesYesNoNoNoNoNoNo
GeForce GTX 1060GP104YesYesYesNoYesNoNoYesYesYesYesNoNoNoNoNoNo
GeForce GTX 1070M / 1080MGP104BMYesYesYesYesYesNoNoYesYesYesYesNoNoNoNoNoNo
GeForce GTX 1070 / 1070 Ti / 1080GP104D/MYesYesYesYesYesNoNoYesYesYesYesNoNoNoNoNoNo
GeForce GTX 1080 TiGP102DYesYesYesNoYesYesYesYesYesYesYesNoNoNoNoNoNo
GeForce GTX Titan X / Titan XpYesYesYesNoYesYesYesYesYesYesYesNoNoNoNoNoNo
Titan V Volta GV100YesYesYesYesYesYesYesYesYesYesYesNoNoNoNoNoNo
GeForce GTX 1650 / MX450 Turing TU117D/MYesYesYesYesYesYesYesYesYesYesYesYesYesYesNoNoNo
GeForce GTX 1660 Ti / 1660 / 1660 SuperTU116YesYesYesYesYesYesYesYesYesYesYesYesYesYesNoNoNo
GeForce RTX 2060 / 2070 / 2060 SuperTU106YesYesYesYesYesYesYesYesYesYesYesYesYesYesNoNoNo
GeForce RTX 2080 / 2070 Super / 2080 SuperTU104YesYesYesYesYesYesYesYesYesYesYesYesYesYesNoNoNo
GeForce RTX 2080 TiTU102DYesYesYesYesYesYesYesYesYesYesYesYesYesYesNoNoNo
Titan RTXYesYesYesYesYesYesYesYesYesYesYesYesYesYesNoNoNo
A100 Ampere GA100S5YesYesYesYesYesYesYesYesYesYesYesYesYesYesNoNoNo
GeForce RTX 3050 Ti / RTX 3050GA107D/M1YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesNo
GeForce RTX 3060GA106YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesNo
GeForce RTX 3060 Ti / 3070 / 3070 TiGA104YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesNo
GeForce RTX 3080 / 3090GA102YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesNo
GeForce RTX 4090 Ada AD102D11YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYes
BoardFamilyChipDesktop/
Mobile/
Server
# Of Chips# Of NVDEC
/Chip
Total # of NVDECMPEG-1MPEG-2VC-1VP8 VP9 H.264
(AVCHD)
H.265 (HEVC) 4:2:0 H.265 (HEVC) 4:4:4 AV1 4:2:0
8 bit10 bit12 bit8 bit10 bit12 bit8 bit10 bit12 bit8 bit10 bit12 bit

See also

Related Research Articles

<span class="mw-page-title-main">Graphics processing unit</span> Specialized electronic circuit; graphics accelerator

A graphics processing unit (GPU) is a specialized electronic circuit initially designed to accelerate computer graphics and image processing. After their initial design, GPUs were found to be useful for non-graphic calculations involving embarrassingly parallel problems due to their parallel structure. Other non-graphical uses include the training of neural networks and cryptocurrency mining.

Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics hardware drivers.

<span class="mw-page-title-main">Free and open-source graphics device driver</span> Software that controls computer-graphics hardware

A free and open-source graphics device driver is a software stack which controls computer-graphics hardware and supports graphics-rendering application programming interfaces (APIs) and is released under a free and open-source software license. Graphics device drivers are written for specific hardware to work within a specific operating system kernel and to support a range of APIs used by applications to access the graphics hardware. They may also control output to the display if the display driver is part of the graphics hardware. Most free and open-source graphics device drivers are developed by the Mesa project. The driver is made up of a compiler, a rendering API, and software which manages access to the graphics hardware.

X-Video Motion Compensation (XvMC), is an extension of the X video extension (Xv) for the X Window System. The XvMC API allows video programs to offload portions of the video decoding process to the GPU video-hardware. In theory this process should also reduce bus bandwidth requirements. Currently, the supported portions to be offloaded by XvMC onto the GPU are motion compensation and inverse discrete cosine transform (iDCT) for MPEG-2 video. XvMC also supports offloading decoding of mo comp, iDCT, and VLD for not only MPEG-2 but also MPEG-4 ASP video on VIA Unichrome hardware.

CoreAVC was a proprietary codec for decoding the H.264/MPEG-4 AVC video format.

<span class="mw-page-title-main">CUDA</span> Parallel computing platform and programming model

CUDA is a proprietary and closed source parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for general purpose processing, an approach called general-purpose computing on GPUs (GPGPU). CUDA is a software layer that gives direct access to the GPU's virtual instruction set and parallel computational elements, for the execution of compute kernels.

nouveau (software) Open source software driver for Nvidia GPU

nouveau is a free and open-source graphics device driver for Nvidia video cards and the Tegra family of SoCs written by independent software engineers, with minor help from Nvidia employees.

Unified Video Decoder is the name given to AMD's dedicated video decoding ASIC. There are multiple versions implementing a multitude of video codecs, such as H.264 and VC-1.

PureVideo is Nvidia's hardware SIP core that performs video decoding. PureVideo is integrated into some of the Nvidia GPUs, and it supports hardware decoding of multiple video codec standards: MPEG-2, VC-1, H.264, HEVC, and AV1. PureVideo occupies a considerable amount of a GPU's die area and should not be confused with Nvidia NVENC. In addition to video decoding on chip, PureVideo offers features such as edge enhancement, noise reduction, deinterlacing, dynamic contrast enhancement and color enhancement.

Video Acceleration API (VA-API) is an open source application programming interface that allows applications such as VLC media player or GStreamer to use hardware video acceleration capabilities, usually provided by the graphics processing unit (GPU). It is implemented by the free and open-source library libva, combined with a hardware-specific driver, usually provided together with the GPU driver.

<span class="mw-page-title-main">OpenCL</span> Open standard for programming heterogenous computing systems, such as CPUs or GPUs

OpenCL is a framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-programmable gate arrays (FPGAs) and other processors or hardware accelerators. OpenCL specifies programming languages for programming these devices and application programming interfaces (APIs) to control the platform and execute programs on the compute devices. OpenCL provides a standard interface for parallel computing using task- and data-based parallelism.

X-Video Bitstream Acceleration (XvBA), designed by AMD Graphics for its Radeon GPU and APU, is an arbitrary extension of the X video extension (Xv) for the X Window System on Linux operating-systems. XvBA API allows video programs to offload portions of the video decoding process to the GPU video-hardware. Currently, the portions designed to be offloaded by XvBA onto the GPU are currently motion compensation (MC) and inverse discrete cosine transform (IDCT), and variable-length decoding (VLD) for MPEG-2, MPEG-4 ASP, MPEG-4 AVC (H.264), WMV3, and VC-1 encoded video.

Video Decode and Presentation API for Unix (VDPAU) is a royalty-free application programming interface (API) as well as its implementation as free and open-source library distributed under the MIT License. VDPAU is also supported by Nvidia.

<span class="mw-page-title-main">Intel Graphics Technology</span> Series of integrated graphics processors by Intel

Intel Graphics Technology (GT) is the collective name for a series of integrated graphics processors (IGPs) produced by Intel that are manufactured on the same package or die as the central processing unit (CPU). It was first introduced in 2010 as Intel HD Graphics and renamed in 2017 as Intel UHD Graphics.

Intel Quick Sync Video is Intel's brand for its dedicated video encoding and decoding hardware core. Quick Sync was introduced with the Sandy Bridge CPU microarchitecture on 9 January 2011 and has been found on the die of Intel CPUs ever since.

<span class="mw-page-title-main">Distributed Codec Engine</span>

Distributed Codec Engine (DCE) is an API and its implementation as software library ("libdce") by Texas Instruments. The library was released under the Revised BSD License and some additional terms.

Video Code Engine is AMD's video encoding application-specific integrated circuit implementing the video codec H.264/MPEG-4 AVC. Since 2012 it was integrated into all of their GPUs and APUs except Oland.

Crystal HD is Broadcom's hardware semiconductor intellectual property (SIP) core that performs video decoding.

Nvidia NVENC is a feature in Nvidia graphics cards that performs video encoding, offloading this compute-intensive task from the CPU to a dedicated part of the GPU. It was introduced with the Kepler-based GeForce 600 series in March 2012.

Video Core Next is AMD's brand for its dedicated video encoding and decoding hardware core. It is a family of hardware accelerator designs for encoding and decoding video, and is built into AMD's GPUs and APUs since AMD Raven Ridge, released January 2018.

References

  1. 1 2 "Video Decoder". CUDA Toolkit Documentation. Nvidia . Retrieved 2017-11-12.
  2. 1 2 3 4 "NVIDIA VIDEO CODEC SDK". NVIDIA Developer. Nvidia. 23 August 2013. Retrieved 2017-11-12.
  3. 1 2 "Nvidia Video Decoder (NVCUVID) Interface" (PDF). Nvidia. November 2015. Retrieved 2017-11-12.
  4. "Video Encode and Decode GPU Support Matrix". NVIDIA Developer. Nvidia . Retrieved 2017-11-12.
  5. Michael Larabel (27 June 2017). "GStreamer Adds NVDEC NVIDIA GPU Decoding Support". Phoronix .
  6. Michael Larabel (11 November 2017). "FFmpeg Lands NVDEC-Accelerated H.264 Decoding". Phoronix .
  7. wm4 (28 October 2017). "vd_lavc: add support for nvdec hwaccel". GitHub .
  8. "Video Encode and Decode GPU Support Matrix [NEW]". 8 September 2020.