Aktuelle Zeit: 18.11.2018 02:33

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 22.06.2018 10:15 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Hoto hat geschrieben:
Bisherige Lösungsansätze

1. dem Speicherbereich einen BMP Header voran stellen, so dass das Bild direkt mit CatchImage() geladen und mit ResizeImage() verkleinert werden kann.

Vergiss das. Viel zu langsam.
Zitat:
2. die Bilddaten direkt in den Speicherbereich eines PB Images speichern. Ob das aber besser oder gar schnell ist ohne die Daten erst umordnen zu müssen damit die Subpixel Reihenfolge passt?

3. die Daten direkt auszulesen und per Formeln verkleinern, ist da ein ResizeImage() aber nicht eindeutig schneller?

Alles, was mit 2DDrawing zu tun hat, kannst du hier vergessen.
Zitat:
4. mir noch mal die Desktop Duplication API anzuschauen, ob die Daten nicht zuerst im Grafikkartenspeicher landen und es möglich wäre sie dort zu verkleinern. Eine Grafikkarte kann das nun mal am schnellsten.

Am besten resized du das Bild schon im C++-Code mit der entsprechenden DirectX-API. Es ist ja nicht nur so, dass das Bild allein schon 32 MB hat, es wird ja auch noch mindestens 30 mal pro Sekunde aktualisiert. Da fließen also fast 1 GB/s durch die Leitungen. Damit belastest du dein System schon stark genug. Es soll ja schließlich auch noch andere Dinge tun. Und stetig 1GB/s vom Grafikkartenspeicher in den Arbeitsspeicher zu transferieren kann nicht die Lösung sein. Du musst die Grafikkarte die Arbeit des Verkleinerns machen lassen, nicht die CPU. Und ich fürchte dafür musst du an C++ ran.
Zitat:
Aktuell letzte Gedanken dazu

Mit 1. hatte ich bereits angefangen, bevor mir die restlichen Ideen kamen als ich schon im Halbschlaf war, daher muss ich mich in die Punkte noch einlesen. Vor allem 4. klingt für mich nach der eigentlich besten Lösung, allerdings müsste ich mich dann mit C++ erst mal rumschlagen, das ich gerade so halbwegs lesen kann, aber wenn ich schon mal VS C++ 2013 installiert habe... die MIT Lizenz der DXGCap.dll ließe das jedenfalls zu.

Wie würdet ihr es machen? Hab ich noch eine Methode übersehen?

Ups, ich hätte mal vorher lesen sollen, was du unten schreibst. ;-)

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 18.04.1 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 22.06.2018 13:11 
Offline
Benutzeravatar

Registriert: 01.09.2004 22:51
Naja, Resizeimage im RAW Format, was eigentlich auch langt (muss mal meine Ansprüche reduzieren) schafft das sehr schnell. QueryPerformanceCounter_() spuckt da ~9800 aus, aber wehe ich nutze Smooth... dann sind es gleich ~430300 (~110ms). XD

Aber gut, ich sollte wohl dazu sagen, dass ich einen i7 8700K @4,8Ghz nutze. XD

Da ist wohl eher der Zwischenschritt das kritische, außer ich könnte die Daten direkt in den Image Speicher kopieren.

Aber 4. ist und bleibt die beste Lösung... wenn da C++ nicht wäre... :freak:

Ohne irgendwelche Beispielcodes zusammen frickeln und mit dem Holzhammer oben drauf wird das nichts...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 24.06.2018 13:39 
Offline
Benutzeravatar

Registriert: 11.11.2004 16:13
Wohnort: Magdeburg
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". Mittelwert z.B.: Als LED-Kette habe ich einen WS2801-Strang. LED-Abstand ca. 31 mm. Für meinen 24"-Monitor habe ich dann oben/unten jeweils Platz für 16 LEDs (links und rechts wird aufgefüllt mit vertikaler Kette). Meine Monitor-Auflösung ist 1920*1080; links und rechts etwas weg ergibt horizontal 1600. Wären also (immer für mein Beispiel!) 100 horizontale Pixel pro LED. Für die vertikale Auswertung würde ich dann auch 100 Pixel nehmen. Ich verstehe Ambilight als Erweiterung des Bildschirms; was in der Mitte ist tuts nichts zur Sache. Also aus buf 100*100 Pixel auslesen und den Mittelwert an die entsprechende LED senden. Wobei ich der Meinung bin, das Auslesen jedes (z.B.) 4.Pixels reicht aus.
Das Repeat: ... Until PeekS(*buf) ist natürlich pure Verzweiflung, ist so aber auch erstmal notwendig. Um das wegzukriegen dachte ich "init" (ist auch eine Funktion der Lib) wäre eine Idee; war aber leider wirkungslos. Abhilfe schuf bei mir ein Delay(100) nach "get_output_dimensions(*dxgi_manager,@Width,@Height)". Wird ja nur einmal aufgerufen.
Zur Ansteuerung der WS2801-Kette nutze ich übrigens einen FTDI UM232H; lässt sich mit PB prima programmieren.
Das Ganze muß ich bei Gelegenheit mal ausprobieren...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 24.06.2018 20:20 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
@helle: So hätte ich es auch gemacht.

Mal ne blöde Frage: Kann man mit dieser API jeden Film mitschneiden, auch die mit HDCP-Verschlüsselung? Dann wäre es voll einfach diese geschützten Inhalte einfach zu rippen und ohne DRM-Schutz wieder zu speichern.

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 18.04.1 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 24.06.2018 20:41 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Auch mal ne doofe Frage: Was hat das mit "HDCP-Verschlüsselung" zu tun ?

Nichts! Oder ?

Kopieren - Auf dem selben Gerät ?
(ohne Streaming-Verschlüsselung: Vielleicht!)

Über HDMI/DVI ????

Anbei:
Nur um Bildschirmvideos/Screenshots zu machen finde ich z.B. "ffmpeg "ganz nett.

https://trac.ffmpeg.org/wiki/Capture/Desktop


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 25.06.2018 13:47 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
ccode_new hat geschrieben:
Auch mal ne doofe Frage: Was hat das mit "HDCP-Verschlüsselung" zu tun ?

Ganz einfach. Ich kann zum Beispiel unter Linux mit Amazon Prime keine Videos in FullHD gucken, weil Linux (noch) keine Möglichkeit anbietet den Videostream von der Quelle bis zum Monitor/Fernseher verschlüsselt zu übertragen. Das heißt mit einem einfachen Screencapture kann ich das innerhalb Amazon Video abgespielte Video einfach rippen. Und deswegen darf ich kein FullHD abspielen (was ich übrigens eine Frechheit finde). Unter Windows soll das angeblich nicht gehen, weil der Videostream quasi ab dem Browser heraus geschützt sein soll und erst wieder im Monitor/Fernseher entschlüsselt wird. Somit dürfte die Desktop Duplication API auch nicht funktionieren. Falls doch wäre das ja eine schöne Sicherheitslücke und ich würde mich fragen, warum es die Begrenzung unter Linux überhaupt gibt.

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 18.04.1 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 25.06.2018 19:18 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Zitat:
Ganz einfach. Ich kann zum Beispiel unter Linux mit Amazon Prime keine Videos in FullHD gucken, weil Linux (noch) keine Möglichkeit anbietet den Videostream von der Quelle bis zum Monitor/Fernseher verschlüsselt zu übertragen. Das heißt mit einem einfachen Screencapture kann ich das innerhalb Amazon Video abgespielte Video einfach rippen. Und deswegen darf ich kein FullHD abspielen (was ich übrigens eine Frechheit finde). Unter Windows soll das angeblich nicht gehen, weil der Videostream quasi ab dem Browser heraus geschützt sein soll und erst wieder im Monitor/Fernseher entschlüsselt wird. Somit dürfte die Desktop Duplication API auch nicht funktionieren. Falls doch wäre das ja eine schöne Sicherheitslücke und ich würde mich fragen, warum es die Begrenzung unter Linux überhaupt gibt.


Es gibt wohl keine Sicherheitslücke.
Es gibt ja ein paar Recorderprogramme im Netz, die diese Api nutzen, und dabei die HDCP-Kette nicht umgehen können.

Das Ganze unterstützt: "GPU-Based Content Protection"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 25.06.2018 20:17 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Gut. Das heißt aber im Umkehrschluss, dass Hoto seine RGB-LEDs nicht nutzen kann, wenn er solche Inhalte abspielen will. Das heißt kopiergeschützte Blu-Rays und Netflix- bzw. Amazon Prime-Filme werden damit nicht funktionieren.

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Neje DK - 1 Watt Laser Engraver
Ubuntu Gnome 18.04.1 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 25.06.2018 20:36 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
@Nic

Genau! Das dürfte wohl der Stand der Dinge sein.

Anbei: Wer anderweitiges Wissen hat darf dies gerne einbringen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: DXGI Desktop Duplication API (DX11 Win8+) Hilfe gesucht
BeitragVerfasst: 26.06.2018 01:02 
Offline
Benutzeravatar

Registriert: 01.09.2004 22:51
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.

Zitat:
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.

Zitat:
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.

Zitat:
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


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 24 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 6 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye