Nvidia NVENC - Nvidia NVENC

Nvidia NVENC (kurz für Nv idia Enc oder) ist eine Funktion in Nvidia - Grafikkarten , dass führt Video - Encoding , Offloading diese rechenintensive Aufgabe von der CPU auf einen dedizierten Teil der GPU . Es wurde im März 2012 mit der Kepler- basierten GeForce 600-Serie eingeführt .

Der Encoder wird von vielen Livestreaming- und Aufnahmeprogrammen wie vMix , Wirecast , Open Broadcaster Software (OBS) und Bandicam sowie Videobearbeitungs-Apps wie Adobe Premiere Pro oder DaVinci Resolve unterstützt . Es funktioniert auch mit Share Game Capture, das in Nvidias GeForce Experience-Software enthalten ist.

GeForce- Grafikkarten für Verbraucher unterstützen offiziell nicht mehr als 3 gleichzeitige Codierung von Videostreams, unabhängig von der Anzahl der installierten Karten. Diese Einschränkung kann jedoch auf Linux- und Windows- Systemen durch Anwenden eines inoffiziellen Patches auf die Treiber umgangen werden . Dadurch wird auch NVIDIA Frame Buffer Capture (NVFBC) freigeschaltet , eine schnelle Desktop-Capture- API , die die Fähigkeiten der GPU und ihres Treibers nutzt , um die Erfassung zu beschleunigen. Professionelle Karten unterstützen je nach Kartenmodell und Komprimierungsqualität zwischen 3 und uneingeschränkt gleichzeitige Streams pro Karte.

Nvidia Chips verfügen auch über einen Onboard - Decoder, NVDEC (kurz für Nv idia Dezember oder), Video abzuladen Decodierung von der CPU auf einen dedizierten Teil der GPU.

Versionen

NVENC hat seit seiner Einführung mit der ersten Kepler- GPU (GK104) mehrere Hardware-Revisionen durchlaufen .

NVENC-Zusammenfassung
GPU-Hardware H.264 (AVC)

(In H.264 hat NVENC immer B-Frame-Unterstützung, eine maximale Auflösung von 4096 x 4096 und eine maximale 8-Bit-Tiefe)

H.265 (HEVC)
NVENC-Generation GPU-Codename NVENC pro Chip Chroma Verlustfreie Codierung Chroma Verlustfreie Codierung Auflösung Farbtiefe B-Rahmen
4:2:0 4:4:4 4:2:0 4:4:4
1. Gen GK110 1 Jawohl Nein Nein H.265 wird nicht unterstützt
GK107
GK106
GK104
2. Generation GM108 0 Keine NVENC-Encoder verfügbar
GM107 1 Jawohl Jawohl Jawohl H.265 wird nicht unterstützt
3. Generation GM208 1 Nein Nein
GM206 Jawohl Jawohl Jawohl Ja? N? Ja? N? 4096 x 4096 8 Bit Nein
GM204 2 Nein Nein
GM200
4. Gen GP108 0 Keine NVENC-Encoder verfügbar
GP107 1 Jawohl Jawohl Jawohl Jawohl Jawohl Jawohl 8192 x 8192 10-Bit Nein
GP106
GP104-2xx+ 2
GP104-1xx 1
GP102 2
GP100 3 4096 x 4096
5. Gen GV10x 8192 x 8192
TU117 1
6. Gen TU116 Jawohl
TU106
TU104
TU102
7. Gen GA106 1 Jawohl Jawohl Jawohl Jawohl Jawohl Jawohl 8192 x 8192 10-Bit Jawohl
GA104
GA102
GA100 0 Keine NVENC-Encoder verfügbar

Erste Generation, Kepler GK1xx

Die erste Generation von NVENC, die von allen Kepler- basierten GPUs geteilt wird, unterstützt H.264 High-Profile (YUV420, I/P/B-Frames, CAVLC/CABAC), H.264 SVC Temporal Encode VCE und Display Encode Mode (DEM).

Die Dokumentation von NVidia gibt einen maximalen Encoder-Durchsatz von 8× Echtzeit bei einer Auflösung von 1920×1080 an (wobei die Basislinie "1×" 30  Hz entspricht). Der tatsächliche Durchsatz hängt von den ausgewählten voreingestellten, benutzergesteuerten Parametern und Einstellungen sowie den GPU-/Speichertaktfrequenzen ab. Die veröffentlichte 8-fache Bewertung ist mit der NVENC-Hochleistungsvoreinstellung erreichbar, die Komprimierungseffizienz und -qualität für den Encoder-Durchsatz opfert. Das High-Quality-Preset ist deutlich langsamer, erzeugt aber weniger Kompressionsartefakte .

Zweite Generation, Maxwell GM107

Eingeführt mit der Maxwell- Architektur der ersten Generation , bietet NVENC der zweiten Generation Unterstützung für das leistungsstarke HP444-Profil (YUV4:4:4, Predictive Lossless Encoding) und erhöht den Encoder-Durchsatz auf bis zu 16-fache Echtzeit, was etwa 1080p @ 480 . entspricht  Hz mit dem Hochleistungs-Preset.

Maxwell GM108 bietet keine Unterstützung für NVENC-Hardware-Encoder.

Dritte Generation, Maxwell GM20x

Eingeführt mit der Maxwell-Architektur der zweiten Generation implementiert NVENC der dritten Generation den Videokompressionsalgorithmus High Efficiency Video Coding (auch bekannt als HEVC, H.265) und erhöht auch den Durchsatz des H.264-Encoders, um eine 4K-Auflösung bei 60  Hz (2160p60) abzudecken. Es unterstützt jedoch keine B-Frames für die HEVC-Codierung (nur I- und P-Frames ). Die maximale NVENC HEVC Coding Tree Unit (CU)-Größe beträgt 32 (der HEVC-Standard lässt maximal 64 zu) und die minimale CU-Größe beträgt 8.

Der HEVC- Codierung fehlt außerdem der Sample Adaptive Offset (SAO). Adaptive Quantisierung, Look-Ahead-Rate-Steuerung, adaptive B-Frames (nur H.264) und adaptive GOP-Funktionen wurden mit der Veröffentlichung von Nvidia Video Codec SDK 7 hinzugefügt. Diese Funktionen basieren auf CUDA-Kernen für die Hardwarebeschleunigung.

SDK 7 unterstützt zwei Formen der adaptiven Quantisierung; Räumliche AQ ( H.264 und HEVC) und zeitliche AQ (nur H.264).

Nvidias Consumer-Grade-Karten (GeForce) und einige seiner unteren professionellen Quadro- Karten sind auf drei gleichzeitige Codierungsjobs beschränkt. Seine höherwertigen Quadro-Karten haben diese Einschränkung nicht.

Vierte Generation, Pascal GP10x

NVENC der vierten Generation implementiert HEVC Main10 10-Bit-Hardwarecodierung. Es verdoppelt auch die Codierungsleistung von 4K H.264 & HEVC im Vergleich zu NVENC der vorherigen Generation. Es unterstützt HEVC 8K, 4:4:4 Chroma-Subsampling , verlustfreie Codierung und Sample Adaptive Offset (SAO).

Nvidia Video Codec SDK 8 hat die exklusive Funktion Weighted Prediction von Pascal hinzugefügt ( CUDA- basiert). Die gewichtete Vorhersage wird nicht unterstützt, wenn die Codierungssitzung mit B-Frames (H.264) konfiguriert ist.

Es gibt keine B-Frame-Unterstützung für HEVC- Codierung und die maximale CU-Größe beträgt 32 × 32.

NVIDIA GT 1030 und Mobile Quadro P500 sind GP108-Chips, die den NVENC-Encoder nicht unterstützen.

Bei Laptop-Grafiken enthält NVIDIA MX Graphics kein NVENC, da sie auf einem GM108-Chip der Maxwell -Generation oder einem GP108-Chip der Pascal-Generation basieren. Die GeForce MX350 ist ein GP107-Chip, dessen NVENC-Encoder bei der Herstellung deaktiviert ist.

Fünfte Generation, Volta GV10x/Turing TU117

Volta NVENC hat eine ähnliche Leistung wie Pascals NVENC. [1]

Es bietet keine Unterstützung für HEVC B-Frames.

Sechste Generation, Turing TU10x/TU116

NVENC der sechsten Generation implementiert HEVC 8K-Codierung mit 30 FPS, HEVC B-Frames und HEVC B-Frames als Referenz (mit Unterstützung für jeden und mittleren Modus) und Alpha HEVC-Unterstützung und bietet bis zu 25 % Bitrateneinsparungen für HEVC und bis zu 15 % Bitrateneinsparungen für H.264. Die anfängliche Einführung der Nvidia GeForce GTX 1650 war jedoch von dieser Generation ausgenommen, da sie Volta NVENC anstelle von Turing verwendete. Nvidia hat 2020 den NVENC-Encoder der GTX 1650-Karten aktualisiert, um auch die Turing-Engine zu verwenden. Die GTX 1650 Super verwendet die Turing- NVENC-Engine, da sie auf der TU116 basiert und nicht auf der TU117, die in der ursprünglichen GTX 1650 verwendet wird.

Siebte Generation, Ampere GA10x

Ampere hat im Wesentlichen den gleichen Motor der NVENC-Generation wie Turing. Nur NVDEC unterstützt die AV1-Decodierung (mit Filmkörnung).

Betriebssystemunterstützung

Der Nvidia NVENC SIP Core muss vom Gerätetreiber unterstützt werden . Der Treiber stellt eine oder mehrere Schnittstellen (zB OpenMAX IL ) zu NVENC bereit. Auf den NVENC-SIP-Kern kann nur über die proprietäre NVENC- API (im Gegensatz zur Open-Source- VDPAU- API) zugegriffen werden.

Es ist mit Nvidias GeForce-Treiber gebündelt .

NVENC ist für Windows- und Linux-Betriebssysteme verfügbar. Der kostenlose und Open-Source-Nouveau-Gerätetreiber unterstützt Nvidia NVENC nicht.

Anwendungssoftware-Support

GPU-Durchsatz

Vergleich des Codierungsdurchsatzes

Streams H.264-Kodierung (1080p30)
GM204 (Tesla M6) 18
GM107 (Tesla M10) 28
GP104 (Tesla P4) 24
TU104 (Tesla T4) 32
P100 36
V100 36

Siehe auch

Verweise

Externe Links