Frage

Ich arbeite an einem Videokonferenzprojekt.Wir haben einen Software-Codec zum Kodieren und Dekodieren von Videobildern verwendet, der für niedrigere Auflösungen (bis zu 320p) gut geeignet ist.Wir haben geplant, unsere Anwendung für höhere Auflösungen auch bis 720p zu unterstützen.Ich habe erfahren, dass die Hardwarebeschleunigung diese Aufgabe recht gut erledigt.

Da der Hardware-Codec API Media Codec ab Jelly Bean verfügbar ist, habe ich ihn zum Kodieren und Dekodieren verwendet und es funktioniert einwandfrei.Aber meine Anwendung wird ab 2.3 unterstützt.Daher benötige ich eine hardwarebeschleunigte Videodekodierung für H.264-Frames mit 720p und 30 Bildern pro Sekunde.

Bei der Recherche bin ich auf die Idee gestoßen, den OMX-Codec zu verwenden, indem ich das Lampenfieber-Framework modifiziert habe. Ich hatte gelesen, dass der Hardware-Decoder für H.264 ab 2.1 und der Encoder ab 3.0 verfügbar ist.Ich habe viele Artikel und Fragen auf dieser Website durchgesehen und bestätigt, dass ich fortfahren kann.

Ich hatte über Lampenfieber-Architektur gelesen hier -Architektur Und Hier – Lampenfieber, wie es funktioniert

Und ich habe über den OMX-Codec gelesen Hier-verwende-Android-Hardware-Decoder-mit-OMXCodec-in-NDK.

Ich habe Startschwierigkeiten und einige Verwirrungen bei der Implementierung. Ich hätte gerne ein paar Informationen dazu.

  1. Um den OMX-Codec in meinem Code zu verwenden, sollte ich mein Projekt mit dem gesamten Android-Quellbaum erstellen oder kann ich dies tun, indem ich einige Dateien aus der AOSP-Quelle hinzufüge (wenn ja, welche alle).
  2. Welche Schritte sollte ich von Grund auf befolgen, um dies zu erreichen?

Kann mir jemand dazu eine Richtlinie geben?

Danke...

War es hilfreich?

Lösung

Das beste Beispiel, um die Integration von zu beschreiben OMXCodec In der nativen Ebene befindet sich das Befehlszeilendienstprogramm stagefright wie man beobachten kann Hier In GingerBread selbst.Dieses Beispiel zeigt, wie a OMXCodec geschaffen.

Einige Punkte, die Sie beachten sollten:

  1. Die Eingabe zu OMXCodec sollte als modelliert werden MediaSource Daher sollten Sie sicherstellen, dass Ihre Anwendung diese Anforderung erfüllt.Ein Beispiel für die Erstellung eines MediaSource Die entsprechende Quelle finden Sie in record Dienstprogrammdatei als DummySource.

  2. Der Eingang zum Decoder, d.h. MediaSource sollte die Daten über die bereitstellen read Methode und daher sollte Ihre Anwendung für jeden einzelne Frames bereitstellen read Anruf.

  3. Der Decoder könnte mit erstellt werden NativeWindow für die Ausgabepufferzuordnung.Wenn Sie in diesem Fall von der CPU aus auf den Puffer zugreifen möchten, sollten Sie sich wahrscheinlich an wenden diese Abfrage für mehr Details.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top