Ir al contenido

OpenMAX

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 05:32 22 abr 2023 por Josilvis (discusión · contribs.). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.
(difs.) ← Revisión anterior · Ver revisión actual (difs.) · Revisión siguiente → (difs.)
OpenMAX
Información general
Tipo de programa biblioteca de C
Desarrollador Khronos Group
Enlaces

OpenMAX (Open Media Acceleration), a menudo abreviado como "OMX", es un conjunto multiplataforma no patentado y libre de regalías de interfaces de programación en lenguaje C. Proporciona abstracciones para rutinas que son especialmente útiles para el procesamiento de audio, video e imágenes fijas.[1][2]​ Está diseñado para dispositivos de sistemas integrados y de baja potencia (incluidos teléfonos inteligentes, consolas de juegos, reproductores de medios digitales y decodificadores) que necesitan procesar de manera eficiente grandes cantidades de datos multimedia de manera predecible, como códecs de video, bibliotecas de gráficos y otras funciones de video, imagen, audio, voz y habla.[3]

OpenMAX proporciona tres capas de interfaces: capa de aplicación (AL), capa de integración (IL) y capa de desarrollo (DL). OpenMAX es administrado por el consorcio de tecnología sin fines de lucro Khronos Group.[4]

Historia

Anunciado inicialmente en julio de 2004.[5]​ El grupo de trabajo OpenMAX fue fundado inicialmente por miembros de ARM, Motorola, Samsung, STMicroelectronics y Texas Instruments. La versión 1.0 de la especificación se publicó en diciembre de 2005.[6]​ El último borrador producido por el grupo de trabajo OpenMAX (1.2.0) data de 2011[7]​ y ningún producto ha sido declarado conforme desde 2012.[8]​ La especificación OpenMAX nunca se actualizó para admitir códecs recientes como HEVC o VP9, lo que convierte a Android en la fuente de facto de actualizaciones del estándar OpenMAX IL.[9]

Capas

OpenMAX AL es la interfaz entre las aplicaciones multimedia, como un reproductor multimedia, y el marco de trabajo de la plataforma multimedia . Permite a las empresas que desarrollan aplicaciones migrar fácilmente sus aplicaciones a diferentes plataformas (clientes) que soportan la interfaz de programación de aplicaciones (API) OpenMAX AL. [10]

OpenMAX IL es la interfaz entre el marco de medios (como StageFright o MediaCodec API en Android, DirectShow en Windows, FFmpeg o GStreamer en Linux) y un conjunto de componentes multimedia (como códecs de audio o video). Permite a las empresas que construyen plataformas (por ejemplo, permitir la implementación de un reproductor de MP3) cambiar fácilmente componentes como decodificadores de MP3 y efectos de ecualizador y comprar componentes para su plataforma de diferentes proveedores. [11]

OpenMAX DL es la interfaz entre el hardware físico, como chips de procesador de señal digital (DSP), CPU, GPU y software, como códecs de video y motores 3D. Permite a las empresas integrar fácilmente nuevo hardware compatible con OpenMAX DL sin volver a optimizar su software de bajo nivel.

Capa de aplicación (Application layer)

OpenMAX AL se adapta a casos de uso comunes de aplicaciones multimedia al estandarizar un conjunto de objetos representativos, así como interfaces en esos objetos, para controlarlos y configurarlos. La API OpenMAX AL se divide en dos perfiles: Media Player y Media Player/Recorder. Una plataforma puede cumplir con uno o ambos perfiles al proporcionar todas las características incluidas en un perfil.

Es una API multimedia en lenguaje C a nivel de aplicación diseñada para dispositivos con recursos limitados. El diseño de la API OpenMAX AL pone especial énfasis en garantizar que la API sea adecuada para dispositivos móviles integrados, incluidos teléfonos móviles básicos, teléfonos inteligentes con "funciones", PDA y reproductores de música digital móviles. No obstante, esto no excluye su aplicabilidad a otros dispositivos sofisticados de reproducción y grabación de medios.

El diseño de la API de OpenMAX AL presta especial atención a la facilidad de uso para los desarrolladores de aplicaciones. Su estado como una API multiplataforma abierta permite a los desarrolladores portar la misma fuente en varios dispositivos con un esfuerzo mínimo. Por lo tanto, OpenMAX AL proporciona una base estable para el desarrollo de aplicaciones.

Características

Las características de OpenMAX AL incluyen:

  • Reproducción y grabación de video
  • Reproducción y grabación de audio
  • Captura de imagen (cámara) y visualización
  • Controles de cámara
  • Radio y RDS
  • Reproducción MIDI básica
  • Extracción e inserción de metadatos

Extensión de televisión digital

Una especificación de extensión de televisión digital (DTV) de OpenMAX AL agrega funciones de sintonización, reproducción, grabación y guía electrónica de programación de TV móvil independientes de los estándares a OpenMAX AL Multimedia API, como una API de lenguaje C multiplataforma modular libre de regalías para alta aplicaciones relacionadas con la televisión digital de alto rendimiento en dispositivos móviles e integrados. DTV Extension es compatible con todos los principales estándares de TV móvil (por ejemplo, DVB-H, ISDB-T, T-DMB, etc.), y admite métodos de entrega de transmisión, unidifusión y multidifusión para TV digital.[12][13]

Especificaciones de las versiones

Implementaciones

Comparación con OpenSL ES

OpenSL ES (Open Sound Library for Embedded Systems) es otra API de Khronos Group que también proporciona una biblioteca de audio para el mismo mercado objetivo que OpenMAX AL, mientras que OpenMAX apunta a los servicios multimedia completos. El subconjunto de audio OpenSL ES y OpenMAX AL comparten la misma arquitectura común y tienen algunas características comunes:

  • Reproducción y grabación de audio
  • Reproducción MIDI básica
  • Extracción de metadatos

Capa de integración (Integration layer)

La API OpenMAX IL se esfuerza por brindar portabilidad a los componentes multimedia en una variedad de plataformas que utilizan el lenguaje C. En OpenMAX IL, los componentes representan bloques individuales de funcionalidad. Los componentes pueden ser fuentes, sumideros, códecs, filtros, divisores, mezcladores o cualquier otro operador de datos. Dependiendo de la implementación, un componente posiblemente podría representar una pieza de hardware, un códec de software, otro procesador o una combinación de los mismos.

La interfaz abstrae la arquitectura de hardware y software en el sistema. La API de OpenMAX IL permite al usuario cargar, controlar, conectar y descargar los componentes individuales. Esta arquitectura central flexible permite que la capa de integración implemente fácilmente casi cualquier caso de uso de medios y se combine con los marcos de trabajo de medios basados en gráficos existentes. El enfoque clave de OpenMAX IL API es la portabilidad de los componentes de medios.

El diseño de la API de OpenMAX IL presta especial atención a la flexibilidad de los casos de uso y las transferencias de datos optimizadas entre componentes.

La API de OpenMAX IL se eligió como base para que la API integre los códecs de audio y video en Android, lo que ha resultado en que la mayoría de los proveedores de SoC envíen una implementación mínima que solo admite el subconjunto requerido por Android. Las aplicaciones no usan esos componentes de OpenMAX IL directamente, sino solo a través de la API de Android MediaCodec. El subconjunto de Android de OpenMAX IL con sus extensiones es ahora el estándar de facto.

En 2011 se lanzó la versión provisional 1.2.0.[15]

Implementaciones

  • Tizonia es una implementación OpenMAX IL de código abierto para Linux que admite la versión 1.2.0.[16]
  • Bellagio es una implementación OpenMAX IL de código abierto para Linux mantenida por STMicroelectronics.[17]
  • LIM OpenMAX es una implementación de código abierto de OpenMAX AL y OpenMAX IL para Linux.
  • Mesa proporciona controladores acelerados por hardware que se pueden usar con Bellagio o Tizonia.[18][19]
  • Android StageFright, una implementación parcial de IL que es el estándar de facto.

Capa de desarrollo (Development layer)

La API OpenMAX DL define un conjunto de núcleos multimedia de bajo nivel o bloques de construcción de procesamiento de medios. Los bloques de construcción pueden usarse para acelerar puntos de acceso computacionales tradicionales dentro de códecs de medios estandarizados y otros motores de procesamiento de medios integrados. El alcance funcional de la interfaz OpenMAX DL abarca varios dominios, incluido el procesamiento de señales y procesamiento de imágenes, codificación de audio, codificación de imágenes y codificación de video.

OpenMAX DL se divide en cinco dominios de aplicación:

  • AC - Códecs de audio (componentes de decodificador MP3 y decodificador AAC)
  • IC - Códecs de imagen (componentes JPEG)
  • IP: procesamiento de imágenes (funciones genéricas de procesamiento de imágenes)
  • SP - Procesamiento de señal (funciones genéricas de procesamiento de audio)
  • VC - Códecs de video (componentes H.264 y MP4)

Implementaciones

  • Las implementaciones optimizadas para NEON (para núcleos Cortex A8) y SIMD (para núcleos ARM11), así como una implementación de referencia ANSI C, estaban disponibles previamente en ARM para usuarios registrados.[20][21]
  • La API de OpenMAX es compatible con la consola PlayStation 3.

Grupo de trabajo

El grupo de trabajo OpenMAX se fundó junto con el proyecto hermano OpenVG el 6 de julio de 2004. Los miembros promotores en 2008 fueron AMD, Apple, ARM, Creative, Dell Inc, Ericsson, Freescale, Imagination Technologies Group plc, Intel, IBM, Motorola, Nokia, Nvidia Corporation, Samsung Electronics Co. Ltd, SK Telecom, Sony Computer Entertainment Inc y Instrumentos de Texas.

Véase también

Referencias

  1. Aufranc (CNXSoft), Jean-Luc (11 de noviembre de 2011). «OpenMAX (Open Media Acceleration) - CNX Software». CNX Software - Embedded Systems News (en inglés estadounidense). Consultado el 22 de abril de 2023. 
  2. «Video4Linux2: Path to a Standardized Video Codec API». events.linuxfoundation.org. Archivado desde el original el 6 de enero de 2014. Consultado el 22 de abril de 2023. 
  3. «OpenMAX/OpenSL». jan.newmarch.name. Archivado desde el original el 6 de enero de 2014. Consultado el 22 de abril de 2023. 
  4. «OpenMAX - The Standard for Media Library Portability». The Khronos Group (en inglés). 19 de julio de 2011. Consultado el 22 de abril de 2023. 
  5. «Khronos Group Announces New OpenMAX Open Standard for Enabling Effective Media Acceleration». 6 de julio de 2004. 
  6. «OpenMAX™ Integration Layer Application Programming Interface Specification». 16 de diciembre de 2005. 
  7. «Khronos OpenMAX IL Registry - the Khronos Group Inc». 
  8. «The Khronos Group». 21 de noviembre de 2021. 
  9. «Include/Media/Openmax/OMX_VideoExt.h - platform/Frameworks/Native - Git at Google». 
  10. http://elinux.org/images/e/e0/The_OpenMAX_Integration_Layer_standard.pdf The OpenMAX Integration Layer standard
  11. http://elinux.org/images/5/52/Elc2011_garcia.pdf Integrating a Hardware Video Codec into Android Stagefright using OpenMAX IL
  12. «OpenMAX AL - Digital Television (DTV) Extension - The Khronos Group Inc». www.khronos.org. Consultado el 22 de abril de 2023. 
  13. «Khronos Group Releases Provisional OpenMAX AL Digital TV Extension Specification». The Khronos Group (en inglés). 18 de enero de 2011. Consultado el 22 de abril de 2023. 
  14. «Ice Cream Sandwich». 
  15. «OpenMAX™ Integration Layer Application Programming Interface Specification». 7 de noviembre de 2011. 
  16. «Announcing Tizonia OpenMAX IL». 
  17. «The OpenMAX Integration Layer standard». 
  18. «OpenMAX state tracker», 24 October 2013, https://lists.freedesktop.org/archives/mesa-dev/2013-October/046943.html. 
  19. «Add OpenMAX state tracker in Mesa/Gallium that uses Tizonia». 
  20. «Khronos Standards - ARM». 12 de septiembre de 2022. Archivado desde el original el 4 de octubre de 2013. 
  21. «Using NEON optimized libraries». 12 de septiembre de 2022. 
  22. «VideoToolbox - Apple Developer Documentation». developer.apple.com. Consultado el 5 de agosto de 2018. 
  23. «Archived copy». Archivado desde el original el 9 de abril de 2011. Consultado el 16 de enero de 2012.  OpenVideo Decode (OVD) API

Enlaces externos