# Unified Video Decoder

Unified Video Decoder (UVD, anteriormente llamado Universal Video Decoder) es el nombre que se le da al ASIC de decodificación de video dedicado de AMD. Existen múltiples versiones que implementan multitud de códecs de vídeo, como H.264 y VC-1.
UVD se introdujo con la serie Radeon HD 2000 y está integrado en algunas de las GPU y APU de AMD. UVD ocupa una cantidad considerable de la superficie de la pastilla en el momento de su introducción y no debe confundirse con el motor de codificación de video (VCE) de AMD.
A partir de AMD Raven Ridge (lanzado en enero de 2018), UVD y VCE fueron reemplazados por Video Core Next (VCN).

## Descripción general

El UVD se basa en un procesador de video ATI Xilleon, que está incorporado en el mismo chip que la GPU y es parte de ATI Avivo HD para la decodificación de video por hardware, junto con el Procesador de video avanzado (AVP). UVD, según lo declarado por AMD, maneja la decodificación de códecs de video H.264/AVC y VC-1 completamente en hardware.
La tecnología UVD se basa en el procesador Cadence Tensilica Xtensa, que originalmente obtuvo la licencia de ATI Technologies Inc. en 2004.

### UVD/UVD+

En las primeras versiones de UVD, el posprocesamiento de video se pasa a los sombreadores de píxeles y los núcleos OpenCL. La decodificación de MPEG-2 no se realiza dentro de UVD, sino en los procesadores de sombreado. El decodificador cumple con los requisitos de rendimiento y perfil de Blu-ray y HD DVD, decodifica flujos de bits H.264 hasta una tasa de bits de 40 Mbit/s. Tiene soporte de codificación aritmética binaria adaptable al contexto (CABAC) para H.264/AVC.
A diferencia de los bloques de aceleración de video en las GPU de la generación anterior, que exigían una participación considerable de la CPU del host, UVD descarga todo el proceso de decodificación de video para VC-1 y H.264, excepto el posprocesamiento de video, que se descarga a los sombreadores. También se admite la decodificación de MPEG-2, pero la decodificación de flujo de bits/entropía no se realiza para video MPEG-2 en hardware.
Anteriormente, ni ATI Avivo de la serie ATI Radeon R520 ni PureVideo de la serie Nvidia GeForce 7 asistían la descompresión de flujo de bits/entropía frontal en VC-1 y H.264: la CPU host realizaba este trabajo. UVD maneja VLC / CAVLC / CABAC, transformación de frecuencia, predicción de píxeles y desbloqueo de inloop, pero pasa el procesamiento posterior a los shaders. El posprocesamiento incluye eliminación de ruido, desentrelazado y escalado/cambio de tamaño. AMD también ha declarado que el componente UVD que se incorpora al núcleo de la GPU solo ocupa 4,7 mm² de área en el nodo del proceso de fabricación de 65 nm.
Se introdujo una variación de UVD, llamada UVD+, con la serie Radeon HD 3000. UVD+ admite HDCP para transmisiones de video de mayor resolución. Pero UVD+ también se comercializaba simplemente como UVD.

### UVD 2

La UVD se actualizó con el lanzamiento de los productos de la serie Radeon HD 4000. El UVD 2 cuenta con decodificación de flujo de bits completo de H.264/MPEG-4 AVC, VC-1, así como aceleración de nivel iDCT de flujos de video MPEG2. Las mejoras de rendimiento permiten la decodificación de flujo de video dual y el modo Picture-in-Picture. Esto hace que UVD2 sea totalmente compatible con BD-Live.
El UVD 2.2 presenta una interfaz de memoria local rediseñada y mejora la compatibilidad con videos MPEG2/H.264/VC-1. Sin embargo, se comercializó con el mismo alias que "UVD 2 Enhanced" como la "lógica de núcleo especial, disponible en las series de GPU RV770 y RV730, para la decodificación de hardware de video MPEG2, H.264 y VC-1 con flujo dual. descodificación". La naturaleza de UVD 2.2 como una actualización incremental de UVD 2 puede explicarse por este movimiento.

### UVD 3

UVD 3 agrega soporte para hardware adicional de decodificación MPEG2 (decodificación de entropía), DivX y Xvid a través de decodificación de MPEG-4 Parte 2 (decodificación de entropía, transformación inversa, compensación de movimiento) y Blu-ray 3D a través de MVC (decodificación de entropía, transformación inversa, compensación de movimiento), desbloqueo en bucle). junto con soporte 3D estéreo de 120 Hz, y está optimizado para utilizar menos potencia de procesamiento de la CPU. UVD 3 también agrega soporte para pantallas estereoscópicas 3D Blu-ray.

### UVD 4

UVD 4 incluye interpolación de cuadros mejorada con decodificador H.264. UVD 4.2 se introdujo con la serie AMD Radeon Rx 200 y la APU Kaveri.«X.ORG Radeon UVD (Unified Video Decoder) Hardware-UVD4.2: KAVERI, KABINI, MULLINS, BONAIRE, HAWAII». Mayo de 2016.

### UVD 5

UVD 5 se introdujo con AMD Radeon R9 285. Nuevo en UVD es el soporte completo para video 4K H.264, hasta el nivel 5.2 (4Kp60).

### UVD 6

Se informó que el decodificador UVD 6.0 y el codificador Video Coding Engine 3.1 se usaron por primera vez en GPU basadas en GCN 3, incluida la serie Radeon R9 Fury y las APU "Carrizo", seguidas de la serie AMD Radeon Rx 300 (familia de GPU Pirate Islands) y AMD Radeon Rx 400 (familia de GPU Arctic Islands). La versión UVD en hardware de controlador de gráficos basado en "Fiji" y "Carrizo" también se anuncia para proporcionar soporte para decodificación de video de hardware de codificación de video de alta eficiencia (HEVC, H.265), hasta 4K, color de 8 bits (H.265 versión 1, perfil principal); y hay soporte para el códec de video H.265 y VP9 HDR de 10 bits en color en la serie AMD Radeon 400 con UVD 6.3.

### UVD 7

El decodificador UVD 7.0 y el codificador Video Coding Engine 4.0 están incluidos en las GPU basadas en Vega. Pero todavía no hay una función fija de decodificación de hardware VP9.

#### UVD 7.2

La GPU Vega20 de AMD, presente en las tarjetas Instinct Mi50, Instinct Mi60 y Radeon VII, incluye instancias VCE 4.1 y dos UVD 7.2.

### VCN 1

Comenzando con los gráficos integrados de la APU Raven Ridge (Ryzen 2200/2400G), los antiguos UVD y VCE han sido reemplazados por el nuevo "Video Core Next" (VCN). VCN 1.0 agrega decodificación de hardware completa para el códec VP9.

### Soporte de formato

Soporte de Unified Video Decoder y Video Core Next decoding/encoding :
| Implementación | Implementación | MPEG-1 | H.262 (MPEG-2) | H.263 (MPEG-4 ASP) | VC-1/WMV 9 | H.264 (MPEG-4 AVC) | H.264 (MPEG-4 AVC) | H.265 (HEVC) | H.265 (HEVC) | VP9 | AV1 | AV1 | JPEG | Máxima resolución | Profundidad de color | AMD Fluid Motion |
| Implementación | Implementación | Descodificación | Descodificación | Descodificación | Descodificación | Descodificación | Codificación | Descodificación | Codificación | Descodificación | Descodificación | Codificación | Descodificación | Máxima resolución | Profundidad de color | Interpolación de fotogramas |
| UVD 1.0 | RV610, RV630, RV670, RV620, RV635 | No | No | No | Sí | Sí | No | No | No | No | No | No | No | 2K | 8-bit | No |
| UVD 2.0 | RS780, RS880, RV770 | No | No | No | Sí | Sí | No | No | No | No | No | No | No | 2K | 8-bit | No |
| UVD 2.2 | RV710, RV730, RV740 | No | No | No | Sí | Sí | No | No | No | No | No | No | No | 2K | 8-bit | No |
| UVD 2.3 | Cedar, Redwood, Juniper, Cypress | No | No | No | Sí | Sí | No | No | No | No | No | No | No | 2K | 8-bit | No |
| UVD 3.0 | Palm (Wrestler/Ontario), Sumo (Llano), Sumo2 (Llano) | Sí | Sí | Sí | Sí | Sí | No | No | No | No | No | No | No | 2K | 8-bit | No |
| UVD 3.1 | Barts, Turks, Caicos, Cayman, Seymour | Sí | Sí | Sí | Sí | Sí | No | No | No | No | No | No | No | 2K | 8-bit | No |
| UVD 3.2 | Aruba (Trinity/Richland), Tahiti | Sí | Sí | Sí | Sí | Sí | VCE | No | No | No | No | No | No | 2K | 8-bit | No |
| UVD 4.0 | Cape Verde, Pitcairn | Sí | Sí | Sí | Sí | Sí | VCE | No | No | No | No | No | No | 2K | 8-bit | Sí |
| UVD 4.2 | Kaveri, Kabini, Mullins, Bonaire, Hawaii | Sí | Sí | Sí | Sí | Sí | VCE | No | No | No | No | No | No | 2K | 8-bit | Sí |
| UVD 5.0 | Tonga | Sí | Sí | Sí | Sí | Sí | VCE | No | No | No | No | No | No | 4K | 8-bit | Sí |
| UVD 6.0 | Carrizo, Fiji | Sí | Sí | Sí | Sí | Sí | VCE | Sí | No | No | No | No | Sí | 4K | 8-bit | Sí |
| UVD 6.2 | Stoney | Sí | Sí | Sí | Sí | Sí | VCE | Sí | No | No | No | No | Sí | 4K | 10-bit | Sí |
| UVD 6.3 | Polaris, VegaM, Lexa | Sí | Sí | Sí | Sí | Sí | VCE | Sí | VCE | No | No | No | Sí | 4K | 10-bit | Sí |
| UVD 7.0 | Vega10, Vega12 | Sí | Sí | Sí | Sí | Sí | VCE | Sí | VCE | No | No | No | Sí | 4K | 10-bit | Sí |
| UVD 7.2 | Vega20 | Sí | Sí | Sí | Sí | Sí | VCE | Sí | VCE | No | No | No | Sí | 4K | 10-bit | Sí |
| VCN 1.0 | Raven, Picasso | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | No | Sí | 4K | 10-bit | Sí |
| VCN 2.0 | Navi10, Navi12, Navi14, Renoir, Cezanne | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | No | Sí | 8K | 10-bit | No |
| VCN 2.5 | Arcturus | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | No | Sí | 8K | 10-bit | No |
| VCN 2.6 | Aldebaran | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | No | Sí | 8K | 10-bit | No |
| VCN 3.0 | Navi21, Navi22, Navi23, Navi24 | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | Sí | 8K | 10-bit | No |
| VCN 3.1.0 | Van Gogh | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | No | Sí | ? | ? | ? |
| VCN 3.1.1 | Rembrandt | No | No | No | No | Sí | Sí | Sí | Sí | Sí | Sí | No | Sí | 8K | 10-bit | No |
| VCN 3.1.2 | Raphael | No | No | No | No | Sí | Sí | Sí | Sí | Sí | Sí | No | Sí | ? | ? | ? |
| VCN 4.0 | Navi 3x | No | No | No | No | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | ? | ? | ? |
| Implementación | Implementación | Descodificación | Descodificación | Descodificación | Descodificación | Descodificación | Codificación | Descodificación | Codificación | Descodificación | Descodificación | Codificación | Descodificación | Máxima resolución | Profundidad de color | Interpolación de fotogramas |
| Implementación | Implementación | MPEG-1 | H.262 (MPEG-2) | H.263 (MPEG-4 ASP) | VC-1/WMV 9 | H.264 (MPEG-4 AVC) | H.264 (MPEG-4 AVC) | H.265 (HEVC) | H.265 (HEVC) | VP9 | AV1 | AV1 | JPEG | Máxima resolución | Profundidad de color | AMD Fluid Motion |
* 1 2 Todos los decodificadores MPEG-2 admiten MPEG-1 CPB
* 1 2 Codificación MPEG-4 AVC y HEVC mediante un motor de codificación de video independiente

## Disponibilidad

La mayoría de las tarjetas de video de la serie Radeon HD 2000 implementan UVD para la decodificación de hardware de contenido de alta definición de 1080p. Sin embargo, las tarjetas de video de la serie Radeon HD 2900 no incluyen el UVD (aunque puede proporcionar una funcionalidad parcial mediante el uso de sus sombreadores), que se indicó incorrectamente que estaba presente en las páginas del producto y las cajas del paquete del complemento. productos de socios antes del lanzamiento de la Radeon HD 2900 XT, indicando que la tarjeta incluye ATI Avivo HD o explícitamente UVD, que solo la declaración anterior de ATI Avivo HD es correcta. La exclusión de UVD también fue confirmada por funcionarios de AMD.
UVD2 está implementado en las GPU de las series Radeon RV7x0 y R7x0. Esto también incluye la serie RS7x0 utilizada para las placas base IGP de la serie de chipset AMD 700.

## Soporte del sistema operativo

El núcleo UVD SIP debe ser compatible con el controlador del dispositivo, que proporciona una o más interfaces, como VDPAU, VAAPI o DXVA. El software del usuario final utiliza una de estas interfaces, por ejemplo, el reproductor multimedia VLC o GStreamer, para acceder al hardware UVD y utilizarlo.
AMD Catalyst, el controlador de dispositivo de gráficos propietario de AMD que admite UVD, está disponible para Microsoft Windows y algunas distribuciones de Linux. Además, hay disponible un controlador de dispositivo gratuito, que también es compatible con el hardware UVD.

### Linux

El soporte para UVD ha estado disponible en el controlador patentado de AMD Catalyst versión 8.10 desde octubre de 2008 a través de X-Video Motion Compensation (XvMC) o X-Video Bitstream Acceleration (XvBA). Desde abril de 2013, UVD es compatible con el controlador de dispositivo "radeon" gratuito y de código abierto a través de Video Decode y Presentation API para Unix (VDPAU). Una implementación de VDPAU está disponible como rastreador de estado Gallium3D en Mesa 3D.
El 28 de junio de 2014, Phoronix publicó algunos puntos de referencia sobre el uso de Unified Video Decoder a través de la interfaz VDPAU que ejecuta MPlayer en Ubuntu 14.04 con la versión 10.3 de prueba de Mesa 3D.

### Windows

Microsoft Windows admitió UVD desde su lanzamiento. Actualmente, UVD solo admite la especificación API DXVA (DirectX Video Acceleration) para las plataformas Microsoft Windows y Xbox 360 para permitir que la decodificación de video se acelere por hardware, por lo que el software del reproductor multimedia también debe ser compatible con DXVA para poder utilizar la aceleración de hardware UVD.

### Otros

A partir de enero de 2012, se intentó la compatibilidad para ejecutar firmware personalizado basado en FreeRTOS en el núcleo UVD de Radeon HD 2400 (basado en una CPU Xtensa), interconectado con una placa basada en STM32 ARM a través de I$^2$C.

## Predecesores y Sucesores
### Antecesores

Video Shader y ATI Avivo son tecnologías similares incorporadas en productos ATI anteriores.

### Sucesor

El UVD fue reemplazado por AMD Video Core Next en la serie de APU Raven Ridge lanzada en octubre de 2017. La VCN combina la codificación (VCE) y la decodificación (UVD).