-
GEBIET DER OFFENBARUNG
-
Diese Offenbarung betrifft allgemein virtuelle Realität und spezieller Systeme, Geräte, Verfahren und Herstellungsartikel zur Verarbeitung von Video in virtuellen Realitätsumgebungen.
-
HINTERGRUND
-
In einer virtuellen Realität deckt die Videoanzeige im Gegensatz zu anderen Video-Streaming-Anwendungen das gesamte optische Blickfeld eines Benutzers ab. Folglich erwartet das Sehsystem des Benutzers eine Synchronisation zwischen der Bewegung des Benutzers und einer optisch wahrgenommenen Bewegung, wie sie durch das virtuelle Realitätsvideo angezeigt wird, andernfalls kann der Benutzer unter Bewegungskrankheit leiden.
-
Figurenliste
-
- 1 ist ein Blockdiagramm eines beispielhaften Systems zur Verarbeitung von Video in virtuellen Realitätsumgebungen gemäß den Lehren dieser Offenbarung.
- 2A ist ein Blockdiagramm einer beispielhaften Sequenz von Video-Frames.
- 2B ist eine Darstellung von Videobildern der Video-Frames von 2A.
- 3A ist ein Blockdiagramm einer beispielhaften Video-Frame-Sequenz, die ein unruhiges Video erzeugt.
- 3B ist ein Blockdiagramm einer beispielhaften modifizierten Sequenz von Video-Frames.
- 3C ist eine Darstellung von Videobildern der Video-Frames von 3B.
- 4A ist ein Schaubild, das eine beispielhafte Auswirkung von Videoruckeln auf ein Benutzererlebnis zeigt.
- 4B ist ein Schaubild, das ein beispielhaftes bevorzugtes Benutzererlebnis zeigt.
- 5 ist ein Ablaufdiagramm, das für maschinenlesbare Anweisungen repräsentativ ist, die ausgeführt werden können, um Elemente der beispielhaften am Kopf angebrachten Anzeige von 1 zu implementieren.
- 6 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die dazu strukturiert ist, den beispielhaften Host von 1 zu implementieren.
- 7 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die dazu strukturiert ist, die Anweisungen von 5 auszuführen, um die beispielhafte am Kopf angebrachte Anzeige von 1 zu implementieren.
-
Die Figuren sind nicht maßstabgetreu. Außerdem werden allgemein dieselben Bezugsziffern überall in der bzw. den Zeichnungen und der begleitenden geschriebenen Beschreibung verwendet, um auf dieselben oder ähnliche Teile zu verweisen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Virtuelle Realitätssysteme im High-End-Bereich verwenden Kabelverbindungen, um eine am Kopf angebrachte Anzeige, die von dem Benutzer getragen wird, an einen Personalcomputer oder eine andere Videoquelle zu koppeln. Bei traditionellen, verkabelten virtuellen Realitätssystemen unterbricht das Kabel das Erlebnis eines Eintauchens in die virtuelle Realitätsumgebung, weil, wenn der Benutzer das Kabel berührt oder anderweitig fühlt, das Gefühl, das extern zu der virtuellen Realitätsumgebung ist, den Benutzer aus dem virtuellen Realitätserlebnis zieht. Das Kabel bindet zudem den Benutzer und schränkt die Bewegung des Benutzers im Raum ein, was den Benutzer ebenfalls aus dem virtuellen Realitätserlebnis ziehen kann. Wie hierin verwendet, kann der Begriff „Benutzer“ sich auf einen beliebigen Spieler, eine beliebige Person, einen beliebigen Patienten oder einen beliebigen anderen Menschen beziehen, der bzw. die die hierin offenbarten Vorrichtungen verwendet, um eine virtuelle Realitätsumgebung zu erleben. Darüber hinaus werden die Begriffe „virtuelle Realität“ und „virtuelle Realitätsumgebung“ überall in dieser Offenbarung austauschbar verwendet. Außerdem werden die Begriffe „Video“, „Streaming-Video“, „Videodaten“ und „Stream von Videodaten“ überall in dieser Offenbarung austauschbar verwendet.
-
Kabellose Technologie, wie beispielsweise Wireless-Gigabit-Alliance-Technologie (WiGig-Technologie), wurde zur Verwendung mit virtuellen Realitätssystemen implementiert, um Benutzern zu ermöglichen, virtuelle Realität zu erleben, ohne das Risiko, dass das virtuelle Realitätserlebnis durch Berühren des Kabels oder die durch die räumlichen Bewegungseinschränkungen aufgrund der Kabelbindung unterbrochen wird.
-
Die Hauptleistungsindikatoren für kabellose virtuelle Realität sind eine niedrige Videolatenz und Bewegungsverfolgungsdaten. Eine niedrige Latenz des Videos übt großen Einfluss auf das Benutzererlebnis aus, weil am Kopf angebrachte Anzeigen Videofelder aufweisen, die eine hohe Videoauflösung und eine hohe Video-Frame-Rate aufweisen, die mit einem hohen Durchsatz des codierten Videos arbeiten. Bewegungsverfolgungsdaten sind aufgrund der niedrigen Motion-to-Photon-Latenz-Standards für virtuelle Realität ebenfalls für das Benutzererlebnis relevant. Die Motionto-Photon-Latenz ist die Zeit, die erforderlich ist, um eine Benutzerbewegung auf einem Anzeigebildschirm vollständig widerzuspiegeln. Eine niedrige Motion-to-Photon-Latenz überzeugt den Verstand des Benutzers, dass der Benutzer sich an einem anderen Ort befindet, was das virtuelle Realitätserlebnis verbessert. Eine hohe Motion-to-Photon-Latenz führt dazu, dass eine virtuelle Realitätsanzeige einer Benutzerbewegung nachhinkt, was zu einem schlechten virtuellen Realitätserlebnis und/oder Bewegungskrankheit und Übelkeit führt.
-
Kabellose virtuelle Realitätssysteme haben eine variable Bandbreitenkapazität, die bei einigen Verbindungsbedingungen keine Videobandbreite mit ausreichend niedriger Latenz liefern kann. Wenn ein Video-Frame nicht rechtzeitig an einen Videodecoder der am Kopf angebrachten Anzeige geliefert wird (z. B. aufgrund einer erhöhten Latenz), lässt der Videodecoder den späten Video-Frame fallen. In diesem Beispiel wird der Benutzer eine unruhige Videoanzeige, wie beispielsweise Videoruckeln und/oder Bildeinfrieren, sehen. Unruhige Videodaten beinhalten Videodaten, die außerhalb einer Latenzbeschränkung geliefert werden, um zu bewirken, dass die Anzeige ein Video präsentiert, das nicht flüssig oder nahtlos ist oder nicht anderweitig ohne Störung oder Übertragungsprobleme wahrgenommen wird. Somit kann kabellose virtuelle Realität ein virtuelles Erlebnis eines Benutzers in Szenarios beeinträchtigen, in denen die kabellose Verbindung kein Video mit der erwarteten Dienstqualität, d. h. innerhalb einer Latenzbeschränkung, bereitstellen kann.
-
Wenn das virtuelle Realitätsvideo für verhältnismäßig lange Zeiträume (wie beispielsweise länger als etwa 300 Millisekunden) unruhig ist und/oder das virtuelle Realitätsvideo eine wahrgenommene Latenz aufweist, die verhältnismäßig hoch ist (wie beispielsweise länger als etwa 10 Millisekunden), ist der Unterschied zwischen einer Bewegung eines Benutzers und einer optisch wahrgenommenen Bewegung auf der am Kopf angebrachten Anzeige zu stark. Folglich leidet der Benutzer unter Bewegungskrankheit, einschließlich beispielsweise Orientierungslosigkeit, Schwindelgefühl, Übelkeit, Kopfschmerzen und/oder anderen Beschwerden.
-
Einige frühere kabellose virtuelle Realitätssysteme zeigen frühere Video-Frames erneut an, wenn neue Video-Frame-Daten aufgrund von Latenzproblemen nicht rechtzeitig angekommen sind oder überhaupt nicht angekommen sind (z. B. verworfen wurden) und nicht decodiert und auf einem Anzeigefeld in der am Kopf angebrachten Anzeige wie gewünscht präsentiert werden können. Das erneute Anzeigen von früheren Video-Frames erfüllt jedoch die Erwartungen an das virtuelle Realitätsbenutzererlebnis nicht, da entweder die wahrgenommene Videolatenz zu hoch ist oder aufgrund einer Fehlausrichtung zwischen Kopf- oder einer anderen Benutzerbewegung und dem angezeigten Bild Bewegungskrankheit verursacht wird. Andere frühere kabellose virtuelle Realitätssysteme stoppen das Video völlig, was bewirken kann, dass die Anzeige schwarz wird, und bewirken kann, dass der Benutzer sich unbehaglich fühlt und eine Systemfehlfunktion vermutet.
-
Hierin offenbart sind Systeme, Geräte, Verfahren und Herstellungsartikel zur Verarbeitung von Video in einer virtuellen Realitätsumgebung. Das Video kann verarbeitet werden, um Elemente (z. B. Frames), die Bewegungskrankheit verursachen können, zu eliminieren. Um zu verhindern, dass dem Benutzer übel wird, und um das kabellose virtuelle Realitätsgesamterlebnis zu verbessern, werden Szenarios mit verringerter Videoleistung identifiziert und von dem Benutzer durch Anzeigen eines alternativen Videos in der am Kopf angebrachten Anzeige verborgen. In hierin offenbarten Beispielen werden Fälle oder Momente eines unruhigen virtuellen Realitätsvideos (z. B. Videoruckeln und/oder Bildeinfrieren), das von einer Transportschicht mit einer variablen Bandbreitenkapazität verursacht wird, vor einer Anzeige oder während einer Anzeige an den Benutzer identifiziert. Das unruhige virtuelle Realitätsvideo, das auf Videofeldern einer am Kopf angebrachten Anzeige angezeigt werden soll, wird durch alternative Videodaten ersetzt, einschließlich beispielsweise einer alternativen nichtvirtuellen Realitätsvideoanzeige, um Bewegungskrankheit bei dem Benutzer der virtuellen Realität zu verhindern. In einigen Beispielen wird das unruhige virtuelle Realitätsvideo identifiziert, bevor das unruhige Video oder das alternative Video dem Benutzer angezeigt wird (z. B. während einer Anzeige eines anderen, ruhigen Videos). Darüber hinaus wird in einigen Beispielen das unruhige virtuelle Realitätsvideo vor einer Anzeige an den Benutzer identifiziert, wenn beispielsweise ein alternatives Video dem Benutzer angezeigt wird und das fortfahrende eingehende Video unruhig bleibt. Außerdem wird in einigen Beispielen ein unruhiges Video dem Benutzer angezeigt und während der Anzeige identifiziert und während der Anzeige des unruhigen Videos für eine Grenzzeitdauer durch ein alternatives Video ersetzt.
-
In einigen Beispielen ist die alternative nichtvirtuelle Realitätsvideoanzeige eine einfarbige Anzeige. Die einfarbige Anzeige kann mehrere Frames mit einer einzigen Farbe beinhalten. Die einfarbige Anzeige weist für alle Pixel der Anzeige dieselbe Farbe auf. In einigen Beispielen ist die einfarbige Anzeige von einer Farbe mit mittlerer Helligkeitsintensität. Eine hohe Intensität kann als ein störender Blitz erscheinen und eine niedrige Intensität kann als eine Systemfehlfunktion erscheinen. Eine einfarbige Anzeige stellt ein besseres Benutzererlebnis bereit als das erneute Anzeigen von früheren Video-Frames oder das völlige Stoppen des Videos (was bewirken kann, dass die Anzeige schwarz wird, und dem Benutzer eine Systemfehlfunktion signalisieren kann). Eine einfarbige Anzeige weist keine Fokusebene auf. Folglich weist ein Benutzer in einer virtuellen Realitätsumgebung keine Fehlausrichtung der Bewegung des Benutzers mit der auf der am Kopf angebrachten Anzeige gezeigten Bewegung auf, wenn eine einzige Farbe angezeigt wird. Aufgrund der einfarbigen Anzeige zeigt die am Kopf angebrachte Anzeige, wenn der Benutzer sich bewegt, keine andere oder unterbrochene Bewegung, da der Benutzer die einfarbige Anzeige sieht. Folglich gibt es keine Ablenkung, Verwirrung oder Orientierungslosigkeit, und Bewegungskrankheit wird verhindert. Andererseits verursacht eine erneute Anzeige eines früheren Frames von virtuellen Realitätsvideodaten oder eine Anzeige eines anderen unruhigen Videos eine Fehlausrichtung mit den Bewegungen des Benutzers und kann Bewegungskrankheit verursachen. Eine Fehlausrichtung von sogar nur einem Video-Frame kann für den Benutzer erkennbar sein, und wenn die Fehlausrichtung für mehrere Video-Frames anhält, können Gefühle eines Unbehagens einer Bewegungskrankheit resultieren.
-
In einigen Beispielen werden die Benutzer in Bezug auf die Bedeutung der einfarbigen Anzeige benachrichtigt oder anderweitig angewiesen. Beispielsweise können die Benutzer benachrichtigt werden, dass, wenn der Benutzer eine einfarbige Anzeige beobachtet, keine Systemfehlfunktion vorliegt, sondern der Benutzer sich in einem Bereich befindet oder anderweitig einen schlechten Empfang mit den kabellosen Signalen erfährt. Somit kann das Vorliegen einer einfarbigen Anzeige einen Benutzer dazu anregen, sich zu in einer Bemühung zu bewegen, die Signalqualität zu erhöhen. Eine einfarbige Anzeige von einer Farbe mit mittlerer Intensität kann von einer schwarzen Anzeige unterschieden werden, die eine Signalfehlfunktion signalisieren könnte.
-
1 ist ein Blockdiagramm eines beispielhaften Systems 100 zur Verarbeitung von Video in virtuellen Realitätsumgebungen gemäß den Lehren dieser Offenbarung. Das beispielhafte System 100 beinhaltet einen beispielhaften Host 102. In diesem Beispiel beinhaltet der Host 102 einen beispielhaften Grafikprozessor (GPU) 104, einen beispielhaften Encoder 106, einen beispielhaften Taktgeber 108 und einen beispielhaften Transceiver 110. Der GPU 104 erzeugt einen Stream-Videodatensatz, der Video-Frames beinhaltet, die von dem Encoder 106 codiert werden. Der Taktgeber 108 versieht den Stream-Videodatensatz, der von dem Encoder 106 codiert wurde, mit einem Zeitstempel. Der Stream von mit einem Zeitstempel versehenen Videodaten wird mittels dem Transceiver 110 über eine kabellose Verbindung oder Transportschicht 112 an eine beispielhafte am Kopf angebrachte Anzeige 114 übertragen.
-
Die beispielhafte am Kopf angebrachte Anzeige 114 beinhaltet einen beispielhaften Empfänger 116, einen beispielhaften Taktgeber 118, einen beispielhaften Decoder 120, einen beispielhaften Selektor 122, einen beispielhaften Videoanalysator 124, eine beispielhafte Videobibliothek 126 und eine beispielhafte Ausgabeanzeige 128. In einigen Beispielen können der Empfänger 116 (oder ein anderer kabelloser Funk) und der Decoder 120 von der am Kopf angebrachten Anzeige 114 getrennt sein. In derartigen Beispielen werden die Komponenten, um die am Kopf angebrachte Anzeige 114 kabellos zu machen, ein Add-On-Kit sein, das von der am Kopf angebrachten Anzeige 114 getrennt ist. In anderen Beispielen sind diese Komponenten direkt in die am Kopf angebrachte Anzeige 114 integriert.
-
Der Empfänger 116 empfängt kabellose Kommunikationen, einschließlich beispielsweise virtuelles Realitätsvideo, das den Stream von mit einem Zeitstempel versehenen Videodaten beinhaltet, über die kabellose Verbindung 112 von dem Host 102. Der Taktgeber 108 in Kommunikation mit dem Empfänger 116 versieht den Stream-Videodatensatz mit einem Zeitstempel, wenn die Videodaten empfangen werden. Somit wird der Datensatz mit einem Zeitstempel versehen, wenn die Daten sowohl in die kabellose Verbindung 112 eingehen als auch daraus abgehen. Der Taktgeber 108 des Hosts 102 und der Taktgeber 118 der am Kopf angebrachten Anzeige 114 sind synchronisiert. Der Empfänger 116 kommuniziert den Stream von Videodaten, der die Zeitstempel beinhaltet, an sowohl den Decoder 120 als auch den Videoanalysator 124. Der Decoder 120 decodiert den Stream-Videodatensatz und sendet den decodierten oder nicht komprimierten Stream von Videodaten an den Selektor 122.
-
Der Videoanalysator 124 analysiert den Stream von Videodaten, um zu bestimmen, ob Verzögerungen vorliegen, die ein unruhiges Video produzieren werden. In einigen Beispielen bestimmt der Videoanalysator 124 die Latenz-pro-Paket durch Vergleichen des Zeitstempels von dem Taktgeber 108 des Hosts 102 mit dem Zeitstempel von dem Taktgeber 118 der am Kopf angebrachten Anzeige 114. Der Videoanalysator 124 vergleicht die Latenz-pro-Paket mit einem Transportschicht-Latenzbudget, um zu bestimmen, welche Pakete rechtzeitig ankommen (d. h. innerhalb des Latenzbudgets). Das Transportschicht-Latenzbudget wird gemäß einer Systemkonfiguration bestimmt, in der ein vorherbestimmtes Budget für additive kabellose Latenz vorliegt.
-
Der Videoanalysator 124 vergleicht die Anzahl von Videopaketen, die rechtzeitig (d. h. innerhalb des Latenzbudgets) am Empfänger 116 oder am Decoder 120 pro Zeitintervall ankommen, mit dem Schätzwert der Anzahl von Paketen, die in jenem Zeitintervall erwartet werden. Ein unruhiges Video (aufgrund von fehlenden Videopaketen oder Videopaketen, die nicht rechtzeitig ankommen) tritt auf, wenn die Anzahl von Paketen, die rechtzeitig (d. h. innerhalb des Latenzbudgets) in einem Zeitintervall an dem Empfänger 116 oder am Decoder 120 ankommen, niedriger als in jenem Zeitintervall erwartet ist. Die erwartete Anzahl von Paketen hängt auch von der codierten Videostruktur ab, die ein implementationsspezifischer Parameter ist, der anwendungsabhängig ist und bei Auszählung der am Kopf angebrachten Anzeige 114 konfiguriert wird.
-
In einigen Beispielen sind die Zeitintervalle, die von dem Videoanalysator 124 analysiert werden, gleitende Zeitfenster. In einigen Beispielen überlappen die Intervalle zum Teil und die Zeitfenster schreiten voran, wenn die Zeit voranschreitet. Der Videoanalysator 124 berücksichtigt außerdem die Hysterese, wenn bestimmt wird, ob ein Zeitfenster als unruhig eingestuft werden soll.
-
Der Videoanalysator 124 stuft das Zeitfenster durch Vergleichen der Anzahl von Videopaketen, die rechtzeitig (d. h. innerhalb des Latenzbudgets) während des Zeitfensters ankommen, mit Grenzwerten, die auf dem Schätzwert der Anzahl von Paketen, die in jenem Zeitintervall erwartet werden, basieren, ein. Dieser Schätzwert ist gemäß Eingabeparametern der Mindestanzahl von Paketen pro Video-Frame und Video-Frame-Rate. Diese Eingabeparameter sind anwendungsabhängig und werden bei Auszählung der am Kopf angebrachten Anzeige 114 konfiguriert.
-
Zu Hysteresezwecken werden zwei Grenzwertanzahlen von Paketen definiert. Der Videoanalysator 124 vergleicht die Anzahl von Videopaketen, die rechtzeitig während eines Zeitfensters ankommen, und vergleicht die Anzahl mit einem ersten Grenzwert, der ein unterer Grenzwert ist, der ein schlechtes oder unruhiges Video definiert. Wenn eine unzureichende Anzahl von Videopaketen rechtzeitig während des Zeitfensters ankommt, um den ersten Grenzwert zu erreichen oder zu übersteigen (d. h. den unteren Grenzwert zu erreichen oder zu übersteigen), wird das Fenster als schlecht eingestuft. Wenn die Anzahl von Videopaketen, die rechtzeitig während des Zeitfensters ankommen, den ersten Grenzwert erreicht oder übersteigt, vergleicht der Videoanalysator 124 die Anzahl von Videopaketen, die rechtzeitig während des Zeitfensters ankommen, mit einem zweiten Grenzwert, der ein oberer Grenzwert ist und der ein gutes oder ruhiges Video definiert. Wenn die Anzahl von rechtzeitigen Videopaketen den zweiten Grenzwert (d. h. die Mindestanzahl von erwarteten Paketen für eine gute Leistung in jenem Zeitraum) erreicht oder übersteigt, wird das Zeitfenster als gut eingestuft. Andernfalls bestimmt der Videoanalysator 124, dass die Anzahl von rechtzeitigen Videopaketen den ersten Grenzwert erreicht oder übersteigt, jedoch nicht den zweiten Grenzwert erreicht oder übersteigt, und stuft das Zeitfenster als neutral ein.
-
In einigen Beispielen stuft der Videoanalysator 124 ein Zeitfenster durch Beurteilen der Aktivität des Decoders 120 als ein ruhiges/unruhiges virtuelles Video aufweisend ein. Beispielsweise vergleicht der Videoanalysator 124 die Anzahl von Video-Frames, die rechtzeitig am Decoder 120 pro Zeitintervall ankommen oder von dem Decoder 120 gemäß einer Video-Frame-Präsentationszeit verarbeitet werden, mit der Anzahl von Video-Frames, die in jenem Zeitintervall erwartet werden. Wenn die Anzahl von Frames, die am Decoder 120 empfangen oder von diesem verarbeitet wurden, nicht die erwartete Anzahl erreicht oder übersteigt, kann das assoziierte Fenster als schlecht oder unruhig eingestuft werden.
-
In einigen Beispielen stuft der Videoanalysator 124 ein Zeitfenster durch Beurteilen der kabellosen Verbindung 112 als ein ruhiges/unruhiges virtuelles Video aufweisend ein. Beispielsweise empfängt der Videoanalysator 124 Informationen in Bezug auf die Ausgabe des Videoencoders 106 in dem Zeitfenster, um einen gewünschten Videodurchsatz zu ermitteln. Der Videoanalysator 124 vergleicht den gewünschten Videodurchsatz für jenes Zeitfenster mit entweder (1) einem effektiven Bitübertragungsschicht-Ratenschätzwert (PHY-Ratenschätzwert) in jenem Zeitfenster (beispielsweise gemäß Statistiken auf der Basis von einem Modulations- und Codierungsschema (MCS), einer Paketfehlerrate (PER), Verbindungsausfallperioden usw.) oder (2) einem Messwert eines tatsächlichen Videodurchsatzes in jenem Zeitfenster.
-
In einigen Beispielen kommuniziert der Videoanalysator 124 einen ruhigen oder unruhigen Status von Videodaten für ein Intervall an den Selektor 122. Beispielsweise stellt der Videoanalysator 124 eine Angabe von Ruhig, Unruhig, Gut, Schlecht, Neutral usw. an den Selektor 122 bereit. In einigen Beispielen kommuniziert der Videoanalysator 124 Latenz-Informationen an den Selektor 122 zusätzlich oder alternativ zu den ruhigen oder unruhigen (oder guten/schlechten/neutralen) Status-Informationen.
-
Wenn ein Szenario von verhältnismäßig langen Zeiträumen (z. B. Hunderten von Millisekunden und/oder auf der Basis einer Anzahl von identifizierten schlechten Fenstern), in denen Videodaten unruhig sind, identifiziert wird, wählt der Selektor 122 alternative Videodaten (z. B. einen bzw. mehrere einfarbige Frames) aus der Videobibliothek 126 aus, um sie zur Anzeige an einen Benutzer anstelle eines unruhigen virtuellen Realitätsvideos an die Ausgabeanzeige 128 zu kommunizieren. In einigen Beispielen werden die alternativen Videodaten eingeblendet und ausgeblendet, wenn zu der virtuellen Realitätsvideoanzeige zurückgekehrt wird. In einigen Beispielen beinhaltet der Selektor 122 einen Multiplexer (MUX).
-
Wenn der Videoanalysator 124 ein Fenster als gut identifiziert oder einstuft und die Ausgabeanzeige 128 eine Anzeige des decodierten Streams von Videodaten aufweist, fährt der Selektor 122 damit fort, den decodierten Stream von Videodaten an die Ausgabeanzeige 128 auszugeben. In einigen Beispielen, wenn der Videoanalysator 124 ein Fenster als gut identifiziert oder einstuft und die Ausgabeanzeige 128 eine Anzeige von alternativen Videodaten (z. B. eine einfarbige Anzeige) aufweist, ändert der Selektor 122 die Ausgabe von den alternativen Videodaten zu dem decodierten Stream von Videodaten an die Ausgabeanzeige 128.
-
Wenn der Videoanalysator 124 ein Fenster als neutral identifiziert oder einstuft, initiiert der Selektor 122 keine Änderungen der Anzeige an der Ausgabeanzeige 128.
-
In einigen Beispielen weist das alternative Video eine Mindestanzeigezeit auf, um das Benutzererlebnis zu verbessern und ein flimmerndes Video zu verhindem (z. B. Ein-/Ausschalten des alternativen Videos in zwei oder mehr Abfolgen), wenn Abgrenzungslatenzprobleme vorliegen.
-
2A ist ein Blockdiagramm einer beispielhaften Sequenz von Video-Frames. Die Zeitsequenz von 2A beinhaltet keinerlei Latenzprobleme. 2B ist eine Darstellung von Videobildern der Video-Frames von 2A. In der virtuellen Realitätsumgebung würde der Benutzer alle Frames der 2A und 2B erleben.
-
3A ist ein Blockdiagramm einer beispielhaften Video-Frame-Sequenz, die ein unruhiges Video erzeugt. In 3A liegen kabellose Latenzprobleme vor und folglich wird der zweite Frame auf unerwünschte Weise verzögert. Die entsprechenden Videobilder aus der Sequenz von Video-Frames würden unruhig erscheinen. Beispielsweise kann Frame 1 erscheinen, als ob er einfriert, bis Frame 2 empfangen, decodiert und angezeigt wird.
-
Wenn der Videoanalysator 124 identifiziert, dass Frame 2 ein unruhiges Video verursachen wird, werden die Informationen an den Selektor 122 gesendet, der alternative Videodaten aus der Videobibliothek 126 auswählt, um Frame 2 zu ersetzen. 3B ist ein Blockdiagramm einer beispielhaften modifizierten Sequenz von Video-Frames, in der Frame 2 durch Frame(s) X, das alternative Video, ersetzt wurde. Das alternative Video kann mehrere Frames beinhalten. Nach dem alternativen Video (z. B. Frame(s) X) kann das ruhige virtuelle Realitätsvideo mit Frame N fortfahren. Frame N ist in einigen Beispielen äquivalent zu Frame 3, so dass das virtuelle Realitätsvideo fortfährt, wo es nach dem unruhigen Video aufgehört hatte. In anderen Beispielen ist Frame N ein Frame, der nach Frame 3 übertragen wird. 3C ist eine Darstellung von Videobildern der Video-Frames von 3B gezeigt. Wie in 3C gezeigt, ist bzw. sind Frame(s) X eine einfarbige Anzeige, die in dem in 3C gezeigten Beispiel mehrere Frames beinhaltet. Obwohl in 3C eine graue Farbe gezeigt ist, kann eine beliebige Farbe verwendet werden. Wie hierin offenbart, wird in einigen Beispielen eine Farbe oder eine mittlere Helligkeitsintensität verwendet.
-
Obwohl aufgrund des Einfügens von Frame(s) X eine Unterbrechung in den virtuellen Realitätsdaten zwischen Frame 1 und Frame 3 vorliegt, weist bzw. weisen Frame(s) X keine Fokusebene auf. Folglich würde der Benutzer, der den modifizierten Video-Stream der 3B und 3C erlebt, keine Bewegungskrankheit, Übelkeit oder andere Beschwerden erfahren, die von einem unruhigen Video (einschließlich Ruckeln und Bildeinfrieren) und/oder einem Ersatzvideo, das eine Fehlausrichtung mit den Bewegungen des Benutzers und dem Video, das auf der am Kopf angebrachten Anzeige 114 angezeigt wird, erzeugen würde, verursacht werden.
-
4A ist ein Schaubild, das eine beispielhafte Auswirkung von Videoruckeln auf ein Benutzererlebnis (UX) auf der Basis von tatsächlichen Daten, die während einer realen Benutzerstudie gesammelt wurden, zeigt. Wie in 4A gezeigt, wenn ein unruhiges Video vorliegt, einschließlich beispielsweise Ruckeln, erfuhren nahezu alle Benutzer Unbehagen von Verdruss bis zu einem körperlichen Unwohlsein (d. h. Orientierungslosigkeit, Schwindel und Übelkeit fühlend und/oder Bewegungskrankheit erfahrend). 4B zeigt, dass, nachdem ein unruhiges Video durch alternative Videodaten (z. B. einen einfarbigen Frame) ersetzt wurde, das Benutzererlebnis für die große Mehrheit der Benutzer verbessert wurde.
-
Obwohl eine beispielhafte Weise eines Implementierens des Systems 100 zur Verhinderung von Bewegungskrankheit in virtuellen Realitätsumgebungen in 1 dargestellt ist, können eines bzw. einer oder mehrere der Elemente, Prozesse und/oder Geräte, die in 1 dargestellt sind, auf beliebige andere Weise kombiniert, aufgeteilt, neu angeordnet, weggelassen, eliminiert und/oder implementiert werden. Des Weiteren können der beispielhafte GPU 104, der beispielhafte Encoder 106, der beispielhafte Taktgeber 108, der beispielhafte Transceiver 110, der beispielhafte Empfänger 116, der beispielhafte Taktgeber 118, der beispielhafte Decoder 120, der beispielhafte Selektor 122, der beispielhafte Videoanalysator 124, die beispielhafte Videobibliothek 126, die beispielhafte Ausgabeanzeige 128 und/oder allgemeiner der beispielhafte Host 102 oder die beispielhafte am Kopf angebrachte Anzeige 114 von 1 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert sein. Somit könnte ein beliebiger bzw. eine beliebige von dem beispielhaften GPU 104, dem beispielhaften Encoder 106, dem beispielhaften Taktgeber 108, dem beispielhaften Transceiver 110, dem beispielhaften Empfänger 116, dem beispielhaften Taktgeber 118, dem beispielhaften Decoder 120, dem beispielhaften Selektor 122, dem beispielhaften Videoanalysator 124, der beispielhaften Videobibliothek 126, der beispielhaften Ausgabeanzeige 128 und/oder mehr und/oder allgemeiner dem beispielhaften Host 102 oder der beispielhaften am Kopf angebrachten Anzeige 114 durch eine bzw. einen oder mehrere analoge oder digitale Schaltungen, logische Schaltungen, programmierbare Prozessoren, programmierbare Steuerungen, Grafikprozessoren (GPU), digitale Signalprozessoren (DSP), anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD) und/oder feldprogrammierbare Logikvorrichtungen (FPLD) implementiert sein. Beim Lesen eines beliebigen der Geräte- oder Systemansprüche dieses Patents zum Abdecken einer reinen Software- und/oder Firmware-Implementation ist mindestens einer bzw. eine von dem beispielhaften GPU 104, dem beispielhaften Encoder 106, dem beispielhaften Taktgeber 108, dem beispielhaften Transceiver 110, dem beispielhaften Empfänger 116, dem beispielhaften Taktgeber 118, dem beispielhaften Decoder 120, dem beispielhaften Selektor 122, dem beispielhaften Videoanalysator 124, der beispielhaften Videobibliothek 126 und/oder der beispielhaften Ausgabeanzeige 128 hierdurch ausdrücklich definiert, um eine nichtflüchtige computerlesbare Speichervorrichtung oder Speicherdiskette, wie einen Speicher, eine Digital-Versatile-Disk (DVD), eine Compact-Disk (CD), eine Blu-ray-Disk usw., zu beinhalten, die die Software und/oder Firmware beinhaltet. Noch weiter kann das beispielhafte System 100 zur Verhinderung von Bewegungskrankheit in virtuellen Realitätsumgebungen von 1 ein bzw. einen oder mehrere Elemente, Prozesse und/oder Vorrichtungen neben den oder anstelle der in 1 dargestellten beinhalten und/oder kann mehr als ein bzw. einen von beliebigen oder allen der dargestellten Elemente, Prozesse und Vorrichtungen beinhalten. Wie hierin verwendet, umspannt die Phrase „in Kommunikation“, einschließlich Variationen davon, eine direkte Kommunikation und/oder eine indirekte Kommunikation durch eine oder mehrere Zwischenkomponenten und erfordert keine direkte physikalische (z. B. verkabelte) Kommunikation und/oder konstante Kommunikation, sondern beinhaltet vielmehr zusätzlich dazu eine selektive Kommunikation in periodischen Intervallen, geplanten Intervallen, aperiodischen Intervallen und/oder einmaligen Ereignissen.
-
Ein Ablaufdiagramm, das für beispielhafte Hardwarelogik, maschinenlesbare Anweisungen, Hardware-implementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren der am Kopf angebrachten Anzeige 114 von 1 repräsentativ ist, ist in 5 gezeigt. Die maschinenlesbaren Anweisungen können ein ausführbares Programm oder ein Teil eines ausführbaren Programms zur Ausführung durch einen Computerprozessor, wie den Prozessor 1012, der in der beispielhaften Prozessorplattform 700 gezeigt ist, die im Folgenden in Verbindung mit 7 erörtert wird, sein. Das Programm kann in einer Software verkörpert sein, die auf einem nichtflüchtigen computerlesbaren Speichermedium gespeichert ist, wie einer CD-ROM, einer Diskette, einer Festplatte, einer DVD, einer Blu-ray-Disk oder einem Speicher, der mit dem Prozessor 712 assoziiert ist, das gesamte Programm und/oder Teile davon könnten jedoch alternativ dazu von einem Gerät ausgeführt werden, bei dem es sich nicht um den Prozessor 712 handelt, und/oder in Firmware oder dedizierter Hardware verkörpert sein. Obwohl das beispielhafte Programm unter Bezugnahme auf das in 5 dargestellte Ablaufdiagramm beschrieben wird, können des Weiteren alternativ dazu viele andere Verfahren zum Implementieren der am Kopf angebrachten Anzeige 114 verwendet werden. Die Reihenfolge der Ausführung der Blöcke kann beispielsweise geändert werden und/oder einige der beschriebenen Blöcke können geändert, eliminiert oder kombiniert werden. Zusätzlich oder alternativ dazu können beliebige oder alle der Blöcke durch eine oder mehrere Hardwareschaltungen (z. B. einzelne und/oder integrierte analoge und/oder digitale Schaltkreise, ein FPGA, eine ASIC, ein Komparator, ein Operationsverstärker (op-amp), eine logische Schaltung usw.) implementiert werden, die dazu strukturiert sind, die entsprechende Operation ohne Ausführen von Software oder Firmware durchzuführen.
-
Wie oben erwähnt, kann der beispielhafte Prozess von 5 unter Verwendung von ausführbaren Anweisungen (z. B. computer- und/oder maschinenlesbare Anweisungen) implementiert werden, die auf einem nichtflüchtigen computer- und/oder maschinenlesbaren Medium gespeichert sind, wie einem Festplattenlaufwerk, einem Flash-Speicher, einem Festwertspeicher, einer Compact-Disk, einer Digital-Versatile-Disk, einem Cache, einem Direktzugriffsspeicher und/oder einer beliebigen anderen Speichervorrichtung oder Speicherdiskette, in der Informationen für eine beliebige Dauer (z. B. für längere Zeiträume, permanent, für kurze Momente, zum vorübergehenden Zwischenspeichern und/oder zum Cachen der Informationen) gespeichert werden. Wie hierin verwendet, ist der Begriff nichtflüchtiges computerlesbares Medium ausdrücklich definiert, um einen beliebigen Typ einer computerlesbaren Speichervorrichtung und/oder Speicherdiskette zu beinhalten und sich ausbreitende Signale auszuschließen und Übertragungsmedien auszuschließen.
-
„Beinhaltend‟ und „umfassend“ (und alle Formen und Zeitformen davon) werden hierin verwendet, um uneingeschränkte Begriffe zu sein. Somit ist zu verstehen, dass jedes Mal, wenn ein Anspruch eine beliebige Form von „beinhalten“ oder „umfassen“ (z. B. umfasst, beinhaltet, umfassend, beinhaltend, aufweisend usw.) als einen Oberbegriff oder innerhalb eines Anspruchsvortrags einer beliebigen Art einsetzt, zusätzliche Elemente, Begriffe usw. vorliegen können, ohne außerhalb des Schutzumfangs des entsprechenden Anspruchs oder Vortrags zu fallen. Wie hierin verwendet, wenn die Phrase „mindestens“ als der Wechselbegriff in beispielsweise einem Oberbegriff eines Anspruchs verwendet wird, ist er auf dieselbe Weise uneingeschränkt, wie die Begriffe „umfassend“ und „beinhaltend“ uneingeschränkt sind. Der Begriff „und/oder“, wenn er beispielsweise in einer Form wie A, B und/oder C verwendet wird, bezieht sich auf eine beliebige Kombination oder eine beliebige Teilmenge von A, B, C, wie (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C und (7) A mit B und mit C.
-
Das Programm 500 von 5 beinhaltet den Videoanalysator 124 der am Kopf angebrachten Anzeige 114, der einen Paketzählwert bezieht, der eine Anzahl von Videopaketen angibt, die rechtzeitig (d. h. innerhalb eines Latenzbudgets) an dem Empfänger 116 der am Kopf angebrachten Anzeige 114 (Block 502) in einem Zeitfenster angekommen sind. Der Paketzählwert kann auf der Basis von Daten, die am Empfänger 116 empfangen werden, der Aktivität des Decoders 120 und/oder der Aktivität oder Charakteristika der kabellosen Verbindung 112 bestimmt werden, wie oben offenbart.
-
Der Videoanalysator 124 vergleicht den Paketzählwert mit Grenzwerten (Block 504). In diesem Beispiel vergleicht der Videoanalysator 124 den Paketzählwert mit einem unteren Grenzwert und einem oberen Grenzwert. In anderen Beispielen kann eine andere Anzahl von Grenzwerten verwendet werden. Der Videoanalysator 124 bestimmt, ob der Paketzählwert niedriger als der untere Grenzwert ist (Block 506). Wenn der Paketzählwert niedriger als der untere Grenzwert ist, sind die Videodaten, die in dem Zeitfenster empfangen werden, für die Produktion eines ruhigen Videos unzureichend. Somit bestimmt der Videoanalysator 124, dass das Fenster ein schlechtes Fenster ist (Block 508). Die Videodaten, die einem schlechten Fenster entsprechen, werden ein Ruckeln, eingefrorene Bilder und/oder ein Video mit anderen unruhigen Charakteristika produzieren.
-
Wenn von einem Fenster bestimmt wird, dass es schlecht ist, ersetzt der Selektor 122 die Videodaten in dem schlechten Fenster durch alternative Videodaten, die von der Videobibliothek 126 empfangen werden, und kommuniziert die alternativen Videodaten an die Ausgabeanzeige 128, um das alternative Video anzuzeigen (Block 510). Das alternative Video wird für eine Mindestzeitdauer, wie beispielsweise eine ausreichende Zeitdauer, um zu ermöglichen, dass zusätzliche Videopakete an der am Kopf angebrachten Anzeige 114 rechtzeitig ankommen, um ein niedriges Latenzerfordernis für die Anzeige von ruhigem Video zu erfüllen, angezeigt.
-
Der Videoanalysator 124 justiert das Zeitfenster (Block 512) und der beispielhafte Prozess 500 fährt damit fort, dass der Videoanalysator 124 den Paketzählwert für das nächste Zeitfenster bezieht (Block 502).
-
Wie oben offenbart, vergleicht der Videoanalysator 124 den Paketzählwert mit Grenzwerten (Block 504) und bestimmt, ob der Paketzählwert niedriger als der untere Grenzwert ist (Block 506). Wenn der Paketzählwert nicht niedriger als der untere Grenzwert ist (d. h. der Paketzählwert ist gleich dem oder höher als der untere Grenzwert), bestimmt der Videoanalysator 124, ob der Paketzählwert höher als oder gleich einem oberen Grenzwert ist (Block 514). Wenn der Paketzählwert höher als oder gleich dem unteren Grenzwert ist, werden die Videodaten, die in dem Zeitfenster empfangen werden, rechtzeitig empfangen und sind für die Produktion eines ruhigen Videos ausreichend. Somit bestimmt der Videoanalysator 124, dass das Fenster ein gutes Fenster ist (Block 516).
-
Wenn der Videoanalysator 124 bestimmt, dass der Paketzählwert für ein Zeitfenster ausreichend ist, um ein ruhiges Video zu produzieren, bestimmt der Selektor 122, ob ein alternatives Video (z. B. ein einfarbiger Frame) an der Ausgabeanzeige 128 der am Kopf angebrachten Anzeige 114 angezeigt wird (Block 518). Wenn ein alternatives Video nicht auf der Ausgabeanzeige 128 angezeigt wird, wählt der Selektor 122 die Streaming-Videodaten zur Anzeige (d. h. einen unmodifizierten Stream von Videodaten) aus (oder fährt damit fort, diese auszuwählen) (Block 520). Das Programm 500 fährt damit fort, dass der Videoanalysator 124 das Zeitfenster justiert (Block 512) und den Paketzählwert für das nächste Zeitfenster bezieht (Block 502).
-
Wenn der Videoanalysator 124 bestimmt, dass der Paketzählwert für ein Zeitfenster den oberen Grenzwert erreicht und ausreichend ist, um ein ruhiges Video zu produzieren (Block 514), und somit ein gutes Fenster ist (Block 516), und der Selektor 122 bestimmt, dass ein alternatives Video (z. B. ein einfarbiger Frame) an der Ausgabeanzeige 128 der am Kopf angebrachten Anzeige 114 angezeigt wird (Block 518), bestimmt der Selektor 122, ob das alternative Video für eine Mindestzeitdauer angezeigt wurde (Block 522). Wenn das alternative Video nicht für eine Mindestzeitdauer angezeigt wurde, fährt der Selektor 122 damit fort, das alternative Video an die Ausgabeanzeige 128 zur Anzeige zu kommunizieren (Block 510). Das Programm 500 fährt damit fort, dass der Videoanalysator 124 das Zeitfenster justiert (Block 512) und den Paketzählwert für das nächste Zeitfenster bezieht (Block 502).
-
Wenn der Selektor 122 bestimmt, dass ein alternatives Video für eine Mindestzeitdauer angezeigt wurde (Block 522), wechselt der Selektor 122 die Videodaten, um zu bewirken, dass die Ausgabeanzeige 128 die Streaming-Videodaten (d. h. die unmodifizierten Videodaten) anzeigt (Block 520). Das Programm 500 fährt damit fort, dass der Videoanalysator 124 das Zeitfenster justiert (Block 512) und den Paketzählwert für das nächste Zeitfenster bezieht (Block 502).
-
Wie oben offenbart, vergleicht der Videoanalysator 124 den Paketzählwert mit Grenzwerten (Block 504) und bestimmt, ob der Paketzählwert niedriger als der untere Grenzwert ist (Block 506). Wenn der Paketzählwert nicht niedriger als der untere Grenzwert ist (d. h. der Paketzählwert ist gleich dem oder höher als der untere Grenzwert), bestimmt der Videoanalysator 124, ob der Paketzählwert höher als oder gleich einem oberen Grenzwert ist (Block 514). Wenn der Paketzählwert den unteren Grenzwert erreicht, jedoch nicht größer als oder gleich dem oberen Grenzwert ist, werden die Videodaten, die in dem Zeitfenster empfangen werden, nicht mit einer akzeptablen Latenzmenge empfangen, um ein ruhiges Video sicherzustellen, werden jedoch nicht notwendigerweise ein unruhiges Video verursachen. Somit bestimmt der Videoanalysator 124, dass das Fenster ein neutrales Fenster ist (Block 524). Für ein neutrales Fenster nimmt der Selektor 122 keine Änderungen an der Anzeige vor.
-
Das Programm 500 fährt damit fort, dass der Videoanalysator 124 das Zeitfenster justiert (Block 512) und den Paketzählwert für das nächste Zeitfenster bezieht (Block 502).
-
6 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 600, die dazu strukturiert ist, den Host 102 von 1 zu implementieren. 7 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 700, die strukturiert ist, um die Anweisungen von 5 auszuführen, um die am Kopf angebrachte Anzeige 114 von 1 zu implementieren. Die Prozessorplattformen 600, 700 können beispielsweise ein Server, ein Personalcomputer, eine Workstation, eine selbstlernende Maschine (z. B. ein neuronales Netzwerk), ein Mobilgerät (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet, wie ein iPad™), ein Minicomputer (PDA), eine Internet-Einrichtung, ein DVD-Player, ein CD-Player, ein digitaler Videorecorder, ein Blu-ray-Player, eine Spielkonsole, ein persönlicher Videorecorder, ein Digitalempfänger, ein Headset oder eine andere tragbare Vorrichtung oder ein beliebiger anderer Typ einer Datenverarbeitungsvorrichtung sein.
-
Die Prozessorplattformen 600, 700 des dargestellten Beispiels beinhalten jeweilige Prozessoren 612, 712. Die Prozessoren 612, 712 der dargestellten Beispiele sind Hardware. Beispielsweise können die Prozessoren 612, 712 durch einen oder mehrere integrierte Schaltungen, logische Schaltungen, Mikroprozessoren, GPU, DSP oder Steuerungen von einer beliebigen gewünschten Familie oder einem beliebigen gewünschten Hersteller implementiert sein. Der Hardwareprozessor kann eine halbleiterbasierte (z. B. siliziumbasierte) Vorrichtung sein. In diesem Beispiel implementiert der Prozessor 612 den GPU 104, den Encoder 106, den Taktgeber 108 und den Transceiver 110. Ebenfalls in diesem Beispiel implementiert der Prozessor 712 den Empfänger 116, den Taktgeber 118, den Decoder 120, den Selektor 122, den Videoanalysator 124, die Videobibliothek 126 und die Ausgabeanzeige 128 (oder einen Teil der Ausgabeanzeige 128).
-
Die Prozessoren 612, 712 der dargestellten Beispiele beinhalten einen jeweiligen lokalen Speicher 613, 713 (z. B. einen Cache). Die Prozessoren 612, 712 der dargestellten Beispiele sind mittels jeweiliger Busse 618, 718 in Kommunikation mit einem jeweiligen Hauptspeicher, der einen flüchtigen Speicher 612, 714 und einen nichtflüchtigen Speicher 616, 716 beinhaltet. Der flüchtige Speicher 614, 714 kann durch einen synchronen dynamischen Direktzugriffsspeicher (SDRAM), einen dynamischen Direktzugriffsspeicher (DRAM), einen dynamischen RAMBUS®-Direktzugriffsspeicher (RDRAM®) und/oder einen beliebigen anderen Typ einer Direktzugriffsspeichervorrichtung implementiert sein. Der nichtflüchtige Speicher 616, 716 kann durch einen Flash-Speicher und/oder einen beliebigen anderen gewünschten Typ einer Speichervorrichtung implementiert sein. Der Zugriff auf den Hauptspeicher 614, 616, 714, 716 wird durch eine Speichersteuerung gesteuert.
-
Die Prozessorplattformen 600, 700 der dargestellten Beispiele beinhalten außerdem eine jeweilige Schnittstellenschaltung 620, 720. Die Schnittstellenschaltung 620, 720 kann durch einen beliebigen Typ eines Schnittstellenstandards implementiert sein, wie eine Ethernet-Schnittstelle, ein universeller serieller Bus (USB), eine Bluetooth®-Schnittstelle, eine Nahfeldkommunikationsschnittstelle (NFC-Schnittstelle) und/oder eine PCI-Express-Schnittstelle.
-
In den dargestellten Beispielen sind eine oder mehrere Eingabevorrichtungen 622, 722 mit den jeweiligen Schnittstellenschaltungen 620, 720 verbunden. Die Eingabevorrichtungen 622, 722 ermöglichen einem Benutzer, Daten und/oder Befehle in die jeweiligen Prozessoren 612, 712 einzugeben. Die Eingabevorrichtung kann durch beispielsweise einen Audiosensor, ein Mikrofon, eine Kamera (Standfoto oder Video), eine Tastatur, eine Taste, eine Maus, einen Berührungsbildschirm, ein Tastfeld, ein Isopoint und/oder ein Spracherkennungssystem implementiert sein.
-
Eine oder mehrere Ausgabevorrichtungen 624, 724 sind ebenfalls mit den jeweiligen Schnittstellenschaltungen 620, 720 der dargestellten Beispiele verbunden. Die Ausgabevorrichtungen 624, 724 können beispielsweise durch Anzeigevorrichtungen (z. B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhrenanzeige (CRT), eine In-Place-Switching-Anzeige (IPS-Anzeige), ein Berührungsbildschirm usw.), eine taktile Ausgabevorrichtung, einen Drucker und/oder einen Lautsprecher implementiert sein. Die Schnittstellenschaltungen 620, 720 der dargestellten Beispiele beinhalten somit in der Regel eine Grafiktreiberkarte, einen Grafiktreiberchip und/oder einen Grafiktreiberprozessor.
-
Die Schnittstellenschaltungen 620, 720 der dargestellten Beispiele beinhalten außerdem eine Kommunikationsvorrichtung, wie einen Sender, einen Empfänger, einen Transceiver, ein Modem, ein Residential Gateway, einen kabellosen Zugangspunkt und/oder eine Netzwerkschnittstelle, um einen Austausch von Daten mit externen Maschinen (z. B. Datenverarbeitungsvorrichtungen einer beliebigen Art) mittels jeweiligen Netzwerken 626, 726 zu erleichtern. Die Kommunikation kann mittels beispielsweise einer Ethernet-Verbindung, einem digitalen Teilnehmeranschluss (DSL), einer Telefonleitung, einem Koaxialkabelsystem, einem Satellitensystem, einem kabellosen Sichtliniensystem, einem Mobiltelefonsystem, WiGig (IEEE 802.11ad / IEEE 802.11ay), WiFi usw. sein.
-
Die Prozessorplattformen 600, 700 der dargestellten Beispiele beinhalten außerdem eine oder mehrere Massenspeichervorrichtungen 628, 728 zum Speichern von Software und/oder Daten. Beispiele von derartigen Massenspeichervorrichtungen 628, 728 beinhalten Diskettenlaufwerke, Festplattenlaufwerke, Compact-Disk-Laufwerke, Blu-ray-Laufwerke, Redundant-Array-of-Independent-Di sks-Systeme (RAID-Systeme) und Digital-Versatile-Disk-Laufwerke (DVD-Laufwerke).
-
Die maschinenausführbaren Anweisungen 632, 732 und das beispielhafte Programm 500 von 5 können in den Massenspeichervorrichtungen 628, 728, in dem flüchtigen Speicher 614, 714, in dem nichtflüchtigen Speicher 616, 716 und/oder auf einem herausnehmbaren greifbaren computerlesbaren Speichermedium, wie einer CD oder DVD, gespeichert werden.
-
Aus dem Vorstehenden wird man zu schätzen wissen, dass beispielhafte Geräte, Systeme, Herstellungsartikel und Verfahren offenbart wurden, die Video verarbeiten, um Elemente zu entfernen, die Bewegungskrankheit in virtuellen Realitätsumgebungen verursachen können. Ein alternatives Video, wie beispielsweise eine einfarbige Anzeige, ersetzt ein unruhiges Video, das von Datenübertragungslatenzproblemen verursacht wird. Eine einfarbige Anzeige stellt ein besseres Benutzererlebnis als das unruhige Video (wie beispielsweise Ruckeln und/oder eingefrorene Bilder) oder das erneute Anzeigen von früheren Video-Frames bereit. Eine einfarbige Anzeige weist keine Fokusebene auf und ein Benutzer in einer virtuellen Realitätsumgebung erfährt während der Anzeige der einfarbigen Frames keine Fehlausrichtung einer Benutzerbewegung mit einer Bewegung (oder einem Fehlen einer Bewegung), die auf einer Anzeige in einer am Kopf angebrachten Anzeige, angezeigt wird. Das Benutzererlebnis wird verbessert, da die Benutzer weniger Bewegungskrankheit oder andere Beschwerden erleben, wenn sie der alternativen Anzeige (z. B. der einzigen Farbe) ausgesetzt werden, als der Benutzer während der Latenzprobleme (d. h. dem unruhigen Video) erleben würde.
-
Darüber hinaus arbeiten hierin offenbarte Beispiele auf der Seite der am Kopf angebrachten Anzeige. Ein Vorteil eines Ausführens eines Algorithmus, wie eines eigenständigen Algorithmus, auf der Seite der am Kopf angebrachten Anzeige besteht darin, dass eine kabellose Verbindung unterbrochen werden kann und die am Kopf angebrachte Anzeige damit fortfahren wird, ein unruhiges Video zu erkennen, ohne Anweisungen von der Host-Seite über den Äther empfangen zu haben.
-
Die offenbarten Systeme, Vorrichtungen, Verfahren, Geräte und Herstellungsartikel verbessern die Effizienz eines Verwendens einer Datenverarbeitungsvorrichtung durch Ersetzen eines unruhigen Videos, das durch Computerkommunikationslatenzprobleme erzeugt wurde, um ein Benutzererlebnis zu verbessern. Die offenbarten Verfahren, Geräte und Herstellungsartikel zielen dementsprechend auf eine oder mehrere Verbesserungen der Funktionsweise eines Computers und/oder Datenverarbeitungssystems ab.
-
Darüber hinaus helfen hierin offenbarte Lösungen dabei, Bedenken zu mildern, dass Originalausrüstungshersteller und/oder Benutzer mit einem Einsetzen und/oder Verwenden von kabellosen virtuellen Realitätssystemen aufgrund einer Nutzung von potentiell unzuverlässigen Transportschichten, die von Dritten bereitgestellt werden, haben können. Des Weiteren können hierin offenbarte Lösungen auch mit einer erhöhten Unterstützung für Videolatenz, um unruhiges Video zu verhindern, ergänzt oder verstärkt worden sein.
-
Hierin offenbart sind beispielhafte Systeme, Geräte, Herstellungsartikel und Verfahren zur Verarbeitung von Video in virtuellen Realitätsumgebungen. Beispiel 1 beinhaltet eine virtuelle Realitätsanzeigevorrichtung, um Video in einer virtuellen Realitätsumgebung zu verarbeiten, wobei die Vorrichtung einen Videoanalysator, um unruhige Videodaten in einem Stream von Videodaten zu erkennen, und eine Videobibliothek, um alternative Videodaten bereitzustellen, beinhaltet. Die Vorrichtung von Beispiel 1 beinhaltet außerdem einen Selektor, um den Stream von Videodaten, eine Angabe der unruhigen Videodaten und die alternativen Videodaten zu empfangen. Der Selektor ist außerdem dazu, die alternativen Videodaten auszuwählen, um die unruhigen Videodaten auf der Basis der Angabe der unruhigen Videodaten zu ersetzen, und einen modifizierten Stream von Videodaten auszugeben, der den Stream von Videodaten mit den alternativen Videodaten anstelle der unruhigen Videodaten beinhaltet. Die Vorrichtung von Beispiel 1 beinhaltet außerdem eine Ausgabeanzeige, um den modifizierten Stream von Videodaten anzuzeigen.
-
Beispiel 2 beinhaltet die Vorrichtung von Beispiel 1, wobei die alternativen Videodaten dazu sind, wenn sie angezeigt werden, eine einfarbige Anzeige zu erzeugen.
-
Beispiel 3 beinhaltet die Vorrichtung von Beispiel 1, wobei der Videoanalysator dazu ist, ein unruhiges Video auf der Basis eines Vergleichens einer Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream pro einem Zeitintervall ankommen, mit einer geschätzten Anzahl von Videopaketen, die in jenem Zeitintervall erwartet werden, zu erkennen.
-
Beispiel 4 beinhaltet die Vorrichtung von Beispiel 3, wobei die geschätzte Anzahl auf einem bzw. einer oder mehreren von einem Transportschicht-Latenzbudget, einer Videoauflösung, einer Encoderkompressionsrate oder einer Anzahl von Frames pro Sekunde basiert.
-
Beispiel 5 beinhaltet die Vorrichtung von Beispiel 1, wobei der Videoanalysator dazu ist, unruhige Videodaten auf der Basis eines Vergleichens einer Anzahl von Videopaketen, die in dem Video-Stream pro einem Zeitintervall ankommen, mit einem ersten Grenzwert und einem zweiten Grenzwert zu erkennen, wobei der zweite Grenzwert sich von dem ersten Grenzwert unterscheidet.
-
Beispiel 6 beinhaltet die Vorrichtung von Beispiel 5, wobei der Videoanalysator dazu ist, unruhige Videodaten zu erkennen, wenn die Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream ankommen, niedriger als der erste Grenzwert ist.
-
Beispiel 7 beinhaltet die Vorrichtung von Beispiel 5, wobei der Videoanalysator dazu ist, ruhige Videodaten zu erkennen, wenn die Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream ankommen, größer als oder gleich dem zweiten Grenzwert ist.
-
Beispiel 8 beinhaltet die Vorrichtung von Beispiel 1, wobei der Selektor nach einer Grenzzeitdauer und bei Erkennen von ruhigen Videodaten durch den Videoanalysator den Stream von Videodaten ohne die alternativen Videodaten ausgeben soll.
-
Beispiel 9 beinhaltet die Vorrichtung von Beispiel 1, wobei die Ausgabeanzeige dazu ist, ein gesamtes Blickfeld eines Benutzers abzudecken.
-
Beispiel 10 beinhaltet die Vorrichtung von Beispiel 1, wobei unruhige Videodaten Videodaten beinhalten, die außerhalb einer Latenzbeschränkung geliefert wurden, um zu bewirken, dass die Anzeige eines oder mehrere von einem eingefrorenen Bild oder Videoruckeln ausgibt.
-
Beispiel 11 beinhaltet eine virtuelle Realitätsanzeigevorrichtung, um Video in einer virtuellen Realitätsumgebung zu verarbeiten, wobei die Vorrichtung ein Mittel zum Erkennen von unruhigen Videodaten in einem Stream von Videodaten und eine Videobibliothek, um alternative Videodaten bereitzustellen, beinhaltet. Die Vorrichtung von Beispiel 11 beinhaltet außerdem ein Mittel zum Auswählen von Daten durch: Empfangen des Streams von Videodaten, einer Angabe der unruhigen Videodaten und der alternativen Videodaten; Auswählen der alternativen Videodaten, um die unruhigen Videodaten auf der Basis der Angabe der unruhigen Videodaten zu ersetzen; und Ausgeben eines modifizierten Streams von Videodaten, der den Stream von Videodaten mit den alternativen Videodaten anstelle der unruhigen Videodaten beinhaltet. Die Vorrichtung von Beispiel 11 beinhaltet außerdem ein Mittel zum Anzeigen des modifizierten Streams von Videodaten.
-
Beispiel 12 beinhaltet die Vorrichtung von Beispiel 11, wobei die alternativen Videodaten dazu sind, wenn sie angezeigt werden, eine einfarbige Anzeige zu erzeugen.
-
Beispiel 13 beinhaltet die Vorrichtung von Beispiel 11, wobei das Mittel zum Erkennen dazu ist, ein unruhiges Video auf der Basis eines Vergleichens einer Anzahl von Videopaketen, die in dem Video-Stream in einer Latenz, die kleiner als oder gleich einem Transportschicht-Latenzbudget ist, pro einem Zeitintervall ankommen, mit einer geschätzten Anzahl von Videopaketen, die in jenem Zeitintervall erwartet werden, zu erkennen.
-
Beispiel 14 beinhaltet die Vorrichtung von Beispiel 13, wobei die geschätzte Anzahl von Videopaketen, die in jenem Zeitintervall erwartet werden, auf einer Kombination von Video-Frames pro Sekunde, der vom Videoencoder geschätzten Größe von ausgegebenen Paketen und Transportschicht-Paketgrößen basiert.
-
Beispiel 15 beinhaltet die Vorrichtung von Beispiel 11, wobei das Mittel zum Erkennen dazu ist, unruhige Videodaten auf der Basis eines Vergleichens einer Anzahl von Videopaketen, die in dem Video-Stream pro einem Zeitintervall ankommen, mit einem ersten Grenzwert und einem zweiten Grenzwert zu erkennen, wobei der zweite Grenzwert sich von dem ersten Grenzwert unterscheidet.
-
Beispiel 16 beinhaltet die Vorrichtung von Beispiel 15, wobei das Mittel zum Erkennen dazu ist, unruhige Videodaten zu erkennen, wenn die Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream ankommen, niedriger als der erste Grenzwert ist.
-
Beispiel 17 beinhaltet die Vorrichtung von Beispiel 15, wobei das Mittel zum Erkennen dazu ist, ruhige Videodaten zu erkennen, wenn die Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream ankommen, größer als oder gleich dem zweiten Grenzwert ist.
-
Beispiel 18 beinhaltet die Vorrichtung von Beispiel 11, wobei das Mittel zum Auswählen nach einer Grenzzeitdauer und bei Erkennen von ruhigen Videodaten durch das Mittel zum Erkennen dazu ist, den Stream von Videodaten ohne die alternativen Videodaten auszugeben.
-
Beispiel 19 beinhaltet die Vorrichtung von Beispiel 11, wobei das Mittel zum Anzeigen dazu ist, ein gesamtes Blickfeld eines Benutzers abzudecken.
-
Beispiel 20 beinhaltet die Vorrichtung von Beispiel 11, wobei unruhige Videodaten Videodaten beinhalten, die außerhalb einer Latenzbeschränkung geliefert wurden, um zu bewirken, dass die Anzeige eines oder mehrere von einem eingefrorenen Bild oder Videoruckeln ausgibt.
-
Beispiel 21 beinhaltet ein nichtflüchtiges computerlesbares Speichermedium, das computerlesbare Anweisungen beinhaltet, die bei Ausführung bewirken, dass eine oder mehrere Maschinen mindestens Folgendes durchführen: Erkennen von unruhigen Videodaten in einem Stream von Videodaten; Bereitstellen von alternativen Videodaten; Empfangen des Streams von Videodaten, einer Angabe der unruhigen Videodaten und der alternativen Videodaten; Auswählen der alternativen Videodaten, um die unruhigen Videodaten auf der Basis der Angabe der unruhigen Videodaten zu ersetzen; und Ausgeben eines modifizierten Streams von Videodaten, der den Stream von Videodaten mit den alternativen Videodaten anstelle der unruhigen Videodaten beinhaltet.
-
Beispiel 22 beinhaltet das Speichermedium von Beispiel 21, wobei die alternativen Videodaten dazu sind, wenn sie angezeigt werden, eine einfarbige Anzeige zu erzeugen.
-
Beispiel 23 beinhaltet das Speichermedium von Beispiel 21, wobei die Anweisungen weiterhin bewirken, dass die eine oder die mehreren Maschinen ein unruhiges Video auf der Basis eines Vergleichens einer Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream pro einem Zeitintervall ankommen, mit einer geschätzten Anzahl von Videopaketen, die in jenem Zeitintervall erwartet werden, erkennen.
-
Beispiel 24 beinhaltet das Speichermedium von Beispiel 23, wobei die geschätzte Anzahl auf einem bzw. einer oder mehreren von einem Transportschicht-Latenzbudget, einer Videoauflösung, einer Encoderkompressionsrate oder einer Anzahl von Frames pro Sekunde basiert.
-
Beispiel 25 beinhaltet das Speichermedium von Beispiel 21, wobei die Anweisungen weiterhin bewirken, dass die eine oder die mehreren Maschinen unruhige Videodaten auf der Basis eines Vergleichens einer Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream pro einem Zeitintervall ankommen, mit einem ersten Grenzwert und einem zweiten Grenzwert erkennen, wobei der zweite Grenzwert sich von dem ersten Grenzwert unterscheidet.
-
Beispiel 26 beinhaltet das Speichermedium von Beispiel 25, wobei die Anweisungen weiterhin bewirken, dass die eine oder die mehreren Maschinen unruhige Videodaten erkennen, wenn die Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream ankommen, niedriger als der erste Grenzwert ist.
-
Beispiel 27 beinhaltet das Speichermedium von Beispiel 25, wobei die Anweisungen weiterhin bewirken, dass die eine oder die mehreren Maschinen ruhige Videodaten erkennen, wenn die Anzahl von Videopaketen, die in dem Video-Stream ankommen, größer als oder gleich dem zweiten Grenzwert ist.
-
Beispiel 28 beinhaltet das Speichermedium von Beispiel 21, wobei die Anweisungen weiterhin nach einer Grenzzeitdauer und bei Erkennen von ruhigen Videodaten durch die eine oder mehreren Maschinen bewirken, dass die eine oder die mehreren Maschinen den Stream von Videodaten ohne die alternativen Videodaten ausgeben.
-
Beispiel 29 beinhaltet das Speichermedium von Beispiel 21, wobei die Ausgabe dazu ist, ein gesamtes Blickfeld eines Benutzers abzudecken.
-
Beispiel 30 beinhaltet das Speichermedium von Beispiel 21, wobei unruhige Videodaten Videodaten beinhalten, die außerhalb einer Latenzbeschränkung geliefert wurden, um zu bewirken, dass eine Anzeige eines oder mehrere von einem eingefrorenen Bild oder Videoruckeln ausgibt.
-
Beispiel 31 beinhaltet ein Verfahren zur Verarbeitung von Video in einer virtuellen Realitätsumgebung, wobei das Verfahren ein Erkennen von unruhigen Videodaten in einem Stream von Videodaten und ein Bereitstellen von alternativen Videodaten beinhaltet. Das Verfahren von Beispiel 31 beinhaltet außerdem ein Empfangen des Streams von Videodaten, einer Angabe der unruhigen Videodaten und der alternativen Videodaten. Darüber hinaus beinhaltet das Verfahren nach Beispiel 31 ein Auswählen der alternativen Videodaten, um die unruhigen Videodaten auf der Basis der Angabe der unruhigen Videodaten zu ersetzen, und ein Ausgeben eines modifizierten Streams von Videodaten, der den Stream von Videodaten mit den alternativen Videodaten anstelle der unruhigen Videodaten beinhaltet.
-
Beispiel 32 beinhaltet das Verfahrensbeispiel 31, wobei die alternativen Videodaten dazu sind, wenn sie angezeigt werden, eine einfarbige Anzeige zu erzeugen.
-
Beispiel 33 beinhaltet das Verfahrensbeispiel 31 und beinhaltet weiterhin ein Erkennen eines unruhigen Videos auf der Basis eines Vergleichens einer Anzahl von Videopaketen, die in dem Video-Stream in einer Latenz, die kleiner als oder gleich einem Transportschicht-Latenzbudget ist, pro einem Zeitintervall ankommen, mit einer geschätzten Anzahl von Videopaketen, die in jenem Zeitintervall erwartet werden.
-
Beispiel 34 beinhaltet das Verfahrensbeispiel 33, wobei die geschätzte Anzahl von Videopaketen, die in jenem Zeitintervall erwartet werden, auf einer Kombination von Video-Frames pro Sekunde, der vom Videoencoder geschätzten Größe von ausgegebenen Paketen und Transportschicht-Paketgrößen basiert.
-
Beispiel 35 beinhaltet das Verfahrensbeispiel 31 und beinhaltet weiterhin ein Erkennen von unruhigen Videodaten auf der Basis eines Vergleichens einer Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream pro einem Zeitintervall ankommen, mit einem ersten Grenzwert und einem zweiten Grenzwert, wobei der zweite Grenzwert sich von dem ersten Grenzwert unterscheidet.
-
Beispiel 36 beinhaltet das Verfahrensbeispiel 35 und beinhaltet weiterhin ein Erkennen von unruhigen Videodaten, wenn die Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream ankommen, niedriger als der erste Grenzwert ist.
-
Beispiel 37 beinhaltet das Verfahrensbeispiel 35 und beinhaltet weiterhin ein Erkennen von ruhigen Videodaten, wenn die Anzahl von Videopaketen, die rechtzeitig in dem Video-Stream ankommen, größer als oder gleich dem zweiten Grenzwert ist.
-
Beispiel 38 beinhaltet das Verfahrensbeispiel 31, wobei das Verfahren weiterhin nach einer Grenzzeitdauer und bei Erkennen von ruhigen Videodaten ein Ausgeben des Streams von Videodaten ohne die alternativen Videodaten beinhaltet.
-
Beispiel 39 beinhaltet das Verfahrensbeispiel 31 und beinhaltet weiterhin ein Abdecken eines gesamten Blickfelds eines Benutzers mit der Ausgabe von modifizierten Video-Stream-Daten.
-
Beispiel 40 beinhaltet das Verfahrensbeispiel 31, wobei unruhige Videodaten Videodaten beinhalten, die außerhalb einer Latenzbeschränkung geliefert wurden, um zu bewirken, dass eine Anzeige eines oder mehrere von einem eingefrorenen Bild oder Videoruckeln ausgibt.
-
Obwohl bestimmte beispielhafte Verfahren, Vorrichtungen und Herstellungsartikel hierin offenbart wurden, ist der Abdeckungsumfang dieses Patents nicht darauf beschränkt. Im Gegensatz dazu deckt dieses Patent alle Verfahren, Vorrichtungen und Herstellungsgegenstände ab, die angemessen in den Schutzumfang der Ansprüche dieses Patents fallen.