
Android inclut Stagefright, un moteur de lecture multimédia au niveau natif qui intègre des codecs logiciels intégrés pour les formats multimédias populaires.
Les fonctionnalités de lecture audio et vidéo de Stagefright incluent l'intégration avec les codecs OpenMAX, la gestion des sessions, le rendu synchronisé, le contrôle du transport et les DRM.
Stagefright prend également en charge l'intégration avec les codecs matériels personnalisés que vous avez fournis. Pour définir un chemin matériel pour encoder et décoder les médias, vous devez implémenter un codec matériel en tant que composant OpenMax IL (Integration Layer).
Remarque : Les mises à jour de Stagefright peuvent être effectuées 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édia interagissent avec le framework multimédia natif Android selon l'architecture suivante.

Figure 1. Architecture multimédia
- 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 CIB
- Les proxys Binder IPC facilitent la communication au-delà des limites des processus. Ils se trouvent dans le répertoire
frameworks/av/media/libmedia
et commencent par la lettre "I". - Cadre 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 livré avec une liste par défaut de 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 la mise en œuvre, consultez les composants MediaPlayer et Stagefright situés dans
frameworks/av/media
. - Couche d'intégration OpenMAX (IL)
- L'OpenMAX IL fournit un moyen standardisé pour Stagefright de reconnaître et d'utiliser des codecs multimédias matériels personnalisés appelés composants. Vous devez fournir un plug-in OpenMAX sous la forme d'une bibliothèque partagée nommée
libstagefrighthw.so
. Ce plug-in relie Stagefright à vos composants de codec personnalisés, qui doivent être implémentés conformément à 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 multimé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 connecte vos codecs personnalisés avec le 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 :
- Créez vos composants selon la norme de composants 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 . - Créez un plug-in OpenMAX qui relie vos composants au service Stagefright. Pour les interfaces permettant de créer le plug-in, consultez les fichiers d'en-tête
frameworks/native/include/media/hardware/OMXPluginBase.h
etHardwareAPI.h
. - Construisez 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 les system/etc/media_codecs.xml
et system/etc/media_profiles.xml
pour exposer les codecs et 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 système 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 : depuis Android 4.1, l'élément <Quirk>
pour les codecs multimédias n'est plus pris en charge.