Google se compromete a promover la equidad racial para las comunidades negras. Ver cómo.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Medios de comunicación

Icono de Android Media HAL

Android incluye Stagefright, un motor de reproducción de medios a nivel nativo que tiene códecs basados ​​en software integrados para formatos de medios populares.

Las funciones de reproducción de audio y video Stagefright incluyen integración con códecs OpenMAX, administración de sesiones, renderizado sincronizado en el tiempo, control de transporte y DRM.

Stagefright también admite la integración con códecs de hardware personalizados proporcionados por usted. Para establecer una ruta de hardware para codificar y decodificar medios, debe implementar un códec basado en hardware como un componente OpenMax IL (Capa de integración).

Nota: Las actualizaciones de Stagefright pueden ocurrir a través del proceso de actualización de seguridad mensual de Android y como parte de una versión del sistema operativo Android.

Arquitectura

Las aplicaciones multimedia interactúan con el marco multimedia nativo de Android de acuerdo con la siguiente arquitectura.

Arquitectura de medios de Android

Figura 1. Arquitectura de medios

Marco de aplicación
En el nivel del marco de la aplicación, se encuentra el código de la aplicación que utiliza las API de android.media para interactuar con el hardware multimedia.
Binder IPC
Los proxies Binder IPC facilitan la comunicación sobre los límites del proceso. Se encuentran en el directorio frameworks/av/media/libmedia y comienzan con la letra "I".
Marco multimedia nativo
En el nivel nativo, Android proporciona un marco multimedia que utiliza el motor Stagefright para la grabación y reproducción de audio y video. Stagefright viene con una lista predeterminada de códecs de software compatibles y puede implementar su propio códec de hardware utilizando el estándar de capa de integración OpenMax. Para obtener más detalles de implementación, consulte los componentes MediaPlayer y Stagefright ubicados en frameworks/av/media .
Capa de integración de OpenMAX (IL)
OpenMAX IL proporciona una forma estandarizada para que Stagefright reconozca y use códecs multimedia personalizados basados ​​en hardware llamados componentes. Debe proporcionar un complemento OpenMAX en forma de una biblioteca compartida llamada libstagefrighthw.so . Este complemento vincula Stagefright con sus componentes de códec personalizados, que deben implementarse de acuerdo con el estándar de componentes OpenMAX IL.

Implementando códecs personalizados

Stagefright viene con códecs de software integrados para formatos de medios comunes, pero también puede agregar sus propios códecs de hardware personalizados como componentes de OpenMAX. Para hacer esto, debe crear los componentes OMX y un complemento OMX que une sus códecs personalizados con el marco Stagefright. Por ejemplo, componentes, vea el hardware/ti/omap4xxx/domx/ ; Para obtener un complemento de ejemplo para Galaxy Nexus, consulte hardware/ti/omap4xx/libstagefrighthw .

Para agregar sus propios códecs:

  1. Cree sus componentes de acuerdo con el estándar de componentes OpenMAX IL. La interfaz del componente se encuentra en el archivo frameworks/native/include/media/OpenMAX/OMX_Component.h . Para obtener más información sobre la especificación OpenMAX IL, consulte el sitio web de OpenMAX .
  2. Cree un complemento de OpenMAX que vincule sus componentes con el servicio Stagefright. Para conocer las interfaces para crear el complemento, consulte los archivos de encabezado frameworks/native/include/media/hardware/OMXPluginBase.h y HardwareAPI.h .
  3. Cree su complemento como una biblioteca compartida con el nombre libstagefrighthw.so en el Makefile de su producto. Por ejemplo:
    LOCAL_MODULE := libstagefrighthw
    

    En el Makefile de su dispositivo, asegúrese de declarar el módulo como un paquete de producto:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Exponiendo códecs al framework

El servicio Stagefright analiza el system/etc/media_codecs.xml y el system/etc/media_profiles.xml para exponer los códecs y perfiles admitidos en el dispositivo a los desarrolladores de aplicaciones a través de las clases android.media.MediaCodecList y android.media.CamcorderProfile . Debe crear ambos archivos en el directorio device/<company>/<device>/ y copiar esto en el directorio system/etc la imagen del system/etc 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 \

Para ver ejemplos completos, consulte device/samsung/tuna/media_codecs.xml y device/samsung/tuna/media_profiles.xml .

Nota: A partir de Android 4.1, el elemento <Quirk> para códecs multimedia ya no es compatible.