-
HINTERGRUND DER ERFINDUNG
-
Wireless-Display (WiDi)-Technologie ist ein Beispiel für eine Videotechnologie, die die gemeinsame Nutzung von Inhalten von einer Vorrichtung, wie z.B. einem Personal Computer (PC), auf einer anderen Vorrichtung (z.B. einer drahtlosen Anzeigeeinheit) ermöglicht. Inhalte von der Vorrichtung können über einen drahtlosen Kanal auf die Wireless-Display-Einheit, wie z.B. einen Fernseher (TV), eine bzw. einen andere(n) PC-Anzeige/Bildschirm oder eine andere WiDi-fähige Vorrichtung, übertragen werden. In einer Implementierung wird ein gesamter Desktop von der Vorrichtung erfasst und unterbrechungsfrei auf die drahtlose Anzeigeeinheit übertragen. In einem System, das einen kontinuierlichen Bildspeicher für die Anzeigeeinheit bereitstellt, kann Redundanz bei der Datenübertragung auftreten, wenn der gesamte Desktop statisch ist. Mit anderen Worten kann ein kontinuierlicher Codierungs-Datenstrom eine hohe Netzwerkauslastung verursachen, selbst wenn sich der gesamte Desktop nicht ändert.
-
Während der Übertragung kann ein strombasierter, verlustbehafteter Codierungsmechanismus Rauschartefakte verursachen, die für einem Benutzer sichtbar sind, und eine schlechte Benutzererfahrung beim Anzeigen von Betriebssystem (OS)-Desktop-Grafiken bieten können. Zu diesem Zweck kann die Fähigkeit des WiDi zur entfernten Anzeige der Betriebssystem (OS)-Desktop-Grafiken noch zusätzlich erweitert werden, um eine bessere visuelle Erfahrung und Interaktionserfahrung für den Benutzer zu bieten. Die Erweiterung kann Netzwerküberlastungen bzw. Overhead reduzieren und die Netzwerkbedingungen optimieren.
-
JP 2009-224 847 A beschreibt einen Bilddatensender, der ein Differenzdetektionsmittel enthält. Mit dem Differenzdetektionmittel kann detektiert werden, ob zwischen einem Block eines ersten Bildframes und diesem Block eines zweiten Bildframes eine Differenz besteht, die einen vorher festgelegten Wert übersteigt. Der Bilddatensender umfasst ferner ein Übertragungsmittel zum Übertragen der Daten des Blocks, für den das mit dem Differenzdetektionsmittel detektierte Detektionsergebnis positiv ist. Der Bilddatensender umfasst ferner eine Pixelpegel-Änderungseinrichtung zum Ändern des Pegels von mindestens einem Pixel eines Blocks des ersten Bildframes um mindestens die Differenz des vorher festgelegten Werts.
-
US 2010/0146363 A1 offenbart ein Verfahren zum Übertragen von Daten, umfassend: Aufteilen eines Datensatzes in eine Vielzahl von Datenströmen;
separates Codieren jedes der Datenströme mit einem entsprechenden Fehlerkorrekturcode, um mehrere codierte Datenströme zu erzeugen;
Erzeugen eines Einzelträger-Blockübertragungs-(SCBT)-Signals aus der Vielzahl von codierten Datenströmen; und Übertragung des SCBT-Signals.
-
US 2011/0010607 A1 offenbart ein Verfahren zum Übertragen von Inhalten an ein drahtloses Anzeigegerät. Das Verfahren kann das Empfangen von Multimediadaten, das Codieren der Multimediadaten und das Schreiben codierter Multimediadaten in einen ersten vorbestimmten Speicherplatz eines gemeinsam genutzten Speichers umfassen. Ferner kann das Verfahren das Einkapseln der kodierten Multimediadaten und das Schreiben von Einkapselungsdaten in einen zweiten vorbestimmten Speicherplatz des gemeinsam genutzten Speichers umfassen. Das Verfahren kann auch das Berechnen der Fehlerkontrollkodierung und das Schreiben der Fehlerkontrollkodierung in einen dritten vorbestimmten Speicherplatz des gemeinsam genutzten Speichers umfassen. Ferner kann das Verfahren das Übertragen der codierten Multimediadaten, der Einkapselungsdaten und der Fehlerkontrollcodierung an die drahtlose Anzeigevorrichtung umfassen.
-
Figurenliste
-
Die ausführliche Beschreibung wird unter Bezugnahme auf begleitende Figuren beschrieben. In den Figuren kennzeichnen die ganz links aufgeführten Ziffern einer Referenznummer die Figur, in der die Referenznummer erstmalig aufgeführt wird. Die gleichen Nummern werden in den Zeichnungen verwendet, um auf gleiche Eigenschaften und Komponenten zu verweisen.
- 1 ist ein Schaubild, das ein Beispielsystem veranschaulicht, das das erweiterte Wireless-Display (WiDi) mit Codierung für mehrere Datenströme implementiert.
- 2 ist ein Schaubild, das eine Vorrichtungsquelle veranschaulicht, die das erweiterte Wireless-Display (WiDi) mit Codierung für mehrere Datenströme implementiert.
- 3 ist ein Schaubild, das eine Beispielanzeigevorrichtung veranschaulicht, die mehrere Datenströme empfängt.
- 4 ist ein Schaubild, das eine Aktualisierungsvorrichtung veranschaulicht, die die Aufteilung einer grafischen Anzeige in mehrere Datenströme implementiert.
- 5 ist ein Schaubild, das eine grafische Anzeige veranschaulicht, die verschiedene Layer für ein erweitertes Wireless-Display (WiDi) umfasst.
- 6 ist ein Ablaufdiagramm, das ein Beispielverfahren für erweitertes Wireless-Display (WiDi) mithilfe eines parallelisierten Graphics Processing Unit (Grafikverarbeitungseinheit, GPU)-basierten Algorithmus veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Übersicht
-
Eine softwarebasierte Implementierung in einer Vorrichtungsquelle bietet eine Fähigkeit zum Aufteilen einer grafischen Anzeige in mehrere Datenströme (d.h. verschiedene Layer). Die mehreren Datenströme können Multimedia-Datenströme, Betriebssystem (OS)-Desktop-Datenströme und Maus- (Zeigevorrichtungs-) Datenströme umfassen. Die mehreren Datenströme können unabhängig von der Vorrichtungsquelle codiert und übertragen werden. Gleichermaßen decodiert eine Anzeigevorrichtung die empfangenen mehreren Datenströme unabhängig. Darüber hinaus können Aktualisierungen bezüglich Bildänderungen (z.B. OS-Desktop-Hintergrund) basierend auf erkannten modifizierten Zellen auf Übertragungen von Aktualisierungen beschränkt sein. Beispielsweise kann ein Einzelbild in die Anzahl von k Zellen aufgeteilt sein, die die Anzahl von N x M Pixeln umfassen. In diesem Beispiel können die modifizierte(n) Zell(en) durch Vergleichen der Zellen von zwei aufeinanderfolgenden Einzelbildern mithilfe eines parallelisierten Graphics Processing Unit (Grafikverarbeitungseinheit, GPU)-basierten Algorithmus erkannt werden. Die erkannten modifizierte(n) Zell(en) können übertragen und im aktuellen Bildspeicher der Anzeigevorrichtung zusammengeführt werden. Dementsprechend wird eine Netzwerkoptimierung erzielt.
-
In der folgenden detaillierten Beschreibung werden zahlreiche spezifische Details ausgeführt, um ein gründliches Verständnis der Erfindung zu ermöglichen. Durchschnittsfachleute verstehen jedoch, dass die vorliegende Erfindung ohne diese spezifischen Details in die Praxis umgesetzt werden kann. In anderen Fällen wurden wohlbekannte Verfahren, Verfahrensweisen, Komponenten und Schaltungen nicht ausführlich beschrieben, um die vorliegende Erfindung nicht zu verschleiern.
-
Einige nachfolgende Bestandteile der detaillierten Beschreibung werden in Form von Algorithmen und symbolischen Darstellungen von Vorgängen für Datenbits oder binäre digitale Signale in einem Computerarbeitsspeicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen können Techniken sein, die von Fachleuten in der Datenverarbeitung verwendet werden, um anderen Fachleuten das Wesentliche ihrer Arbeit zu vermitteln.
-
Sofern nicht ausdrücklich etwas anderes ausgesagt ist, und wie aus den folgenden Diskussionen offensichtlich wird, versteht es sich, dass sich die Verwendung von Begriffen wie z.B. „verarbeiten“, „berechnen“, „kalkulieren“, „bestimmen“ oder Ähnliches in den Diskussionen der Spezifikation auf die Aktion und/oder Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung bezieht, die Daten, die als physikalische Größen, wie z.B. elektronische Mengen, innerhalb der Register und/oder Speicher des Rechensystems dargestellt werden, manipuliert und/oder in andere Daten umwandelt, die gleichermaßen als physikalische Größen in den Speichern, Registern oder anderen derartigen Informationsspeichern oder Übertragungsvorrichtungen innerhalb des Rechensystems dargestellt werden. Die im vorliegenden Text verwendeten Begriffe „ein“ oder „eine“ sind als ein(e) oder mehr als ein(e) definiert. Der im vorliegenden Text verwendete Begriff „mehrere“ ist als zwei oder mehr als zwei definiert. Der im vorliegenden Text verwendete Begriff „weitere(r)“ ist als mindestens ein(e) zweite(r) oder mehr definiert. Die im vorliegenden Text verwendeten Begriffe „umfassend“ und/oder „aufweisend“ sind als enthaltend definiert, ohne aber darauf beschränkt zu sein. Der im vorliegenden Text verwendete Begriff „gekoppelt“ ist als in einer beliebigen Form betreibbar verbunden definiert, wie z.B. mechanisch, elektronisch, digital, direkt, durch Software, durch Hardware und dergleichen. Einige Ausführungsformen können in Verbindung mit verschiedenen Vorrichtungen und Systemen verwendet werden, zum Beispiel, einer Video-Vorrichtung, einer Audio-Vorrichtung, einer Audio-Video (A/V)-Vorrichtung, einer Set-Top-Box (STB), einem Blu-ray-Disc (BD)-Player, einem BD-Recorder, einem Digital Video Disc (DVD)-Player, einem High Definition (HD) DVD-Player, einem DVD-Recorder, einem HD DVD-Recorder, einem Persönlichen Videorekorder (Personal Video Recorder, PVR), einem HD-Fernsehempfänger, einer Videoquelle, einer Audioquelle, einer Video-Senke, einer Audio-Senke, einem Stereoempfänger, einem Rundfunkempfänger, einer Anzeige, einem Flachbildschirm, einem Medienabspielgerät (Personal Media Player, PMP), einer digitalen Video-Kamera (DVC), einem digitalen Audioabspielgerät, einem Lautsprecher, einem Audioempfänger, einem Audioverstärker, einer Datenquelle, einer Datensenke, einer Digitalkamera (DSC), einem Personal-Computer (PC), einem Desktop-Computer, einem mobilen Computer, einem Laptop-Computer, einem Notebook-Computer, einem Tablet-Computer, einem Server-Computer, einem Handheld-Computer, einer Handheld-Vorrichtung, einer persönlichen digitalen Assistent (Personal Digital Assistant, PDA)-Vorrichtung, einer Handheld-PDA-Vorrichtung, einer On-Board-Vorrichtung, einer Off-Board Vorrichtung, einer hybriden Vorrichtung, einer Vorrichtung für Fahrzeuge, einer Vorrichtung nicht für Fahrzeuge, einer mobilen oder tragbaren Vorrichtung, einer Unterhaltungsvorrichtung, einer nicht mobilen oder nicht tragbaren Vorrichtung, einer drahtlosen Kommunikationsstation, einer drahtlosen Kommunikationsvorrichtung, einem drahtlosen AP, einem drahtgebundenen oder drahtlosen Router, einem drahtgebundenen oder drahtlosen Modem, einem drahtgebundenen oder drahtlosen Netzwerk, einem drahtlosen lokalen Netzwerk (WAN, Wireless Area Network), einem Wireless Video Area Network (WVAN), einem Local Area Network (LAN), einem WLAN, einem PAN, einem WPAN, Vorrichtungen und/oder Netzwerken, die gemäß vorhandenen Wireless HDTM- und/oder Wireless-Gigabit-Alliance (WGA)-Spezifikationen und/oder zukünftigen Versionen und/oder Ableitungen davon arbeiten, Vorrichtungen und/oder Netzwerke, die gemäß vorhandener IEEE 802.11 (IEEE 802.11-2007: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications) Standards und Änderungen, 802.11ad („den IEEE 802.11-Standards“), IEEE 802.16-Standards, und/oder zukünftigen Versionen und/oder Ableitungen davon arbeiten, Einheiten und/oder Vorrichtungen, die Teil der obigen Netzwerke, unidirektionaler und/oder bidirektionaler Funkkommunikationssysteme, zellularer Funktelefonkommunikationssysteme, einer Wireless-Display (WiDi)-Vorrichtung, eines Mobiltelefons, eines drahtlosen Telefons, einer Personal Communication Systems (PCS)-Vorrichtung, einer PDA-Vorrichtung, die eine drahtlose Kommunikationsvorrichtung integriert, einer mobilen oder tragbaren Global Positioning System (GPS)-Vorrichtung, einer Vorrichtung, die einen GPS-Sender/-Empfänger oder Chip integriert, einer Vorrichtung, die ein RFID-Element oder Chip integriert, eines Multiple Input Multiple Output (MIMO)-Sender-/Empfängers oder Geräts, eines Single Input Multiple Output (SIMO)-Sender-/Empfängers oder Geräts, eines Multiple Input Single Output (MISO)-Sender-/Empfängers oder Geräts, einer Vorrichtung mit einer oder mehreren internen Antennen und/oder externen Antennen, von Digital Video Broadcast (DVB)-Vorrichtungen oder -Systemen, Multistandard Radio-Vorrichtungen oder -Systemen, einer drahtgebundenen oder drahtlosen Handheld-Vorrichtung, einer Wireless Application Protocol (WAP)-Vorrichtung oder dergleichen sind.
-
Einige Ausführungsformen können in Verbindung mit einer oder mehreren Arten von drahtlosen Kommunikationssignalen und/oder -systemen verwendet werden, wie beispielsweise, Radio Frequenz (RF), Wi-Fi, Wi-Max, Ultra- Wideband (UWB) oder dergleichen. Weitere Ausführungsformen können in verschiedenen anderen Vorrichtungen, Systemen und/oder Netzwerken verwendet werden.
-
Einige Ausführungsformen können in Verbindung mit geeigneten drahtlosen Netzwerken mit eingeschränkter Reichweite bzw. kurzer Reichweite, wie zum Beispiel, „Piconets“, z.B. einem Wireless Area Network, einem WVAN, einem WPAN und dergleichen verwendet werden.
-
Beispielsystem
-
1 zeigt eine Übersicht auf Systemebene einer Beispielsystemumgebung 100 zum Implementieren von erweitertem Wireless Display (WiDi), das mehrere Datenströme für die Darstellung einer grafischen Anzeige verwendet. In einer Implementierung ist die grafische Anzeige in verschiedene Layer, wie beispielsweise einen Multimedia-Datenstrom (z.B. Video und Audio), Betriebssystem (OS)-Desktop-Datenstrom (z.B. Desktop-Hintergrund) und Maus- (Zeigevorrichtungs-) Datenstrom, aufgeteilt. Die grafische Anzeige kann mithilfe eines WiDi-Adapters 106 von der Vorrichtungsquelle 102 zur Anzeigevorrichtung 104 übertragen werden. In einer Implementierung kann die Vorrichtungsquelle 102 verschiedene Vorrichtungen umfassen, wie z.B. Laptop-Computer, Tablet-Computer, Smartphones usw. Darüber hinaus versteht es sich, dass die Vorrichtungsquelle 102, wie oben erläutert, weitere Vorrichtungen umfasst.
-
Die Vorrichtungsquelle 102 kann eine softwarebasierte Implementierung zur Erweiterung der WiDi-Datenübertragung umfassen. Beispielsweise kann die Vorrichtungsquelle 102 konfiguriert sein, um die verschiedenen Layer in der grafischen Anzeige unabhängig voneinander zu codieren und übertragen. In diesem Beispiel kann die Vorrichtungsquelle 102 die Multimedia-Datenströme, die Betriebssystem (OS)-Desktop-Datenströme und die Maus-(Zeigevorrichtungs-) Datenströme unabhängig voneinander übertragen. In einer Implementierung kann ein Endbenutzer auswählen, welche eine oder mehreren Kombinationen der verschiedenen Layer in der Anzeigevorrichtung 104 angezeigt werden sollen. Der WiDi-Adapter 106 kann die ausgewählte Layer empfangen. Darüber hinaus kann der WiDi-Adapter 106 Aktualisierungen zu einer aktuellen Anzeige in der Anzeigevorrichtung 104 zusammenführen. Die Aktualisierungen können Bildänderungen an der Vorrichtungsquelle 102 umfassen, die an die Anzeigevorrichtung 104 übertragen werden müssen. Der WiDi-Adapter 106 kann die übertragenen verschiedenen Layer (d.h. mehrere Datenströme) über einen oder mehrere drahtlose Kanäle 108 empfangen. Der eine oder die mehreren drahtlosen Kanäle 108 können Modulation(en) umfassen, die durch einen oder mehrere IEEE-Standards definiert sind. In einer Implementierung kann die Anzeigevorrichtung 104, wie z.B. ein HD-Fernseher (HDTV), mit dem WiDi-Adapter 106 durch eine Verbindung 110, z.B. eine High Definition Multimedia Input (HDMI)-Verbindung, verbunden sein. In anderen Implementierungen können WiDi-Technologiefähige Vorrichtungen, wie z.B. HDTV-Geräte oder andere Anzeigevorrichtungen, die WiDi-Technologie direkt integrieren. Mit anderen Worten kann der WiDi-Adapter 106 direkt in die Anzeigevorrichtung 104 integriert werden.
-
Beispielvorrichtung
-
2 ist eine Beispielvorrichtungsquelle 102, die erweitertes WiDi durch unabhängiges Codieren und Übertragen der mehreren Datenströme in die grafische Anzeige implementiert. Die Vorrichtungsquelle 102 umfasst einen oder mehrere Prozessoren, den bzw. die Prozessor(en) 200. Der bzw. die Prozessoren 200 können eine einzelne Verarbeitungseinheit oder eine Mehrzahl an Verarbeitungseinheiten sein, von denen alle einzelne oder mehrere Recheneinheiten oder mehrere Kerne enthalten können. Der bzw. die Prozessoren 200 können als ein oder mehrere Mikroprozessoren, Mikrocomputer, Microcontroller, digitale Signalprozessoren, zentrale Verarbeitungseinheiten (Central Processing Units bzw. CPUs), Zustandsmaschinen, Logikschaltkreise und/oder beliebige Vorrichtungen implementiert sein, die Signale auf Basis von Betriebsanweisungen manipulieren. Neben anderen Fähigkeiten, kann bzw. können der/die Prozessor(en) 200 konfiguriert sein, um computerlesbare Anweisungen oder durch Prozessoren abrufbare Anweisungen, die in einem Arbeitsspeicher 202 oder anderen computerlesbaren Speichermedien gespeichert sind, abzurufen und auszuführen.
-
Der Speicher 202 ist ein Beispiel für computerlesbare Speichermedien, die Anweisungen speichern, die durch den bzw. die Prozessor(en) 200 ausgeführt werden, um die im vorliegenden Text beschriebenen verschiedenen Funktionen auszuführen. Beispielsweise kann der Arbeitsspeicher 202 im Allgemeinen sowohl flüchtige als auch nicht-flüchtige Speicher (z.B. RAM, ROM oder dergleichen) enthalten. Der Arbeitsspeicher 202 kann im vorliegenden Text als Arbeitsspeicher oder computerlesbare Speichermedien bezeichnet werden. Der Arbeitsspeicher 202 kann computerlesbare und durch Prozessoren abrufbare Programmanweisungen als Computerprogrammcode speichern, der durch den bzw. die Prozessor(en) 200 als eine bestimmte Maschine ausgeführt werden können, die zum Durchführen der Vorgänge und Funktionen in den vorliegenden Implementierungen konfiguriert ist.
-
Der Arbeitsspeicher 202 kann ein oder mehrere Betriebssysteme 204 umfassen und eine oder mehrere Anwendungen 206 speichern. Das bzw. die Betriebssystem(e) 204 können eines von bekannten und zukünftigen Betriebssystemen sein, die für Personal Computer, Audio-Video-Vorrichtungen usw. implementiert sind. Die Anwendungen 206 können vorkonfigurierte/installierte und per Download verfügbare Anwendungen umfassen. Darüber hinaus kann der Arbeitsspeicher 202 Daten 208 umfassen, um die installierten und heruntergeladenen Anwendungen zu speichern. Der Arbeitsspeicher 202 umfasst Anzeigedaten 210, die eine visuelle Anzeigeeinheit zum Zeigen von Bilddarstellungen (d.h. grafische Anzeige) umfassen können, die durch die mehreren Datenströme definiert sind. Die mehreren Datenströme können die verschiedenen Layer umfassen, die unabhängig von der Aktualisierungseinheit 212 verarbeitet werden. In einer Implementierung kann die Aktualisierungseinheit 212 den parallelisierten GPU-basierten Algorithmus implementieren, um die modifizierte(n) Zelle(n) zwischen aufeinanderfolgenden Einzelbildern zu erkennen. Darüber hinaus kann die Aktualisierungseinheit die grafische Anzeige in mehrere Datenströme aufteilen.
-
In einer Implementierung können die mehreren Datenströme mithilfe eines Multi-Stream-Codierers für WiDi 214, der verschiedene Transporttechniken für die mehreren Datenströme verwendet, übertragen werden. Beispielsweise können die Multimedia-Datenströme den H264-Standard-Codierer verwenden und einen „Always-on“-Streaming-Ansatz anwenden. Andererseits können die Betriebssystem (OS)-Desktop-Anwendungs- und die Maus-(Zeigevorrichtungs-) Datenströme auf Anforderung übertragen werden. Mit anderen Worten werden die mehreren Datenströme getrennt behandelt, z.B. mit einer anderen Servicequalitätsebene (Quality of Service, QOS), um das Gesamterlebnis des Benutzers zu verbessern, während gleichzeitig die System- und Netzwerkleistung optimiert wird. In anderen Implementierungen erfolgt die Verarbeitung (z.B. das Aufteilen) der mehreren Datenströme unabhängig vom Betriebssystem (OS)-Desktop-Manager an der Vorrichtungsquelle 102.
-
In einer Implementierung kann der Multi-Stream-Codierer für WiDi 214 konfiguriert sein, um die mehreren Datenströme, die von der Aktualisierungseinheit 212 erzeugt werden, getrennt und unabhängig zu codieren und zu paketieren. Die mehreren codierten und paketierten Datenströme können an eine oder mehrere Kommunikation-Layer 216 gesendet werden, wo zusätzliche Informationen hinzugefügt werden können. Die Layer können Realtime Communications Protocol (RTC, Echtzeit-Kommunikationsprotokoll)-/Transmission Control Protocol (TCP, Übertragungssteuerungsprotokoll)-/User Datagram Protocol (UDP, Benutzerdatensegmentprotokoll)- und Media Access Control (MAC, Medienzugriffssteuerung)-Layer sein, wobei zusätzliche Informationen (z.B. Kopfdaten und Daten) hinzugefügt werden. Ein WiFi-Treibermodul 218 kann die mehreren Datenströme von der bzw. den Kommunikations-Layer(n) 216 empfangen. Das WiFi-Treibermodul 218 kann für eine Funkvorrichtung 220 konfiguriert werden. Insbesondere kann das WiFi-Treibermodul 218 für einen Sender 222 der Funkvorrichtung 220 konfiguriert werden. Der Sender 222 ist an eine Antenne 224 gekoppelt. Es versteht sich, dass die Vorrichtungsquelle 102 andere Kommunikationsschnittstellen (nicht dargestellt) als die Funkvorrichtung 220 umfassen kann.
-
Ausführungsformen sind für Softwareimplementierungen vorgesehen. Beispielsweise kann die Aktualisierungseinheit 212 als Softwareanwendungen, die sich im Arbeitsspeicher 202 befinden, implementiert werden. Daher können Hardwareimplementierung, wie z.B. die Modifikation der Funkvorrichtung 220, vermieden werden. In bestimmten Implementierungen befinden sich die Aktualisierungseinheit 212 und der Multi-Stream-Codierer für WiDi 214 auf derselben Plattform.
-
Die im vorliegenden Text beschriebene Vorrichtungsquelle 102 ist lediglich ein Beispiel, das für einige Implementierungen geeignet ist, und soll keine Einschränkung hinsichtlich des Nutzungsumfangs oder der Funktionalität der Umgebungen, Architekturen und Frameworks darstellen, die die hier beschriebenen Prozesse, Komponenten und Merkmale implementieren können.
-
Im Allgemeinen können alle der unter Bezugnahme auf die Figuren beschriebenen Funktionen mithilfe von Software, Hardware (z.B. feste Logikschaltkreise) oder einer Kombination dieser Implementierungen implementiert werden. Programmcode kann in einem oder mehreren computerlesbaren Arbeitsspeichervorrichtungen oder anderen computerlesbaren Speichervorrichtungen gespeichert werden. Demnach können die im vorliegenden Text beschriebenen Prozesse und Komponenten durch ein Computerprogrammprodukt implementiert werden.
-
Wie oben erwähnt umfasst der Computerspeicher flüchtige und nicht-flüchtige, entfernbare und nicht-entfernbare Medien, die in einem beliebigen Verfahren oder einer Technologie für das Speichern von Informationen implementiert sind, wie z.B. computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten. Die Computerspeichermedien umfassen, sind jedoch nicht beschränkt auf RAM, ROM, EEPROM, Flash-Arbeitsspeicher oder andere Speichertechnologie, CD-ROM, DVDs (Digital Versatile Disks) oder andere optische Speicher, Magnetkassetten, Magnetband-, Magnetplattenspeicher oder andere Magnetspeichervorrichtungen oder ein anderes beliebiges Medium, das zum Speichern von Informationen für den Abruf durch eine Rechenvorrichtung verwendet werden kann.
-
Beispiel-WiDi -Adapter/WiDi -fähige Vorrichtung
-
3 ist eine Beispielanzeigevorrichtung 104, die die übertragenen mehreren Datenströme von der Vorrichtungsquelle 102 empfängt. In einer Implementierung umfasst die Anzeigevorrichtung den WiDi-Adapter 106 (d.h. in die Anzeigevorrichtung 104 integriert). Die Anzeigevorrichtung 104 kann einen oder mehrere Prozessoren, den bzw. die Prozessor(en) 302 umfassen. Der bzw. die Prozessoren 302 können eine einzelne Verarbeitungseinheit oder eine Mehrzahl an Verarbeitungseinheiten sein, von denen alle einzelne oder mehrere Recheneinheiten oder mehrere Kerne enthalten können. Der bzw. die Prozessoren 302 können als ein oder mehrere Mikroprozessoren, Mikrocomputer, Microcontroller, digitale Signalprozessoren, zentrale Verarbeitungseinheiten (Central Processing Units bzw. CPUs), Zustandsmaschinen, Logikschaltkreise und/oder beliebige Vorrichtungen implementiert sein, die Signale auf Basis von Betriebsanweisungen manipulieren. Neben anderen Fähigkeiten, kann bzw. können der/die Prozessor(en) 302 konfiguriert sein, um computerlesbare Anweisungen oder durch Prozessoren abrufbare Anweisungen, die in einem Arbeitsspeicher 304 oder anderen computerlesbaren Speichermedien gespeichert sind, abzurufen und auszuführen.
-
Der Arbeitsspeicher 304 ist ein Beispiel für computerlesbare Speichermedien, die Anweisungen speichern, die durch den bzw. die Prozessor(en) 302 ausgeführt werden, um die im vorliegenden Text beschriebenen verschiedenen Funktionen auszuführen. Beispielsweise kann der Arbeitsspeicher 304 im Allgemeinen sowohl flüchtige als auch nicht-flüchtige Speicher (z.B. RAM, ROM oder dergleichen) enthalten. Der Arbeitsspeicher 304 kann im vorliegenden Text als Arbeitsspeicher oder computerlesbare Speichermedien bezeichnet werden. Der Arbeitsspeicher 304 kann computerlesbare und durch Prozessoren abrufbare Programmanweisungen als Computerprogrammcode speichern, der durch den bzw. die Prozessor(en) 302 als eine bestimmte Maschine ausgeführt werden können, die zum Durchführen der Vorgänge und Funktionen in den vorliegenden Implementierungen konfiguriert ist. Der Arbeitsspeicher 304 kann ein oder mehrere Betriebssysteme 306 umfassen und eine oder mehrere Anwendungen 308 speichern. Das bzw. die Betriebssystem(e) 306 können eines von bekannten und zukünftigen Betriebssystemen sein, die für Personal Computer, Audio-Video-Vorrichtungen usw. implementiert sind. Die Anwendungen 308 können vorkonfigurierte/installierte und per Download verfügbare Anwendungen umfassen. Darüber hinaus kann der Arbeitsspeicher 304 die Daten 310 umfassen.
-
Die Anzeigevorrichtung 104 kann die Funkvorrichtung 312 umfassen. Die Funkvorrichtung 312 umfasst eine oder mehrere Antennen 314, die an einen Empfänger 316 gekoppelt sind. Die von der Vorrichtungsquelle 102 gesendeten codierten und paketierten mehreren Datenströme werden vom Empfänger 316 erhalten. Die empfangenen mehreren Datenströme können durch verschiedene Kommunikations-Layer 318 übergeben werden. Ein Multi-Stream-Decoder 320 verarbeitet (decodiert) die mehreren Datenströme und übergibt die decodierten mehreren Datenströme an die Aktualisierungseinheit/den Bildspeicher 322 für die Anzeige an den Anzeigedaten 324.
-
Die im vorliegenden Text beschriebene Beispielvorrichtung 300 ist lediglich ein Beispiel, das für einige Implementierungen geeignet ist, und soll keine Einschränkung hinsichtlich des Nutzungsumfangs oder der Funktionalität der Umgebungen, Architekturen und Frameworks darstellen, die die hier beschriebenen Prozesse, Komponenten und Merkmale implementieren können.
-
Im Allgemeinen können alle der unter Bezugnahme auf die Figuren beschriebenen Funktionen mithilfe von Software, Hardware (z.B. feste Logikschaltkreise) oder einer Kombination dieser Implementierungen implementiert werden. Programmcode kann in einem oder mehreren computerlesbaren Arbeitsspeichervorrichtungen oder anderen computerlesbaren Speichervorrichtungen gespeichert werden. Demnach können die im vorliegenden Text beschriebenen Prozesse und Komponenten durch ein Computerprogrammprodukt implementiert werden.
-
Wie oben erwähnt umfasst der Computerspeicher flüchtige und nicht-flüchtige, entfernbare und nicht-entfernbare Medien, die in einem beliebigen Verfahren oder einer Technologie für das Speichern von Informationen implementiert sind, wie z.B. computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder andere Daten. Die Computerspeichermedien umfassen, sind jedoch nicht beschränkt auf RAM, ROM, EEPROM, Flash-Arbeitsspeicher oder andere Speichertechnologie, CD-ROM, DVDs (Digital Versatile Disks) oder andere optische Speicher, Magnetkassetten, Magnetband-, Magnetplattenspeicher oder andere Magnetspeichervorrichtungen oder ein anderes beliebiges Medium, das zum Speichern von Informationen für den Abruf durch eine Rechenvorrichtung verwendet werden kann.
-
Beispiel für die Aktualisierungsvorrichtung
-
4 zeigt ein Schaubild, das eine Aktualisierungsvorrichtung veranschaulicht. In einer Implementierung kann die Aktualisierungseinheit 212 konfiguriert sein, um die grafische Anzeige an den Anzeigedaten 210 in verschiedene Layer (d.h. mehrere Datenströme) aufzuteilen. Die mehreren Datenströme können Multimedia-Datenströme 400 (z.B. Video und Audio), Betriebssystem (OS)-Desktop-Datenströme 402 (z.B. Desktop-Hintergrund) und Maus- (Zeigevorrichtungs-) Datenströme 404 umfassen. Eine oder mehrere Kombinationen der mehreren Datenströme können zur Anzeigevorrichtung 104 übertragen werden. Beispielsweise wählt ein Benutzer den Multimedia-Datenstrom 400 für die Anzeige auf der Anzeigevorrichtung 104 aus. In diesem Beispiel werden die Übertragungen der Betriebssystem (OS)-Desktop-Datenströme 402 und Maus- (Zeigevorrichtungs-) Datenströme 404 angehalten. Die Nicht-Übertragung der Betriebssystem (OS)-Desktop-Datenströme 402 und Maus- (Zeigevorrichtungs-) Datenströme 404 kann die Netzwerkauslastung optimieren und reduziert den Stromverbrauch an der Vorrichtungsquelle 102 und der Anzeigevorrichtung 104.
-
Bei einem anderen Beispiel kann der Benutzer entscheiden, den Betriebssystem (OS)-Desktop-Datenstrom 402 und die Maus- (Zeigevorrichtungs-) Datenströme 404 neben dem Multimedia-Datenstrom 400 in der Anzeigevorrichtung 104 hinzuzufügen. In dieser Implementierung kann eine kontinuierliche Übertragung der Betriebssystem (OS)-Desktop-Datenströme 402 und der Maus- (Zeigevorrichtungs-) Datenströme 404 trotz dem Fehlen von Bildänderungen (z.B. statischer Betriebssystem (OS)-Desktop) bei den Anzeigedaten 210 für eine hohe Netzwerkauslastung sorgen. Zu diesem Zweck kann die Aktualisierungseinheit 212 konfiguriert werden, um teilweise Aktualisierungen oder teilweise Änderungen der Bildanzeige zu übertragen, um die Datenverarbeitung und den Stromverbrauch gering zu halten. In einer Implementierung ist ein Einzelbild, das ein bestimmtes grafische Anzeigebild bei den Anzeigedaten 210 definiert, in k Zellen der Größe N x M Pixel aufgeteilt. Typischerweise können zwei aufeinanderfolgende Einzelbilder, die in einem Bildspeicher 406 gespeichert sind, teilweise Aktualisierungen oder Änderungen enthalten, die nicht den gesamten Bereich enthalten, der durch die k Zellen abgedeckt ist. Mit anderen Worten kann ein Teil der k Zellen die teilweisen Aktualisierungen abdecken. Um die teilweisen Aktualisierungen zu bestimmen, können die k Zellen zwischen den zwei gespeicherten aufeinanderfolgenden Einzelbildern (z.B. aktuelles und vorheriges Einzelbild) verglichen werden, indem erkannt wird, dass eine oder mehrere bestimme Zelle(n) modifiziert wurden. Das Erkennen der modifizierten Zellen kann mithilfe des parallelisierten GPU-basierten Algorithmus implementiert werden, der in einer GPU 408 konfiguriert wird.
-
In einer Implementierung kann die GPU 408 eine Anzahl von n Kernen (nicht gezeigt) umfassen, um den parallelen Vergleich zwischen aufeinanderfolgenden Einzelbildern zu implementieren. Beispiel: Wenn n-GPU 408 Kerne zum Vergleichen von k-Zellen für Einzelbilder vorhanden sind, werden n-Instanzen des Vergleichsalgorithmus ausgeführt, bis alle k-Zellen verglichen sind. Durch die GPU 408 kann eine Verfolgungsanordnung (nicht gezeigt) implementiert werden, um die Zelle(n) zu erkennen, die modifiziert wurden. Beispielsweise wird die Verfolgungsanordnung, jedes Mal, wenn eine Modifikation erkannt wird, auf Bit eins (1) aktualisiert. In anderen Implementierungen kann die GPU 408 konfiguriert sein, um den Vergleich zu beenden, sobald die Modifikation erkannt wird.
-
In einer Implementierung kann die GPU 408 konfiguriert sein, um dynamische N x M Pixelabmessungen zu verarbeiten. Die dynamischen N x M Pixelabmessungen können angepasst werden, um in ein bestimmtes Einzelbild zu passen, um weitere nicht unterbrechbare (atomic) Aktualisierungen zu ermöglichen und die Auswirkungen von beschädigten oder verlorenen Einzelbildern einzuschränken. In anderen Implementierungen kann die GPU 408 konfiguriert sein, um den Aktualisierungen bestimmter Bereiche des Desktop-Betriebssystem (OS)-Bildschirms, angesichts der Art, in der der Benutzer den Bildschirm anzeigt, eine Wichtigkeit zuzuweisen. Beispielsweise kann der bestimmte Bereich, der durch die OS-Desktop-Datenströme 400 definiert wird, die mittleren Teile des Desktop-Betriebssystem (OS)-Bildschirms umfassen. In diesem Beispiel kann die GPU 408 konfiguriert werden, um zuerst Zellenmodifikationen an den mittleren Teilen des Desktop-Betriebssystem (OS)-Bildschirms zu erkennen, bevor die übrigen Bereiche (z.B. Rahmen des Desktop-Betriebssystem (OS)-Bildschirms) erkannt werden.
-
Beispiel für grafische Anzeige
-
5 ist ein Beispiel für eine grafische Anzeige 500, die verschiedene Layer veranschaulicht, die auf der Anzeigevorrichtung 104 angezeigt werden können. In einer Implementierung können die Anzeigedaten 210 in drei Layer aufgeteilt werden, wie z.B. Video 400, Desktop-Betriebssystem (OS)-Anwendung 402 und Maus (Zeigevorrichtung) 404. Wie oben erläutert, kann der Benutzer eine oder mehrere Kombinationen der Layer auswählen, die in der Anzeigevorrichtung 104 angezeigt werden sollen. Beispielsweise kann das Video 400 für das Video-Streaming auf der Anzeigevorrichtung 104 ausgewählt werden. In diesem Beispiel, wird das Video 400 erfasst (durch die Videoerfassung 502), codiert (durch den Multi-Stream-Codierer für WiDi 214) und unabhängig vom Sender 222 an die Anzeigevorrichtung 104 übertragen. In einer Implementierung kann die Codierung des Videos 400 hardwarebasierte Codierung nach dem H264-Standard (z.B. das H264-Videoformat) verwenden, die alle Formen von digital komprimiertem Video, wie z.B. HDTV-Rundfunkanwendungen, abdeckt. In dieser Implementierung kann das Video 400 RTP als Transportprotokoll verwenden, wenn das Video durch den Sender 222 gestreamt wird. Die erforderliche Transcodierung und QOS für das Video 400 kann modifiziert, codiert und indirekt von der Anzeige auf der Desktop-Betriebssystem (OS)-Anwendung 402 dargestellt werden, die unabhängig vom Video 400 gestreamt wird.
-
Die Desktop-Betriebssystem (OS)-Anwendung 402 kann die Betriebssystem (OS)-Desktop-Datenströme enthalten, die codiert werden, indem zuerst die grafische Anzeige in eine Rasterstruktur aufgeteilt wird, die N × M Pixel (z.B. N7 × M7 Pixel) umfasst. Die N × M Pixel können basierend auf dem Anzeigeinhalt dynamisch angepasst werden. Um die drahtlose Auslastung für kleine Einzelbilder zu reduzieren und die Komprimierung zu maximieren, können die Werte für N und M für eine dynamische Anpassung ausgewählt werden, um unter den gegebenen Netzwerkbedingungen eine optimale Leistung zu erzielen. In einer Implementierung wird die Desktop-Betriebssystem (OS)-Anwendung 402 (durch Desktop- und Anwendungserfassung 504) erfasst und auf Anforderung durch den Sender 222 zur Anzeigevorrichtung 104 transportiert. Mit anderen Worten können die angegebenen Zellen des Bildschirms, die modifiziert werden, angesichts definierbaren QOS und Einzelbildaktualisierungsraten, die unabhängig vom Video 400 angegeben werden, übertragen werden.
-
In einer Implementierung kann die Maus (Zeigevorrichtung) 404 die Bewegungen der Maus (Zeigevorrichtung) des Benutzers umfassen, die (durch den Sender 222) als kartesische Koordinaten übermittelt werden. In dieser Implementierung können die Bewegungen durch eine Mausbewegungserfassung 506 erfasst werden. Um die Netzwerküberlastungen bzw. den Overhead zu reduzieren und die Leistung zu steigern (angesichts der Probleme mit kleinen Einzelbildgrößen und zunehmender drahtloser Auslastung), können Dateneinzelbilder, die Koordinatenpunkte der Maus (Zeigevorrichtung) umfassen, angesichts der gewünschten Auflösung und der gewünschten Benutzererfahrung oder QOS übermittelt werden. Es kann Interpolation zwischen Punkten verwendet werden, um den Overhead zu reduzieren oder die Zuverlässigkeit angesichts der Einzelbildverluste zu verbessern, wenn UDP anstatt TCP verwendet wird. Die Mausbewegungserfassung 506, die Desktop- und Anwendungserfassung 504 sowie die Videoerfassung 502 können alle von der Aktualisierungseinheit 212 implementiert werden.
-
Beispielprozess
-
6 zeigt einen Beispielprozess 600 für erweitertes WiDi, der unabhängiges Streaming mehrerer Daten auf eine Anzeigevorrichtung umfasst. Die Reihenfolge, in der das Verfahren beschrieben ist, soll nicht in einem einschränkenden Sinne ausgelegt werden. Zudem kann eine beliebige Anzahl der beschriebenen Verfahrensblöcke in einer beliebigen Reihenfolge kombiniert werden, um das Verfahren oder alternative Verfahren zu implementieren. Darüber hinaus können einzelne Blöcke von dem Verfahren gelöscht werden, ohne vom Geist und Schutzumfang des hier beschriebenen Gegenstands abzuweichen. Außerdem kann das Verfahren in einer beliebigen geeigneten Hardware, Software, Firmware oder einer Kombination davon implementiert werden, ohne vom Umfang der Erfindung abzuweichen.
-
Bei Block 602 wird die Aufteilung einer grafischen Anzeige ausgeführt. In einer Implementierung wird die grafische Anzeige in Anzeigedaten (z.B. Anzeigedaten 210) aufgeteilt, um mehrere Datenströme (d.h. verschiedene Layer) zu umfassen. Die mehreren Datenströme können Multimedia-Datenströme, Betriebssystem (OS)-Desktop-Datenströme und Maus- (Zeigevorrichtungs-) Datenströme umfassen.
-
Bei Block 604 werden die mehreren Datenströme unabhängig voneinander zur Übertragung codiert. In einer Implementierung kann ein Multi-Stream-Codierer für WiDi (z.B. Multi-Stream-Codierer für WiDi 214) die mehreren Datenströme unabhängig voneinander codieren. Beispielsweise werden die Multimedia-Datenströme getrennt von den Betriebssystem (OS)-Desktop- und Maus- (Zeigevorrichtungs-) Datenströmen codiert.
-
Bei Block 606 wird die Übertragung der codierten mehreren Datenströme ausgeführt. In einer Implementierung werden die mehreren Datenströme durch eine oder mehrere Kommunikationslayer (z.B. Kommunikationslayer 216) übertragen. Beispielsweise werden die Multimedia-Datenströme mithilfe von H264-Standard-Hardware und dem RTP-Protokoll übertragen. Andererseits werden die Betriebssystem (OS)-Desktop- und Maus-(Zeigevorrichtungs-) Datenströme auf Anforderung oder mithilfe von UDP-/TCP-Protokollen übertragen.
-
Bei Block 608 wird das Ermitteln einer Bildänderung auf einem Block eines Bildes ausgeführt. In einer Implementierung umfasst das Bild ein Einzelbild, das in die Anzahl von k Zellen (d.h. Blöcke) aufgeteilt ist. Die Anzahl von k Zellen kann insgesamt N x M Pixel umfassen. Die Anzahl von k Blöcken zwischen zwei aufeinanderfolgenden Einzelbildern kann mithilfe eines in einer Aktualisierungseinheitenkomponente (z.B. Aktualisierungseinheit 212) enthaltenen parallelisierten GPU-basierten Algorithmus verglichen werden, um die exakte Position der Zelle(n) zu bestimmen, die die Bildänderung definiert/definieren. Die erkannten Zellen können Aktualisierungen für die nächste Übertragung an der Vorrichtungsquelle (z.B. Vorrichtungsquelle 102) umfassen. In einer anderen Implementierung können die N x M Pixel entsprechend der Netzwerkbedingungen dynamisch angepasst werden.
-
Bei Block 610 wird das Übertragen der Aktualisierungen ausgeführt, die die erkannte Bildänderung enthalten. In einer Implementierung werden die N x M Pixel dynamisch angepasst, um sicherzustellen, dass die Bildänderung (d.h. modifizierte Zelle) in ein einzelnes Dateneinzelbild passt, um weitere nicht unterbrechbare (atomic) Aktualisierungen zu ermöglichen und die Auswirkungen von beschädigten oder verlorenen Einzelbildern einzuschränken. Zu diesem Zweck kann UDP zusätzlich zu TCP während der Übertragung implementiert werden, da der Verlust von Einzelbildern keine drastische Auswirkung auf die gesamte Bildschirmaktualisierung hat. In anderen Implementierungen können die nicht unterbrechbaren (atomic) Aktualisierungen implementiert werden, indem den Aktualisierungen bestimmter Bereiche (z.B. des Desktop-Betriebssystem (OS)-Bildschirms) angesichts der Art, in der der Benutzer den Bildschirm anzeigen kann, eine Wichtigkeit zugewiesen wird. Beispielsweise neigt der Benutzer dazu, den zentralen Bereich des Bildschirms häufiger zu bemerken als den Umfang oder die äußeren Bereiche des Desktop-Betriebssystem (OS)-Bildschirms (z.B. die Uhr unten im Desktop-Betriebssystem (OS)-Bildschirm). Zu diesem Zweck kann der zentrale Bereich, der die meisten sichtbaren Punkte enthält, mit größerer Priorität übertragen werden, wenn durch die Aktualisierungseinheit 212 eine Zellenmodifikation erkannt wird.
-
Bei Block 612 wird das Zusammenführen der erkannten Bildänderung in der aktuellen Anzeige in der Anzeigevorrichtung ausgeführt. In einer Implementierung werden die erkannten Aktualisierungen durch eine Multi-Stream-Decoderkomponente (z.B. Multi-Stream-Decoder 322) empfangen. Die erkannten Aktualisierungen können zusammengeführt werden, indem die Aktualisierungen in einen aktuellen Bildspeicher integriert werden, der in der Aktualisierungseinheit/Bildspeicherkomponente 322 gespeichert ist. Die zusammengeführten Aktualisierungen können an den Anzeigedaten 324 der Vorrichtungsquelle 104 angezeigt werden.
-
Realisierungen gemäß der vorliegenden Erfindung wurden im Kontext bestimmter Ausführungsformen beschrieben. Diese Ausführungsformen sind in einem veranschaulichenden und nicht in einen einschränkenden Sinn zu verstehen. Es sind viele Varianten, Abwandlungen, Ergänzungen und Verbesserungen möglich. Dementsprechend können für die im vorliegenden Text als einzelne Instanz beschriebenen Komponenten mehrere Instanzen bereitgestellt werden. Die Grenzen zwischen verschiedenen Komponenten, Vorgängen und Datenspeichern sind in einem gewissen Maß willkürlich, und bestimmte Vorgänge werden im Kontext mit spezifischen veranschaulichenden Konfigurationen dargestellt. Weitere Zuweisungen von Funktionen sind vorgesehen und können in den Umfang der folgenden Ansprüche fallen. Abschließend können die in verschiedenen Konfigurationen als getrennte Komponenten dargestellten Strukturen und Funktionen als eine kombinierte Struktur oder Komponente implementiert werden. Diese und andere Variationen, Abwandlungen, Modifikationen, Ergänzungen und Verbesserungen können in den Umfang der Erfindung fallen, wie in den folgenden Ansprüchen definiert ist.