Nvidia NVENC (abreviatura de Nvidia Encoder) [1] es una función de las tarjetas gráficas Nvidia que realiza la codificación de video , descargando esta tarea de alto consumo de recursos de la CPU a una parte dedicada de la GPU . Se introdujo con la serie GeForce 600 basada en Kepler en marzo de 2012 (GT 610, GT620 y GT630 son arquitectura Fermi). [2] [3]
El codificador es compatible con muchos programas de grabación y transmisión en vivo, como vMix , Wirecast , Open Broadcaster Software (OBS) y Bandicam , así como con aplicaciones de edición de video, como Adobe Premiere Pro o DaVinci Resolve . También funciona con Share Game Capture, que está incluido en el software GeForce Experience de Nvidia. [4] [5] [6]
Hasta marzo de 2023, las tarjetas gráficas GeForce orientadas al consumidor admiten oficialmente no más de tres transmisiones de video de codificación simultánea, independientemente del recuento de tarjetas instaladas, pero esta restricción se puede eludir en sistemas Linux y Windows aplicando un parche no oficial a los controladores . Al hacerlo, también se desbloquea NVIDIA Frame Buffer Capture (NVFBC) , una API de captura de escritorio rápida que utiliza las capacidades de la GPU y su controlador para acelerar la captura. [7] Las tarjetas profesionales admiten entre tres y transmisiones simultáneas sin restricciones por tarjeta, según el modelo de tarjeta y la calidad de compresión, [2] las restricciones se relajaron en 2023 permitiendo hasta 5 transmisiones de video de codificación simultánea. [8] A partir de enero de 2024, ocho transmisiones de video de codificación simultánea se convirtieron en la línea de base. [9]
Los chips Nvidia también cuentan con un decodificador integrado, NVDEC (abreviatura de Nv idia Dec oder), para descargar la decodificación de video de la CPU a una parte dedicada de la GPU. [2]
NVENC ha experimentado varias revisiones de hardware desde su introducción con la primera GPU Kepler (GK104). [10]
La primera generación de NVENC, que comparten todas las GPU basadas en Kepler , admite H.264 de alto perfil (YUV420, cuadros I/P/B, CAVLC/CABAC), H.264 SVC Temporal Encode VCE y Display Encode Mode (DEM).
La documentación de NVidia indica un rendimiento máximo del codificador de 8× en tiempo real a una resolución de 1920×1080 (donde la línea base "1×" equivale a 30 Hz). El rendimiento real varía según el valor preestablecido seleccionado, los parámetros y configuraciones controlados por el usuario y las frecuencias de reloj de la GPU/memoria. La calificación publicada de 8× se puede lograr con el valor preestablecido de alto rendimiento de NVENC, que sacrifica la eficiencia y la calidad de la compresión a cambio del rendimiento del codificador. El valor preestablecido de alta calidad es considerablemente más lento, pero produce menos artefactos de compresión.
Introducida con la arquitectura Maxwell de primera generación , la NVENC de segunda generación agrega soporte para el perfil HP444 de alto rendimiento (YUV4:4:4, codificación predictiva sin pérdida) y aumenta el rendimiento del codificador hasta 16× en tiempo real, lo que corresponde a aproximadamente 1080p a 480 Hz con el ajuste preestablecido de alto rendimiento.
Maxwell GM108 no tiene soporte para codificador de hardware NVENC.
Introducida con la arquitectura Maxwell de segunda generación, la tercera generación de NVENC implementa el algoritmo de compresión de video High Efficiency Video Coding (también conocido como HEVC, H.265) y también aumenta el rendimiento del codificador H.264 para cubrir la resolución 4K a 60 Hz (2160p60). Sin embargo, no admite fotogramas B para la codificación HEVC (solo fotogramas I y P ). El tamaño máximo de la unidad de árbol de codificación (CU) HEVC de NVENC es 32 (el estándar HEVC permite un máximo de 64) y su tamaño mínimo de CU es 8.
La codificación HEVC también carece de Sample Adaptive Offset (SAO). La cuantificación adaptativa, el control de velocidad de anticipación, los fotogramas B adaptativos (solo H.264) y las funciones GOP adaptativas se agregaron con el lanzamiento de Nvidia Video Codec SDK 7. [14] Estas funciones dependen de los núcleos CUDA para la aceleración de hardware.
SDK 7 admite dos formas de cuantificación adaptativa: AQ espacial ( H.264 y HEVC) y AQ temporal (solo H.264).
Las tarjetas de consumo de Nvidia (GeForce) y algunas de sus tarjetas Quadro profesionales de gama baja están limitadas a tres tareas de codificación simultáneas. Sus tarjetas Quadro de gama alta no tienen esta restricción.
La cuarta generación de NVENC implementa la codificación de hardware HEVC Main10 de 10 bits. También duplica el rendimiento de codificación de 4K H.264 y HEVC en comparación con la generación anterior de NVENC. Admite HEVC 8K, submuestreo de croma 4:4:4 , codificación sin pérdida y desplazamiento adaptativo de muestra (SAO).
El SDK 8 de códec de video de Nvidia agregó la función de predicción ponderada exclusiva de Pascal ( basada en CUDA ). La predicción ponderada no es compatible si la sesión de codificación está configurada con cuadros B (H.264).
No hay soporte de B-Frame para la codificación HEVC y el tamaño máximo de CU es 32×32.
La NVIDIA GT 1030 y la Mobile Quadro P500 son chips GP108 que no admiten el codificador NVENC. [11]
En gráficos para portátiles, las tarjetas gráficas NVIDIA MX no incluyen NVENC, ya que se basan en un chip GM108 de la generación Maxwell o en un chip GP108 de la generación Pascal. [15] La GeForce MX350 es un chip GP107 cuyo codificador NVENC se desactiva durante la fabricación.
Volta NVENC tiene un rendimiento similar al NVENC de Pascal. [1]
No ofrece soporte para HEVC B-Frames.
En el caso de los gráficos para dispositivos móviles, al igual que ocurre con la mayoría de las demás tarjetas gráficas de la serie GeForce MX, la GeForce MX450 no es compatible con NVENC, ya que se trata de un chip TU117 cuyo codificador de hardware se desactiva de forma permanente durante su fabricación. Sin embargo, la GeForce MX550 sí es compatible con NVENC, ya que su codificador de hardware permanece activado desde su fabricación.
La sexta generación de NVENC implementa codificación HEVC 8K a 30 FPS, fotogramas B HEVC y fotogramas B HEVC como referencia (con soporte para modos each y middle [16] ) y soporte Alpha HEVC [17] y proporciona hasta un 25% de ahorro de tasa de bits para HEVC y hasta un 15% de ahorro de tasa de bits para H.264. Sin embargo, el lanzamiento inicial de la Nvidia GeForce GTX 1650 estuvo exento de esta generación, ya que utilizó Volta NVENC en lugar de Turing. Nvidia actualizó el codificador NVENC de las tarjetas GTX 1650 en 2020 para utilizar también el motor Turing. [18] La GTX 1650 Super utiliza el motor Turing NVENC, ya que se basa en el TU116 en lugar del TU117 utilizado en la GTX 1650 original. [19]
Ampere tiene esencialmente el mismo motor de generación NVENC que Turing. [20] La única diferencia sustancial es que NVDEC recibió soporte para decodificación AV1 (con grano de película).
En el segmento de gráficos móviles de nivel básico, la GeForce MX570 basada en chip GA107 viene en dos versiones, una de las cuales (la GeForce MX570 A) tiene el codificador y decodificador de hardware deshabilitados permanentemente durante la fabricación.
Nvidia anunció el NVENC de próxima generación con codificador de hardware de función fija AV1 de 8K, 10 bits y 60 FPS en GPU Ada Lovelace . [21] [22]
El núcleo SIP NVENC de Nvidia debe ser compatible con el controlador del dispositivo . El controlador proporciona una o más interfaces (por ejemplo, OpenMAX IL ) a NVENC. Solo se puede acceder al núcleo SIP NVENC a través de la API NVENC patentada (a diferencia de la API VDPAU de código abierto ).
Viene incluido con el controlador GeForce de Nvidia .
NVENC está disponible para los sistemas operativos Windows y Linux. [2] El controlador de dispositivo Nouveau, gratuito y de código abierto, no es compatible con Nvidia NVENC. [23]
Comparación del rendimiento de codificación [37] [ cita requerida ]