Richtiger RemoteDesktop Programmieren

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

klin

Betreff: Richtiger RemoteDesktop Programmieren

BeitragMo, Apr 26, 2010 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,
ich habe mir heute mal so gedanken gemacht wie son RemoteDesktop Programm funktioniert. Zuerst dachte ich immer Pixel für Pixel... Aber als ich dann (Über VNC) mal ein wenig laggen in der verbdindung hatte, merkte ich, dass nur bestimmte bereiche verpixelt sind (oft blöcke). Außerdem müsste es doch schon alleine bei einer 800x600 Auflösung die Leitung zu kochen bringen (480000 bytes o.o)...

Was denk/wisst ihr? Wird in der Tat JEDES Pixel gesendet? Oder ist da ein wenig Rechnerrei und Zauberrei im Programm? Wink

Wenn ich mir das sogar recht überlege, dauern pixmaps (z.B.) sowieso seehhr lange bei Bmax. Könnte RemoteDesktop überhaupt in bmax möglich sein?

THX
MFG
Klin

BladeRunner

Moderator

BeitragMo, Apr 26, 2010 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich behaupte mal dass nur zu Beginn die nötigen Pixeldaten übertragen werden. Danach werden alle Änderungen wohl interpoliert, bzw. nur Änderungen übertragen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Xaymar

ehemals "Cgamer"

BeitragDi, Apr 27, 2010 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
(Vielleicht weiß Wikipedia mehr als ich...)

Ich hatte es so gemacht, einen Teil des Screens des Servers aufzunehmen und diesen dann mit komprimierung und per-pixel format transformierung(unter qualitätsverlust) zu senden.

Ich hatte es in folgende Schritte aufgeteilt:
1. Teilauschnitt aufnehmen
2. Per-Pixel Farbformat transformieren
3. Komprimieren(gzip)
4. Senden

Gibt noch mehr möglichkeiten. Eine mir bekannte ist:
1. Kompletten Bildschirm aufnehmen
2. Transformieren in irgendein Bildformat.(z.b. jpeg)
3. Komprimieren(gzip)
4. Senden
Warbseite

Midimaster

BeitragMi, Apr 28, 2010 8:16
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hatte mal bei sowas eine Delta-Komprimierung eingefügt. Damit wird in einem ersten Schritt der Unterschied zwischen dem alten und neuen Bild festgestellt und dann werden nur die Unterschiede gesendet.

Unter VB und Windows gibt es da einen Grafikkopierbefehl BITBLT, der zwei Sources mit XOR verknüpfen kann. Dadurch bleiben nur die Pixel erhalten, die unterschiedlich sind. Das sollte sich von BMax auch ansprechen lassen.

So eine XOR-Bild besteht fast nur aus 0-ern. Dadurch wird in einer Komprimierung das Bild sehr klein und lässt sich schnell übetragen. Am anderen Ende wird das gesendete Bild mit dem angezeigten Bild wieder mit XOR verknüpft und es entsteht wieder das Original.

Ein anderer Trick war, es in Zeilen-Blöcke aufzuteilen und immer nur eine bestimmte Anzahl Zeilen zu senden. Dadurch wird der Datenstrom gleichmäßiger.

Es genügt ja, wenn der Screen 5x pro Sekunde erneuert wird. Das würde alle 200msec ein Bild bedeuten, Streß auf der Datenleitung. Dazwischen wäre Leere im Datenstrom. Teilst du jetzt das Bild aber in 5 Teile , kannst du alle 40msec 1/5 des Screens senden.

Blöd wird es immer beim Scrollen des fernen Rechners. Hier erkennt mein Verfahren nicht, dass es sich eigentlich um das gleiche Bild handelt, das nur nach oben verschoben wird. Hier wäre ein intelligenteres Verfahren nötig. Ist aber auch bei z.b. RealVNC oder Teamviewer ungelöst!
 

ruby

BeitragMo, Aug 23, 2010 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Ich überlege zurzeit auch, wie sich eine VNC-Lösung programmieren lässt.
Was die Steuerung des Servers angeht, ist das RFB-Protokoll meiner Ansicht nach sehr hilfreich.
Dieses Protokoll umfasst auch ein "Display-Protokoll". Die Spezifikationen sind hier als PDF zu finden.
@Midimaster: Weiterhin fände ich es interessant, wenn Du vielleicht Deine bereits erarbeitete Lösung oder den die Grafikübertragung betreffenden Teil hier einstellen würdest.
Edit: Vielleicht kann sonst noch jemand Informationen zum Thema beitragen. Smile

Vielen Dank schonmal im Vorraus!
Ruby

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group