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.[1]​ 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.[1]

Descripción general

editar

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.[2][3]​ También incluye tres subespecificaciones: Desentrelazado DDI, COPP DDI y ProcAmp DDI.[4]​ 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

editar

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.[5]​ 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,[1][5]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.[1]​ (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.[1]​ DXVA 2.0 no incluye COPP DDI, sino que utiliza PVP para contenido protegido. Windows 7 implementa DXVA-HD[6]​ si el controlador cumple con WDDM 1.1.

Implementaciones de DXVA2: nativo y de copia

editar

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.[7]

Software

editar

Véase también

editar

Referencias

editar
  1. a b c d e «DirectX Video Acceleration 2.0». Consultado el 24 de octubre de 2007. 
  2. «Introduction to DirectX VA». Archivado desde el original el 23 de abril de 2008. Consultado el 24 de octubre de 2007. 
  3. «Microsoft DirectX Video Acceleration (DirectX VA) support». Consultado el 24 de octubre de 2007. 
  4. «DirectX Video Acceleration». Archivado desde el original el 8 de abril de 2008. Consultado el 24 de octubre de 2007. 
  5. a b «What's New in DirectShow». Consultado el 24 de octubre de 2007. 
  6. «DXVA-HD (Windows)». msdn.microsoft.com. Consultado el 21 de abril de 2018. 
  7. S, Ganesh T. «ASRock's High-End Vision 3D 252B HTPC Review». anandtech.com. Consultado el 21 de abril de 2018. 
  8. «CoreAVC Changelog | CoreCodec». Archivado desde el original el 4 de julio de 2011. Consultado el 9 de abril de 2011. 
  9. «Daum tv팟». tvpot.daum.net. Archivado desde el original el 22 de mayo de 2017. Consultado el 21 de abril de 2018. 
  10. «VLC GPU Decoding - VideoLAN Wiki». wiki.videolan.org. Consultado el 21 de abril de 2018. 

Enlaces externos

editar