stringtranslate.com

Compensación de movimiento de X-Video

X-Video Motion Compensation (XvMC) es una extensión de la extensión de video X (Xv) para el sistema X Window. La API XvMC permite que los programas de video descarguen partes del proceso de decodificación de video al hardware de video de la GPU . En teoría, este proceso también debería reducir los requisitos de ancho de banda del bus. Actualmente, las partes admitidas que XvMC debe descargar en la GPU son la compensación de movimiento (mo comp) y la transformada de coseno discreta inversa (iDCT) para video MPEG-2 . XvMC también admite la descarga de decodificación de mo comp , iDCT y VLD ("Decodificación de longitud variable", más comúnmente conocida como "aceleración de nivel de corte") no solo para video MPEG-2 sino también MPEG-4 ASP en hardware VIA Unichrome (S3 Graphics Chrome Series) .

XvMC fue el primer equivalente en UNIX de la API de aceleración de video DirectX (DxVA) de Microsoft Windows . Entre las aplicaciones de software conocidas por aprovechar XvMC se incluyen MPlayer , MythTV y xine .

Controladores de dispositivos

Cada GPU de video de hardware capaz de acelerar video XvMC requiere un controlador de dispositivo de software X11 para habilitar estas funciones.

Fabricantes de hardware

Nvidia

Actualmente hay tres controladores X11 de Nvidia disponibles: un controlador de código abierto solo para 2D pero ofuscado mantenido por Nvidia llamado nv, un controlador binario propietario de Nvidia y un controlador de código abierto basado en ingeniería inversa del controlador binario desarrollado por la comunidad Linux llamado Nouveau . Nouveau no busca compatibilidad con XvMC, [1] el controlador 2D nv no admite XvMC y el controlador binario propietario oficial de Nvidia solo admite la descarga MPEG-2 (mo comp e iDCT) en hardware hasta la serie GeForce 7000 inclusive.

A TRAVÉS DE

VIA ofrece controladores de dispositivos de código abierto para algunos de sus equipos VIA Unichrome (S3 Graphics Chrome Series) , que admiten la descarga de video ASP MPEG-2 y MPEG-4 . Gracias al nivel de decodificación VLD, VIA descarga muchas más tareas de decodificación de la CPU que las GPU que solo admiten niveles de iDCT o mo comp. Tenga en cuenta que no todos los dispositivos son compatibles y existen otras advertencias. [2]

Intel

Intel proporciona controladores de dispositivos oficiales de código abierto que admiten la descarga MPEG-2 (mo comp e iDCT) en la gama de chips gráficos integrados 8xx/9xx de Intel. [3]

Intel/AMD

Aunque ATI fue el primer fabricante en proporcionar aceleración MPEG-2 en sus tarjetas gráficas con la GPU Rage 128, nunca ha proporcionado documentación sobre cómo utilizarla. Por lo tanto, no hay XvMC disponible, y probablemente nunca lo estará. XvMC es compatible con las tarjetas Radeon -4000 (que tienen UVD ) mediante el controlador Catalyst a partir de la versión 8.10 y superiores a nivel experimental (lo que significa que no funciona " de fábrica "). [4] (Ver también X-Video Bitstream Acceleration ). El soporte de compensación de movimiento en otro hardware ATI/AMD está previsto para el futuro. (Ahora todo el hardware tiene soporte para aceleración MPEG-2 en niveles de comp iDCT y mo).

Matrox

No hay controladores de dispositivos que admitan XvMC en hardware Matrox (aunque el hardware Matrox Parhelia tiene soporte para aceleración MPEG-2 en el nivel de compresión mo).

S3

El controlador de dispositivo binario de S3 solo admite la descarga MPEG-2 en el controlador 2.0.16 inicial en las GPU Chrome 20. [ cita requerida ]

Descripción técnica de la API de XvMC

Esto es de la especificación API de compensación de movimiento de X-Vxvideoideo v. 1.0 [5]

XvPuerto

XvMC extiende la extensión de video X (Xv) y hace uso del concepto familiar de XvPort. Los puertos tienen atributos que se pueden configurar y consultar a través de Xv. En XvMC, los puertos también pueden tener contextos de compensación de movimiento de hardware creados para su uso con ellos. Los puertos que admiten XvImages (es decir, que tienen una codificación de puerto "XV_IMAGE" como se describe en el anexo de API de la versión 2.2 de Xv) pueden consultarse para obtener la lista de tipos de XvMCSurface que admiten. Si admiten algún tipo de XvMCSurface, se puede crear un XvMCContext para ese puerto.

Contexto XvMC

XvMCContext describe el estado del flujo de trabajo de compensación de movimiento . Se puede crear un XvMCContext individual para utilizarlo con una única combinación de puerto, tipo de superficie, tipo de compensación de movimiento, ancho y altura. Por ejemplo, se puede crear un contexto para un puerto en particular que realiza compensación de movimiento MPEG-2 en superficies de 720 x 480 4:2:0. Una vez creado el contexto, hacer referencia a él implica el puerto, el tipo de superficie, el tamaño y el tipo de compensación de movimiento. Los contextos pueden ser "directos" o "indirectos". En el caso de los contextos indirectos, el servidor de visualización X renderiza todo el vídeo utilizando los datos que le pasa el cliente. En el caso de los contextos directos, las bibliotecas de cliente renderizan el vídeo con poca o ninguna interacción con el servidor de visualización X.

Superficies XvMC

Las superficies XvMC son búferes en los que el hardware de compensación de movimiento puede renderizar. Los datos de los búferes en sí no son accesibles para el cliente y pueden almacenarse en un formato específico del hardware. Se puede crear cualquier cantidad de búferes para su uso con un contexto particular (si los recursos lo permiten).

Canalización de vídeo

XvMC proporciona aceleración de video a partir de uno de dos puntos en la secuencia de video . La aceleración que comienza en el primer punto, que llamaremos nivel de "Compensación de movimiento", comienza después de la cuantificación inversa y la IDCT en el lugar donde se aplicará la compensación de movimiento . El segundo punto, que llamaremos nivel "IDCT", comienza antes de la IDCT justo después de la cuantificación inversa.

Representación

La renderización se realiza presentando a la biblioteca una superficie XvMCSurface de destino y hasta dos superficies XvMCSurface de referencia para la compensación de movimiento, un búfer de bloques de 8x8 y un búfer de comandos que describe cómo utilizar los bloques de 8x8 junto con los vectores de compensación de movimiento para construir los datos en la superficie XvMCSurface de destino. Cuando la canalización comienza en el nivel de iDCT, Xv realizará la IDCT en los bloques antes de realizar la compensación de movimiento. Se proporciona una función para copiar/superponer una parte de la superficie XvMCSurface en un elemento dibujable con escala arbitraria.

Subimágenes de XvMC

Las subimágenes XvMC son superficies independientes que se pueden combinar con la superficie de destino. Se puede crear cualquier cantidad de subimágenes XvMC para usarlas con un contexto (si los recursos lo permiten). Se admiten tanto el comportamiento de subimágenes "de back-end" como el de "front-end".

Soporte de software

La aceleración XvMC es compatible con:

XvMC se han eliminado en Mesa 22.3.

Procesos que podrían acelerarse

Aunque XvMC actualmente solo admite aceleración de hardware de compensación de movimiento (mo comp) y transformada de coseno discreta inversa (iDCT), (y decodificación de longitud variable para GPU VIA Unichrome), se podrían pasar procesos de decodificación de video adicionales a GPU modernas que podrían acelerarse mediante programas de fragmentos de GPU. XvMC podría extenderse en el futuro para admitir los mismos procesos que las API de aceleración de video de hardware más nuevas, como VDPAU , XvBA y VAAPI :

Limitaciones actuales

Además de no coincidir con todas las características y funciones de DxVA (que es la API equivalente de Microsoft para Windows ) y carecer de soporte para otros formatos de video que no sean MPEG-2 en los controladores de dispositivos Linux de Intel y Nvidia , la versión 1.0 de la especificación API XvMC [7] actualmente también tiene estas otras limitaciones:

VA API es una API de aceleración de video más moderna que admite las funciones de aceleración de video de las GPU modernas. [8]

Véase también

Referencias

  1. ^ Wiki nuevo - Matriz de características
  2. ^ "Copia archivada". Archivado desde el original el 26 de septiembre de 2015. Consultado el 26 de febrero de 2009 .{{cite web}}: CS1 maint: copia archivada como título ( enlace )
  3. ^ Controladores de gráficos para Linux de Intel - i810 - Conjuntos de chips gráficos integrados Intel 8xx
  4. ^ Aceleración de flujo de bits X-Video de AMD // phoronix, 28 de octubre de 2008
  5. ^ Compensación de movimiento de X-Video: especificación API v. 1.0 Archivado el 15 de mayo de 2007 en Wayback Machine
  6. ^ Notas de la versión 0.25 de MythTV
  7. ^ Especificación de la API de XvMC versión 1.0 Archivado el 15 de mayo de 2007 en Wayback Machine
  8. ^ freedesktop.org - Software/vaapi
  9. ^ https://web.archive.org/web/20150305200949/http://www.tuaw.com/2011/01/20/xbmc-for-ios-and-atv2-now-available/ XBMC para iOS y Apple TV ahora disponible
  10. ^ "VideoToolbox - Documentación para desarrolladores de Apple". developer.apple.com . Consultado el 5 de agosto de 2018 .
  11. ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 9 de abril de 2011. Consultado el 16 de enero de 2012 .{{cite web}}: CS1 maint: copia archivada como título ( enlace )API de decodificación de vídeo abierto (OVD)

Enlaces externos