QuoteDisplay MoreOriginal von DaOptika
Ich hab den Thread gelesen - aber hatte bisher den Eindruck, dass das laggen eher was mit der Leistung des Systems zu tun hat.
Ich benutze beim Mediaplayer Classic das Screencapture-Verfahren und hab selbst bei 50 FPS in AtmoWin nichtmal 50% CPU Auslastung, und da läuft es Performance-mäßig ja auch absolut klasse. Da hab ich keinerlei laggen oder sonstwas! Mit allen Kanälen ausser den Kanälen rechts bin ich ja auch absolut happy, also versteh ich nicht so ganz warum das Screencapturing bei ausreichen Performance ein Problem darstellen sollte. Vor allem macht dann auch Aero und DXVA keine Probleme.
Umso merkwürdiger find ich es ja, dass der normale Mediaplayer so laggt. Selbst wenn das "Capturen" des Screens lange dauert, sollte das sich ja nicht auf die Wiedergabe des Videos auswirken, es sollte aber nen deutlichen Anstieg der CPU-Last von AtmoWin auslösen (die sich dann sehr wohl auf die Videowiedergabe auswirken könnte). Was aber nicht der Fall ist...
Im Bezug dazu auch:
Verwirrt mich halt etwas das Ganze
Das hört sich ganz danach an als würdest du im MPC den AtmoDS Filter benutzen. Der stellt Atmowin automatisch um, sodass eben nicht mehr über screencapture gearbeitet wird. Das sieht man aber in AtmoWin nicht.
Das Problem mit dem Filter ist, das er mit HD Material nicht so richtig funktioniert. Habe mir den Mal in einer Debug Variante kompiliert und die gegrabbten Frames anzeigen lassen. Da ist ein Versatz in den Bildern drin, wodurch die Berechnung für die rechte Hälfte falsch ist. Ausserdem "verliert" man die HW-Beschleunigung der Grafikkarte, wenn man den Filter benutzt, da dieser die Frames noch im komprimierten Zustand bekommt. Das dekomprimieren von H.264 usw. findet letzendlich erst später im DS Graphen statt....
Das könnte ich jetzt noch ewig weiter führen.
Fakt ist:
- das Screencapture Verfahren, dass AtmoWin benutzt (BitBlt) ist arg langsam und belastet die CPU (ist Microsoft bedingt)
- der Filter funktioniert nicht richtig bei HD content und man hat keine HW-Beschleunigung durch die GraKa
- DirectX Methoden über den BackBuffer funktionieren zwar etwas schneller, liefern aber oft korrupte Frames
FAZIT:
Die einzige Möglichkeit, performant das AtmoWin anzusteuern ist, dies in die jeweilige Anwendung zu implementieren und zwar dort, wo der Frame bereits dekodiert vorliegt. Diesen dann am Besten noch im Speicher der GPU zu resizen und über das COM-Interface an AtmoWin zu schicken.
Das klingt jetzt zwar doof - ist es aber auch
Es gibt leider keinen anderen Weg. Habe mich jetzt 2 Wochen damit rumgeschlagen. Das ist leider von Microsoft so "verbrochen" worden. Die haben halt bei der Windowsentwicklung einfach nicht an Atmolight gedacht