![Android Media HAL-Symbol](https://source.android.com/static/docs/core/media/images/ape_fwk_hal_media.png?authuser=6&hl=de)
Android enthält Stagefright, eine Medienwiedergabe-Engine auf nativer Ebene, die über integrierte softwarebasierte Codecs für gängige Medienformate verfügt.
Zu den Audio- und Videowiedergabefunktionen von Stagefright gehören die Integration mit OpenMAX-Codecs, Sitzungsverwaltung, zeitsynchronisiertes Rendering, Transportsteuerung und DRM.
Stagefright unterstützt auch die Integration mit von Ihnen bereitgestellten benutzerdefinierten Hardware-Codecs. Um einen Hardwarepfad zum Kodieren und Dekodieren von Medien festzulegen, müssen Sie einen hardwarebasierten Codec als OpenMax IL-Komponente (Integration Layer) implementieren.
Hinweis: Stagefright-Updates können über den monatlichen Android-Sicherheitsupdateprozess und als Teil einer Android-Betriebssystemversion erfolgen.
Die Architektur
Medienanwendungen interagieren mit dem nativen Multimedia-Framework von Android gemäß der folgenden Architektur.
![Android-Medienarchitektur](https://source.android.com/static/docs/core/media/images/ape_fwk_media.png?authuser=6&hl=de)
Abbildung 1. Medienarchitektur
- Anwendungsframework
- Auf der Ebene des Anwendungsframeworks befindet sich Anwendungscode, der Android.media- APIs nutzt, um mit der Multimedia-Hardware zu interagieren.
- Binder IPC
- Die Binder IPC Proxys erleichtern die Kommunikation über Prozessgrenzen hinweg. Sie befinden sich im Verzeichnis
frameworks/av/media/libmedia
und beginnen mit dem Buchstaben „I“. - Natives Multimedia-Framework
- Auf nativer Ebene stellt Android ein Multimedia-Framework bereit, das die Stagefright-Engine für die Audio- und Videoaufzeichnung und -wiedergabe nutzt. Stagefright wird mit einer Standardliste unterstützter Software-Codecs geliefert und Sie können Ihren eigenen Hardware-Codec implementieren, indem Sie den OpenMax-Integrationsschichtstandard verwenden. Weitere Implementierungsdetails finden Sie in den Komponenten „MediaPlayer“ und „Stagefright“ unter
frameworks/av/media
. - OpenMAX-Integrationsschicht (IL)
- OpenMAX IL bietet Stagefright eine standardisierte Möglichkeit, benutzerdefinierte hardwarebasierte Multimedia-Codecs, sogenannte Komponenten, zu erkennen und zu verwenden. Sie müssen ein OpenMAX-Plugin in Form einer gemeinsam genutzten Bibliothek mit dem Namen
libstagefrighthw.so
bereitstellen. Dieses Plugin verknüpft Stagefright mit Ihren benutzerdefinierten Codec-Komponenten, die gemäß dem OpenMAX IL-Komponentenstandard implementiert werden müssen.
Implementieren Sie benutzerdefinierte Codecs
Stagefright verfügt über integrierte Software-Codecs für gängige Medienformate. Sie können jedoch auch Ihre eigenen benutzerdefinierten Hardware-Codecs als OpenMAX-Komponenten hinzufügen. Dazu müssen Sie die OMX-Komponenten und ein OMX-Plugin erstellen, das Ihre benutzerdefinierten Codecs mit dem Stagefright-Framework verbindet. Beispielkomponenten finden Sie unter hardware/ti/omap4xxx/domx/
; Ein Beispiel-Plugin für das Galaxy Nexus finden Sie hardware/ti/omap4xx/libstagefrighthw
.
So fügen Sie Ihre eigenen Codecs hinzu:
- Erstellen Sie Ihre Komponenten gemäß dem OpenMAX IL-Komponentenstandard. Die Komponentenschnittstelle befindet sich in der Datei
frameworks/native/include/media/OpenMAX/OMX_Component.h
. Weitere Informationen zur OpenMAX IL-Spezifikation finden Sie auf der OpenMAX-Website . - Erstellen Sie ein OpenMAX-Plugin, das Ihre Komponenten mit dem Stagefright-Dienst verknüpft. Informationen zu den Schnittstellen zum Erstellen des Plugins finden Sie in den Headerdateien
frameworks/native/include/media/hardware/OMXPluginBase.h
undHardwareAPI.h
. - Erstellen Sie Ihr Plugin als gemeinsam genutzte Bibliothek mit dem Namen
libstagefrighthw.so
in Ihrem Produkt-Makefile. Zum Beispiel:LOCAL_MODULE := libstagefrighthw
Stellen Sie im Makefile Ihres Geräts sicher, dass Sie das Modul als Produktpaket deklarieren:
PRODUCT_PACKAGES += \ libstagefrighthw \ ...
Codecs dem Framework zugänglich machen
Der Stagefright-Dienst analysiert system/etc/media_codecs.xml
und system/etc/media_profiles.xml
um App-Entwicklern die unterstützten Codecs und Profile auf dem Gerät über die Klassen android.media.MediaCodecList
und android.media.CamcorderProfile
verfügbar zu machen. Sie müssen beide Dateien im Verzeichnis device/<company>/<device>/
erstellen und diese in das Verzeichnis system/etc
des Systemabbilds im Makefile Ihres Geräts kopieren. Zum Beispiel:
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 \
Vollständige Beispiele finden Sie unter device/samsung/tuna/media_codecs.xml
und device/samsung/tuna/media_profiles.xml
.
Hinweis: Ab Android 4.1 wird das <Quirk>
-Element für Mediencodecs nicht mehr unterstützt.