Android umfasst Stagefright, eine Engine zur Medienwiedergabe auf nativer Ebene die über integrierte softwarebasierte Codecs für gängige Medienformate verfügt.
Die Audio- und Videowiedergabefunktionen von Stagefright umfassen die Integration von OpenMAX-Codecs, Sitzungsverwaltung, zeitsynchronisiertes Rendering, Transport und der digitalen Rechteverwaltung.
Stagefright unterstützt auch die Integration benutzerdefinierter Hardware-Codecs von von dir. Um einen Hardwarepfad zum Codieren und Decodieren von Medien festzulegen, müssen Sie einen hardwarebasierten Codec als OpenMax IL-Komponente (Integration Layer)
Hinweis:Stagefright-Aktualisierungen können über die Android Monatliche Sicherheit Update und im Rahmen einer Android-Version veröffentlicht werden.
Architektur
Medienanwendungen interagieren mit dem nativen Multimedia-Framework von Android. gemäß der folgenden Architektur erstellen.
- Framework für Anwendungen
- Auf der Ebene des Anwendungsframeworks ist Anwendungscode, android.media APIs zur Interaktion mit der Multimedia-Hardware
- Binder IPC
- Die Binder IPC-Proxys erleichtern die Kommunikation über Prozessgrenzen hinweg.
Sie befinden sich im Verzeichnis
frameworks/av/media/libmedia
und mit dem Buchstaben „I“ beginnen. - Native Multimedia-Framework
- Auf nativer Ebene bietet Android ein Multimedia-Framework,
die Stagefright-Engine für die Audio- und Videoaufnahme und -wiedergabe. Lampenfieber
enthält eine Liste unterstützter Software-Codecs und Sie können
mit dem OpenMax-Integrationsschichtstandard. Für
Weitere Informationen zur Implementierung finden Sie in den MediaPlayer- und Stagefright-Komponenten
in
frameworks/av/media
. - OpenMAX Integration Layer (IL)
- OpenMAX IL bietet Stagefright standardisierte Möglichkeiten,
Hardware-basierte Multimedia-Codecs, sogenannte Komponenten, verwenden. Sie müssen angeben,
ein OpenMAX-Plug-in in Form einer gemeinsam genutzten Bibliothek mit dem Namen
libstagefrighthw.so
Dieses Plug-in verknüpft Stagefright mit Ihrem benutzerdefinierten Codec-Komponenten, die gemäß OpenMAX IL implementiert werden müssen. Component Standard festgelegt werden.
Benutzerdefinierte Codecs implementieren
Stagefright verfügt über integrierte Software-Codecs für gängige Medienformate,
können Sie auch eigene
benutzerdefinierte Hardware-Codecs als OpenMAX-Komponenten hinzufügen. Aufgabe
müssen Sie die OMX-Komponenten und ein OMX-Plug-in erstellen, das sich
Ihre benutzerdefinierten Codecs mit dem Stagefright-Framework erstellen. Beispiele für Komponenten finden Sie unter
der hardware/ti/omap4xxx/domx/
; für ein Beispiel-Plug-in
Galaxy Nexus, siehe hardware/ti/omap4xx/libstagefrighthw
.
So fügst du eigene Codecs hinzu:
- Erstellen Sie Ihre Komponenten gemäß dem OpenMAX-IL-Komponentenstandard. Die
Die Benutzeroberfläche der Komponente befindet sich
frameworks/native/include/media/OpenMAX/OMX_Component.h
-Datei. Bis Weitere Informationen zur OpenMAX-IL-Spezifikation finden Sie in der OpenMAX-Website - Erstellen Sie ein OpenMAX-Plug-in, das Ihre Komponenten mit Stagefright verknüpft.
. Die Schnittstellen zum Erstellen des Plug-ins finden Sie unter
frameworks/native/include/media/hardware/OMXPluginBase.h
undHardwareAPI.h
-Headerdateien. - Plug-in als gemeinsam genutzte Bibliothek mit dem Namen erstellen
libstagefrighthw.so
in Ihrem Produkt-Makefile. Hier einige Beispiele:
LOCAL_MODULE := libstagefrighthw
Deklariere das Modul im Makefile deines Geräts als Produkt Paket:
PRODUCT_PACKAGES += \ libstagefrighthw \ ...
Codecs dem Framework zur Verfügung stellen
Der Stagefright-Dienst parst die system/etc/media_codecs.xml
.
und system/etc/media_profiles.xml
, um die unterstützten Codecs bereitzustellen
Profilen auf dem Gerät über die
android.media.MediaCodecList
und
android.media.CamcorderProfile
Klassen. Sie müssen beide Dateien erstellen
im Verzeichnis device/<company>/<device>/
und kopiere diese in das Verzeichnis system/etc
des System-Images
das Makefile Ihres Geräts. 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 findest du unter device/samsung/tuna/media_codecs.xml
.
und device/samsung/tuna/media_profiles.xml
Hinweis: Ab Android 4.1
Das <Quirk>
-Element für Media-Codecs wird nicht mehr unterstützt.