Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Médias

Icône Android Media HAL

Android comprend Stagefright, un moteur de lecture multimédia au niveau natif doté de codecs logiciels intégrés pour les formats multimédias courants.

Les fonctionnalités de lecture audio et vidéo de Stagefright incluent l'intégration avec les codecs OpenMAX, la gestion de session, le rendu synchronisé dans le temps, le contrôle du transport et la DRM.

Stagefright prend également en charge l'intégration avec les codecs matériels personnalisés fournis par vous. Pour définir un chemin d'accès matériel pour encoder et décoder le support, vous devez implémenter un codec matériel en tant que composant OpenMax IL (Integration Layer).

Remarque: les mises à jour de Stagefright peuvent se produire via le processus de mise à jour de sécurité mensuelle d' Android et dans le cadre d'une version du système d'exploitation Android.

Architecture

Les applications multimédias interagissent avec le cadre multimédia natif Android selon l'architecture suivante.

Architecture multimédia Android

Figure 1. Architecture des médias

Cadre d'application
Au niveau du cadre d'application se trouve le code d'application qui utilise les API android.media pour interagir avec le matériel multimédia.
Classeur IPC
Les proxys IPC Binder facilitent la communication au-delà des limites du processus. Ils se trouvent dans le répertoire frameworks/av/media/libmedia et commencent par la lettre "I".
Framework multimédia natif
Au niveau natif, Android fournit un cadre multimédia qui utilise le moteur Stagefright pour l'enregistrement et la lecture audio et vidéo. Stagefright est fourni avec une liste par défaut des codecs logiciels pris en charge et vous pouvez implémenter votre propre codec matériel en utilisant la norme de couche d'intégration OpenMax. Pour plus de détails sur l'implémentation, consultez les composants MediaPlayer et Stagefright situés dans frameworks/av/media .
Couche d'intégration OpenMAX (IL)
OpenMAX IL fournit à Stagefright un moyen standardisé de reconnaître et d'utiliser des codecs multimédias matériels personnalisés appelés composants. Vous devez fournir un plugin OpenMAX sous la forme d'une bibliothèque partagée nommée libstagefrighthw.so . Ce plugin relie Stagefright à vos composants de codec personnalisés, qui doivent être implémentés selon la norme de composant OpenMAX IL.

Implémentation de codecs personnalisés

Stagefright est livré avec des codecs logiciels intégrés pour les formats de médias courants, mais vous pouvez également ajouter vos propres codecs matériels personnalisés en tant que composants OpenMAX. Pour ce faire, vous devez créer les composants OMX et un plugin OMX qui relie vos codecs personnalisés au framework Stagefright. Pour des exemples de composants, voir le hardware/ti/omap4xxx/domx/ ; pour un exemple de plugin pour le Galaxy Nexus, voir hardware/ti/omap4xx/libstagefrighthw .

Pour ajouter vos propres codecs:

  1. Créez vos composants selon la norme de composant OpenMAX IL. L'interface du composant se trouve dans le fichier frameworks/native/include/media/OpenMAX/OMX_Component.h . Pour en savoir plus sur la spécification OpenMAX IL, consultez le site Web OpenMAX .
  2. Créez un plugin OpenMAX qui relie vos composants au service Stagefright. Pour les interfaces permettant de créer le plugin, voir frameworks/native/include/media/hardware/OMXPluginBase.h et les fichiers d'en-tête HardwareAPI.h .
  3. Créez votre plugin en tant que bibliothèque partagée avec le nom libstagefrighthw.so dans le Makefile de votre produit. Par exemple:
    LOCAL_MODULE := libstagefrighthw
    

    Dans le Makefile de votre appareil, assurez-vous de déclarer le module en tant que package de produit:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Exposer les codecs au framework

Le service Stagefright analyse le system/etc/media_codecs.xml et le system/etc/media_profiles.xml pour exposer les codecs et les profils pris en charge sur l'appareil aux développeurs d'applications via les classes android.media.MediaCodecList et android.media.CamcorderProfile . Vous devez créer les deux fichiers dans le répertoire device/<company>/<device>/ et les copier dans le répertoire system/etc de l'image system/etc dans le Makefile de votre appareil. Par exemple:

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 \

Pour des exemples complets, voir device/samsung/tuna/media_codecs.xml et device/samsung/tuna/media_profiles.xml .

Remarque: à partir d'Android 4.1, l'élément <Quirk> pour les codecs multimédias n'est plus pris en charge.