Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Media

Icona HAL di Android Media

Android include Stagefright, un motore di riproduzione multimediale a livello nativo che ha codec integrati basati su software per i formati multimediali più diffusi.

Le funzionalità di riproduzione audio e video Stagefright includono l'integrazione con i codec OpenMAX, la gestione delle sessioni, il rendering sincronizzato nel tempo, il controllo del trasporto e il DRM.

Stagefright supporta anche l'integrazione con codec hardware personalizzati forniti dall'utente. Per impostare un percorso hardware per codificare e decodificare i media, è necessario implementare un codec basato su hardware come componente OpenMax IL (Integration Layer).

Nota: gli aggiornamenti Stagefright possono avvenire attraverso il processo di aggiornamento della sicurezza mensile Android e come parte di una versione del sistema operativo Android.

Architettura

Le applicazioni multimediali interagiscono con il framework multimediale nativo di Android secondo la seguente architettura.

Architettura multimediale Android

Figura 1. Architettura dei media

Quadro applicativo
A livello di framework dell'applicazione è il codice dell'applicazione che utilizza le API android.media per interagire con l'hardware multimediale.
Binder IPC
I proxy IPC di Binder facilitano la comunicazione oltre i limiti del processo. Si trovano nella directory frameworks/av/media/libmedia e iniziano con la lettera "I".
Quadro multimediale nativo
A livello nativo, Android fornisce un framework multimediale che utilizza il motore Stagefright per la registrazione e la riproduzione di audio e video. Stagefright viene fornito con un elenco predefinito di codec software supportati ed è possibile implementare il proprio codec hardware utilizzando lo standard del livello di integrazione OpenMax. Per ulteriori dettagli sull'implementazione, consultare i componenti MediaPlayer e Stagefright situati in frameworks/av/media .
OpenMAX Integration Layer (IL)
OpenMAX IL offre a Stagefright un modo standardizzato per riconoscere e utilizzare codec multimediali personalizzati basati su hardware chiamati componenti. È necessario fornire un plug-in OpenMAX sotto forma di una libreria condivisa denominata libstagefrighthw.so . Questo plug-in collega Stagefright con i componenti del codec personalizzati, che devono essere implementati secondo lo standard del componente OpenMAX IL.

Implementazione di codec personalizzati

Stagefright viene fornito con codec software integrati per i formati multimediali più comuni, ma è anche possibile aggiungere i propri codec hardware personalizzati come componenti OpenMAX. Per fare ciò, è necessario creare i componenti OMX e un plug-in OMX che colleghi i codec personalizzati con il framework Stagefright. Ad esempio componenti, consultare l' hardware/ti/omap4xxx/domx/ ; per un plug-in di esempio per Galaxy Nexus, consultare hardware/ti/omap4xx/libstagefrighthw .

Per aggiungere i tuoi codec:

  1. Crea i tuoi componenti secondo lo standard dei componenti OpenMAX IL. L'interfaccia del componente si trova nel file frameworks/native/include/media/OpenMAX/OMX_Component.h . Per ulteriori informazioni sulle specifiche IL di OpenMAX, consultare il sito Web OpenMAX .
  2. Crea un plug-in OpenMAX che collega i tuoi componenti al servizio Stagefright. Per le interfacce per la creazione del plug-in, consultare i file di intestazione frameworks/native/include/media/hardware/OMXPluginBase.h e HardwareAPI.h .
  3. Crea il tuo plug-in come libreria condivisa con il nome libstagefrighthw.so nel tuo Makefile del prodotto. Per esempio:
    LOCAL_MODULE := libstagefrighthw
    

    Nel Makefile del dispositivo, assicurati di dichiarare il modulo come pacchetto del prodotto:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Esporre i codec al framework

Il servizio Stagefright analizza le system/etc/media_codecs.xml e system/etc/media_profiles.xml per esporre i codec e i profili supportati sul dispositivo agli sviluppatori di app tramite le classi android.media.MediaCodecList e android.media.CamcorderProfile . È necessario creare entrambi i file nella directory device/<company>/<device>/ e copiarli nella directory system/etc dell'immagine di system/etc nel Makefile del dispositivo. Per esempio:

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 \

Per esempi completi, vedi device/samsung/tuna/media_codecs.xml e device/samsung/tuna/media_profiles.xml .

Nota: a partire da Android 4.1, l'elemento <Quirk> per i codec multimediali non è più supportato.