Conociendo Stagefright Android
Android ofrece un motor de reproducción de medios a nivel nativo llamado Stagefright que viene incorporado con codecs basados en software para varios formatos de medios populares. Características Stagefright para audio y reproducción de vídeo incluyen la integración con los codecs OpenMAX, gestión de sesiones, la representación tiempo-sincronizado, control de transporte, y DRM.
Además, Stagefright soporta la integración con los codecs de hardware personalizado que usted proporciona.Hay en realidad no es un HAL de implementar para codecs personalizados, sino para proporcionar una ruta de hardware para codificar y decodificar los medios de comunicación, debe implementar el códec basado en hardware como OpenMAX IL (Capa de Integración) componente.
Arquitectura
El siguiente diagrama muestra cómo las aplicaciones de medios de comunicación interactúan con el entorno multimedia nativo de Android.
Figura 1. Arquitectura de Medios
- Application Framework
- A nivel de estructura de aplicaciones es el código de la aplicación, que utiliza las android.media API para interactuar con el hardware multimedia.
- Carpeta IPC
- Los proxies Carpeta IPC facilitan la comunicación a través de límites de proceso. Están ubicados en el
marcos / av / media / libmedia
directorio y comienzan con la letra "I". - Marco Multimedia Nativo
- A nivel nativo, Android proporciona un marco multimedia que utiliza el motor Stagefright para audio y grabación de vídeo y reproducción. Stagefright viene con una lista predeterminada de codecs de software compatibles y se puede implementar su propio codec de hardware mediante el uso de la norma capa de integración OpenMAX. Para más detalles de implementación, consulte los diversos MediaPlayer y componentes Stagefright situado en
marcos / av / media
. - Integración OpenMAX Capa (IL)
- El OpenMAX IL proporciona una forma estandarizada para Stagefright reconocer y utilizar códecs multimedia basados en hardware personalizados llamados componentes. Debe proporcionar un plugin OpenMAX en forma de una biblioteca compartida denominada
libstagefrighthw.so
. Este plugin vincula sus componentes códec personalizados para Stagefright. Sus codecs personalizados deben ser implementadas de acuerdo a la norma componente OpenMAX IL.
Implementación personalizada Codecs
Stagefright viene con codecs de software integradas para formatos de medios comunes, pero también se puede añadir sus propios codecs de hardware personalizado como componentes OpenMAX. Para ello, es necesario crear componentes OMX y también un plugin OMX que engancha juntos sus codecs personalizados con el marco Stagefright. Para ver un ejemplo, consulte el hardware / ti / omap4xxx / domx /
para los componentes de ejemplo y hardware / ti / omap4xx / libstagefrighthw
para un ejemplo de plugin para el Galaxy Nexus.
Para añadir sus propios códecs:
- Cree sus componentes de acuerdo con la norma componente OpenMAX IL. La interfaz del componente se encuentra en los
marcos / nativo / include / / OpenMAX / OMX_Component.h medios
archivo. Para obtener más información sobre la especificación OpenMAX IL, consulte el sitio web OpenMAX . - Crear un plugin OpenMAX que une sus componentes con el servicio Stagefright. Ver los
marcos / nativo / include / media / hardware / OMXPluginBase.h
yHardwareAPI.h
archivos de cabecera para las interfaces para crear el complemento. - Construye tu plugin como una biblioteca compartida con el nombre
libstagefrighthw.so
en su producto Makefile. Por ejemplo:LOCAL_MODULE : = libstagefrighthw
En Makefile de su dispositivo, asegúrese de que usted declara el módulo como un paquete de producto:
PRODUCT_PACKAGES + = \ libstagefrighthw \ ...
La exposición de Codecs al Marco
El servicio Stagefright analiza el sistema / etc / media_codecs.xml
y sistema / etc / media_profiles.xml
para exponer los codecs y perfiles soportados en el dispositivo a los desarrolladores de aplicaciones a través de los android.media.MediaCodecList
y android.media.CamcorderProfile
clases. Es necesario crear ambos archivos en el dispositivo <company_name> / / / <DEVICE_NAME>
directorio y copiar esto a la imagen del sistema del sistema / etc
directorio en el Makefile de su dispositivo. Por ejemplo:
PRODUCT_COPY_FILES += \
device / samsung / tuna / media_profiles . xml : system / etc / media_profiles . xml \
device / samsung / tuna / media_codecs . xml : system / etc / media_codecs . xml \
Ver el dispositivo / samsung / atún / media_codecs.xml
y media_profiles.xml dispositivo / samsung / atún /
archivo para ejemplos completos.
Nota: El <Quirk>
elemento para códecs multimedia ya no es compatible con Android