# DirectX Video Acceleration

DirectX Video Acceleration (DXVA) es una especificación API de Microsoft para las plataformas Microsoft Windows y Xbox 360 que permite que la decodificación de video sea acelerada por hardware. La canalización permite que ciertas operaciones de uso intensivo de la CPU, como iDCT, compensación de movimiento y desentrelazado, se descarguen en la GPU. DXVA 2.0 permite que más operaciones, incluidas las operaciones de captura y procesamiento de video, también sean aceleradas por hardware.
DXVA funciona junto con el modelo de reproducción de video que utiliza la tarjeta de video. DXVA 1.0, que se introdujo como una API estandarizada con Windows 2000 y actualmente está disponible en Windows 98 o posterior, puede usar el modo de renderizado superpuesto o VMR 7/9. DXVA 2.0, disponible solo en Windows Vista, Windows 7, Windows 8 y sistemas operativos posteriores, se integra con Media Foundation (MF) y utiliza el procesador de video mejorado (EVR) presente en MF.

## Descripción general

El DXVA es utilizado por decodificadores de video de software para definir una tubería específica de códec para la decodificación acelerada por hardware y la representación del códec. La canalización comienza en la CPU que se utiliza para analizar el flujo de medios y la conversión a estructuras compatibles con DXVA. DXVA especifica un conjunto de operaciones que pueden ser aceleradas por hardware e interfaces de controlador de dispositivo (DDI) que el controlador gráfico puede implementar para acelerar las operaciones. Si el códec necesita realizar alguna de las operaciones definidas, puede usar estas interfaces para acceder a la implementación acelerada por hardware de estas operaciones. Si el controlador gráfico no implementa una o más de las interfaces, depende del códec proporcionar un respaldo de software para él. El video decodificado se entrega al procesador de video de hardware, donde se le puede aplicar un posprocesamiento de video adicional antes de procesarlo en el dispositivo. La canalización resultante se puede utilizar en una aplicación compatible con DirectShow.
DXVA especifica Motion Compensation DDI, que especifica las interfaces para operaciones iDCT, codificación Huffman, compensación de movimiento, mezcla alfa, cuantificación inversa, conversión de espacio de color y operaciones de conversión de velocidad de fotogramas, entre otras. También incluye tres subespecificaciones: Desentrelazado DDI, COPP DDI y ProcAmp DDI. El DDI de desentrelazado especifica las devoluciones de llamada para las operaciones de desentrelazado . Las funciones DDI COPP (Protocolo de protección de salida certificado) permiten asegurar la canalización para medios protegidos por DRM, mediante la especificación de funciones de cifrado. El ProcAmp DDI se utiliza para acelerar el posprocesamiento de video. El módulo del controlador ProcAmp se encuentra entre el procesador de video de hardware y el controlador de pantalla, y proporciona funciones para aplicar filtros de procesamiento posterior en el video descomprimido.
Las funciones expuestas por DXVA DDI no son accesibles directamente por un cliente de DirectShow, pero se proporcionan como funciones de devolución de llamada al procesador de video. Como tal, el renderizador juega un papel muy importante en el anclaje de la canalización.

### DXVA en Windows Vista y posterior

DXVA 2.0 mejora la implementación de la tubería de video y agrega una serie de otros DDI, incluido un Capture DDI para captura de video. Los DDI que comparte con DXVA 1.0 también se han mejorado con la capacidad de utilizar la aceleración de hardware de más operaciones. Además, las funciones DDI están directamente disponibles para las personas que llaman y no necesitan ser mediadas por el procesador de video. Como tal, un programa también puede crear una canalización para simplemente decodificar los medios (sin renderizar) o posprocesarlos y renderizarlos (sin decodificar). Estas funciones requieren los controladores del modelo de controlador de pantalla de Windows, que limita DXVA 2.0 a Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2 y Windows 8. En Windows XP y Windows 2000, los programas pueden usar DXVA 1.0. DXVA 2.0 permite Enhanced Video Renderer como el procesador de video solo en Vista, Windows 7 y Windows 8. (Con Windows XP, DXVA-Rendering es posible con VMR9 y el conocido Overlay Mixer.) DXVA se integra con Media Foundation y permite que las canalizaciones de DXVA se expongan como Media Foundation Transforms (MFT). Incluso las canalizaciones de decodificación o las canalizaciones de posprocesamiento pueden exponerse como MFT, que el cargador de topología de Media Foundation puede usar para crear una canalización de reproducción de medios completa. DXVA 1.0 se emula mediante DXVA 2.0. DXVA 2.0 no incluye COPP DDI, sino que utiliza PVP para contenido protegido. Windows 7 implementa DXVA-HD si el controlador cumple con WDDM 1.1.

#### Implementaciones de DXVA2: nativo y de copia

Las implementaciones de DXVA2 vienen en dos variantes: nativa y de copia.
Con la implementación nativa, el video decodificado permanece en la memoria de la GPU hasta que se muestra. El decodificador de video debe estar conectado al renderizador de video sin filtro de procesamiento intermediario. El renderizador de video también debe ser compatible con DXVA, lo que da menos libertad en la elección de los renderizadores.
Con la implementación de copia, el video decodificado se copia de la memoria de la GPU a la memoria de la CPU. Esta implementación no tiene las limitaciones mencionadas anteriormente y actúa de manera similar a un decodificador de software normal; sin embargo, se producirán interrupciones en el video si la GPU no es lo suficientemente rápida como para volver a copiar su memoria en la memoria de la CPU.
El modo nativo es ventajoso a menos que sea necesario un procesamiento personalizado, ya que las operaciones de copia adicionales aumentarán la carga de memoria de la GPU.

## Software

* Adobe Flash v10.3 y posteriores
* Boxee
* CoreAVC v2.5.0 y posteriores
* Daum PotPlayer
* DivX H.264 Decoder v1.2 y posteriores
* DVDFab Media Player 3
* ffdshow-tryouts revision 3185 y posteriores
* Freemake Video Converter v2.2 y posteriores
* Kodi
* Media Player Classic Home Cinema
* MediaPortal
* mpv (Solo DXVA 2.0)
* Nero Multimedia Suite (Nero Kwik Media, Nero MediaHub, Nero Showtime)
* Plex
* PowerDVD
* VLC media player v1.1 y posteriores (Solo DXVA 2.0)
* WinDVD
* Windows Media Player 11 (Solo WMV3)
* Windows Media Player 12
* HandBrake