O Google está comprometido em promover a equidade racial para as comunidades negras. Veja como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

meios de comunicação

Ícone Android Media HAL

O Android inclui o Stagefright, um mecanismo de reprodução de mídia no nível nativo que possui codecs baseados em software para formatos populares de mídia.

Os recursos de reprodução de áudio e vídeo Stagefright incluem integração com codecs OpenMAX, gerenciamento de sessões, renderização sincronizada com tempo, controle de transporte e DRM.

O Stagefright também suporta a integração com codecs de hardware personalizados fornecidos por você. Para definir um caminho de hardware para codificar e decodificar mídia, você deve implementar um codec baseado em hardware como um componente OpenMax IL (Integration Layer).

Nota: As atualizações do Stagefright podem ocorrer através do processo de atualização de segurança mensal do Android e como parte de uma versão do sistema operacional Android.

Arquitetura

Os aplicativos de mídia interagem com a estrutura multimídia nativa do Android, de acordo com a arquitetura a seguir.

Arquitetura de mídia Android

Figura 1. Arquitetura de mídia

Estrutura de Aplicação
No nível da estrutura do aplicativo, está o código do aplicativo que utiliza APIs android.media para interagir com o hardware multimídia.
Fichário IPC
Os proxies do IPC do Binder facilitam a comunicação através dos limites do processo. Eles estão localizados no diretório frameworks/av/media/libmedia e começam com a letra "I".
Estrutura de multimídia nativa
No nível nativo, o Android fornece uma estrutura multimídia que utiliza o mecanismo Stagefright para gravação e reprodução de áudio e vídeo. O Stagefright vem com uma lista padrão de codecs de software suportados e você pode implementar seu próprio codec de hardware usando o padrão da camada de integração OpenMax. Para obter mais detalhes de implementação, consulte os componentes MediaPlayer e Stagefright localizados em frameworks/av/media .
Camada de integração OpenMAX (IL)
O OpenMAX IL fornece uma maneira padronizada para o Stagefright reconhecer e usar codecs multimídia personalizados baseados em hardware chamados componentes. Você deve fornecer um plug-in OpenMAX na forma de uma biblioteca compartilhada denominada libstagefrighthw.so . Este plug-in vincula o Stagefright aos seus componentes de codec personalizados, que devem ser implementados de acordo com o padrão de componente do OpenMAX IL.

Implementando codecs personalizados

O Stagefright vem com codecs de software integrados para formatos de mídia comuns, mas você também pode adicionar seus próprios codecs de hardware personalizados como componentes do OpenMAX. Para fazer isso, você deve criar os componentes OMX e um plug-in OMX que conecte seus codecs personalizados à estrutura Stagefright. Por exemplo, componentes, consulte o hardware/ti/omap4xxx/domx/ ; para obter um exemplo de plug-in para o Galaxy Nexus, consulte hardware/ti/omap4xx/libstagefrighthw .

Para adicionar seus próprios codecs:

  1. Crie seus componentes de acordo com o padrão de componente OpenMAX IL. A interface do componente está localizada no arquivo frameworks/native/include/media/OpenMAX/OMX_Component.h . Para saber mais sobre a especificação OpenMAX IL, consulte o site do OpenMAX .
  2. Crie um plug-in OpenMAX que vincule seus componentes ao serviço Stagefright. Para obter as interfaces para criar o plug-in, consulte os arquivos de cabeçalho frameworks/native/include/media/hardware/OMXPluginBase.h HardwareAPI.h .
  3. Crie seu plug-in como uma biblioteca compartilhada com o nome libstagefrighthw.so no Makefile do seu produto. Por exemplo:
    LOCAL_MODULE := libstagefrighthw
    

    No Makefile do seu dispositivo, certifique-se de declarar o módulo como um pacote do produto:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Expondo codecs à estrutura

O serviço Stagefright analisa o system/etc/media_codecs.xml e system/etc/media_profiles.xml para expor os codecs suportados e perfis no dispositivo para desenvolvedores de aplicativos através dos android.media.MediaCodecList e android.media.CamcorderProfile classes. Você deve criar os dois arquivos no diretório device/<company>/<device>/ e copiá-lo para o diretório system/etc da imagem do system/etc no Makefile do seu dispositivo. Por exemplo:

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 obter exemplos completos, consulte device/samsung/tuna/media_codecs.xml e device/samsung/tuna/media_profiles.xml .

Nota: No Android 4.1, o elemento <Quirk> para codecs de mídia não é mais suportado.