Elementi multimediali

Icona Android Media HAL

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

Le funzionalità di riproduzione audio e video di Stagefright includono l'integrazione con Codec OpenMAX, gestione delle sessioni, rendering sincronizzato nel tempo, trasporto e DRM.

Stagefright supporta anche l'integrazione con codec hardware personalizzati forniti te. Per impostare un percorso hardware per la codifica e la decodifica dei contenuti multimediali, devi implementare un codec basato su hardware come componente di OpenMax IL (Integration Layer).

Nota. Gli aggiornamenti di Stagefright possono avvenire tramite Sicurezza mensile di Android di aggiornamento e nell'ambito di una release del sistema operativo Android.

Architettura

Le applicazioni multimediali interagiscono con il framework multimediale nativo Android in base alla seguente architettura.

Architettura multimediale Android

Figura 1. Contenuti multimediali architettura

Framework dell'applicazione
A livello di framework dell'applicazione c'è il codice dell'applicazione che utilizza android.media API per interagire con l'hardware multimediale.
IPC Binder
I proxy IPC Binder facilitano la comunicazione oltre i confini dei processi. Si trovano nella directory frameworks/av/media/libmedia e iniziare con la lettera "I".
Framework 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. Spavento da palcoscenico viene fornito con un elenco predefinito di codec software supportati e puoi implementare il tuo codec hardware utilizzando lo standard del livello di integrazione OpenMax. Per ulteriori dettagli sull'implementazione, consulta i componenti MediaPlayer e Stagefright si trova in frameworks/av/media.
Livello di integrazione OpenMAX (IL)
OpenMAX IL offre a Stagefright un metodo standardizzato per riconoscere e utilizzare codec multimediali personalizzati basati su hardware, chiamati componenti. Devi fornire Un plug-in OpenMAX sotto forma di libreria condivisa denominata libstagefrighthw.so. Questo plug-in collega Stagefright al tuo account componenti codec, che devono essere implementati secondo lo standard OpenMAX IL standard dei componenti.

Implementa codec personalizzati

Stagefright è dotato di codec software integrati per i formati multimediali più comuni, ma puoi anche aggiungere codec hardware personalizzati come componenti OpenMAX. Da fare Devi creare i componenti OMX e un plug-in OMX che si collega i tuoi codec personalizzati con il framework Stagefright. Per i componenti di esempio, consulta hardware/ti/omap4xxx/domx/; per un plug-in di esempio per Galaxy Nexus, vedi hardware/ti/omap4xx/libstagefrighthw.

Per aggiungere i tuoi codec:

  1. Crea i componenti secondo lo standard dei componenti OpenMAX IL. La dell'interfaccia del componente frameworks/native/include/media/OpenMAX/OMX_Component.h. A per saperne di più sulla specifica OpenMAX IL, consulta Sito web OpenMAX.
  2. Crea un plug-in OpenMAX che colleghi i tuoi componenti a Stagefright completamente gestito di Google Cloud. Per le interfacce per la creazione del plug-in, consulta frameworks/native/include/media/hardware/OMXPluginBase.h e HardwareAPI.h file di intestazione.
  3. Sviluppa il tuo plug-in come libreria condivisa con il nome libstagefrighthw.so nel Makefile del prodotto. Ad esempio:
    LOCAL_MODULE := libstagefrighthw
    

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

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Esponi i codec nel framework

Il servizio Stagefright analizza il system/etc/media_codecs.xml e system/etc/media_profiles.xml per esporre i codec supportati e profili sul dispositivo agli sviluppatori di app tramite android.media.MediaCodecList e android.media.CamcorderProfile corsi. Devi creare entrambi i file nella directory device/<company>/<device>/ e copiarlo nella directory system/etc dell'immagine di sistema il Makefile del dispositivo. Ad 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, il L'elemento <Quirk> per i codec multimediali non è più supportato.