Android incluye Stagefright, un motor de reproducción de contenido multimedia en el nivel nativo que tiene códecs basados en software integrados para formatos multimedia populares.
Las funciones de reproducción de audio y video de Stagefright incluyen integración con Códecs OpenMAX, administración de sesiones, renderización sincronizada en el tiempo, transporte el control de acceso y la DRM.
Stagefright también admite la integración con códecs de hardware personalizados proporcionados por ti. Para establecer una ruta de acceso de hardware para codificar y decodificar medios, debes implementar una basado en hardware como componente de OpenMax IL (capa de integración).
Nota: Las actualizaciones de Stagefright pueden ocurrir a través del Seguridad mensual de Android update y como parte de una versión del SO Android.
Arquitectura
Las aplicaciones multimedia interactúan con el framework multimedia nativo de Android de acuerdo con la siguiente arquitectura.
- Marco de trabajo de aplicaciones
- A nivel del framework de la aplicación, se encuentra el código de la aplicación que usa android.media para interactuar con el hardware multimedia.
- IPC de Binder
- Los proxies de IPC de Binder facilitan la comunicación a través de los límites de procesos.
Se encuentran en el directorio
frameworks/av/media/libmedia
. comienzan con la letra "I". - Framework multimedia nativo
- En el nivel nativo, Android proporciona un framework multimedia que utiliza
el motor Stagefright para la grabación y reproducción de audio y video. Miedo escénico
viene con una lista predeterminada de códecs de software compatibles y puedes implementar
tu propio códec de hardware
usando el estándar de la capa de integración OpenMax. Para
más detalles sobre la implementación, consulta los componentes
MediaPlayer y Stagefright
ubicado en
frameworks/av/media
. - Capa de integración (IL) de OpenMAX
- OpenMAX IL proporciona una forma estandarizada para que Stagefright reconozca y
usar códecs multimedia personalizados basados en hardware, llamados componentes. Debes proporcionar
un complemento OpenMAX en forma de biblioteca compartida llamada
libstagefrighthw.so
Este complemento vincula Stagefright con tu componentes del códec, que deben implementarse de acuerdo con el estándar OpenMAX IL componente estándar.
Implementa códecs personalizados
Stagefright viene con códecs de software integrados para formatos de medios comunes, pero
también puedes agregar tus propios códecs
de hardware personalizados como componentes OpenMAX. Tareas pendientes
esto, debes crear los componentes OMX y un complemento OMX que se conecta
tus códecs personalizados
con el framework de Stagefright. Para ver ejemplos de componentes, consulta
hardware/ti/omap4xxx/domx/
de un complemento de ejemplo para la
Galaxy Nexus, consulta hardware/ti/omap4xx/libstagefrighthw
.
Para agregar tus propios códecs:
- Crea tus componentes de acuerdo con el estándar de componentes OpenMAX IL. El
interfaz de componentes de Google Cloud se encuentra
frameworks/native/include/media/OpenMAX/OMX_Component.h
. Para más información acerca de la especificación de OpenMAX IL, consulta la Sitio web de OpenMAX. - Crea un complemento OpenMAX que vincule tus componentes con Stagefright
servicio. Para conocer las interfaces que permiten crear el complemento, consulta
frameworks/native/include/media/hardware/OMXPluginBase.h
yHardwareAPI.h
archivos de encabezado. - Compila tu complemento como una biblioteca compartida con el nombre.
libstagefrighthw.so
en el archivo Make de tu producto. Por ejemplo:
LOCAL_MODULE := libstagefrighthw
En el archivo Make de tu dispositivo, asegúrate de declarar el módulo como producto. paquete:
PRODUCT_PACKAGES += \ libstagefrighthw \ ...
Cómo exponer los códecs al framework
El servicio de Stagefright analiza el system/etc/media_codecs.xml
y system/etc/media_profiles.xml
para exponer los códecs compatibles
y perfiles en el dispositivo para los desarrolladores de apps a través del
android.media.MediaCodecList
y
android.media.CamcorderProfile
. Debes crear ambos archivos
en el directorio device/<company>/<device>/
y cópialo en el directorio system/etc
de la imagen del sistema en
en el Makefile de tu 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 \
Para ver ejemplos completos, consulta device/samsung/tuna/media_codecs.xml
.
y device/samsung/tuna/media_profiles.xml
.
Nota: A partir de Android 4.1, la
Ya no se admite el elemento <Quirk>
para códecs multimedia.