Ich suche ein Beispiel für Video-Decodierung auf Raspberry Pi direkt, ohne OpenMAX zu verwenden.Video in Raspberry Pi decodieren, ohne OpenMAX zu verwenden?
Dies erklärt die verschiedenen Schichten von Multimedia-Software:
Es kann eine zusätzliche Schicht, die die „MMAL“ angezeigt wird nicht Schicht in hier, das ist (glaube ich) ein Wrapper Broadcom um OpenMAX . (Wenn nicht, wäre es eine OpenMAX-Alternative, die über dem Kernel-Treiber sitzt) raspivid und raspistill zum Beispiel werden mit MMAL geschrieben.
Ich möchte ein Beispiel für Video-Dekodierungs, wo der Eingang roh H.264 ist, und der Ausgang ist entweder Video im internen Speicher oder Video auf dem Bildschirm. Ich möchte diese mit VCHIQ direkt zu tun, nicht OpenMAX verwenden. (Hauptsächlich aus Leistungs- und Flexibilitätsgründen)
Dieses GitHub-Repository: https://github.com/raspberrypi/userland/ enthält die Quelle für alles oben gezeigte (die orange und grünen Kästchen; Quelle für VCHIQ selbst, OpenMAX IL Implementierung auf VCHIQ, auch OpenGL und EGL Implementierungen, ...). In der Theorie sollte es also genug sein, um anzufangen. Das Problem ist, dass es nicht offensichtlich ist, wie man es benutzt, auch wenn man OpenMAX und Multimedia-Frameworks im Allgemeinen sehr gut kennt.
Zum Beispiel: vchiq_bulk_transmit() scheint die Funktion zu sein, dass man verwenden würde Video an den Decoder zu senden. Aber wie initialisiert man das erste Argument vom Typ VCHIQ_SERVICE_HANDLE_T
? Wohin gehen die Ergebnisse, im Framebuffer oder in einem Ergebnis-Handle, oder ...?
EDIT der Bounty kann entweder durch Bereitstellen eines Arbeitsbeispiels von Videodekodierungs Verwendung vchiq, eine API Lösungsweg gesammelt werden, die die Aufrufsequenz zeigt (obwohl kein Ausführungsbeispiel) oder einen Zeiger auf eine ausreichende Dokumentation zu schreiben. Ein Arbeitsbeispiel wird eine saftige zusätzliche Prämie bekommen :)
Gibt es einen besonderen Grund, OpenMAX nicht zu benutzen? – drahnr
@drahnr: Ich möchte eine API, in der ich meine entschlüsselten Daten sofort bekomme. OpenMAX IL hat eine Reihe von Puffern, es gibt keine besonderen Einschränkungen für die Implementierung einer Implementierung, möglicherweise puffert es mehrere Frames und es gibt keine Möglichkeit, dies in der API zu kontrollieren. Ich habe Implementierungen gesehen, die ziemlich, ziemlich langsam Daten zurückgeben (der Durchsatz ist immer noch hoch, Daten werden nur verzögert). ... Ich nehme an, wenn jemand eine Antwort darauf haben wollte, die zeigt, wie man entschlüsselte Frames mit OpenMAX in weniger als 1/60s einer Sekunde auf RPi zurückbekommt, wäre das auch in Ordnung :) –
Dies ist wahrscheinlich nicht was Sie wollen hören, aber die Implementierung eines H264-Decoders ist sehr schwierig und ich kenne keine einzige Seele, die das kostenlos programmieren würde (selbst wenn Sie eine 500-Mann-Prämie gesetzt hätten). – karlphillip