Also auf meiner Kiste läuft das Programm problemlos. Das einzige "Ruckeln" zeigt sich wie erwartet beim rückwärts Abspielen. Aber hier hat auch VirtualDUB Probleme. Das liegt meines Erachtens nur an der Art und Weise, wie AVIs kodiert sind: Ein vollständiger Frame wird gefolgt von einem Haufen Differenzframes. Angenommen, Dein Programm ist bei Frame 100, soll nun Frame 99 anzeigen, aber das ist nur ein Differenz-Bildchen relativ zu Bild 80, dann muß AviSynth alle Bilder ab Frame 80 bis zu Frame 99 dekodieren. Für Bild 98 gehts dann wieder los: Dekodiere alles von Bild 80 bis 98 und so weiter. Geht jetzt zwar marginal schneller, aber Echtzeit ist das nicht. Da hilft dann nur ein Cache
.
Das ist natürlich nur eine Theorie, paßt aber zu meinen Beobachtungen beim Rückwärtslaufenlassen: Großer Ruckler, nicht mehr ganz so großer Ruckler, etwas kleinerer Ruckler...... kleiner Ruckler, kein Ruckler, wieder großer Ruckler...
Seltsam ist allerdings, daß ich auch nur auf knapp 22fps komme, aber die CPU Last noch lang nicht bei 100% angekommen ist.
(15min rumprobieren....)
Aha, AVISynth liefert das Video in der vorgegebenen FrameRate von 25Hz. Und mit dem Timer wird man halt gelegentlich mal den Einsatz versäumen (?).
Habe mal eben aus einem bestehenden AVI mittels VirtualDUB 1400 Frames als neues AVI exportiert mit einer Framerate von 50Hz statt 25Hz, und siehe da: Wenn ich in Deinem Programm auf den Timer verzichte und statt dessen im "OnIdle" Event das nächste Bild sauge (also so schnell wie möglich), habe ich plötzlich 100fps (frag mich jetzt bitte keiner, warum nicht 50Hz, ich blick hier nicht mehr durch).
Irgendwie müßte man AVISynth das eigene Timing abgewöhnen können. In der Hilfe hab ich nur ConvertFPS, ChangeFPS und AssumeFPS gefunden, aber das hat nix bewirkt.
Grüße
Michael