Medien

Android Media HAL-Symbol

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.

Android-Medienarchitektur

Abbildung 1: Medien Architektur

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:

  1. 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
  2. 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 und HardwareAPI.h-Headerdateien.
  3. 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.