Autor Beitrag
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: So 25.12.05 15:52 
Hallo,

Ich möchte eine Remote Control - Funktion programmieren. Das heißt, ich habe es schon hinbekommen. Der Bildschirminhalt wird als JPEG-Datei (ca. 100 KB) über den TCP-Client an den TCP-Server gesendet und die Mauskoordinaten werden über die Sockets übertragen. Wenn ich das Bild weglasse, dann kann ich die Maus nahezu in Echtzeit fernsteuern. Wenn nun aber das Bild parallel übertragen wird, dann ist die Netzwerkauslastung bei ca. 50% und die Maus bewegt sich nur stockend da die Koordinaten auch nur stockend übertragen werden. Daher nun meine Frage:

Wie lässt sich die Netzwerkauslastung verringern?

KOLLER

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 26.12.05 00:11 
Erhöhe die Bandbreite oder reduzier die Menge der Daten.
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Mo 26.12.05 11:25 
arbeite mit Threats !

_________________
In the beginning was the word.
And the word was content-type: text/plain.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 26.12.05 11:53 
user profile iconmatze hat folgendes geschrieben:
arbeite mit Threats !

Und dann verdoppelt sich die Bandbreite des Netzwerkes oder werden dann aus 100kb plötzlich 50kb?
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Mo 26.12.05 12:46 
Hallo,

verringere die Bilddatenmenge.
Also einmal Original und dann nur das komprimierte XOR zum Vorgaengerbild.
Bei geringen Aenderungen am Bild, entstehen sehr viele Nullen die sich natuerlich super komprimieren lassen.
itblt mit srcinvert statt srccopy nutzen
Siehe auch www.dsdt.info/tipps/?id=348
Ich weiss aber nicht wie, oft man wieder ein Original schicken muss.
Vielleicht kann man zur Verstetigung des Datenstrom's, einen Bildschirm in N horizontale Streifen(diese liegen speichermaessig hintereinander) aufteilen und jedesmal einen Original Streifen (0..N-1)und das XOR jeweils komprimiert zusammen versenden.
Nach N Bildern beginnt man von vorne.

Gruss Horst
Marco D. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Mo 26.12.05 12:56 
user profile iconHorst_H hat folgendes geschrieben:
Hallo,

verringere die Bilddatenmenge.
Also einmal Original und dann nur das komprimierte XOR zum Vorgaengerbild.
Bei geringen Aenderungen am Bild, entstehen sehr viele Nullen die sich natuerlich super komprimieren lassen.
itblt mit srcinvert statt srccopy nutzen
Siehe auch www.dsdt.info/tipps/?id=348
Ich weiss aber nicht wie, oft man wieder ein Original schicken muss.
Vielleicht kann man zur Verstetigung des Datenstrom's, einen Bildschirm in N horizontale Streifen(diese liegen speichermaessig hintereinander) aufteilen und jedesmal einen Original Streifen (0..N-1)und das XOR jeweils komprimiert zusammen versenden.
Nach N Bildern beginnt man von vorne.

Gruss Horst


Hallo,

was ist itblt?
In Streifen aufteilen wäre ne gute Idee, bloß wie krieg ich mit, ob ich was am Bild verändert und besonders wo?

KOLLER

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Mo 26.12.05 13:42 
Hallo,

Uups -BitBlt- mit der Benutzung in dem angegebenem Link www.dsdt.info/tipps/?id=348
XOR-SRCINVERT erkennt die Unterschiede automatisch. Alles Gleiche wird zu NULL.
Du erzeugst ein Bitmap DesktopKopie, so gross wie der Desktop mit dessen Farbtiefe.
Diese ist dann zu Beginn automatisch mit 0 gefuellt und wird durch XOR zu dem Originalbild.
So erzeugst Du eine die XOR-Kopie vom Desktop.
ausblenden Delphi-Quelltext
1:
2:
with DesktopKopie do
  BitBlt(Canvas.Handle, 00, width, height, Desktop.canvas.handle, 00, SRCINVERT);

und vom Streifen eine echt Kopie (width= DeskTop.Width und Height = Desktop.height div N)
N echter Teiler von Desktop.height( mod N = 0)
ausblenden Delphi-Quelltext
1:
2:
3:
N := ?;
with Streifen do
  BitBlt(Canvas.Handle, 00, width, height, Desktop.canvas.handle, 0, N*heigth, SRCCOPY);


Jetzt beide Bitmaps komprimieren und versenden.
Der Empfaenger dekomprimiert die Bilder.
Desktop mit der XOR Kopie verbinden. Wie oben, einfach Desktop und DesktopKopie tauschen.
Anschliessend den Streifen hineinkopieren.
Nach N Bildern hat man das Original wieder.
Falls man beim Empfaenger auch mit einer Bitmap arbeiten die anschliessend auf den Desktop kopiert wird, hat man sofort ein richtiges Bild, muss aber jeden Desktop einmal komplett mehr pro Aktualisierung kopieren.(Aber das ist im Vergleich zur Netzwerkbandbreite vollkommen egal).

Gruss Horst
P.S.
Du musst schon mitubertragen, welcher Originalstreifen da ankommt, sonst kann das Bild an Memory erinnern :-)
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 26.12.05 14:05 
Wie geht denn so was prinzipiell ? Also die Verbindung ? Bzw. welche Komponenten werden wo benötigt ? Bräuchte sowas allerdings für Telefonleitung und wollte eigentlich eine fertige Lösung einsetzen. Vielleicht gehts ja doch mit vertretbarem Aufwand sowas selber zu machen. Die Anforderungen sind relativ gering. Eigene Kontrolle ist sowieso immer besser. 8) Zum Thema selbst : Meine Vorüberlegungen gehen dahin, möglichst viel lokal zu machen. Also Befehl senden (z.B.ESC-Sequenz) und die entsprechende Form wird geöffnet, ohne sie übertragen zu müssen.

_________________
Gruß
Hansa