-
Gebiet der
Technik
-
Ausführungsbeispiele
der vorliegenden Erfindung beziehen sich auf Computersystemnetzwerke.
Genauer gesagt beziehen sich Ausführungsbeispiele der vorliegenden
Erfindung auf ein Mulitmedia-Streaming in einer Netzwerkumgebung.
-
Technischer
Hintergrund
-
Computersystemnetzwerke
liefern einen Zugriff auf lokale Ressourcen (z. B. Softwareanwendungen,
Daten, Webseiten etc. auf einem Server) von einer entfernten Client-Vorrichtung aus.
Anwendungen, wie beispielsweise Virtuell-Netzwerk-Computing (Virtual-Network-Computing),
haben diesen Gedanken weiter ausgedehnt. Bei einem virtuellen Rechennetzwerk
liefern Server nicht nur Softwareanwendungen und Daten, sondern
auch eine Desktop-Umgebung, auf die von Client-Vorrichtungen aus
zugegriffen werden kann und die von denselben aus gesteuert werden
kann. Im Wesentlichen wird einem Benutzer an einer Client-Vorrichtung
eine Anzeige (eine grafische Benutzerschnittstelle oder ein Desktop) präsentiert,
die bei einem Server erzeugt wird und dann zu dem Client übertragen
und an demselben wiedergegeben wird. Folglich kann die Menge an
Zuständen,
die durch den Client beibehalten sind, reduziert werden, was in
etwas resultiert, das als ein „dünner" Client bezeichnet
wird (siehe auch das Dokument WO-A-00/39678). Folglich kann auf
einen einzigen Desktop simultan von mehreren unterschiedlichen Clients
aus zugegriffen werden und derselbe kann simultan von denselben
aus betrachtet werden. Dies ist eventuell besonders nützlich,
wenn eine Gruppe von zusammenwirkenden Engineering-Arbeitsplatzrechnern
implementiert ist.
-
Virtuell-Netzwerk-Rechensysteme
des Stands der Technik verwenden typischerweise Protokolle, wie
beispielsweise das Protokoll Remote Frame Buffer (RFB), um einen
Clientzugriff auf die servererzeugte grafische Benutzerschnittstelle
zu liefern. Das Bild, das an einem Computersystembildschirm angezeigt
werden soll, ist in einem Rahmenpuffer auf dem Server gehalten.
In einem einschränkenden
Fall werden die gesamten Inhalte des Rahmenpuffers regelmäßig für eine Anzeige
zu der Client-Vorrichtung übertragen.
Verbesserungen an dem einschränkenden
Fall umfassen ein Senden lediglich der Veränderungen zu dem Rahmenpuffer
(und somit zu der Anzeige), die seit der vorhergehenden Übertragung
aufgetreten sind.
-
Typischerweise
beträgt
die Übertragungsrate
zu dem Client etwa 10–15
Rahmen pro Sekunde. Während
diese Rate ziemlich hoch ist, wird dieselbe nicht als hoch genug
betrachtet, um Videodaten oder Multimediadaten (Video- und Audiodaten)
von dem Server zu dem Client zu übertragen.
Folglich sind Systeme des Stands der Technik in dieser Hinsicht begrenzt.
-
Folglich
ist eine zufriedenstellendere Weise eines Übertragens von Video-/Multimediadaten
von Servern zu Clients in einem Virtuell-Netzwerk-Rechensystem erwünscht. Ausführungsbeispiele
der vorliegenden Erfindung liefern eine derartige Verbesserung.
-
Offenbarung
der Erfindung
-
Ausführungsbeispiele
der vorliegenden Erfindung betreffen Verfahren und Systeme zum Übertragen
eines Ereignisses von. einem Server zu einem entfernten Client.
Ein Ereignis wird von einem Treiber empfangen. Das Ereignis wird
in eine Ereigniswarteschlange gemäß dem Ereignistyp abgegeben.
Das Ereignis wird gemäß dem Ereignistyp
verarbeitet. Das Verarbeiten umfasst ein Codieren des Ereignisses,
wenn das Ereignis Multimediadaten aufweist. Das Ereignis wird zu
dem entfernten Client übertragen,
wenn dasselbe ausgelöst
wird. Die Übertragung tritt
gemäß einem
Protokoll auf, das dem Ereignistyp entspricht.
-
Kurze Beschreibung
der Zeichnungen
-
Die
zugehörigen
Zeichnungen, die in diese Beschreibung eingegliedert sind und einen
Teil derselben bilden, stellen Ausführungsbeispiele der Erfindung
dar und dienen zusammen mit der Beschreibung dazu, die Prinzipien
der Erfindung zu erläutern.
-
1 ist
ein Blockdiagramm eines Servers und eines Clients, die in einem
Netzwerk gekoppelt sind, gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung.
-
2 ist
ein Blockdiagramm eines Desktop-Streaming-Servers gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung.
-
3 ist
ein Blockdiagramm einer Treiberschnittstelle gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung.
-
4 ist
ein Blockdiagramm, das eine Differenzierung von Fensteraktualisierungen
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung zeigt.
-
5 ist
ein Blockdiagramm einer Desktop-Streaming-Maschine gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung.
-
6 ist
ein Blockdiagramm eines Desktop-Streaming-Clients gemäß einem Ausführungsbeispiel
der Erfindung.
-
7 ist
ein Flussdiagramm eines Verfahrens zum Übertragen eines Ereignisses
zu einem entfernten Client gemäß einem
Ausführungsbeispiel der
Erfindung.
-
Die
Zeichnungen, auf die in dieser Beschreibung Bezug genommen wird,
sind nicht als maßstabsgetreu
gezeichnet zu verstehen, außer
es ist spezifisch angegeben.
-
Bester Modus
zum Ausführen
der Erfindung
-
Nun
wird detailliert Bezug auf verschiedene Ausführungsbeispiele der Erfindung
genommen, von denen Beispiele in den zugehörigen Zeichnungen dargestellt
sind. Während
die Erfindung in Verbindung mit diesen Ausführungsbeispielen beschrieben wird,
ist klar, dass dieselben die Erfindung nicht auf diese Ausführungsbeispiele
begrenzen sollen. Bei der folgenden Beschreibung der vorliegenden
Erfindung sind ferner zahlreiche spezifische Details dargelegt,
um ein gründliches
Verständnis
der vorliegenden Erfindung zu liefern. In anderen Fällen wurden gut
bekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht
detailliert beschrieben, um Aspekte der vorliegenden Erfindung nicht
unnötig
zu verschleiern.
-
1 ist
ein Blockdiagramm eines Servers 101 und eines Clients 102,
die in einem Netzwerk 100 gekoppelt sind, gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Es ist ersichtlich, dass das Netzwerk 100 andere
Elemente als diese umfassen kann, die gezeigt sind. Das Netzwerk 100 kann
ferner mehr als eines der verschiedenen gezeigten Elemente umfassen;
es kann beispielsweise mehrere Clients geben, die mit dem Server 101 gekoppelt
sind, und es kann mehrere Server geben. Die Funktionalität des Servers 101 und
des Clients 102 ist unten erörtert (siehe zumindest 2 und 6); es
ist jedoch ersichtlich, dass diese Ele mente eine andere Funktionalität als diese
implementieren können,
die erörtert
ist.
-
Eine
Kommunikation kann direkt zwischen dem Server 101 und dem
Client 102 in 1 oder indirekt durch eine Zwischenvorrichtung
oder einen Knoten (nicht gezeigt) auftreten. Ferner kann eine Kommunikation
drahtgebunden oder drahtlos oder eine Kombination von drahtgebunden
und drahtlos sein. Bei einem Ausführungsbeispiel tritt eine Kommunikation über das
World-Wide-Web (oder Internet) auf.
-
Bei
einem Ausführungsbeispiel
sind der Server 101 und der Client 102 Computersysteme,
die eine Verarbeitungsfähigkeit
und eine Speicherkapazität
liefern. Gemäß den Ausführungsbeispielen
der vorliegenden Erfindung implementiert der Server 101 zusätzlich einen
Desktop-Streaming-Server 110 und implementiert der Client 102 einen
Desktop-Streaming-Client 120.
Bei diesem Ausführungsbeispiel
ermöglichen
der Desktop-Streaming-Server 110 und der Desktop-Streaming-Client 120,
dass der Server 101 eine Anzeige (z. B. eine grafische
Benutzerschnittstelle und insbesondere eine (Desktop-Anzeige) dem
Client 102 zuführt.
Wie es zu sehen ist, sind sowohl eine serverseitige Steuerung als
auch eine clientseitige Steuerung entweder gleichzeitig oder ausschließlich zugelassen.
-
Gemäß den Ausführungsbeispielen
der vorliegenden Erfindung werden „Ereignisse" von dem Server 101 zu
dem Client 102 und umgekehrt unter Verwendung des Desktop-Streaming-Servers 110 bzw.
des Desktop-Streaming-Clients 120 übertragen. Wie hierin verwendet,
ist ein Ereignis im Allgemeinen eine Ausgabe eines Softwaretreibers,
wie beispielsweise eines Tastaturtreibers, eines Maustreibers, eines
Videotreibers oder eines Audiotreibers. Somit umfassen Ereignisse
erfassbare Handlungen oder Auftretensfälle, wie beispielsweise ein
Klicken einer Maustaste oder ein Drücken einer Taste an einer Tastatur.
Ereignisse können
sich ferner auf Handlungen oder Auftretensfälle beziehen, die bewirken
können, dass
eine Veränderung
bei der Anzeige (grafischen Benutzerschnittstelle) durch den Client 102 angezeigt
wird. Zum Beispiel kann eine Veränderung
bei der Anzeige, die durch ein Scrollen durch ein Textdokument (Textverarbeitungsdokument)
oder durch ein Wechseln von einer Seite zu einer anderen Seite in dem
Dokument bewirkt wird, ein Ereignis bilden. Eine Bewegung eines
Fensters in der Anzeige kann ebenfalls ein Ereignis bilden. Eine
sich bewegende Videoanzeige kann ebenfalls ein Ereignis bilden.
Ein Audioabtastwert kann ebenfalls ein Ereignis bilden.
-
Wie
hierin verwendet, ist zusammenfassend gesagt ein Ereignis eine Ausgabe
eines Treibers, der entweder bei dem Server 101 oder dem
Client 102 verwendet wird; ein Ereignis kann eine Veränderung bei
der Anzeige an entweder dem Server 101 oder dem Client 102 bewirken
und/oder kann eine Audioausgabe an dem Client 102 bewirken.
Ereignisse können
allgemein kategorisiert sein als: Steuerereignisse und Datenereignisse.
Steuerereignisse tragen Steuerinformationen, um die Ausführungsverhaltensweisen
anderer Komponenten lokal oder entfernt zu verändern. Datenereignisse tragen
Inhaltsdaten, um andere Komponenten über Inhaltsveränderungen
zu informieren.
-
Der
Einfachheit einer Erörterung
halber wird hierin der Begriff „Maus" verwendet; es ist jedoch klar, dass
andere Einrichtungen einer Cursorsteuerung anstelle von oder in
Kombination mit einer Maus verwendet werden können. Es gibt eine Unzahl von Cursorsteuermechanismen,
die auf dem Gebiet bekannt sind, und jeder von diesen kann gemäß der vorliegenden
Erfindung verwendet werden. Der Begriff „Tastatur" wird ebenfalls hierin verwendet. Wiederum
gibt es eine Unzahl von Mechanismen, die auf dem Gebiet bekannt
sind und die Funktionalität
einer Tastatur liefern, einschließlich Spracherkennungssystemen,
und jeder von diesen kann gemäß der vorliegenden
Erfindung verwendet werden. Obwohl somit Ausführungsbeispiele der vorliegenden
Erfindung für
eine Maus und eine Tastatur beschrieben sind, ist die vorliegen de
Erfindung nicht so begrenzt. Anstelle dessen sollte das Augenmerk
auf dem Begriff „Ereignis" und darauf, wie
dieser Begriff hierin verwendet wird, liegen, wie es oben beschrieben
ist. In diesem Zusammenhang sind Tastatur- und Mausereignisse einfach
Beispiele von Ereignissen, während
die Ausführungsbeispiele
der vorliegenden Erfindung für eine
Verwendung bei praktisch allen Typen von Ereignissen gut geeignet
sind.
-
Bei
einem Ausführungsbeispiel
werden auf der Serverseite die Ereignisse, die von den Treibern empfangen
werden, in Ereigniswarteschlangen gemäß dem Ereignistyp abgegeben.
Die Ereignisse werden dann gemäß dem Ereignistyp
derselben verarbeitet; z. B. kann ein Multimedia-Ereignis codiert werden.
Die Ereignisse werden dann von dem Server 101 zu dem Client 102 gemäß einem
Protokoll übertragen,
das dem Ereignistyp entspricht. Bei einem Ausführungsbeispiel werden Ereignisse
von Tastatur- und Maustreibern zu dem Client 102 unter
Verwendung eines Protokolls wie dem Transmission Control Protocol
(TCP) übertragen,
während
Ereignisse von Video- und Audiotreibern zu dem Client 102 unter
Verwendung eines Protokolls wie dem Real Time Protocol (RTP) übertragen
werden. Diese Prozesse sind in Verbindung mit 2 unten
detaillierter beschrieben.
-
TCP
und RTP sind auf dem Gebiet bekannt. TCP liefert ein höchst zuverlässiges Protokoll,
während
RTP die Zeitsteuerfähigkeit
liefert, die zum Synchronisieren der Video- und Audioabschnitte
eines Multimediadatenobjekts nützlich
ist. Somit kann TCP verwendet werden, um Steuerereignisse (z. B.
Tastatur- und Mausereignisse) sowie andere Ereignisse hoher Genauigkeit
genau zu übertragen,
wie beispielsweise Veränderungen
bei Graphikanwendungen, und kann RTP für Streaming-Rahmenpuffer-(Videopuffer-)
und Tonpufferaktualisierungen verwendet werden. Andere Protokolle,
die diese oder ähnliche Fähigkeiten
liefern können,
können
anstelle dessen verwendet werden.
-
Auf
der Clientseite werden bei einem Ausführungsbeispiel Ereignisse von
Tastatur- und Maustreibern empfangen und unter Verwendung des Protokolls
wie TCP zu dem Server 101 von 1 übertragen.
Dieser Prozess ist in Verbindung mit 6 unten
weiter beschrieben. Bei dem vorliegenden Ausführungsbeispiel lässt die
Beziehung zwischen dem Server 101 und dem Client 102 den
Client keine Ereignisse von Audio- und Videotreibern zu dem Server senden;
die vorliegende Erfindung ist jedoch nicht so begrenzt.
-
2 ist
ein Blockdiagramm eines Desktop-Streaming-Servers 110 gemäß einem
Ausführungsbeispiel
der Erfindung. Der Desktop-Streaming-Server 110 ist in
dem Server 101 von 1 als eine
Hardware, eine Software, eine Firmware oder eine Kombination derselben
implementiert. Wie es durch 2 dargestellt
ist, umfasst der Desktop-Streaming-Server 110 eine Anzahl
von Elementen, die der Klarheit der Darstellung und Erörterung halber
getrennt wiedergegeben sind; es ist jedoch klar, dass diese Elemente
innerhalb des Desktop-Streaming-Servers 110 eventuell
nicht als getrennte Entitäten
existieren. Gemäß den verschiedenen
Ausführungsbeispielen
der vorliegenden Erfindung liefert der Desktop-Streaming-Server 110 im Allgemeinen
die Fähigkeit
und Funktionalität,
die durch die verschiedenen Elemente von 2 geliefert
werden. Zusätzlich
kann der Desktop-Streaming-Server 110 andere
Fähigkeiten
und Funktionalitäten
zusätzlich
zu diesen liefern, die hierin beschrieben sind.
-
Bei
dem vorliegenden Ausführungsbeispiel empfängt eine
Treiberschnittstelle 210 Eingaben (Ereignisse) von einer
Anzahl von Treibern, wie beispielsweise einem Tastaturtreiber 201,
einem Maustreiber 202, einem Videotreiber 203 und/oder
einem Audiotreiber 204, aber nicht begrenzt darauf. Zusätzlich zu
einem Abfangen herkömmlicherer
Ereignisse, wie beispielsweise Fensteränderungen, einer Tastatureingabe
und einer Cursorbewegung, tastet somit die Treiber schnittstelle 210 auch
Videodaten von dem Videotreiber 203 und Audiodaten von
dem Audiotreiber 204 ab.
-
Im
Allgemeinen sind die Treiber 201–204 Komponenten des
zugrundeliegenden Betriebssystems. Der Tastaturtreiber für eine Windows-Umgebung
beispielsweise kann unterschiedlich zu dem Tastaturtreiber für eine Linux-Umgebung
sein. Gemäß dem vorliegenden
Ausführungsbeispiel
liefert die Treiberschnittstelle 210 die Fähigkeit,
mit den verschiedenen Typen von Treibern zu kommunizieren, während eine
feste Schnittstelle mit den nachgelagerten Abschnitten des Desktop-Streaming-Servers 110 geliefert
ist (z. B. eine feste Schnittstelle mit einem Ereignisfilter 220).
-
3 ist
ein Blockdiagramm einer Treiberschnittstelle 210 gemäß einem
Ausführungsbeispiel der
vorliegenden Erfindung. Bei diesem Ausführungsbeispiel umfasst die
Treiberschnittstelle 210 eine Anzahl von Schnittstellenmodulen,
die durch Schnittstellen 301 und 302 veranschaulicht
sind, so dass es ein Modul gibt, das zum Bilden einer Schnittstelle
mit jedem Treiber geeignet ist. Das heißt nicht, dass es ein Schnittstellenmodul
pro Treiber gibt, obwohl dies der Fall sein kann.
-
Bei
dem vorliegenden Ausführungsbeispiel umfasst
die Treiberschnittstelle 210 ferner eine Anwendungsprogrammschnittstelle
(API = Application Program Interface) 305, die den Schnittstellen 301 und 302 etc.
gemeinsam ist. Die API 305 stellt trotz der Unzahl möglicher
Treiber dem Rest des Desktop-Streaming-Servers 110 eine
einzige Schnittstelle bereit, und isoliert somit den Desktop-Streaming-Server 110 vor
dem zugrundeliegenden Betriebssystem.
-
Unter
erneuter Bezugnahme auf 2 werden bei dem vorliegenden
Ausführungsbeispiel
die Ereignisse von der Treiberschnittstelle 210 zu einem Ereignisfilter 220 geliefert
(durch dasselbe empfangen). Bei diesem Ausführungsbeispiel identifiziert das
Ereignisfilter 220 das Ereignis gemäß einem Ereignistyp und gibt
das Ereignis gemäß dem Ereignistyp
in eine jeweilige Ereigniswarteschlage ab. Die Ereigniswarteschlangen
werden verwendet, um ähnliche
Typen von Ereignissen zu puffern, die unter Verwendung eines Protokolls,
das für
den Ereignistyp geeignet ist (z. B. TCP oder RTP), nach einer Verarbeitung
(falls es eine gibt), die für
den Ereignistyp geeignet ist, zu dem Desktop-Streaming-Client 120 (1) übertragen
werden können.
-
Bei
dem vorliegenden Ausführungsbeispiel kategorisiert
das Ereignisfilter 220 von 2 Ereignisse
in die folgenden Typen: 1) Steuerereignisse, die beispielsweise
durch eine Tastatureingabe oder eine Cursorbewegung (z. B. Mausbewegung)
erzeugt werden; 2) Fensterbewegungsereignisse, die durch Fensterbewegungen
erzeugt werden, bei denen ein Fensterinhalt unverändert ist;
3) Fensteraktualisierungen, die durch eine Veränderung bei einem Fensterinhalt
erzeugt werden; und 4) Audioabtastwerte, die aus einer Veränderung
bei dem Tonpuffer des Audiotreibers 204 aufgenommen werden.
Bei diesem Ausführungsbeispiel
werden Steuerereignisse an die Steuerereigniswarteschlage 231 weitergeleitet;
werden Fensterbewegungen an die Fensterbewegungswarteschlange 232 weitergeleitet;
werden Fensteraktualisierungen an die Fensteraktualisierungswarteschlage 233 weitergeleitet;
und werden Audioabtastwerte an die Audioabtastwertwarteschlange 234 weitergeleitet.
-
Bei
dem vorliegenden Ausführungsbeispiel zeichnen
Steuerereignisse in der Steuerereigniswarteschlange 231 die
Koordinatenveränderungen
der Maus oder des Cursors auf. Bei einer bestimmten Cursorbewegung
werden beispielsweise eventuell lediglich die Start- und Endkoordinaten
der Bewegung zu dem Desktop-Streaming-Client 120 von 1 übertragen.
Steuerereignisse können
ferner durch die Desktop-Streaming-Maschine 250 optimiert werden.
-
Mit
weiterem Bezug auf 2 zeichnet bei dem vorliegenden
Ausführungsbeispiel
die Fensterbewegungswarteschlange 232 die Koordinatenveränderungen
eines Fensters auf, das bewegt wird (ohne dass der Inhalt des Fensters
verändert
wird). In jenen Fällen,
in denen der Fensterinhalt vorhergehend zu dem Desktop-Streaming-Client 120 von 1 übertragen
wurde, werden eventuell lediglich die Veränderungen bei den Koordinaten
des Fensters zu dem Client übertragen.
Der Client kann dann die Desktopanzeige unter Verwendung des vorhergehend
empfangenen Fensterinhalts und der neuen Fensterkoordinaten aufbereiten.
-
Gemäß dem vorliegenden
Ausführungsbeispiel
zeichnet die Fensteraktualisierungswarteschlange 233 von 2 die
Aktualisierungen eines Fensterinhalts auf. Diese Aktualisierungen
können aus
dem Videorahmenpuffer aufgenommen werden. Um eine Auswahl eines
geeigneten Codierers und Übertragungsprotokolls
zu erleichtern, werden bei einem Ausführungsbeispiel Fensteraktualisierungen
in drei Typen kategorisiert: 1) Grafikfensteraktualisierungen; 2)
Videofensteraktualisierungen und 3) andere Fensteraktualisierungen.
Grafik wird hier verwendet, um sich auf relativ statische Bilder
zu beziehen (z. B. Bilder mit relativ niedrigen Aktualisierungsraten
verglichen mit Video); Video bezieht sich auf Bewegtbilder mit einer
relativ hohen Aktualisierungsrate; und andere Fensteraktualisierungen
bezieht sich auf einen relativ statischen Fensterinhalt, wie beispielsweise
den Text in einem Textverarbeitungsdokument. Allgemein gesagt, können die
Fensteraktualisierungen gemäß der Komplexität des Bilds
und der Aktualisierungsfrequenz in Kategorien getrennt werden.
-
4 ist
ein Blockdiagramm, das eine Differenzierung von Fensteraktualisierungen
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung zeigt. Bei diesem Ausführungsbeispiel
filtert ein Fensteraktualisierungsdifferenzierer 410 die
Fenster in die zuvor erwähnten
Kategorien. Der Fensteraktualisierungsdifferenzierer 410 kann
dies unter Verwendung von Informationen wie dem Anzeigeanwendungstyp,
und den Koordinaten und Bildschirmgrößen der Fenster erzielen.
-
Der
Anzeigeanwendungstyp kann von der Treiberschnittstelle 210 (2)
gewonnen werden, wenn beispielsweise ein neues Fenster erzeugt wird, auf
einen Einheitsressourcenlokator (URL = Uniform Resource Locator)
für eine
Website geklickt wird, oder eine Anwendung ausgeführt wird.
Die Koordinaten und Bildschirmgrößen helfen
lokalisieren, welcher Teil einer Aktualisierung an dem Videorahmenpuffer
zu welchem Fenster gehört.
-
Grafikfensteraktualisierungen
werden zu der Grafikfensteraktualisierungswarteschlange 421 weitergeleitet;
Videofensteraktualisierungen werden zu der Videofensteraktualisierungswarteschlange 422 weitergeleitet;
und andere Fensteraktualisierungen werden zu der Andere-Fensteraktualisierungen-Warteschlange 123 weitergeleitet.
-
Unter
erneuter Bezugnahme auf 2 wird bei der vorliegenden
Erfindung die Übertragung
von Ereignissen von jeder der Warteschlangen 231–234 zu
der Desktop-Streaming-Maschine 250 durch
einen jeweiligen Regler 241, 242, 243 bzw. 244 ausgelöst. Auf ähnliche
Weise befinden sich bei dem Ausführungsbeispiel
von 4 die Warteschlangen 421–423 unter
einer Steuerung eines jeweiligen Reglers 431, 432 bzw. 433.
-
Bei
einem Ausführungsbeispiel
lösen die Regler 241–244 von 2 (und
die Regler 431–433 von 4)
Ereignisse von den jeweiligen Warteschlangen derselben basierend
darauf aus (leiten dieselben), dass eine Schwelle erreicht wird
oder ein Zeitintervall vergangen ist. Die Schwelle basiert auf der
Anzahl von Ereignissen in einer jeweiligen Ereigniswarteschlange.
Wenn die Anzahl von Ereignissen in der Warteschlange eine vordefinierte
Schwelle erreicht, kann ein gewisser Teil der Ereignisse oder können alle
Ereignisse aus der Warteschlange übertragen werden. Der Schwellenmechanismus
liefert die Fähigkeit,
einen Stoß (Burst)
von Ereignissen zu handhaben, um zu verhindern, dass die Warteschlange
zu viele Ereignisse ansammelt, bevor die Ereignisse ansprechend
auf ein Zeitablaufsignal übertragen
werden. Die Schwelle kann für
jede der Warteschlangen 231–234 und 421–423 unterschiedlich
sein. Die Schwelle kann ferner durch die Desktop-Streaming-Maschine 250 basierend
auf einem Überwachen
der Kanäle
des Desktop-Streaming-Client 120 (1)
oder basierend auf einer Rückkopplung
von dem Desktop-Streaming-Client 120 verändert werden.
-
Gemäß dem vorliegenden
Ausführungsbeispiel
tritt andernfalls die Übertragung
von Ereignissen aus einer jeweiligen Ereigniswarteschlange auf, nachdem
ein spezifiziertes Zeitintervall vergangen ist. Bei einem Ausführungsbeispiel
können
die Regler 241–244 von 2 und
die Regler 431–433 von 4 somit
einen Zeitgeber umfassen. Das Zeitintervall kann für jede der
Warteschlangen 231–234 (2)
und 421–423 (4)
unterschiedlich sein. Das Zeitintervall kann auch durch die Desktop-Streaming-Maschine 250 (2)
basierend auf einem Überwachen
der Kanäle
zu dem Desktop-Streaming-Client 120 (1)
oder basierend auf einer Rückkopplung
von dem Desktop-Streaming-Client 120 verändert werden.
Dies ist in Verbindung mit 5 und 6 unten
weiter beschrieben.
-
5 ist
ein Blockdiagramm der Desktop-Streaming-Maschine 250 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Wie es durch 5 dargestellt
ist, umfasst die Desktop-Streaming-Maschine 250 eine Anzahl
von Elementen, die der Klarheit einer Darstellung und Erörterung
halber getrennt wiedergegeben sind; es ist jedoch klar, dass diese
Elemente eventuell nicht als getrennte Entitäten innerhalb der Desktop-Streaming-Maschine 250 existieren.
Gemäß den verschiedenen
Ausführungsbeispielen
der vorliegenden Erfindung liefert die Desktop-Streaming-Maschine 250 im
Allgemeinen die Fähigkeit
und Funktionalität,
die durch die verschiedenen Elemente von 5 geliefert
werden. Zusätzlich
kann die Desktop-Streaming-Maschine 250 andere Fähig keiten
und Funktionalitäten
zusätzlich
zu diesen liefern, die hierin beschrieben sind.
-
Bei
dem vorliegenden Ausführungsbeispiel ist
ein Zeitplaner (Scheduler) 510 mit den Reglern 580 (z.
B. den Reglern 241–244 und 431–433 von 2 bzw. 4)
gekoppelt, die wiederum mit den Warteschlangen 590 (z.
B. den Warteschlangen 231–234 und 421–423 von 2 bzw. 4)
gekoppelt sind. Der Zeitplaner 510 ist ferner mit einem
Monitor 530 gekoppelt. Bei einem Ausführungsbeispiel misst der Monitor 530 regelmäßig die
verfügbare Bandbreite
der Kanäle 571, 572 und 573.
Obwohl lediglich drei Kanäle
gezeigt sind, ist ersichtlich, dass es irgendeine andere Anzahl
von Kanälen
als drei geben kann. Bei einem anderen Ausführungsbeispiel sammelt der
Monitor 530 ferner Informationen von dem Desktop-Streaming-Client 120 (1)
hinsichtlich der Arbeitslast des Client sowie der Attribute der Client-Vorrichtung
(z. B. die Anzeigefähigkeiten
der Vorrichtung, beispielsweise Bildschirmgröße und Auflösung, die Verarbeitungsfähigkeiten
der Vorrichtung, wie beispielsweise Prozessorgeschwindigkeit, die
verfügbare
Speicherkapazität
der Vorrichtung, und dergleichen). Basierend auf den Informationen von
dem Monitor 530 kann der Zeitplaner 510 den Auslöser (z.
B. das Zeitintervall, die Schwelle oder einen anderen Mechanismus)
einstellen, der verwendet wird, um die Übertragung von Ereignissen
aus den verschiedenen Ereigniswarteschlangen einzuleiten. Wie es
oben erwähnt
ist, können
für jede
der Warteschlangen unterschiedliche Zeitintervalle, Schwellen oder
dergleichen spezifiziert sein.
-
Der
Zeitplan zum Übertragen
von Ereignissen in der Steuerereigniswarteschlange 231 und
der Fensterbewegungswarteschlange 232 (2)
ist relativ einfach, weil diese Typen von Ereignissen einen geringen
Kommunikationsmehraufwand erfordern und deshalb beinahe, wenn nicht
sogar ganz, unmittelbar übertragen
werden können.
Der Zeitplan zum Übertragen
von Ereignissen aus der Fensteraktualisierungswarteschlange 233 und
der Audioabtastwertwarteschlange 234 kann gemäß den Informationen
von dem Monitor 520 (und auch von dem Monitor 630 des
Clients; siehe 6) angepasst werden, um eine
zufrieden stellende Anzeige bei dem Client 102 (1)
zu liefern.
-
Unter
weiterer Bezugnahme auf 5 und auch mit Bezug auf 2 und 4 leitet
eine Übertragungsmaschine 540 die
Ereignisse aus Ereigniswarteschlangen 590 basierend auf
dem Ereignistyp zu dem geeigneten Kanal weiter. Bei einem Ausführungsbeispiel
können
beispielsweise Ereignisse von der Steuerereigniswarteschlange 231,
der Fensterbewegungswarteschlange 232, der Grafikfensteraktualisierungswarteschlange 421 und
der Andere-Fenster-Aktualisierungen-Warteschlange 423 zu einem
TCP-Kanal weitergeleitet werden, während Ereignisse aus der Audioabtastwertewarteschlange 234 und
der Videofensteraktualisierungswarteschlange 422 zu einem
RTP-Kanal weitergeleitet werden können.
-
Mit
Bezug auf 5 kann bei dem vorliegenden
Ausführungsbeispiel
Video- und/oder Audioinhalt unter Verwendung eines Codierers 550 codiert (komprimiert)
werden. Der Grad einer Codierung ist typischerweise eine Funktion
der Attribute des Clients 102 (1), aber
der Grad einer Codierung kann auch durch die Bandbreite der Verbindung
(des Kanals) zwischen dem Client 102 und dem Server 101 (1)
beeinflusst sein.
-
Bei
dem vorliegenden Ausführungsbeispiel synchronisiert
der Synchronisierer 560 von 5 das Audio
mit anderen verwandten Medienteilen. Die Medienteile, die mit dem
Audio verwandt sind, könnten
Text, Grafiken oder Video sein. Bei. einem Ausführungsbeispiel werden das Audio
und die verwandten Abschnitte über
getrennte Kanäle
gesendet (z. B. RTP-Kanäle). Bei
diesem Ausführungsbeispiel
fordert der Synchronisierer 560 den Zeitplaner 510 auf, Daten
aus der entsprechenden Abtastwertewarteschlange (der Audioabtastwertewarteschlange 234, der
Fensteraktualisierungswarteschlange 233 und/oder der Fensterbewegungswarteschlange 232 von 2)
auf eine synchronisierte Weise zu erhalten. Falls beispielsweise
Audiopakete im Wert von einer Sekunde gewonnen werden, sollten auch
Videopakete im Wert von einer Sekunde gewonnen werden. Dieser Ansatztyp
hilft sicherstellen, dass die Audio- und Videopakete an dem Client 102 (1) gleichzeitig
oder innerhalb eines kurzen Intervalls voneinander ankommen werden.
Ein kleiner Puffer kann durch den Client 102 verwendet
werden, um eine jegliche Disparität bei Ankunftszeiten zu überwinden.
-
Mit
Bezug auf 5 wird bei einem anderen Ausführungsbeispiel
die Synchronisation durch den Codierer 550 vorgenommen,
ungeachtet dessen, ob die Medienteile (z. B. Videodaten) codiert
sind oder nicht. Bei diesem Ausführungsbeispiel
kann der Codierer 550 die Audio- und verwandten Medienteile multiplexen
und die Daten nachfolgend zu einem Kommunikationsverwalter 570 übertragen,
der dann die gemultiplexten Pakete über einen Kanal (z. B. einen
RTP-Kanal) übertragen
kann. Ein Decodierer auf dem Client 102 (1;
siehe auch 6 unten) kann die gemultiplexten
Daten auf eine synchronisierte Weise abspielen. Beispielsweise kann
der Decodierer innerhalb einer Sekunde tatsächlicher Zeit Audiodaten im
Wert von einer Sekunde decodieren, die in einem Audiopuffer platziert
sein können.
Während der
Zeit, die bei der einen Sekunde tatsächlicher Zeit verbleibt, kann
der Decodierer so viele Videorahmen wie möglich decodieren. Auf diese
Weise ist der Desktop-Streaming-Server 110 von 2 in
der Lage, Ressourcen auszunutzen, die auf der Client-Seite verfügbar sind.
-
Unter
weiterer Bezugnahme auf 5 verwaltet bei dem vorliegenden
Ausführungsbeispiel
der Kommunikationsverwalter 570 die Kommunikationskanäle 571–573.
Bei dem vorliegenden Ausführungsbeispiel
ist ebenfalls ein Client-Ereignisempfänger 520 zum
Empfangen von Steuerereignissen (z. B. Tastatur- und Mausereignissen)
von dem Desktop-Streaming-Client 120 (1)
vorgesehen. Diese Ereignisse werden durch den Client-Ereignisempfänger 520 zu
der Trei berschnittstelle 210 weitergeleitet, die bei einem
Ausführungsbeispiel
dieselben zu dem Videotreiber 203 (2) weiterleitet.
-
Zusammenfassend
gesagt, fängt
bei einem Ausführungsbeispiel
der Desktop-Streaming-Server 110 (2) Ereignisse
von den verschiedenen Treibern ab, filtert diese Ereignisse und
gibt die Ereignisse zu der geeigneten Ereigniswarteschlange basierend
auf einem Ereignistyp ab, codiert optional ausgewählte Videodaten
und Audiodaten und streamt diese Daten zu einem Client über einen
Kanal, wie beispielsweise einem RTP-Kanal, und reagiert auf Ereignisse,
die von dem Client empfangen werden.
-
6 ist
ein Blockdiagramm eines Desktop-Streaming-Clients 120 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Wie es durch 6 dargestellt
ist umfasst der Desktop-Streaming-Client 120 eine Anzahl
von Elementen, die der Klarheit einer Darstellung und Erörterung
halber getrennt wiedergegeben sind; es ist jedoch klar, dass diese
Elemente eventuell nicht als getrennte Entitäten innerhalb des Desktop-Streaming-Clients 120 existieren.
Im Allgemeinen liefert gemäß den verschiedenen
Ausführungsbeispielen
der vorliegenden Erfindung der Desktop-Streaming-Client 120 die
Fähigkeit
und die Funktionalität,
die durch die verschiedenen Elemente von 6 geliefert
werden. Zusätzlich
kann der Desktop-Streaming-Client 120 andere Fähigkeiten
und Funktionalitäten
zusätzlich
zu diesen liefern, die hierin beschrieben sind.
-
Bei
dem vorliegenden Ausführungsbeispiel umfasst
der Desktop-Streaming-Client 120 einen Agent 610 (der
auch als eine Hintergrundroutine (Daemon) bezeichnet werden kann).
Bei diesem Ausführungsbeispiel
stellt der Agent 610 die Kanalverbindungen mit dem Server 101,
insbesondere mit dem Desktop-Streaming-Server 110 (1),
her und behält
dieselben bei. Wie es erwähnt
wurde, können diese
Kanäle
das TCP- und das RTP-Protokoll verwenden. Der Agent 610 leitet
ferner Daten, die über die
Kanäle
empfangen werden, zu einer Verarbeitungsmaschine 620 weiter.
Der Agent 610 kann ferner auf Anforderungen von dem Desktop-Streaming-Server 110 hinsichtlich
einer verfügbaren
Kanalbandbreite ansprechen. Bei dem Beginn einer Sitzung kann der
Agent 610 ferner den Desktop-Streaming-Server 110 über die
Decodierfähigkeiten
des Clients sowie andere Clientattribute informieren, wie beispielsweise
Prozessorgeschwindigkeit und Anzeigebildschirmgröße und -auflösung.
-
Bei
dem vorliegenden Ausführungsbeispiel ist
der Agent 610 von 6 mit einem
Monitor 630 gekoppelt und kann Informationen von dem Monitor 630 zu
dem Desktop-Streaming-Server 110 von 1 liefern.
Bei diesem Ausführungsbeispiel
kann der Monitor 630 die Arbeitslast des Clients 102 (1) überwachen
und kann ferner Informationen hinsichtlich einer verfügbaren Speicherkapazität liefern.
Der Monitor 630 kann ferner basierend auf den Ereignissen,
die von dem Desktop-Streaming-Server 110 empfangen werden,
eine Rückkopplung
hinsichtlich der Effizienz liefern, bei der die Anzeige erzeugt wird,
so dass die Streaming-Rate beispielsweise entsprechend eingestellt
werden kann. Somit können beispielsweise
die Informationen von dem Monitor 630 (und auch von dem
Agent 610) durch den Zeitplaner 510 von 5 verwendet
werden, um den Auslöser
(z. B. das Zeitintervall, die Quelle oder einen anderen Mechanismus)
zu setzen oder einzustellen, der verwendet wird, um die Übertragung
von Ereignissen aus den verschiedenen Ereigniswarteschlangen des
Desktop-Streaming-Servers 110 einzuleiten.
-
Mit
Bezug auf 6 ist bei dem vorliegenden Ausführungsbeispiel
der Agent 610 ferner mit der Verarbeitungsmaschine 620 gekoppelt.
Ereignisse, die durch den Agent 610 empfangen werden, werden zu
der Verarbeitungsmaschine 620 weitergeleitet. Bei einem
Ausführungsbeispiel
umfasst die Verarbeitungsmaschine 620 einen Decodierer 622 zum
Decodieren (De komprimieren) von Daten (Ereignissen), falls die
Daten codiert sind. Die Ereignisse von der Verarbeitungsmaschine 620 werden
zu einer Treiberschnittstelle 640 weitergeleitet, die auf
eine Weise ähnlich
dieser, die oben für
die Treiberschnittstelle 210 (2) beschrieben
ist, wirkt, um die Ereignisse zu einem Videotreiber 663 und/oder
Audiotreiber 664 weiterzuleiten.
-
Bei
dem vorliegenden Ausführungsbeispiel empfängt die
Treiberschnittstelle 640 ferner Ereignisse von einem Tastaturtreiber 661 und
einem Maustreiber 662 der Client-Vorrichtung. Diese Ereignisse werden
zu einem Client-Ereignisprozessor 650 weiter
geleitet, der diese Ereignisse durch ein Eliminieren nichtkritischer
Ereignisse optimiert und dann die kritischen Ereignisse zu dem Desktop-Streaming-Server 110 (2) über den
Agent 610 weiterleitet. Das heißt, bei einer speziellen Cursorbewegung
kann beispielsweise der Client-Ereignisprozessor 650 Zwischenkoordinaten
eliminieren, die der Cursorbewegung zugeordnet sind, wobei lediglich die
Start- und Endkoordinaten der Bewegung identifiziert und für eine Übertragung
zu dem Desktop-Streaming-Server 110 behalten werden.
-
Zusammenfassend
gesagt, decodiert somit bei einem Ausführungsbeispiel der Desktop-Streaming-Client 120 (6)
Ereignisse, die von dem Server übertragen
werden (wenn die Ereignisse codiert sind), aktualisiert die Anzeige
basierend auf den Ereignissen, liefert eine Audiowiedergabe, wenn
die Ereignisse Audioabtastwerte umfassen, spricht auf Anforderungen
von dem Desktop-Streaming-Server 110 (2)
an, liefert regelmäßig Überwachungsinformationen
zu dem Desktop-Streaming-Server 110 und fängt Steuerereignisse
ab und sendet dieselben zu dem Desktop-Streaming-Server 110.
-
7 ist
ein Flussdiagramm 700 eines Verfahrens zum Übertragen
eines Ereignisses von einem Server zu einem Client gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Obwohl spezifische Schritte in dem Flussdiagramm 700 offenbart
sind, sind derartige Schritte exemplarisch. Das heißt, Ausführungsbeispiele
der vorliegenden Erfindung sind gut geeignet, um verschiedene andere
Schritte oder Variationen der in dem Flussdiagramm 700 dargelegten
Schritte durchzuführen.
Es ist ersichtlich, dass die Schritte in dem Flussdiagramm 700 in
einer unterschiedlichen Reihenfolge als dargestellt durchgeführt werden
können
und dass eventuell nicht alle der Schritte in dem Flussdiagramm 700 durchgeführt werden.
Alle der Verfahren oder ein Teil der Verfahren, die durch das Flussdiagramm 700 beschrieben
sind, können
unter Verwendung computerlesbarer und computerausführbarer Anweisungen
implementiert sein, die beispielsweise in computerverwendbaren Medien
eines Computersystems oder dergleichen resident sind. Im Allgemeinen
wird das Flussdiagramm 700 durch Vorrichtungen wie den
Server 101 von 1 implementiert.
-
Bei
einem Schritt 710 von 7 wird bei dem
vorliegenden Ausführungsbeispiel
ein Ereignis von einem Treiber empfangen. Das Ereignis kann ein Tastaturereignis,
ein Cursorsteuerereignis (z. B. Mausereignis) ein Videoereignis
oder ein Audioereignis sein.
-
Bei
einem Schritt 720 wird bei dem vorliegenden Ausführungsbeispiel
das Ereignis zu einer Ereigniswarteschlange gemäß dem Ereignistyp abgegeben.
Das heißt,
Ereignisse des gleichen Typs werden zu einer speziellen Warteschlange
weitergeleitet. Bei einem Ausführungsbeispiel
werden die Ereignisse gefiltert, um einen Ereignistyp zu identifizieren.
-
Bei
einem Schritt 730 wird bei dem vorliegenden Ausführungsbeispiel
das Ereignis gemäß dem Ereignistyp
verarbeitet. Wenn das Ereignis beispielsweise Multimediadaten (z.
B. Videodaten und/oder Audiodaten) umfasst, wird das Ereignis eventuell
codiert. Bei einer Cursorbewegung können die Koordinaten der Punkte
zwischen dem Start- und dem Endpunkt eliminiert werden, wobei lediglich
die Koordinaten des Start- und des Endpunkts behalten werden.
-
Bei
einem Schritt 740 wird bei dem vorliegenden Ausführungsbeispiel
das Ereignis zu dem Client übertragen,
wenn dasselbe ausgelöst
wird. Die Übertragung
zu dem Client tritt gemäß einem
Protokoll auf, das dem Typ eines Ereignisses entspricht. Bei einem
Ausführungsbeispiel
wird eine Ereignisübertragung
durch das Vergehen eines spezifizierten Zeitintervalls ausgelöst. Bei
einem anderen Ausführungsbeispiel
wird eine Ereignisübertragung
ausgelöst, wenn
die Anzahl von Ereignissen in der Ereigniswarteschlange eine spezifizierte
Schwelle erreicht.
-
Ausführungsbeispiele
der vorliegenden Erfindung sind somit beschrieben. Während die
vorliegende Erfindung in speziellen Ausführungsbeispielen beschrieben
wurde, ist ersichtlich, dass die vorliegende Erfindung nicht als
durch derartige Ausführungsbeispiele
begrenzt aufgefasst werden sollte, sondern anstelle dessen gemäß den folgenden
Ansprüchen
aufgefasst werden sollte.