Das Ziel von ffdshows Warteschlangenfunktion ist es Bildsprünge und Videoverzögerung zu reduzieren. Es ist effizient, wenn die Prozessorauslastung hoch ist und ffdshow einige Bilder/sek verliert oder hinterherhinkt. Da der Videorenderer in einem anderen Thread ausgeführt wird, ist der Effekt größer, wenn Sie einen Pentium 4 HT oder einen Dual-Core-Prozessor besitzen. Es wurde bestätigt, dass sie mit Media Player Classics VMR7- und VMR9-Modus (jeweils den Renderless-Modus eingeschlossen) funktioniert. Da dies eine erweiterte Funktion ist, werden Sie vielleicht etwas rumprobieren müssen.
Diese Option aktiviert ffdshows Warteschlangenfunktion. Sie zu deaktivieren, beeinflusst die weiter unten auf dieser Seite verfügbaren Funktionen nicht.
Die Warteschlange ist standardmäßig deaktiviert, da es außerhalb des Media Player Classic Stabilitätsprobleme gibt.
Wollen Sie sie in einer anderen Anwendung ausprobieren, deaktivieren Sie die Option oder fügen Sie den Namen der ausführbaren Datei der Videoanwendungen in das Feld ein. Trennen Sie zwei Namen durch Semikoli.
Diese Option aktiviert die Warteschlangenfunktion, wenn der VMR9-Videorenderer und YV12-Farbraum verwendet werden.
Bitte beachten Sie: Mit einigen Intel On-board-Videochips, funktioniert die Warteschlange nicht im VMR9-YV12-Modus.
ffdshow bekommt Bilder vom vorgeschalteten Filter (meistens dem Splitter), verarbeitet sie und schreibt sie in den Zwischenspeicher, der ihm vom nachfolgenden Filter zugewiesen wurde.
Falls die Warteschlange deaktiviert ist, hat der Videorenderer nur einen Zwischenspeicher.
Selbst wenn ffdshow früher fertig ist, muss es warten, weil der Zwischenspeicher solange belegt ist, bis der Videorenderer das Bild zur vom Zeitstempel angegeben Zeit dargestellt.
Der Prozessor verschwendet derweil Zeit ohne zu arbeiten. Hier schreitet die Warteschlange ein:
Falls die Warteschlange aktiviert ist, hat der nachfolgende Filter mehrere Zwischenspeicher.
Nachdem ffdshow fertig ist, bekommt es sofort einen Zwischenspeicher zugewiesen, schreibt in ihn und stellt ihn in die Warteschlange.
Dann beginnt es ohne zu warten und wertvolle Prozessorzeit zu verschwenden das nächste Bild zu verarbeiten.
Hierdurch kann sich ffdshow aus einer Zwickmühle befreien, indem es Zwischenspeicher aus der Warteschlange sendet, wenn es mehrere komplexe Bilder erhalten hat.
Es ist so als würde man sich aus einer Notlage befreien, indem man von seinem Gesparten zehrt.
Ein Beispiel sollte das Ganze klarer machen:
In einem 30fps-Film muss jedes Bild innerhalb von 33ms verarbeitet werden.
Angenommen die Zeiten um zehn aufeinanderfolgende Bilder zu verarbeiten seien 20, 20, 20, 20, 20, 20, 50, 50, 50, bzw. 50ms.
Die ersten sechs Bilder werden problemlos dargestellt. Die komplette Verarbeitungszeit beträgt also (20ms + 13ms) * 6 = 198ms.
Ist die Warteschlange deaktiviert, tut ffdshow nach jedem der ersten sechs Bilder 13ms (33ms - 20ms) lang nichts. Das siebte Bild wird entweder verworfen oder verspätet dargestellt.
Mit aktivierter Warteschlange verarbeitet ffdshow die ersten sechs bilder hingegen in in 20ms * 6 = 120ms und kann sofort mit der Arbeit an den folgenden komplexeren Bildern beginnen.
So kann es alle Bilder rechtzeitig liefern.
Im richtigen Programm wird ein Thread benötigt, um die Zwischenspeicher aus der Warteschlange zum Videorenderer zu senden.
Dieser Thread ist für VMR7 in ffdshow und für VMR9 im Videorenderer implementiert.
Der Hauptteil des Videorenderers wird in diesem Thread ausgeführt, welcher sich von ffdshows Hauptthread unterscheidet.
Da es schwierig ist den Effekt empirisch einzuschätzen, ist es am besten seinen Augen und Ohren zu trauen. Suchen Sie nach Bildsprüngen und/oder Verzögerung.
Wenn Sie sich nicht sicher sind, kann es helfen die OSD-Elemente "Bilder in Warteschlange" und "Videoverzögerung" zu aktivieren.
Vergessen Sie aber nicht, dass OSD auch Prozessorzeit benötigt.
Die Warteschlange wurde nicht entworfen, um mehrere Kerne gleichmäßig zu verwenden. Sie werden die CPU-Graphen Ihres Systemmonitors nicht ausgeglichen sehen.
Ein Benchmark der Warteschlange mit timeCodec.exe hilft ebenso wenig, da es die Wartezeit, die oben beschrieben wurde, überspringt.
Die Anzahl der Zwischenspeicher kann in der Registry im queueCount Schlüssel eingestellt werden. Er kann gefunden werden unter:
HKEY_CURRENT_USER\Software\GNU\ffdshow\default
Falls Sie Voreinstellungen verwenden, ersetzen Sie default durch den Voreinstellungsnamen. Standardwert ist 10. Durch Erhöhung des Werts wird der Effekt erhöht. Falls Ihre Wiedergabe unter sporadischen Bildsprüngen und/oder Verzögerungen leidet, ist 10 ein guter Startwert, aber wenn Sie eine ganze Szene mit hoher Bitrate abdecken wollen, wird 50 benötigt. Da dies Videospeicher belegt, können zu hohe Werte die Grafikkarte instabil werden lassen. Für eine Grafikkarte mit 256MB Speicher ist 50 das Maximum, wenn Sie HD-Videos abspielen wollen.
Abhängig von der Grafikkarte, dem Grafiktreiber und den Anwendungseinstellungen, kann die Warteschlange Schwierigkeiten verursachen.
Kompatibilitätsprobleme mit einigen ATI-Grafikkarten der X1300- oder X1600-Serie wurden berichtet.
Mit Nvidia-Grafikkarten gibt es keine bekannten Probleme.
Da es zu schwierig ist individuelle Probleme zu bearbeiten, deaktivieren Sie die Warteschlange bitte, wenn Sie Probleme haben.