Ja, die Desktop Duplication API respektiert DRM. Was jetzt aber genau alles deswegen nicht geht, kann ich nicht sagen, da ich nicht weiß wie die anderen Ambilight Software Lösungen ganz genau im Detail arbeiten. Netflix (im Chrome Browser) funktioniert bei denen, Amazon Prime kann ich selbst im Moment nicht ausprobieren, hab gerade kein Prime. Möglich das diese Ambilight Software nicht nur eine Methode dafür nutzen und da die DD API eine Rückmeldung gibt, wenn Kopiergeschützer Inhalt abgespielt wird, kann sie intern ja leicht auf eine andere Methode zurück greifen.
Edit: gerade noch mal Netflix mit meinem Code hier (Plus 10 Sek Delay am Anfang) ausprobiert, nimmt problemlos das Bild auf und sieht mir auch nach HD aus. Unter anderem mal mit Guardian of the Galaxies ausprobiert, der sollte wenn ja definitiv DRM haben.
Edit2: ok, in der Netflix App gehts nicht und ich bilde mir auch ein die Bild Quali wäre besser. Und da geht auch die anderen Software nicht. Soviel also dazu.
Helle hat geschrieben:Warum werden nicht die Daten in buf direkt genutzt? Alpha weg und für RGB einen Mittelwert bilden für die "zuständige Außen-LED".
Weil ich dann gleich die anderen Lösungen nutzen kann. Ich will die Farben eben auf meine Art anders berechnen und dazu brauch ich mehr Bild Daten. Aber ich werde jetzt auch einfach mal nach Alternativen gucken, den C++ Code selbst kriege ich nicht editiert, daran haben ich mir jetzt Stunden die Zähne ausgebissen...
Jemand der mit C++ und DX11 umgehen kann hätte das vermutlich in einer halben Stunde umgesetzt. So einfach Hilfe findet man im Internet aber auch nicht.
Ich hab jetzt einfach mal beim DXGCap Author selbst angefragt ob er so ein Feature einbauen könnte, aber noch keine Antwort erhalten, war auch sein einziges C++ Projekt, seither macht er fast nur noch Rust. Übrigens hat der Author die DLL auch mit dem Ziel für Ambilight programmiert, sieht man leicht an seinen anderen Projekten.
Es wäre aber so oder so gut die Daten noch innerhalb des GPU Speichers zu verringern damit nicht ständig bei jedem Abruf 31 Megabyte vom Grafik in der CPU Speicher geschoben werden müssen.
Das Repeat: ... Until PeekS(*buf) ist natürlich pure Verzweiflung, ist so aber auch erstmal notwendig.
Ja, war es auch, nur eine spontane Idee das auf die Schnelle zum laufen zu kriegen. Mehr als ein Testcode ist das alles wirklich nicht.
Um das wegzukriegen dachte ich "init" (ist auch eine Funktion der Lib) wäre eine Idee; war aber leider wirkungslos.
Mit Init hatte ich auch rumprobiert, scheint wirklich keinerlei Wirkung zu haben.
Abhilfe schuf bei mir ein Delay(100) nach "get_output_dimensions(*dxgi_manager,@Width,@Height)". Wird ja nur einmal aufgerufen.
Sicher, aber dann ist die Fehlerabfrage natürlich draußen.
Darum hab ich mir die Tage aber auch keinen Kopf mehr gemacht, hing nur erfolglos am C++ Code rum, ist auch nicht sehr hilfreich wenn man keinerlei Rückmeldung bekommt, wenn sich dank DLL das PB Programm aufhängt. Ist zwar schön, wenn sich der C++ Code ohne Fehler kompelieren lässt, aber das heißt halt nicht, dass es auch läuft.
Keine Ahnung ob man das irgendwie debuggen kann. Ich hatte gar nicht vor VS C++ zu mehr als zum kompelieren der DLL zu verwenden. XD