
Android inclut Stagefright, un moteur de lecture multimédia au niveau natif qui intègre des codecs logiciels 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 de session, le rendu synchronisé dans le temps, le contrôle du transport et le DRM.
Stagefright prend également en charge l'intégration avec les codecs matériels personnalisés fournis par vous. 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édias 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 IPC
- 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 ». - 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 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 l'implémentation, consultez les composants MediaPlayer et Stagefright situés dans
frameworks/av/media
. - Couche d'intégration OpenMAX (IL)
- L'OpenMAX IL fournit à Stagefright un moyen standardisé de reconnaître et d'utiliser des codecs multimédia personnalisés basés sur le matériel 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 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 relie vos codecs personnalisés au framework Stagefright. Pour des exemples de composants, consultez 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 le standard 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, reportez-vous au site Web OpenMAX . - Créez un plugin OpenMAX qui relie vos composants au service Stagefright. Pour les interfaces permettant de créer le plugin, consultez les fichiers d'en-tête
frameworks/native/include/media/hardware/OMXPluginBase.h
etHardwareAPI.h
. - Créez votre plugin en tant que bibliothèque partagée avec le nom
libstagefrighthw.so
dans votre Makefile de 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, consultez 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.