Nvidia NVENC
NVIDIA NVENC (short for NVIDIA Encoder) 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.[1][2]
The encoder is supported in many livestreaming and recording programs, such as Wirecast, Open Broadcaster Software (OBS) and Bandicam, as well as video editing apps, such as Adobe Premiere Pro or DaVinci Resolve. It also works with Share game capture, which is included in Nvidia's GeForce Experience software.[3][4][5]
Consumer targeted GeForce graphics cards officially support no more than 3 simultaneously encoding video streams, regardless of the count of the cards installed, but this restriction can be circumvented on Linux and Windows systems by applying an unofficial patch to the drivers.[6] Professional cards support between 3 and unrestricted simultaneous streams per card, depending on card model and compression quality.[1]
NVIDIA chips also feature an onboard decoder, NVDEC (short for NVIDIA Decoder), to offload video decoding from the CPU to a dedicated part of the GPU.[1]
Versions
NVENC has undergone several hardware revisions since its introduction with the first Kepler GPU (GK104).[7]
GPU Hardware | H.264 (AVC)
(In H.264, NVENC always has B Frame support, max 4096x4096 resolution, and max 8-bit depth) |
H.265 (HEVC) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
NVENC Generation | GPU Code Name | NVENC per Chip | Chroma | Lossless Coding | Chroma | Lossless Coding | Resolution | Color Depth | B Frames | ||
4:2:0 | 4:4:4 | 4:2:0 | 4:4:4 | ||||||||
1st Gen | GK110 | 1 | H.265 not supported | ||||||||
GK107 | |||||||||||
GK106 | |||||||||||
GK104 | |||||||||||
2nd Gen | GM108 | 0 | No NVENC encoders available | ||||||||
GM107 | 1 | H.265 not supported | |||||||||
3rd Gen | GM208 | 1 | |||||||||
GM206 | Y?[9] N?[8] | Y?[9] N?[8] | 4096 x 4096 | 8-bit | |||||||
GM204 | 2 | ||||||||||
GM200 | |||||||||||
4th Gen | GP108 | 0 | No NVENC encoders available | ||||||||
GP107 | 1 | 8192 x 8192 | 10-bit | ||||||||
GP106 | |||||||||||
GP104-2xx+ | 2 | ||||||||||
GP104-1xx | 1 | ||||||||||
GP102 | 2 | ||||||||||
GP100 | 3 | 4096 x 4096 | |||||||||
5th Gen | GV10x | 8192 x 8192 | |||||||||
6th Gen | TU117 | 1 | |||||||||
TU116 | |||||||||||
TU106 | |||||||||||
TU104 | |||||||||||
TU102 | |||||||||||
7th Gen | GA104 | 1 | 8192 x 8192 | 10-bit | |||||||
GA102 | |||||||||||
A100[10] | 0 | No NVENC encoders available |
First generation, Kepler GK1xx
The first generation of NVENC, which is shared by all Kepler-based GPUs, supports H.264 high-profile (YUV420, I/P/B frames, CAVLC/CABAC), H.264 SVC Temporal Encode VCE, and Display Encode Mode (DEM).
NVidia's documentation states a peak encoder throughput of 8× realtime at a resolution of 1920×1080 (where the baseline "1×" equals 30 Hz). Actual throughput varies on the selected preset, user-controlled parameters and settings, and the GPU/memory clock frequencies. The published 8× rating is achievable with the NVENC high-performance preset, which sacrifices compression efficiency and quality for encoder throughput. The high-quality preset is considerably slower but produces fewer compression artifacts.
Second generation, Maxwell GM107
Introduced with the first-generation Maxwell architecture, second generation NVENC adds support for the high-performance HP444 profile (YUV4:4:4, predictive lossless encoding), and increases encoder throughput up to 16× realtime, which corresponds to about 1080p @ 480 Hz with the high-performance preset.)
Maxwell GM108 does not have NVENC hardware encoder support.
Third generation, Maxwell GM20x
Introduced with the second-generation Maxwell architecture, third generation NVENC implements the video compression algorithm High Efficiency Video Coding (a.k.a. HEVC, H.265) and also increases the H.264 encoder's throughput to cover 4K-resolution at 60 Hz (2160p60). However, it does not support B-frames for HEVC encoding (just I and P frames). The maximum NVENC HEVC coding tree unit (CU) size is 32 (the HEVC standard allows a maximum of 64), and its minimum CU size is 8.
HEVC encoding also lacks Sample Adaptive Offset (SAO). Adaptive quantization, look-ahead rate control, adaptive B-frames (H.264 only) and adaptive GOP features were added with the release of Nvidia Video Codec SDK 7. [11] These features rely on CUDA cores for hardware acceleration.
SDK 7 supports two forms of adaptive quantization; Spatial AQ (H.264 and HEVC) and Temporal AQ (H.264 only).
Nvidia's consumer-grade (GeForce) cards and some of its lower-end professional Quadro cards are restricted to three simultaneous encoding jobs. Its higher-end Quadro cards do not have this restriction.
Fourth generation, Pascal GP10x
Fourth generation NVENC implements HEVC Main10 10-bit hardware encoding. It also doubles the encoding performance of 4K H.264 & HEVC when compared to previous generation NVENC. It supports HEVC 8K, 4:4:4 chroma subsampling, lossless encoding, and sample adaptive offset (SAO).
Nvidia Video Codec SDK 8 added Pascal exclusive Weighted Prediction feature (CUDA based). Weighted prediction is not supported if the encode session is configured with B frames (H.264).
There is no B-Frame support for HEVC encoding, and the maximum CU size is 32×32.
The NVIDIA GT 1030 and the Mobile Quadro P500 are GP108 chips that don't support the NVENC encoder.
In laptop graphics, NVIDIA MX Graphics do not include NVENC as they are based on a Maxwell-generation GM108 or a Pascal-generation GP108 chip. [12] The GeForce MX350 is a GP107 chip whose NVENC encoder is disabled during manufacture.
Fifth generation, Volta GV10x/Turing TU117
Volta NVENC has similar performance as Pascal's NVENC.
It does not offer support for HEVC B-Frames.
Sixth generation, Turing TU10x/TU116
Sixth generation NVENC implements HEVC 8K encoding at 30FPS, HEVC B-Frames support and provides up to 25% bitrate savings for HEVC and up to 15% bitrate savings for H.264. The Nvidia GeForce GTX 1650 is exempt from this generation however, as it uses Volta NVENC instead of Turing. The GTX 1650 Super however uses the Turing NVENC engine as it is based on the TU116 rather than the TU117 used in the regular GTX 1650. [13]
Seventh generation, Ampere GA10x
Ampere has essentially the same NVENC generation engine as Turing.[14]
Operating system support
The Nvidia NVENC SIP core needs to be supported by the device driver. The driver provides one or more interfaces, (e.g. OpenMAX IL) to NVENC. The NVENC SIP core can only be accessed through the proprietary NVENC API (as opposed to the open-source VDPAU API).
It is bundled with Nvidia's GeForce driver.
NVENC is available for Windows and Linux operating systems.[1] The free and open-source nouveau device driver does not support Nvidia NVENC.[15]
Application software support
- Adobe Premiere Pro added NVENC support in version 14.2 in May 2020. [16]
- Avidemux supports NVENC since at least 2016. [17]
- Bandicut
- Corel VideoStudio
- Davinci Resolve/studio when exporting video in h.264 or h.265. [18]
- FFmpeg has supported NVENC since 2014,[19] and is supported in Nvidia drivers.[20]
- HandBrake added NVENC support in version 1.2.0 in December 2018. [21]
- HitFilm express/pro when previewing video on the timeline or exporting video in h.264 or h.265. [22]
- MacroSystem BogartSE supports NVENC export since v9.4 (Oct. 2017) and UHD-Disc encoding since v11.3 (Oct.2019) [23]
- MediaCoder
- Open Broadcaster Software (OBS)
- StaxRip
- VideoProc
- XMedia Recode
GPU throughput
Comparison of Encode Throughput[24]
Streams | H.264 Encode (1080p30) |
---|---|
GM204(Tesla M6) | 18 |
GM107(Tesla M10) | 28 |
GP104(Tesla P4) | 24 |
TU104(Tesla T4) | 32 |
P100 | 36 |
V100 | 36 |
See also
- Intel Quick Sync Video, Intel's equivalent SIP core
- Video Coding Engine, AMD's equivalent SIP core till 2017
- Video Core Next, AMD's video core which combines the functionality of Video Coding Engine and Unified Video Decoder
- Nvidia PureVideo, hardware video decoding.
- NVIDIA GPU, List of Nvidia GPU
References
- "NVIDIA VIDEO CODEC SDK". NVIDIA Developer. Nvidia. Retrieved 2017-11-12.
- "Maxwell's Feature Set: Kepler Refined". AnandTech. 2014-02-18.
- "System Requirements for NVIDIA GeForce Experience | GeForce | GeForce". www.geforce.com. Retrieved 2016-08-17.
- "Wirecast Tech Specs". telestream.net. Retrieved 2017-12-19.
- "Open Broadcaster Software - Index". obsproject.com. Archived from the original on 2019-03-23. Retrieved 2016-08-17.
- "nvidia-patch". GitHub.
- "S5613 - High-Performance Video Encoding Using NVIDIA GPUs". Nvidia.
- "Video Encode and Decode GPU Support Matrix". NVIDIA Developer. 2016-11-09. Retrieved 2020-08-22.
- "NVIDIA VIDEO CODEC SDK". NVIDIA Developer. 2016-11-09. Retrieved 2020-08-22.
- "NVIDIA Ampere Architecture In-Depth". NVIDIA Developer Blog. 2020-05-14. Retrieved 2020-08-31.
- http://on-demand.gputechconf.com/gtc/2016/presentation/s6226-abhijit-patait-high-performance-video.pdf
- [NVIDIA GeForce MX250 and MX230 – two "new" graphics for laptops: https://newsbeezer.com/polandeng/nvidia-geforce-mx250-and-mx230-two-new-graphics-for-laptops/]
- https://www.pcgamer.com/nvidia-geforce-gtx-1650-super-review/
- https://www.nvidia.com/content/dam/en-zz/Solutions/geforce/ampere/pdf/NVIDIA-ampere-GA102-GPU-Architecture-Whitepaper-V1.pdf
- "Nouveau Feature Matrix". Freedesktop.org.
- Cut to the Video: Adobe Premiere Pro Helps Content Creators Work Faster with GPU-Accelerated Exports
- AVIDemux Changelog
- forum post asking how to activate NVENC encoding in Davinci studio 16 answer was found proving exsitance
- "nvenc.c H.264 hardware encoding using nvidia nvenc".
- "QUADRO DESKTOP/QUADRO NOTEBOOK DRIVER RELEASE 375".
- HandBrake 1.2.0 released
- forum post by staff member saying there is an issue with the way the software is interacting with the encoder but at the same time saying it exsits
- MacroSystem Arabesk 8 info from Casablanca Expert
- https://www.nvidia.com/en-us/data-center/virtualization/resources/