AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Surface Stream

Ein Thema von EWeiss · begonnen am 28. Dez 2013 · letzter Beitrag vom 30. Dez 2013
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Surface Stream

  Alt 29. Dez 2013, 21:16
Das ist nett von dir werde es mal testen.

gruss

Geändert von EWeiss (30. Dez 2013 um 00:33 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Surface Stream

  Alt 29. Dez 2013, 21:37
Danke für deine Hilfe

Hmmm... jetzt geht's nach einer kleinen Anpassung der Farbkonvertierung.
Jetzt muss ich mal sehen was da mit meiner Funktion im argen ist.

gruss

Geändert von EWeiss (29. Dez 2013 um 22:14 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Surface Stream

  Alt 30. Dez 2013, 00:25
Zitat:
@Zacherl
Danke nochmal für deine Hilfe die Daten in den MemoryStream zu packen.
Wer es Testen will Bitte schön.

Es wird nichts auf die platte geschaufelt.
das Teil emuliert Ambilight und soll nachher in meiner Lib als Dummy Window arbeiten.

PS: Man sollte schon einen bewegten Desktop haben..
Also Winamp starten Milkdrop im Desktop Modus verwenden und das Teil hier starten.

Ob man da an der Auslastung noch was Kitzeln kann?

gruss

Geändert von EWeiss (11. Jul 2019 um 16:07 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Surface Stream

  Alt 30. Dez 2013, 01:40
Das Problem mit deiner Funktion ist einfach, dass du das Bild als Windows-Bitmap speicherst, aber beim laden davon ausgehst, dass in der Datei die Rohdaten der Quell-Streams stehen. Tun sie aber nicht, da das Bitmap-Format zum einen einen eigenen Header (Meta-Daten vor den eigentlichen Bilddaten) in die Datei bringt, und zudem der Standard nicht alle Pixelformate vorsieht, die ein DX Surface haben könnte, weshalb da im schlimmsten Fall sogar noch konvertiert wird. Der Dateiinhalt hat nachher also potenziell kaum noch etwas mit den ursprünglichen Rohdaten im Surface-Buffer gemein.

Wenn du mittels eines Filestreams die Datei liest, und darin gerne genau die Rohdaten des Surfaces haben willst, musst du diese auch genau so in die Datei schreiben - nicht in ein Windows-Bitmap umgewandelt. Entsprechende Stream-Klassen gibt es in C#, und die arbeiten sehr ähnlich wie in Delphi. Da gibt es also einigen Wiedererkennungswert im Umgang. Praktischerweise ist das was SlimDX da liefert ja schon ein Stream

Edit: Eventuell ließe sich die IPC hier am besten mit einer Bei Google suchenNamed Pipe, statt einer Datei lösen. Erleichtert vor allem das Gehampel mit den Zugriffsmodi wenn 2 Prozesse um sie dauernd konkurrieren, ist aber im Umgang einer Datei nicht unähnlich, und ohne viel Zutun schon sehr "Stream-Freundlich".

Edit2: Ich hatte es bis gerade so verstanden, dass du ein Surface aus einer C#-Anwendung in eine Delphi-Anwendung schaufeln willst. Ich glaube, da habe ich geirrt . Vergiss in diesem Fall mein Edit einfach. Ich war von der Nutzung einer Datei für den Datenaustausch innerhalb ein und des selben Prozesses und dem ganzen geposteten C#-Code ggf. verwirrt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (30. Dez 2013 um 01:51 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Surface Stream

  Alt 30. Dez 2013, 11:35
Zitat:
Ich hatte es bis gerade so verstanden, dass du ein Surface aus einer C#-Anwendung in eine Delphi-Anwendung schaufeln willst.
Ich wollte von vornherein einen Stream für die Rohdaten verwenden.

Zitat:
Ich möchte mein Surface (nein nicht das man kaufen kann) also das von DirectX in einen Stream(TStream) kopieren.
Ich finde nur Möglichkeiten unter SlimDX
Und das ist es wobei Zacherl mir geholfen hat
Ich war etwas konfus das GraphicStream von Ms aus der DX Bibliothek in Delphi nicht zu finden war.
Hab dann nach alternativen gesucht wie DataStream von SlimDX und habe dabei ganz einfach übersehen das
die Stream Function Ansicht genau vor meiner Nase lagen.

Auf die Platte wird nichts mehr gespeichert
Alles in einem MemoryStream..

gruss

Geändert von EWeiss (30. Dez 2013 um 14:00 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Surface Stream

  Alt 30. Dez 2013, 14:01
noch einen Nachtrag..

Zitat:
Das Problem mit deiner Funktion ist einfach, dass du das Bild als Windows-Bitmap speicherst, aber beim laden davon ausgehst, dass in der Datei die Rohdaten der Quell-Streams stehen. Tun sie aber nicht, da das Bitmap-Format zum einen einen eigenen Header (Meta-Daten vor den eigentlichen Bilddaten) in die Datei bringt, und zudem der Standard nicht alle Pixelformate vorsieht, die ein DX Surface haben könnte, weshalb da im schlimmsten Fall sogar noch konvertiert wird. Der Dateiinhalt hat nachher also potenziell kaum noch etwas mit den ursprünglichen Rohdaten im Surface-Buffer gemein.
Das Problem ist eher ein anderes..
Die Farben die nun ermittelt werden muss ich quasi als Quader auf ein Bitmap zeichnen
diese wird dann gestaucht auf eine Größe von 64x48 und anschließend als Bitmap nach AtmoWin geschickt.
Als Bitmap deswegen weil die den Header erwarten!

Code:
BinaryReader reader = new BinaryReader(stream);
 stream.Position = 0; // ensure that what start at the beginning of the stream.
 reader.ReadBytes(14); // skip bitmap file info header
 byte[] bmiInfoHeader = reader.ReadBytes(4 + 4 + 4 + 2 + 2 + 4 + 4 + 4 + 4 + 4 + 4);
 byte[] pixelData = reader.ReadBytes((int)(stream.Length - stream.Position));
 atmoLiveViewCtrl.setPixelData(bmiInfoHeader, pixelData);
Ich war vorher davon ausgegangen das Ursprungs Bild zu verkleinern aber das wäre ja quatsch gewesen deshalb war meine Annahme diese vorher auf die Platte zu schreiben schlichtweg falsch.
Nur die Farbfragmente sind wichtig.
Aber ob ich das Bild dann auch auf die Platte speichern muss wird sich erst noch zeigen.

gruss

Geändert von EWeiss (30. Dez 2013 um 14:19 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: Surface Stream

  Alt 30. Dez 2013, 14:13
Fein, jetzt hab ich den Faden endgültig verloren Aber wenn's nun klappt, macht das ja nichts
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz