# Video Coding Engine

Video Code Engine (VCE, anteriormente denominado Video Coding Engine, Video Compression Engine o Video Codec Engine en la documentación oficial de AMD) es el circuito integrado específico de la aplicación de codificación de video de AMD que implementa el códec de video H .264/MPEG-4 AVC. Desde 2012 se integró en todas sus GPU y APU excepto Oland.
VCE se presentó con la serie Radeon HD 7000 el 22 de diciembre de 2011. VCE ocupa una cantidad considerable de la superficie de la pastilla en el momento de su introducción y no debe confundirse con el decodificador de video unificado (UVD) 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 manejo de datos de video implica el cálculo de algoritmos de compresión de datos y posiblemente de algoritmos de procesamiento de video. Como muestran los métodos de compresión de plantilla, los algoritmos de compresión de video con pérdida involucran los pasos: estimación de movimiento (ME), transformada de coseno discreta (DCT) y codificación de entropía (EC).
AMD Video Code Engine (VCE) es una implementación de hardware completa del códec de video H.264/MPEG-4 AVC. Es capaz de entregar 1080p a 60 cuadros por segundo. Debido a que su bloque de codificación de entropía también es un motor de códec de video accesible por separado, se puede operar en dos modos: modo fijo completo y modo híbrido.
Al emplear AMD APP SDK, disponible para Linux y Microsoft Windows, los desarrolladores pueden crear codificadores híbridos que combinan la estimación de movimiento personalizada, la transformación de coseno discreta inversa y la compensación de movimiento con la codificación de entropía de hardware para lograr una codificación más rápida que en tiempo real. En el modo híbrido, solo se usa el bloque de codificación de entropía de la unidad VCE, mientras que el cómputo restante se descarga al motor 3D de la GPU, por lo que el cómputo se escala con la cantidad de unidades de cómputo (CU) disponibles.

### VCE 1.0

A partir de abril de 2014, hay dos versiones de VCE. La versión 1.0 admite H.264 YUV420 (marcos I & P), H.264 SVC Temporal Encode VCE y Display Encode Mode (DEM).
Se puede encontrar en:
* Basado en Piledriver
** Trinity APU (Ax-5xxx, por ejemplo A10-5800K)
** APU Richland (Ax-6xxx, por ejemplo A10-6800K)
* GPUs de la generación Islas del Sur (GCN1: CAYMAN, ARUBA (Trinity/Richland), CAPE VERDE, PITCAIRN, TAHITI). Estos son
** Serie Radeon HD 7700 (excepto HD 7790 con VCE 2.0)
** Serie Radeon HD 7800
** Serie Radeon HD 7900
** Radeon HD 8570 a 8990 (excepto HD 8770 con VCE 2.0)
** Radeon R7 250E, 250X, 265 / R9 270, 270X, 280, 280X
** Radeon R7 360, 370, 455 / R9 370, 370X
** Mobile Radeon HD 77x0M a HD 7970M
** Serie Mobile Radeon HD 8000
** Serie Mobile Radeon Rx M2xx (excepto R9 M280X con VCE 2.0 y R9 M295X con VCE 3.0)
** Mobile Radeon R5 M330 a R9 M390
** Tarjetas FirePro con GCN de primera generación (GCN1) (excepto W2100, que es Oland XT)

### VCE 2.0

En comparación con la primera versión, VCE 2.0 agrega H.264 YUV444 (I-Frames), B-frames para H.264 YUV420 y mejoras en el DEM (Display Encode Mode), lo que da como resultado una mejor calidad de codificación.
Se puede encontrar en:
* Basado en Steamroller
** APU Kaveri (Ax-7xxx, por ejemplo A10-7850K)
** APU Godavari (Ax-7xxx, por ejemplo A10-7890K)
* Basado en Jaguar
** APU Kabini (p. ej. Athlon 5350, Sempron 2650)
** APU Temash (p. ej. A6-1450, A4-1200)
* Basado en Puma
** Beema y Mullins
* GPU de la generación Sea Islands, así como GPU Bonaire o Hawaii (2nd Generation Graphics Core Next), como
** Radeon HD 7790, 8770
** Radeon R7 260, 260X / R9 290, 290X, 295X2
** Radeon R7 360/R9 390, 390X
** Móvil Radeon R9 M280X
** Móvil Radeon R9 M385, M385X
** Móvil Radeon R9 M470, M470X
** Tarjetas FirePro con GCN de segunda generación (GCN2)

### VCE 3.0

Motor de código de video 3.0 (VCE 3.0) presenta una nueva escala de video de alta calidad y codificación de video de alta eficiencia (HEVC/H.265).
Junto con UVD 6.0, se puede encontrar en la tercera generación de Graphics Core Next (GCN3) con hardware de controlador de gráficos basado en "Tonga", "Fiji", "Iceland" y "Carrizo" (VCE 3.1), que ahora se utiliza AMD Radeon Rx 300 Series (familia de GPU Pirate Islands) y VCE 3.4 de la serie AMD Radeon RX 400 y AMD Radeon RX 500 (ambas de la familia de GPU Polaris).
* Tonga: Radeon R9 285, 380, 380X; Móvil Radeon R9 M390X, M395, M395X, M485X
* Tonga XT: FirePro W7100, S7100X, S7150, S7150 X2
* Fiyi: Radeon R9 Fury, Fury X, Nano; Radeon Pro Dúo (2016); FirePro S9300, W7170M
* Polaris: RX 460, 470, 480; RX 550, 560, 570, 580; Radeon Pro Duo (2017)

### VCE 4.0

El codificador Video Code Engine 4.0 y el decodificador UVD 7.0 están incluidos en las GPU basadas en Vega.

#### VCE 4.1

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.

## Soporte del sistema operativo

El núcleo SIP de VCE debe ser compatible con el controlador del dispositivo. El controlador de dispositivo proporciona una o varias interfaces, por ejemplo OpenMAX IL. El software del usuario final, como GStreamer o HandBrake, utiliza una de estas interfaces (HandBrake rechazó la compatibilidad con VCE en diciembre de 2016, pero la agregó en diciembre de 2018), para acceder al hardware de VCE y utilizarlo. .
El controlador de dispositivo propietario de AMD, AMD Catalyst, está disponible para múltiples sistemas operativos y se le agregó soporte para VCE. Además, hay disponible un controlador de dispositivo gratuito. Este controlador también es compatible con el hardware VCE.

### Linux

* Christian König de AMD agregó el soporte inicial de VCE el 4 de febrero de 2014 al controlador radeon gratuito.
* El rastreador de estado Gallium3D para OpenMAX se agregó el 24 de octubre de 2013 a Mesa 3D.
* El controlador Radeon gratuito y de código abierto se adaptó para usar OpenMAX con el soporte GStreamer OpenMAX (gst-omx) para exponer el motor de codificación de video VCE.
* El empleado de AMD, Leo Liu, implementó el soporte de nivel H.264 en el rastreador de estado 3D de Mesa.

### Windows

El software "MediaShow Espresso Video Transcoding" parece utilizar VCE y UVD en la mayor medida posible.
XSplit Broadcaster es compatible con VCE desde la versión 1.3.
Open Broadcaster Software (OBS Studio) admite VCE para grabación y transmisión. El Open Broadcaster Software (OBS) original requiere una compilación de bifurcación para habilitar VCE.
El software AMD Radeon admite VCE con captura de juegos integrada ("Radeon ReLive") y usa AMD AMF/VCE en APU o tarjeta gráfica Radeon para reducir la caída de FPS al capturar contenido de juegos o videos.
HandBrake agregó compatibilidad con Video Coding Engine en la versión 1.2.0 en diciembre de 2018.

## Sucesor

El VCE 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).