OpenMAX (Open Media Acceleration), a menudo abreviado como " OMX ", es un conjunto de interfaces de programación en lenguaje C, no propietario y de libre uso, para múltiples plataformas . Proporciona abstracciones para rutinas especialmente útiles para el procesamiento de audio, vídeo e imágenes fijas. [ 1 ] [ 2 ] Está diseñado para dispositivos de bajo consumo y sistemas embebidos (incluidos teléfonos inteligentes , consolas de videojuegos , reproductores multimedia digitales y decodificadores ) que necesitan procesar de forma eficiente grandes cantidades de datos multimedia de manera predecible, como códecs de vídeo, bibliotecas gráficas y otras funciones para vídeo, 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 gestionado por el consorcio tecnológico sin ánimo de lucro Khronos Group . [ 4 ]
Historia
Anunciado inicialmente en julio de 2004. [ 5 ] El Grupo de Trabajo OpenMAX fue fundado inicialmente por los miembros 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 la plataforma multimedia . Permite a las empresas que desarrollan aplicaciones migrar fácilmente sus aplicaciones a diferentes plataformas (clientes) que admiten la interfaz de programación de aplicaciones (API) de OpenMAX AL. [ 10 ]
OpenMAX IL es la interfaz entre un marco de trabajo multimedia (como StageFright o la API MediaCodec en Android, DirectShow en Windows, FFmpeg o GStreamer en Linux) y un conjunto de componentes multimedia (como códecs de audio o vídeo ). Permite a las empresas que desarrollan plataformas (por ejemplo, para la implementación de un reproductor de MP3) modificar fácilmente componentes como decodificadores de MP3 y efectos de ecualizador, y adquirir componentes para su plataforma de diferentes proveedores. [ 11 ]
OpenMAX DL es la interfaz entre el hardware físico, como los chips de procesador de señal digital (DSP), las CPU y las GPU , y el software, como los códecs de vídeo y los motores 3D. Permite a las empresas integrar fácilmente nuevo hardware compatible con OpenMAX DL sin necesidad de optimizar de nuevo su software de bajo nivel.
Capa de aplicación
OpenMAX AL se adapta a los casos de uso comunes de aplicaciones multimedia mediante la estandarización de un conjunto de objetos representativos , así como de las interfaces de dichos objetos, para su control y configuración. La API de OpenMAX AL se divide en dos perfiles: Reproductor multimedia y Reproductor/Grabador multimedia. Una plataforma puede ser compatible con uno o ambos perfiles al proporcionar todas las funcionalidades incluidas en cada uno.
Se trata de una API multimedia de nivel de aplicación, escrita en lenguaje C , diseñada para dispositivos con recursos limitados. El diseño de la API OpenMAX AL pone especial énfasis en garantizar su compatibilidad con dispositivos móviles integrados , incluyendo teléfonos móviles básicos, teléfonos inteligentes, PDA y reproductores de música digital portátiles. No obstante, esto no excluye su aplicabilidad a otros dispositivos avanzados de reproducción y grabación multimedia.
El diseño de la API OpenMAX AL presta especial atención a la facilidad de uso para los desarrolladores de aplicaciones. Su condición de API abierta multiplataforma permite a los desarrolladores portar el mismo código fuente a múltiples dispositivos con un mínimo esfuerzo. De este modo, 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 vídeo
- Reproducción y grabación de audio
- Captura de imagen (cámara) y visualización
- Controles de la cámara
- Radio y RDS
- Reproducción MIDI básica
- Extracción e inserción de metadatos
Extensión de TV digital
Una especificación de extensión de televisión digital (DTV) de OpenMAX AL agrega funcionalidad de sintonización, reproducción, grabación y guía electrónica de programas para TV móvil, independiente del estándar, a la API multimedia de OpenMAX AL. Se trata de una API modular, libre de regalías y multiplataforma en lenguaje C para aplicaciones de alto rendimiento relacionadas con la TV digital en dispositivos móviles e integrados. La extensión DTV 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 transmisión de difusión, unidifusión y multidifusión para la TV digital. [ 12 ] [ 13 ]
Versiones de especificación
- Especificación provisional de OpenMAX AL 1.0: una versión provisional, con fecha del 2 de septiembre de 2007, para facilitar la retroalimentación de la comunidad antes del lanzamiento final de la versión 1.0.
- Especificación OpenMAX AL 1.0 - con fecha 23/06/2009
- Especificación de OpenMAX AL 1.0.1 - con fecha 12/03/2010
- Especificación OpenMAX AL 1.1 - con fecha 18-01-2011 [ 14 ]
Implementaciones
- Android 4.0 y versiones posteriores exponen OpenMAX AL como parte de su NDK (Kit de Desarrollo Nativo) . [ 15 ]
- LIM OpenMAX es una implementación de código abierto de OpenMAX AL y OpenMAX IL para Linux.
Comparación con OpenSL ES
OpenSL ES (Open Sound Library for Embedded Systems) es otra API del Grupo Khronos que también proporciona una biblioteca de audio para el mismo mercado objetivo que OpenMAX AL, mientras que OpenMAX se centra en los servicios multimedia completos. Los subconjuntos de audio de OpenSL ES y OpenMAX AL comparten la misma arquitectura y algunas características comunes:
- Reproducción y grabación de audio
- Reproducción MIDI básica
- Extracción de metadatos
Capa de integración
La API OpenMAX IL busca brindar portabilidad a los componentes multimedia en diversas plataformas mediante el lenguaje C. En OpenMAX IL, los componentes representan bloques de funcionalidad individuales. Pueden ser fuentes, receptores, códecs, filtros, divisores, mezcladores o cualquier otro operador de datos. Según la implementación, un componente puede representar un hardware, un códec de software, otro procesador o una combinación de estos.
La interfaz abstrae la arquitectura de hardware y software del sistema. La API 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 multimedia y se integre con los marcos de trabajo multimedia basados en grafos existentes. El objetivo principal de la API OpenMAX IL es la portabilidad de los componentes multimedia.
El diseño de la API OpenMAX IL presta especial atención a la flexibilidad en los casos de uso y a la optimización de las transferencias de datos entre componentes.
La API OpenMAX IL fue elegida como base para la integración de códecs de audio y vídeo en Android, lo que ha llevado a que la mayoría de los fabricantes de SoC ofrezcan una implementación mínima que solo admite el subconjunto requerido por Android. Las aplicaciones no utilizan directamente estos componentes de OpenMAX IL, sino únicamente a través de la API MediaCodec de Android. El subconjunto de OpenMAX IL de Android, con sus extensiones, es ahora el estándar de facto.
En 2011 se publicó la versión provisional 1.2.0. [ 16 ]
Implementaciones
- Tizonia es una implementación de OpenMAX IL de código abierto para Linux que admite la versión 1.2.0. [ 17 ]
- Bellagio es una implementación de OpenMAX IL de código abierto para Linux mantenida por STMicroelectronics . [ 18 ]
- 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. [ 19 ] [ 20 ]
- Android StageFright , una implementación parcial de IL que es el estándar de facto.
capa de desarrollo
La API OpenMAX DL define un conjunto de núcleos multimedia de bajo nivel o bloques de construcción para el procesamiento de medios. Estos bloques pueden utilizarse para acelerar las tareas computacionales más complejas dentro de los códecs multimedia estandarizados y otros motores de procesamiento de medios integrados. El ámbito funcional de la interfaz OpenMAX DL abarca diversos dominios, como el procesamiento de señales e imágenes , la codificación de audio , la codificación de imágenes y la codificación de vídeo .
OpenMAX DL se divide en cinco dominios de aplicación:
- AC - Códecs de audio (componentes decodificadores MP3 y 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ñales (Funciones genéricas de procesamiento de audio)
- VC - Códecs de vídeo (componentes H.264 y MP4)
Implementaciones
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 Texas Instruments .
Véase también
- API de aceleración de vídeo (API VA)
- VDPAU (API de decodificación y presentación de vídeo para Unix)
- Aceleración de flujo de bits de X-Video (XvBA)
- Compensación de movimiento de X-Video (XvMC)
- API de aceleración de vídeo DirectX (DxVA) : equivalente a Microsoft Windows.
- Distributed Codec Engine (libdce) es una API de Texas Instruments para el motor de códec de vídeo en sistemas embebidos basados en OMAP.
- VideoToolbox es una API de Apple Inc. para la decodificación acelerada por hardware en Apple TV y Mac OS X. [ 23 ]
- OpenVideo Decode (OVD) : una nueva API de aceleración de vídeo multiplataforma abierta de AMD . [ 24 ]
- Nvidia PureVideo : la tecnología de flujo de bits de NVIDIA utilizada en sus chips gráficos para acelerar la decodificación de vídeo en la GPU de hardware .
- UVD (Unified Video Decoder) : la tecnología de flujo de bits de ATI Technologies utilizada en sus chips gráficos para acelerar la decodificación de vídeo en la GPU de hardware .
Referencias
- ^ http://www.cnx-software.com/2011/11/11/openmax-open-media-acceleration/ OpenMAX (Aceleración de medios abiertos)
- ↑ https://events.linuxfoundation.org/images/stories/pdf/lceu2012_debski.pdf Archivado el 6 de enero de 2014 en Wayback Machine Video4Linux2 - Camino hacia una API de códec de vídeo estandarizada
- ↑ http://jan.newmarch.name/LinuxSound/Sampled/OpenMAX/ Archivado el 12 de marzo de 2016 en Wayback Machine. Contenido del libro completo "Linux Sound" - Capítulo 13: OpenMAX/OpenSL
- ↑ http://www.khronos.org/openmax/ OpenMAX: el estándar para la portabilidad de bibliotecas multimedia (por Khronos Group)
- ↑ "Khronos Group anuncia el nuevo estándar abierto OpenMAX para permitir una aceleración eficaz de los medios" . 6 de julio de 2004.
- ↑ The Khronos Group (16 de diciembre de 2005). Especificación de la interfaz de programación de aplicaciones de la capa de integración OpenMAX™: versión 1.0 ( ed. 1.10). The Khronos Group Inc.
- ↑ "Registro Khronos OpenMAX IL - The Khronos Group Inc. "
- ↑ «El Grupo Khronos» . 21 de noviembre de 2021.
- ↑ "Include/Media/Openmax/OMX_VideoExt.h - platform/Frameworks/Native - Git en Google" .
- ↑ http://elinux.org/images/e/e0/The_OpenMAX_Integration_Layer_standard.pdf El estándar de la capa de integración de OpenMAX
- ↑ http://elinux.org/images/5/52/Elc2011_garcia.pdf Integración de un códec de vídeo por hardware en Android Stagefright mediante OpenMAX IL
- ↑ http://www.khronos.org/openmax/al/dtv/ OpenMAX AL - Extensión de Televisión Digital (DTV)
- ↑ https://www.khronos.org/news/press/khronos-group-releases-provisional-openmax-al-digital-tv-extension-specific Khronos Group publica la especificación provisional de la extensión OpenMAX AL para televisión digital
- ↑ Khronos Group publica la especificación OpenMAX AL para el procesamiento de vídeo, audio e imágenes a nivel de aplicación en dispositivos móviles y portátiles. Archivado el 17 de marzo de 2011 en Wayback Machine , comunicado de prensa de Khronos.
- ↑ "Sándwich de helado" .
- ↑ The Khronos Group (07/11/2011). Especificación de la interfaz de programación de aplicaciones de la capa de integración OpenMAX™: Versión 1.2.0 Provisional ( ed. 1.2.0.0). The Khronos Group Inc.
- ↑ "Anuncio de Tizonia OpenMAX IL" . Archivado del original el 12 de noviembre de 2014. Consultado el 4 de diciembre de 2013 .
- ↑ "El estándar de la capa de integración de OpenMAX" (PDF) .
- ↑ König, Christian (24 de octubre de 2013). "OpenMAX state tracker" . mesa-dev (Lista de correo) . Consultado el 28 de noviembre de 2015 .
- ↑ "Añadir un rastreador de estado de OpenMAX en Mesa/Gallium que utilice Tizonia" .
- ↑ "Estándares de Khronos - ARM" . 12 de septiembre de 2022. Archivado del original el 4 de octubre de 2013. Consultado el 12 de septiembre de 2022 .
- ↑ "Uso de bibliotecas optimizadas para NEON" . 12 de septiembre de 2022.
- ↑ "VideoToolbox - Documentación para desarrolladores de Apple" . developer.apple.com . Consultado el 5 de agosto de 2018 .
- ↑ "Copia archivada" (PDF) . Archivado del original (PDF) el 9 de abril de 2011. Consultado el 16 de enero de 2012 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) API de decodificación de OpenVideo (OVD)
Enlaces externos
- Khronos Group: Descripción general de OpenMAX y especificaciones de la API.
- Grupo Khronos — Registro público de API
- Khronos Group — Especificación OpenMAX AL 1.1
- Khronos Group — Especificación OpenMAX IL 1.1.2
- Khronos Group — Especificación OpenMAX DL 1.0.2
- ARM - Biblioteca OpenMAX gratuita
- Mentor Graphics - Nucleus MMF aprovecha OpenMAX IL
- Mentor Graphics - Comunicado de prensa: Mentor logra la primera certificación OpenMAX del sector para el marco multimedia Nuclues OS.
- Interfaces de programación de aplicaciones