Contenido multimedia

Ícono de la HAL de Android Media

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.

Arquitectura multimedia de Android

Figura 1: Medios de comunicación 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:

  1. 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.
  2. 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 y HardwareAPI.h archivos de encabezado.
  3. 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.