Frage

Ich arbeite an einem System, das ein komprimiertes Video an einen Client von 3D-Grafiken sendet, der auf dem Server erfolgt, sobald sie gerendert werden. Ich habe bereits den Code arbeitet, aber ich glaube, es könnte viel schneller sein (und es ist bereits ein Engpass im System)

hier mache ich:

Zuerst greife ich den Rahmenbeller

generasacodicetagpre.

Dann drehe ich den Rahmenbeller, denn es gibt einen seltsamen Fehler mit SWSSCALE (den ich für die ColorPace-Konvertierung verwende), die das Bild vertikal eindringt, wenn ich konvertierte. Ich schlüpfe im Voraus, nichts Fancy.

generasacodicetagpre.

Ich konvertiere es dann in YUV420P

generasacodicetagpre.

Dann rufe ich nur den x264-Encoder an. Ich benutze bereits die Presolatcy-Voreinstellung.

generasacodicetagpre.

Meine Vermutung ist, dass es eine schnellere Art sein sollte, dies zu tun. Erfassen des Rahmens und die Umwandlung in YUV420P. Es wäre schön, es in YUV420P in die GPU umzuwandeln, und erst nachdem er es in den Systemspeicher kopiert hat, und hoffentlich gibt es einen Weg, um die Farbumwandlung zu erfüllen, ohne dass sich die Notwendigkeit umdrehen muss.

Wenn es keinen besseren Weg gibt, kann es zumindest diese Frage helfen, jemandem zu versuchen, dies zu tun, um es genauso zu tun, wie ich es getan habe.

War es hilfreich?

Lösung

Zunächst verwenden Async-Textur mithilfe von PBOs. There ist Beispiel Es beschleunigt UPSDie Lesen, die mit 2 PBOs verwenden, die asynchron funktionieren, ohne die Pipeline wie Readpixel zu stecken, wenn Sie direkt verwendet werden. In meiner App habe ich 80% Performance-Boost, wenn er auf PBOs umgeschaltet wurde. Zusätzlich funktioniert auf einigen GPUs glgetteximage () schneller als Glreadpixel (), also probieren Sie es aus.

Wenn Sie jedoch wirklich die Video-Kodierung auf die nächste Ebene nehmen möchten, können Sie es über CUDA mit NVIDIA-Codec-Bibliothek .i hat kürzlich dieselbe Frage gestellt, so Dieses kann hilfreich sein.

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