Developing H264 Hardware Decoder Android - Stagefright oder OpenMax IL?

Ich entwickle einen H264 H / W-beschleunigten Videodecoder für Android. Bisher bin ich mit einigen Bibliotheken herumgekommenMediaCodec, Stagefright, OpenMax IL, OpenMax AL undFFmpeg. Nach ein bisschen Recherche habe ich festgestellt, dass -

Ich habe einen ... gefundengroße Ressource Stagefright mit FFmpeg verwenden, aber ich kann FFmpeg nicht für seine Lizenz verwenden, es ist ziemlich restriktiv für verteilte Software. (Oder kann FFmpeg von diesem Ansatz verworfen werden?)

Ich kann MediaCodec nicht als Java-API verwenden und muss es über die JNI aus der C ++ - Ebene aufrufen, was relativ langsam ist und mir nicht erlaubt ist.

Ich kann OpenMax AL nicht verwenden, da es nur die Dekodierung des MPEG-2-Transportstroms über eine Pufferwarteschlange unterstützt. Dies schließt die Weitergabe von rohen h264-NALUs oder anderen Medienformaten aus.

etzt sind nur noch Stagefright und OpenMax IL übrig. Ich habe erfahren, dass Stagefright die OpenMax (OMX) -Schnittstelle verwendet. Soll ich also mit Stagefright oder OpenMax IL fahren? Was wird vielversprechender sein?

Auch erfuhr ich, dass der beschleunigte Android-H / W-Decoder herstellerspezifisch ist und jeder Hersteller seine eigenen OMX-Schnittstellen-APIs hat. Ist es wahr? Wenn ja, muss ich eine herstellerspezifische Implementierung für H / W für OpenMax IL schreiben? Was ist mit Lampenfieber? - Ist es hardwareunabhängig oder hardwareabhängig? Wenn mit Stagefright oder OpenMax IL keine Möglichkeit zur Implementierung von H / W-Indenpent besteht, muss ich mindestens Qualcomms Snapdragon, Samsungs Exynos und Tegra-4 unterstützen.

Hinweis, ich muss den H264 Annex B-Stream dekodieren und nach der Dekodierung dekodierte Daten erwarten, die ich an meine Video-Rendering-Pipeline senden werde. Also brauche ich im Grunde nur das Decoder-Modul.

Ich bin wirklich sehr verwirrt. Bitte helfen Sie mir, die richtige Richtung einzuschlagen. Danke im Voraus

BEARBEITE

Meine Software ist für kommerzielle Zwecke bestimmt und der Quellcode ist auch privat. Und ich darf ffmpeg nur vom Client verwenden. :)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage