So beschleunigen Sie den OpenH264-Decoder

8

Geschichte

Ich arbeite an einer glatten 60 FPS 1080p (Full HD) Videotransfer-Anwendung, die in x264 codiert, sendet die codierten Daten per LAN an ein Empfangsgerät, das sie dann mit dem OpenH264-Decoder dekodiert. Ich habe es geschafft, es funktioniert, und es funktioniert gut und ist stabil, aber ich fand es sehr langsam (um 20 FPS im Gegensatz zu den gewünschten 60 FPS).

Problem

Ich habe umfangreiche Tests durchgeführt und festgestellt, dass das Problem beim OpenH264-Decoder liegt.

Der Decoder nutzt einen vollen Kern (25% CPU-Auslastung) meines i5-2500 @ 3.9Ghz, was viel zu hoch ist. Obwohl der Decoder single-threaded ist, habe ich die Rohdaten auf einem Media Player Classic getestet, und seine Wiedergabe (bei 60 FPS) ergab nur 0,3% CPU-Auslastung. (Beim Wechsel der Render-Engine auf 'Old Video Render' stieg die CPU-Auslastung auf 12,8-14,4% - siehe Kommentare)

Meine Frage ist also: Welche Optimierungen kann ich machen, um den Entschlüsselungsprozess zu beschleunigen und was mache ich falsch? Ich kann mir unmöglich vorstellen, dass OpenH264 nur so langsam ist.

Zusatzinfo

  • Der Encoder kann problemlos 60 FPS 1080p mit etwa 20% CPU-Leistung ausgeben.
  • Die Verbindung ist kabelgebundenes LAN und kann & gt; 10MB / s, also kein Problem.
  • Sowohl der Sender- als auch der Empfänger-PC haben 8 GB RAM.

Code

Nachfolgend finden Sie den C ++ - Code für den Decoder:

%Vor%     
Roland 02.09.2016, 20:38
quelle

1 Antwort

1

Ein relativ unoptimierter CPU-basierter H.264-Decoder kann so langsam sein. Wenn Sie auf einem PC sind und einen Hardware-H.264-Decoder haben, können Sie ihn auch verwenden.

Ich würde versuchen: Ссылка

    
Markus Schumann 08.11.2016, 23:43
quelle