-
GEBIET DER OFFENBARTEN TECHNOLOGIE
-
Die offenbarte Technologie betrifft allgemein das Multicaststreaming von Video-Datenstrom-Quellen und betrifft insbesondere das Beseitigen von Schaltverzögerungen zwischen Video-Datenströmen in einer Multicaststreaming-Umgebung.
-
HINTERGRUND
-
Der in diesem Abschnitt diskutierte Gegenstand sollte nicht allein infolge seiner Erwähnung in diesem Abschnitt als Stand der Technik angenommen werden. Analog sollte das in diesem Abschnitt erwähnte oder mit dem als Hintergrund dargestellten Gegenstand in Verbindung gebrachte Problem nicht als bereits im Stand der Technik erkannt angenommen werden. Der Gegenstand in diesem Abschnitt stellt lediglich unterschiedliche Vorgehensweisen dar, die für sich selbst genommen ebenfalls Umsetzungen der beanspruchten Technologie entsprechen können.
-
Multicaststreaming-Technologien betreffen die Übertragung von mehreren Video/Audio-Datenströmen zu einzelnen Clients. Jeder solche Datenstrom kann von einer anderen Video/Audio-Quelle stammen und kann zur Übertragung unterschiedliche Netzwerktechnologien nutzen, etwa Internet, Ethernet, Frame Relay, Faser, etc. Ein wesentlicher Nachteil solcher Systeme ist die Latenz, d. h. die erforderliche Bandbreite ist direkt proportional zur Anzahl an Video/Audio-Quellen, die streamen. Daher ist für das Durchführen von Video/Audio-Streaming hoher Qualität eine hohe Bandbreite erforderlich.
-
Das Problem der Latenz wird in Multicastingstreaming-Umgebungen, die ein sofortiges Umschalten zwischen verschiedenen komprimierten Video/Audio-Datenströmen erfordern, verschärft. Es wurden verschiedene Lösungen vorgeschlagen, um die Schaltverzögerung zwischen komprimierten Video/Audio-Datenströmen zu reduzieren. Diese Lösungen waren aber nicht restlos erfolgreich, da sie entweder den Clients zusätzlichen unerwünschten Rechenaufwand aufbürden oder auf ein Umschalten zwischen Datenströmen beschränkt sind, die von der gleichen Quelle stammen. Demgemäß sind neue technische Lösungen erforderlich, um die Beschränkungen des Stands der Technik zu überwinden.
-
In einer Multicastingstreaming-Umgebung ergibt sich die Möglichkeit, einen reibungslosen Wechsel zwischen mehreren komprimierten Video/Audio-Quellen durchzuführen, ohne dass zusätzliche Bandbreite erforderlich ist oder die Rechenressourcen der Clients belastet werden. Das Ergebnis könnte eine verbesserte Nutzererfahrung und -zufriedenheit sein.
-
ZUSAMMENFASSUNG
-
Die offenbarte Technologie betrifft das Ermöglichen eines reibungslosen Wechselns zwischen komprimierten Video-Datenströmen. Sie betrifft insbesondere die zeitliche Planung von Wechseln zwischen komprimierten Video-Datenströmen, die in einer Anzeigefläche gezeigt werden sollen, so dass während eines Decodierens, Dekomprimierens und Pufferns eines ersten Video-Datenstroms zwecks Anzeige das Decodieren, Dekomprimieren und Puffern eines zweiten Video-Datenstroms bei einem vorbestimmten Zeitpunkt vor einem geplanten Zeigen des zweiten Video-Datenstroms beginnt. Weiterhin betrifft sie das Umschalten von Puffern zwischen der Anzeige des ersten und zweiten Video-Datenstroms bei dem geplanten Zeigen des zweiten Video-Datenstroms, was zu einer sofortigen verzögerungsfreien Anzeige des zweiten Video-Datenstroms führt.
-
In einer Umsetzung umfasst das Umschalten zwischen den Puffern für den ersten und zweiten Video-Datenstrom ferner das Modifizieren eines z-Anordnens (so genanntes z-ordering) von Anzeigeschichten entsprechend dem ersten und zweiten Video-Datenstrom, wodurch eine Graphikkarte eine Anzeige bildet, die statt des ersten Video-Datenstroms den zweiten Video-Datenstrom sichtbar macht.
-
In einer anderen Umsetzung umfasst ein Umschalten zwischen den Puffern für den ersten und den zweiten Video-Datenstrom ferner ein Schicht-2-Umschalten der Lieferung des ersten und des zweiten Video-Datenstroms, um statt des ersten Video-Datenstroms den zweiten Video-Datenstrom zur Anzeige zu liefern.
-
In einer noch anderen Umsetzung umfasst ein Umschalten zwischen den Puffern für den ersten und den zweiten Video-Datenstrom ferner das Aktualisieren einer Video-Schaltmatrix, um statt des ersten Video-Datenstroms den zweiten Video-Datenstrom mit der Anzeige zu koppeln.
-
Ein anderes Merkmal der offenbarten Technologie ist das Bewerten eines zeitlichen Abstands zwischen Schlüsselbildern in dem zweiten Video-Datenstrom und das Wählen der vorbestimmten Zeit beruhend zumindest zum Teil auf dem zeitlichen Abstand.
-
Im Fall von mehreren Paaren von ersten und zweiten Video-Datenströmen umfasst die offenbarte Technologie das in eine Reihenfolge bringen von zeitlich geplanten Wechseln zwischen den ersten und zweiten Video-Datenströmen, um eine Anzahl von Video-Datenströmen zu reduzieren, die zwischen dem Decodieren des ersten und zweiten Video-Datenstroms gleichzeitig unterwegs sind.
-
Andere Aspekte und Vorteile der vorliegenden Erfindung sind bei Prüfen der Zeichnungen, der eingehenden Beschreibung und der Ansprüche, welche folgen, ersichtlich.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
In den Zeichnungen bezeichnen in den gesamten verschiedenen Ansichten gleiche Bezugszeichen im Allgemeinen gleiche Teile. Die Zeichnungen sind ferner nicht unbedingt maßstabsgetreu, wobei stattdessen allgemein ein Schwerpunkt auf das Aufzeigen der Prinzipien der offenbarten Technologie gelegt wird. In der folgenden Beschreibung werden verschiedene Umsetzungen der offenbarten Technologie unter Verweis auf die folgenden Zeichnungen beschrieben, wobei:
-
1 eine beispielhafte Multicaststreaming-Umgebung zeigt.
-
2 ein Blockdiagramm eines beispielhaften Arbeitsflusses zeigt, bei dem die hierin offenbarten Technologien verwendet werden können.
-
3 eine Umsetzung einer pseudosimultanen Verarbeitung von aktuellen und folgenden Video-Datenströmen in einem zeitversetzten Modus zeigt, um ein reibungsloses Wechseln zwischen komprimierten Video-Datenströmen zu bewirken.
-
4 eine Umsetzung zum Bewerten eines zeitlichen Abstands zwischen Schlüsselbildern und zur zeitlichen Planung eines Umschaltens beruhend auf dem bewerteten zeitlichen Abstand zeigt.
-
5 eine Umsetzung zum Modifizieren eines z-Anordnens unterschiedlicher komprimierter Video-Datenströme in einer Multicaststreaming-Umgebung ist, um ein sofortiges Umschalten zwischen den komprimierten Video-Datenströmen zu ermöglichen.
-
6 ist ein repräsentatives Verfahren zum reibungslosen Wechseln zwischen komprimierten Video-Datenströmen.
-
7 ist ein Blockdiagramm eines beispielhaften Computersystems zum reibungslosen Wechseln zwischen komprimierten Video-Datenströmen.
-
BESCHREIBUNG
-
Die folgende eingehende Beschreibung erfolgt mit Verweis auf die Figuren. Es werden beispielhafte Umsetzungen beschrieben, um die offenbarte Technologie zu veranschaulichen, nicht um ihren Schutzumfang zu beschränken, der durch die Ansprüche festgelegt ist. Der Durchschnittsfachmann wird eine Vielzahl von äquivalenten Varianten der anschließenden Beschreibung erkennen.
-
Terminologie
-
Wie hierin verwendet bezeichnet ein ”zweiter” oder ”folgender” Video-Datenstrom eine bestimmte Angabe, Einspeisung, ein bestimmtes Signal, einen bestimmten Vorgang oder Wert, der/die auf einen ”ersten” oder ”aktuellen” Vorgänger-Video-Datenstrom folgt, der aus einer Angabe, Einspeisung, einem Signal, Vorgang oder Wert bestehen kann. In einer Umsetzung wird ein ”zweiter” oder ”folgender” Video-Datenstrom nach einem ”ersten” oder ”aktuellen” Video-Datenstrom verarbeitet. In einer anderen Umsetzung wird ein ”zweiter” oder ”folgender” Video-Datenstrom gleichzeitig mit einem ”ersten” oder ”aktuellen” Video-Datenstrom verarbeitet. In einer noch anderen Umsetzung wird ein ”zweiter” oder ”folgender” Video-Datenstrom pseudosimultan oder pseudoparallel mit einem ”ersten” oder ”aktuellen” Video-Datenstrom verarbeitet, so dass die Verarbeitung des ”zweiten” oder ”folgenden” Video-Datenstroms nach einer vorbestimmten Zeitverzögerung relativ zum Einleiten der Verarbeitung des ”ersten” oder ”aktuellen” Video-Datenstroms beginnt, wobei der Begriff ”Verarbeitung” das Anzeigen eines bestimmten Video-Datenstroms umfasst. In einem pseudosimultanen Modus liegt zwischen dem Decodieren, Dekomprimieren, Puffern oder Anzeigen des ”ersten” oder ”aktuellen” Video-Datenstroms und dem Decodieren, Dekomprimieren, Puffern oder Anzeigen des ”zweiten” oder ”folgenden” Video-Datenstroms eine zeitliche Überschneidung vor, wobei das Decodieren, ein Umschaltbefehl zur Anzeige des ”zweiten” oder ”folgenden” Video-Datenstroms empfangen wird.
-
Wie hierin verwendet ”beruht” ein bestimmtes Signal, ein bestimmter Vorgang oder Wert auf einem Vorgängersignal, einem Vorgang oder Wert des Vorgängersignals, wobei der Vorgang oder Wert durch das bestimmte Signal, den bestimmten Vorgang oder Wert beeinflusst wird. Wenn ein dazwischentretendes Verarbeitungselement, ein dazwischentretender Verarbeitungsschritt oder Verarbeitungszeitraum vorliegt, kann das bestimmte Signal, der bestimmte Vorgang oder Wert immer noch auf dem Vorgängersignal, -vorgang oder -wert ”beruhen”. Wenn das dazwischentretende Verarbeitungselement oder der dazwischentretende Verarbeitungsschritt mehr als ein Signal, einen Vorgang oder Wert kombiniert, wird die Signalausgabe des Verarbeitungselements oder -schritts ”beruhend auf” jeweils den Signal-, Vorgangs- oder Werteingaben betrachtet. Wenn das bestimmte Signal, der bestimmte Vorgang oder Wert gleich dem Vorgängersignal, -vorgang oder -wert ist, liegt lediglich ein Entartungsfall vor, bei dem das bestimmte Signal, der bestimmte Vorgang oder Wert immer noch ”beruhend auf” oder ”abhängig von” dem Vorgängersignal, -vorgang oder -wert betrachtet wird. Das ”Ansprechverhalten” eines bestimmten Signals, Vorgangs oder Werts auf ein anderes Signal, einen anderen Vorgang oder Wert ist ähnlich definiert.
-
Einführung
-
Bestehende Multicaststreaming-Lösungen gehen das technische Problem von Schaltverzögerungen auf unterschiedlichste Weise an. Zum Minimieren der Unterbrechung bei Verwenden von H.264-komprimierten Video-Datenströmen zum Beispiel kann das maximale Intervall, bei dem I-Frames erzeugt werden, verringert werden. Bei einer solchen Vorgehensweise beträgt bei Erzeugen eines I-Frame mindestens einmal pro Sekunde die Zeitdauer, die zum Starten des Zeigens eines neuen Video-Datenstroms erforderlich ist, etwas mehr als eine Sekunde, mit einer mittleren Zeit von einer halben Sekunde. Das Problem bei dieser Vorgehensweise ist, dass ein häufiges Enden von I-Frames den Kompressionsbetrag des Video-Datenstroms verringert, was den Betrag der erforderlichen Bandbreite, die zu dessen Senden erforderlich ist, vergrößert. In einem anderen Beispiel unterstützen einige Video-Datenstrom-Quellen eine Forderung, die eine Übertragung eines Schlüsselbilds forciert. Diese Art von forcierter Forderung unterstützen aber nur wenige Video-Datenstrom-Quellen.
-
Die offenbarte Technologie löst das technische Problem einer sichtbaren Unterbrechung, die auf einem Videowand-Steuersystem bei Umschalten zwischen komprimierten Video-Datenströmen in einer sogenannten Touring-Anordnung sichtbar ist. Videowand-Steuersysteme, etwa das Canvas System von Jupiter Systems, bieten die Fähigkeit, in dem gleichen Videoanzeigefenster die Ausgabe von einer Reihe von Eingaben zu zeigen. Diese Fähigkeit wird als ”Touring” bezeichnet. Historisch verwenden diese Arten von Systemen häufig direkte und nicht komprimierte Videoeingänge, wechseln aber zunehmend zu komprimierten Eingängen in Video-Formaten wie etwa H.264, die über ein Netzwerk übertragen werden. Bei einem Touring-System erfordert ein Umschalten zwischen direkt verbundenen nicht komprimierten Eingängen typischerweise nur ein paar Bilder, in der Größenordnung von einer Zehntelsekunde – wie das Umschalten eines Senders bei einem Fernseher.
-
Bei Verwenden von komprimierten Eingängen, die über ein Netzwerk gesendet werden, bewirkt ein Umschalten zwischen Eingängen typischerweise eine Unterbrechung (von bis zu mehreren Sekunden) im Video-Datenstrom, was zu einem leeren oder eingefrorenen Bildschirm führt, während das System mit dem Decodieren des neuen Datenstroms beginnt. Die Ursache dieser Unterbrechung ist, dass die Kompressionstechniken, die für Video verwendet werden, nur ab und zu das Senden eines Video-Vollbilds (eines ”I-Frames oder ”Schlüsselbilds”) und dann das Senden nur von ”Delta”-Informationen (”P-Frames” oder ”B-Frames”) mit sich bringen, die nur unter Verwenden des zuletzt übertragenen I-Frame wieder zu einem Vollbild zusammengesetzt werden können. Bei Umschalten zu einem neuen Datenstrom kann die Anzeigeausgabe daher nicht fortfahren, bis in dem neuen Datenstrom ein I-Frame empfangen wird, und selbst dann kann es ein paar mehr Bilder dauern, bis die Decoderlogik eine gleichmäßige Videoausgabe erzeugen kann. Das Anzeigen eines leeren oder eingefrorenen Bildschirms kann die Nutzererfahrung signifikant mindern.
-
Die hierin vorgeschlagene technische Lösung umfasst das Verwenden eines zusätzlichen Satzes einer Decodierungslogik und eines Arbeitsspeichers, um in einer Multicaststreaming-Umgebung ein sofortiges Umschalten von einem Video-Datenstrom zu einem anderen zu bewirken. Insbesondere umfasst sie das Anlegen von Verarbeitungseinleitungszeitverzögerungen, um mehrere von Decodierungslogik- und Arbeitsspeichereinheiten pseudosimultan oder pseudoparallel oder gleichzeitig oder parallel zu verwenden, um aktuelle und folgende Video-Datenströme, die zu der gleichen Anzeige gerichtet werden, zu verarbeiten, so dass ein Decodieren eines folgenden Video-Datenstroms eingeleitet wird, bevor das Eintreten eines Umschaltens angesetzt ist.
-
In einer Umsetzung wird ein Touring-Zeitplan für ein Videowand-Steuersystem so festgelegt, dass statt des einfachen Stoppens der Verarbeitung eines aktuellen Datenstroms c und des Startens der Verarbeitung eines folgenden Video-Datenstroms Ss bei Zeitpunkt T die offenbarte Technologie eine Hintergrundverarbeitung des folgenden Video-Datenstroms Ss bei einem früheren Zeitpunkt T – t startet und dann bei Zeitpunkt T die Anzeige von dem aktuellen Datenstrom Sc zu dem folgenden Video-Datenstrom Ss umschaltet.
-
Die Hintergrundverarbeitung eines folgenden Video-Datenstroms umfasst das Zuweisen von datenstromspezifischen Verarbeitungsressourcen zu dem folgenden Video-Datenstrom, die den folgenden Video-Datenstrom decodieren und dekomprimieren und den verarbeiteten folgenden Video-Datenstrom in einem datenstromspezifischen Puffer für sofortiges Absenden des folgenden Video-Datenstroms während eines Umschaltens speichern. In einer Umsetzung wird dies durch Nutzen von Graphikbefehlen einer Graphikprozessoreinheit (GPU) erreicht, um eine Reihenfolge von Fensterschichten für die verschiedenen Video-Datenstroms in der Multicaststreaming-Umgebung festzulegen. Diese Reihenfolge, die als ”z-Reihenfolge” bezeichnet wird, ordnet ein zweites Fenster, in dem der folgende Video-Datenstrom angezeigt wird, hinter einem den aktuellen Datenstrom anzeigenden Fenster an. Eine solche Anordnung erzeugt die Multicaststreaming-Umgebung für ein sofortiges Umschalten ohne Unterbrechen der Anzeige des aktuellen Datenstroms.
-
Nach Verarbeiten des folgenden Video-Datenstroms und dessen Speichern in seinem datenstromspezifischen Puffer während der Anzeige des aktuellen Datenstroms kann ein Umschalten von dem aktuellen Datenstrom zu dem folgenden Video-Datenstrom mit minimaler oder keiner Schaltverzögerung nahtlos ausgeführt werden. In einer Umsetzung wird dies durch Ändern der z-Reihenfolge des zweiten Fensters erreicht, die es vor das erste, den aktuellen Datenstrom anzeigende Fenster treten lässt. Weiterhin plant die offenbarte Technologie etwaige Verarbeitungsressourcen von dem vorherigen aktuellen Datenstrom aus und löscht das den vorherigen aktuellen Datenstrom anzeigende erste Fenster.
-
Daher ist die offenbarte Technologie eine Verbesserung gegenüber aktuellen Verfahren zum Umschalten zwischen Video-Datenströmen in einer Touring-Anordnung, da es die sichtbare Unterbrechung bei Wechseln der Video-Datenströme beseitigt, mit allen Video-Datenstrom-Quellen arbeitet und keine häufige Übertragung von I-Frames erfordert.
-
Die offenbarte Technologie kann bei Anlagen wie etwa Network Operation Centers (NOC), Steuerzentren von Versorgungsbetrieben, Zentren für intelligentes Verkehrsmanagement, Prozesssteuerung, zivilen und militärischen Überwachungssystemen, Call-Centern, Finanzmanagement-Leitständen, Tagungsräumen und Videokonferenzräumen vorteilhaft genutzt werden.
-
Die offenbarte Technologie kann in unterschiedlicher Weise umgesetzt werden, einschließlich als Prozess, Vorrichtung, System, Einrichtung, Verfahren, maschinell lesbares Medium wie etwa ein maschinell lesbares Speichermedium, das maschinell lesbare Befehle oder Computerprogrammcode enthält, oder als Computerprogrammprodukt, das ein auf einem Computer nutzbares Medium mit einem darin verkörperten maschinell lesbaren Programmcode umfasst.
-
Eine nähere Beschreibung von Umsetzungen der offenbarten Technologie wird mit Verweis auf 1–7 VORGESEHEN.
-
Multicaststreaming-Umgebung
-
Wir beschreiben ein System und verschiedene Umsetzungen zum reibungslosen Wechseln zwischen komprimierten Video-Datenströmen. Das System und die Prozesse werden unter Verweis auf 1 beschrieben, die ein Schaubild auf Architekturebene eines Systems gemäß einer Umsetzung zeigt. Da 1 ist Architektur-Schaubild ist, sind bestimmte Einzelheiten bewusst ausgelassen, um die Verständlichkeit der Beschreibung zu verbessern. Die Diskussion von 1 ist wie folgt aufgebaut. Zunächst werden die Elemente der Figur beschrieben, gefolgt von deren Wechselverbindungen. Dann wird die Verwendung der Elemente in dem System näher beschrieben.
-
1 umfasst die Multicaststreaming-Umgebung 100. Die Umgebung 100 umfasst Nutzerrechenvorrichtungen 102a–n, eine Netzwerkschnittstelle 104 und eine Anzeigewand 106. 1 zeigt auch eine Wechselvorrichtung 112, ein Netzwerk/Netzwerke 115, Quad-Decoder 116, Dekompressor 126 und Video-Datenstrom-Quellen 132a–n. Puffer 122a–n speichern u. a. verarbeitete Datenströme von den verschiedenen Video-Datenstrom-Quellen 132a–n und sind einzelnen Video-Datenstrom-Quellen fest zugeordnet, so dass zum Beispiel der Puffer 122a für die Video-Quelle 132a bestimmt ist und der Puffer 122b für die Video-Quelle 132b bestimmt ist.
-
In anderen Umsetzungen könnte die Umgebung 100 nicht die gleichen Elemente oder Komponenten wie vorstehend aufgeführt aufweisen und/oder könnte stattdessen oder zusätzlich zu den vorstehend aufgeführten andere/verschiedene Elemente oder Komponenten aufweisen, etwa einen Abruf-Datenbankdienst, ein vorhandenes Modul oder eine Anwendungsplattform. Die unterschiedlichen Elemente oder Komponenten können zu einzelnen Softwaremodulen kombiniert werden, und mehrere Softwaremodule können auf der gleichen Hardware laufen.
-
Nun wird die Verbindung der Elemente der Umgebung 100 beschrieben. Das Netzwerk 115 koppelt die Nutzerrechenvorrichtungen 102a–n, die Anzeigewand 106, die Netzwerkschnittstelle 104 und die Video-Datenstrom-Quellen 132a–n kommunizierend (durch die Doppelkopfpfeile angedeutet). Der tatsächliche Verbindungsweg kann von Punkt zu Punkt über öffentliche und/oder private Netzwerke sein. Manche Dinge, wie etwa AppWrapper (nicht gezeigt), könnten indirekt, z. B. mittels eines (nicht gezeigten) App-Stores, geliefert werden. Alle Kommunikationen können über verschiedene Netzwerke, z. B. private Netzwerke, VPN, MPLS-Schaltung oder Internet, erfolgen und können geeignete APIs und Datenaustauschformate, z. B. REST, JSON, XML, SOAP und/oder JMS, verwenden. Alle Kommunikationen können verschlüsselt werden. Diese Kommunikation erfolgt im Allgemeinen über ein Netzwerk wie etwa LAN (Local Area Netzwork), WAN (Wide Area Network); Telefonnetz (Public Switched Telephone Network (PSTN), Session Initiation Protocol (SIP), drahtloses Netzwerk, Punkt-zu-Punkt-Netzwerk, Stern-Netzwerk, Token-Ring-Netzwerk, Hub-Netzwerk, Internet, inklusive des mobilen Internets, Via-Protokolle wie etwa EDGE, 3G, 4G LTE, Wi-Fi und WiMAX. Zusätzlich können verschiedene Autorisierungs- und Authentifizierungstechniken wie etwa Nutzername/Passwort, OAuth, Kerberos, SecureID, digitale Zertifikate und mehr verwendet werden, um die Kommunikationen zu sichern.
-
Die Netzwerkschnittstelle 104, die Wechselvorrichtung 112, Quad-Decoder 116, Dekompressor 126 und Puffer 122a–n können ein mehr mehrere Computer und Computersysteme umfassen, die miteinander kommunizierend gekoppelt sind. Sie können auch eine oder mehrere virtuelle Rechen- und/oder Speicherressourcen sein. Zum Beispiel kann die Wechselvorrichtung 112 ein oder mehrere Amazon-EC2-Instanzen sein, und die Puffer 122a–n könne Amazon-S3-Speicher sein. Andere Rechenleistung als Service anbietende Plattformen wie etwa Force.com von Salesforce, Rackspace oder Heroku könnten statt des Umsetzens der vorstehend genannten Komponenten auf direkten physischen Computern oder traditionellen virtuellen Maschinen verwendet werden. Zusätzlich können die vorstehend genannten Komponenten als Engines umgesetzt werden. Die Engines können von unterschiedlichen Arten sein, einschließlich einer Graphikprozessoreinheit (GPU), einer Workstation, eines Servers, eines Rechenclusters, eines Bladeservers, einer Serverfarm oder eines anderen Datenverarbeitungssystems oder einer anderen Rechenvorrichtung.
-
Nutzerrechenvorrichtungen 102a–n können Desktop-PCs, Laptop-Computer, Tablet-Computer, Smartphones, PDAs (persönliche digitale Assistenten), digitale Bilderfassungsvorrichtungen, Mobiltelefone oder beliebige drahtloszugangsprotokoll(WAP)-fähige Vorrichtungen oder beliebige andere Rechenvorrichtungen, die sich direkt oder indirekt mit dem Internet oder einer anderen Netzwerkverbindung verbinden können, sein. Nutzerrechenvorrichtungen 102a–n können einen HTTP-Client, z. B. ein Browserprogramm, etwa Microsofts Browser Internet Explorer, Mozillas Browser Firefox, Operas Browser, Googles Chrome oder bei einem Mobiltelefon, einem PDA oder einer anderen Funkvorrichtung einen WAP-fähigen Browser oder dergleichen laufen lassen, was es einem Teilnehmer einer Videokonferenz erlaubt, auf Informationen, Seiten und Anwendungen, die ihm aus der Umgebung 100 über das Netzwerk/die Netzwerke 115 zur Verfügung stehen, zuzugreifen, diese zu verarbeiten und einzusehen.
-
Nutzerrechenvorrichtungen 102a–n umfassen auch ein oder mehrere Benutzeroberflächenvorrichtungen, wie etwa eine Tastatur, eine Maus, einen Trackball, ein Touchpad, einen berührungsempfindlichen Bildschirm, einen Stift oder dergleichen, zum Interagieren mit einer Videokonferenzschnittstelle in Verbindung mit Seiten, Formularen, Anwendungen und anderen Informationen, die von der Umgebung 100 oder anderen Systemen oder Servern bereitgestellt werden. Zum Beispiel können Nutzerrechenvorrichtungen 102a–n genutzt werden, um Wechselvorgänge, Konferenzen anzusetzen, Selektionen vorzunehmen, auf Daten und Anwendungen, die von der Umgebung 100 gehostet werden, zuzugreifen, und in gespeicherten Daten zu suchen und ansonsten einem Teilnehmer einer Videokonferenz das Interagieren mit verschiedenen Videoschnittstellenseiten zu erlauben.
-
Bei Arbeiten in der Multicaststreaming-Umgebung 100 können Kameras 132a–n eine Live-Videoeinspeisung (d. h. sowohl Audio- als auch Bildinformationen) von verschiedenen Orten und/oder Nutzern bereitstellen. In manchen Umsetzungen können die Kameras 132a–n eine beliebige Art von Kamera sein, einschließlich Kameras, die über das sichtbare Spektrum empfindlich sind, oder typischer mit verbesserter Empfindlichkeit gegenüber einem begrenzten Wellenlängenband (z. B. die Infrarot(IR)- oder Ultraviolett-Bänder); allgemeiner bezeichnet der Begriff ”Kamera” hierin eine beliebige Vorrichtung (oder Kombination von Vorrichtungen), die ein Bild eines Objekts erfassen und das Bild in der Form von digitalen Daten darstellen kann. Zum Beispiel können die Kameras 132a–n Überwachungskameras oder private Kameras, die auf einer Struktur, wie etwa einem Gebäude oder einem Strommast, montiert sind, sein. In einem anderen Beispiel können die Kameras 132a–n in vorstehend beschriebenen Nutzerrechenvorrichtungen 102a–n eingebettet sein oder können periphere Vorrichtungen sein, die Video während einer Videokonferenz streamen können.
-
In manchen Umsetzungen können Nutzerrechenvorrichtungen 102a–n und Kameras 132a–n mit den verschiedenen Servern und Prozessoren (104, 112, 116, 126) unter Verwenden eines TCP/IP-Netzwerks (Transfer Control Protocol und Internetprotokoll) kommunizieren und auf einer höheren Netzwerkebene für das Kommunizieren andere übliche Internetprotokolle nutzen, etwa HTTP, FTP, AFS, WAP, etc.
-
In einem Beispiel, in dem HTTP verwendet wird, können die Vorrichtungen 102a–n und die Kameras 132a–n in einer Umgebung 100 einen HTTP-Clienten zum Senden und Empfangen von HTTP-Meldungen zu und von einem HTTP-Server umfassen. Ein solcher HTTP-Server kann als einzige Netzwerkschnittstelle zwischen den verschiedenen Servern und Prozessoren und dem Netzwerk/den Netzwerken 115 implementiert werden, doch können stattdessen auch andere Techniken genutzt werden. In manchen Umsetzungen umfasst die Schnittstelle zwischen den verschiedenen Servern und Prozessoren und dem Netzwerk/den Netzwerken 115 eine Lastverteilungsfunktionalität, etwa Rundlauf-HTTP-Anfrageverteiler, um Lasten auszugleichen und eingehende HTTP-Anfragen gleichmäßig auf mehrere Server zu verteilen.
-
Die Umgebung 100 implementiert auch eine Anzeigewand 108, etwa Fusion Catalyst von Jupiter Systems, die durch eine Videoschaltmatrix wie etwa Fusion Catalyst von Jupiter Systems gesteuert wird. Die Anzeigewand 108 fördert eine End-to-End-Konferenz zwischen Teilnehmern einer Videokonferenz, so dass ferne Teilnehmer Datenströme von mehreren Video-Datenströmen (Kameras 132a–n), die auf der Anzeigewand 108 ausgestrahlt werden, sowohl als Quellen als auch als Empfänger teilen können.
-
In einer Umsetzung kann eine paketvermittelte Technologie verwendet werden, um eine Informationsquelle auf der Anzeigewand 108, etwa ein einzelnes Fenster, das mehrere Bildschirme auf der Anzeigewand 108 überspannt, oder getrennte Fenster, die über verschiedenen Bildschirmen auf der Anzeigewand 108 einzeln dargestellt werden, zu zeigen. In einer Umsetzung unterstützt die Videoschaltmatrix Client-Software-Anwendungen und liefert damit verbundene Daten, Code, Formulare, Webseiten und andere Informationen zu und von Nutzerrechenvorrichtungen 102a–n und Kameras 132a–n.
-
Der Quad-Decoder/die Quad-Decoder 116 ist/sind ausgelegt, um einen komprimierten Video-Datenstrom zu empfangen und beruhend auf einem dem Video-Datenstrom zugeordneten Code zu decodieren. Wie hierin verwendet bezeichnet der Begriff ”Codec” den Algorithmus, der zum Kodieren (z. B. Komprimieren) oder Decodieren (z. B. Dekomprimieren) von Videobildern genutzt wird. In einer Umsetzung kann/können der/die Quad-Decoder 116 eine Quad HD Decoder Card von Jupiter Systems sein, die vier unabhängige Decoder aufweist, die jeweils Video-Datenströme verschiedenster Formate und Quellenarten handhaben kann. In einer Umsetzung kann/können der/die Quad-Decoder 116 Datenströme in MPEG-2, MPEG-4, H.264 unterstützen und können Datenströme von IP-Kameras, NVRs, Desktop-Kodierern und Videomanagementsystemen decodieren und anzeigen. In einer anderen Umsetzung kann er Quellenauflösungen unterstützen, die von NTSC und PAL zu Full High Definition 1080 p reichen. Jeder Decoder kann seinen eigenen Gigabit-Ethernet-Netzwerkanschluss aufweisen, um eine ausreichende Bandbreite zu jedem Decoder sicherzustellen, um jede Datenstrombandbreite bis zu 20 Mbps mühelos handzuhaben. Weiterhin kann jeder Decoder alle Datenstromformate und Protokolle unterstützen, wobei er sich automatisch an spezifische Datenstromarten anpasst.
-
Der Dekompressor 126 erzeugt aus dem decodierten Video-Datenstrom einen dekomprimierten Video-Datenstrom. Der dekomprimierte Video-Datenstrom kann in einem datenstromspezifischen Puffer gespeichert werden, einer Wiedergabevorrichtung oder dergleichen zur Anzeige geliefert werden oder eine beliebige Kombination derselben.
-
Die Umgebung 100 umfasst auch mehrere datenstromspezifische Puffer 122a–n für zeitweiliges Speichern jedes der Video-Datenströme von den Video-Datenstrom-Quellen 132a–n. Das Arbeiten der Puffer lässt sich am besten unter Verweis auf 2 verstehen, die schematisch die Puffer 122a, 122b, ..., 122n und ihre zugeordneten Video-Datenströme von den Video-Datenstrom-Quellen-Puffern 132a, 132b, ..., 132n zeigt. In anderen Umsetzungen dienen datenstromspezifische Puffer 122a–n als Speicherstrukturen, etwa als FIFO-Puffer (First-In First-Out), die mittels der Video-Datenströme übermittelte Videobilder empfangen und speichern. Die datenstromspezifischen Puffer 122a–n speichern insbesondere Pixelinformationen, Bewegungsvektorinformationen und andere Informationen, die einen Satz von Videobildern zur Anzeige darstellen. In einer Umsetzung können datenstromspezifische Puffer 122a–n sowohl die komprimierten Videobilder, die mittels des Video-Datenstroms empfangen werden, als auch Videobilder, die durch den/die Quad-Decoder 116 decodiert wurden, speichern.
-
In der Multicaststreaming-Umgebung 100 sieht die Wechselvorrichtung 112 das zusätzliche Decodieren, Dekomprimieren sowie Pufferressourcen für pseudosimultanes Verarbeiten eines folgenden Video-Datenstroms vor, während ein aktueller Video-Datenstrom decodiert, dekomprimiert und gepuffert wird. Die Wechselvorrichtung 112 kann die innovativste Graphik-GPU-Architektur nutzen, die Ausgangskarten umfasst, die mehrere Anzeigen bei bis zu 2560 × 1600 (Dual-Link DVI) digital oder bis zu 2048 × 1536 analog antreiben kann. In einer Umsetzung kann die Wechselvorrichtung 112 11 GB/s interne Bandbreite und 256 MB GDDR3 Speicher pro Karte aufweisen, um komplexe Anwendungsdaten wiederzugeben, während sie mehrere Video- oder Computereingänge gleichzeitig anzeigt. In anderen Umsetzungen kann die Wechselvorrichtung 112 ein PC mit Intel-CPUs und Microsoft Windows, mit zwei Quad Core Xeon CPUs und bis zu 64 GB RAM sein.
-
Während des Betriebs bewirkt die Wechselvorrichtung 112 bei Wechseln zwischen aktuellen und folgenden Video-Datenströmen eine sofortige Anzeige eines folgenden Video-Datenstroms durch Schalten von datenstromspezifischen Puffern, die den aktuellen und folgenden Video-Datenströmen entsprechen, bei der geplanten Vorführung des folgenden Video-Datenstroms. In einer Umsetzung erreicht die Wechselvorrichtung 112 dies durch Modifizieren der z-Anordnung von Anzeigeschichten entsprechend den aktuellen und folgenden Video-Datenströmen. In einer anderen Umsetzung erreicht die Wechselvorrichtung 112 dies durch Ausführen von Schicht-2-Umschalten der Lieferung von aktuellen und folgenden Video-Datenströmen, um statt des aktuellen Video-Datenstroms den folgenden Video-Datenstrom zur Anzeige zu liefern. In einer noch anderen Umsetzung erreicht die Wechselvorrichtung 112 dies durch Aktualisieren einer Videoschaltmatrix, um statt des aktuellen Video-Datenstroms den folgenden Video-Datenstrom mit der Anzeige zu koppeln.
-
Multicaststreaming-Arbeitsfluss
-
2 zeigt ein Blockdiagramm eines beispielhaften Arbeitsflusses 200, bei dem die hierin offenbarten Technologien verwendet werden können. Mittels des Netzwerks 115 werden mehrere Video-Datenströme 132a–n zu einer Netzwerkschnittstelle 104 übertragen, die sie dem/den Quad-Decoder(n) 116 und dem Dekompressor 126 präsentiert. Nach dem Decodieren und Dekomprimieren der komprimierten Video-Datenströme werden die nicht komprimierten Videobilder für weitere Verarbeitung, einschließlich Übertragung der verschiedenen Video-Datenströme 132a–n, mittels der Wechselvorrichtung 112 über verschiedene Anzeigen (z. B. Anzeige 1 bis Anzeige 8) der Anzeigewand 106 zu jeweiligen datenstromspezifischen Puffern 122a–n gesendet. Die Anzeigewand 106 enthält alle visuellen Datenquellen, die sich in einer Steuerraum-Umgebung finden, und zeigt diese auf einer virtuellen Anzeige, die aus mehrere Ausgabevorrichtungen besteht: Monitoren, LCD-Flachbildschirmen, Plasmabildschirmen, Projektionswürfeln oder Rückprojektionssystemen, in beweglichen, skalierbaren Fenstern an. Die Datenquellen können lokale Anwendungen, ferne Netzwerkanwendungen, ferner Netzwerk-RGB-Datenströme, komprimierte Netzwerk-Video-Datenströme, direkt angebundenes SD- und HD-Video, VGA- und DVI-Eingänge umfassen.
-
In anderen Umsetzungen werden die verschiedenen Video-Datenströme 132a–n zu einer Anzeigevorrichtung, etwa einem Computerbildschirm, übertragen, wo sie jeweils auf der Anzeigefläche in ihrem eigenen Fenster angezeigt werden. In noch anderen Umsetzungen müssen die dekomprimierten Bilder nicht angezeigt werden, sondern können für weitere Verarbeitung, etwa in einem Sicherheitssystem, gesendet werden, wobei die Verarbeitung aus dem Ausführen von Gesichtserkennung für Identifizierungszwecke bestehen würde.
-
Auch wenn dieses Beispiel sechs Video-Datenströme umfasst, ist die offenbarte Technologie ausgelegt, um mit einer beliebigen Anzahl von Video-Datenströmen zu arbeiten, typischerweise mehr als verfügbare Dekompressionsquellen aktuell halten können. In manchen Fällen kann es praktisch sein, gar 50 oder sogar 100 Video-Datenströme zu nutzen. In anderen Fällen kann es nur möglich sein, 2 oder 3 Video-Datenströme handzuhaben und möglicherweise nur einen, wenn die Dekompressionsressourcen, etwa eine Universal-CPU, nicht damit verbundene Arbeitslasten gemeinsam übernehmen. Dieser Bereich berücksichtigt die verfügbaren Ressourcen und die aufgebürdeten Lasten. Erstens können die Dekompressionsressourcen nur einen PC oder einen kommerziellen Hochleistungsserver mit spezialisierter Hardware umfassen. Zweitens kann sich die durch eintreffende Video-Datenströme auferlegte Last während des Verlaufs einer normalen Nutzung abhängig davon, wie viele Video-Datenstrom-Quellen Bilder streamen, abhängig von der Komplexität der Bilder und der Rate, bei der sich die Bilder ändern, radikal ändern. Drittens können die Dekompressionsressourcen einen Universalrechner wie etwa solche in einem Laptop oder Desktop umfassen, die andere Prozesse laufen lassen, die nicht mit Videoverarbeitung im Zusammenhang stehen, die ein stark variierendes Maß an Verarbeitungsleistung des Rechners nutzen können.
-
In Umgebungen, mit denen sich die offenbarte Technologie befasst, unterliegen die insgesamt verfügbaren Dekompressionsressourcen einer Begrenzung. Zum Beispiel steigern Video-Datenströme steigender Komplexität, etwa solche mit einer erhöhten Bitrate oder Auflösung, sowie das Hinzufügen von Video-Datenströmen die Dekompressionsbelastung. Folglich stehen mit erhöhter Belastung weniger Dekompressionsressourcen pro Datenstrom zur Verfügung. An einem gewissen Punkt können die Dekompressionsressourcen überlastet werden und ein oder mehrere der Video-Datenströme könnten nicht genügend Dekompressionsressourcen haben, um alle ankommenden Bilder zu dekomprimieren. Wenn Bilder auf einer FIFO-Basis verarbeitet werden, geraten die dekomprimierten Bilder relativ zu ihren entsprechenden Präsentationszeiten in Verzug. In manchen Fällen können die resultierenden Bilder, etwa solche auf einer Anzeige, verpixelt erscheinen, können bei unregelmäßigen Intervallen angezeigt werden und können gelegentlich eingefroren wirken. Die vorstehenden Probleme können durch Detektieren des Zustands, in dem die Dekompressionsressourcen überlastet werden, und Beheben dieses Zustands durch Fallenlassen von Bildern verhindert oder zumindest teilweise gemindert werden.
-
Pseudosimultane Verarbeitung
-
3–5 heben hervor, dass sich die offenbarte pseudosimultane Verarbeitung von Video-Datenströmen unter Verwenden von dedizierten Verarbeitungsressourcen von bestehenden Lösungen unterscheidet, die Schaltverzögerungen reduzieren.
-
3 zeigt eine Umsetzung einer pseudosimultanen Verarbeitung 300 von aktuellen und folgenden Video-Datenströmen in einem zeitversetzten Modus, um ein reibungsloses Wechseln zwischen komprimierten Video-Datenströmen zu bewirken. 3 zeigt insbesondere eine Video-Datenstrom-Verarbeitung von zwei verschiedenen Video-Datenströmen, dem aktuellen Video-Datenstrom 132a und dem folgenden Video-Datenstrom 132b, durch zwei Graphikprozessoreinheiten 301 bzw. 303. In anderen Umsetzungen können Video-Datenströme 132a und 132b durch eine gleiche GPU verarbeitet werden.
-
In anderen Umsetzungen könnte die Verarbeitung 300 nicht die gleichen Maßnahmen, Elemente oder Komponenten wie vorstehend aufgeführt aufweisen und/oder könnte andere/verschiedene Maßnahmen, Elemente oder Komponenten statt oder zusätzlich der vorstehend aufgeführten aufweisen. Die unterschiedlichen Maßnahmen, Elemente oder Komponenten können zu einzelnen Softwaremodulen kombiniert werden, und es können mehrere Softwaremodule auf der gleichen Hardware laufen.
-
Bei Zeitpunkt t1 und Maßnahme 302 wird der aktuelle Video-Datenstrom 132a durch die GPU 301 decodiert.
-
Bei einem späteren Zeitpunkt t1 + x und Maßnahme 312 wird der folgende Video-Datenstrom 132b durch die GPU 303 decodiert. Das ”x” bezeichnet eine Verarbeitungseinleitungsverzögerung relativ zu dem Einleiten oder Beenden der Decodierung des aktuellen Video-Datenstroms 132a. Die Verarbeitungseinleitungsverzögerung stellt die Verzögerung beim Auslösen einer Verarbeitung des folgenden Video-Datenstroms relativ zum Auslösen der Verarbeitung des aktuellen Datenstroms dar. Wenngleich der folgende Video-Datenstrom an einem gewissen Punkt mit dem aktuellen Video-Datenstrom gemäß einer Umsetzung pseudosimultan verarbeitet wird. Hier könnte x jeder Zeitwert sein, der mithilfe einer geeigneten Einheit, etwa Sekunden, Mikrosekunden usw., gemessen werden kann. In anderen Umsetzungen beginnt die Decodierung eines folgenden Video-Datenstroms 132b bei einer Zeitverschiebung nach Beginn oder Beendigung der Dekompression, des Pufferns oder der Anzeige des aktuellen Video-Datenstroms 132a.
-
Bei Zeitpunkt t2 und Maßnahme 304 wird der aktuelle Video-Datenstrom 132a durch die GPU 301 dekomprimiert.
-
Bei einem späteren Zeitpunkt t2 + x und Maßnahme 314 wird der folgende Video-Datenstrom 132b durch die GPU 303 dekomprimiert. Das ”x” bezeichnet eine Verarbeitungseinleitungsverzögerung relativ zu dem Einleiten oder Beenden der Dekompression des aktuellen Video-Datenstroms 132a. In anderen Umsetzungen beginnt die Dekompression eines folgenden Video-Datenstroms 132b bei einer Zeitverschiebung nach Beginn oder Beendigung des Decodierens, des Pufferns oder der Anzeige des aktuellen Video-Datenstroms 132a.
-
Bei Zeitpunkt t3 und Maßnahme 306 wird der aktuelle Video-Datenstrom 132a durch die GPU 301 gepuffert.
-
Bei einem späteren Zeitpunkt t3 + x und Maßnahme 316 wird der folgende Video-Datenstrom 132b durch die GPU 303 gepuffert. Das ”x” bezeichnet eine Verarbeitungseinleitungsverzögerung relativ zu dem Einleiten oder Beenden des Pufferns des aktuellen Video-Datenstroms 132a. In anderen Umsetzungen beginnt das Puffern eines folgenden Video-Datenstroms 132b bei einer Zeitverschiebung nach Beginn oder Beendigung des Decodierens, des Dekomprimierens oder der Anzeige des aktuellen Video-Datenstroms 132a.
-
Bei Zeitpunkt t3 und Maßnahme 306 wird der aktuelle Video-Datenstrom 132a durch die GPU 301 gepuffert.
-
Bei einem späteren Zeitpunkt t3 + x und Maßnahme 316 wird der folgende Video-Datenstrom 132b durch die GPU 303 gepuffert. Das ”x” bezeichnet eine Verarbeitungseinleitungsverzögerung relativ zu dem Einleiten oder Beenden des Pufferns des aktuellen Video-Datenstroms 132a. In anderen Umsetzungen beginnt das Puffern eines folgenden Video-Datenstroms 132b bei einer Zeitverschiebung nach Beginn oder Beendigung des Decodierens, des Dekomprimierens oder der Anzeige des aktuellen Video-Datenstroms 132a.
-
Bei Zeitpunkt t4 und Maßnahme 308 wird der aktuelle Video-Datenstrom 132a durch die GPU 301 über einer bestimmten Oberfläche angezeigt.
-
Bei einem späteren Zeitpunkt t4 + y und Maßnahme 318 wird der folgende Video-Datenstrom 132b als Reaktion auf einen Schaltbefehl durch die GPU 303 über der gleichen bestimmten Oberfläche angezeigt. Das ”y” bezeichnet eine Anzeigeverzögerung relativ zu der Anzeige des aktuellen Video-Datenstroms 132a über der bestimmten Oberfläche. In einer Umsetzung liegt der Unterschied zwischen einer Verarbeitungseinleitungsverzögerung x und der Anzeigeverzögerung y darin, dass die Verarbeitungseinleitungsverzögerung x von dem zeitlichen Abstand zwischen Schlüsselbildern des folgenden Video-Datenstroms 132b abhängig ist, wie in der folgenden Diskussion von 4 beschrieben wird.
-
In einer Umsetzung erlaubt die offenbarte Technologie ein reibungsloses Wechseln von komprimierten Video-Datenströmen in einer Multicaststreaming-Umgebung, ohne die Videoqualität durch Ausführung des Umschaltens zu mindern, wenn ein Schlüsselbild eines Video-Datenstroms detektiert wird. Bei einer solchen Umsetzung tritt kein Videoqualitätsverlust auf Clientenseite auf, da der Client zur Anzeige des Sample nicht das korrekte Basissample benötigt. Das Warten auf ein Schlüsselbild bewirkt aber eine Schaltverzögerung, was das Umschalten nicht augenblicklich macht. Zum Beispiel würde die maximale Verzögerung bei Videobildern mit einem Schlüsselbild pro acht Bilder etwa ein Drittel einer Sekunde betragen. Die offenbarte Technologie löst dieses Problem durch Vorladen oder Vorpuffern des Video-Datenstroms vor dem Umschalten unter Verwenden von zusätzlichen Verarbeitungsressourcen, so dass das Schlüsselbild eines folgenden Video-Datenstroms zum Zeitpunkt des Umschaltens verfügbar ist und aufgrund des wartenden Schlüsselbilds keine Schaltverzögerung eintritt.
-
4 zeigt eine Umsetzung zum Bewerten 400 eines zeitlichen Abstands zwischen Schlüsselbildern und einer zeitlichen Planung eines Umschaltens beruhend auf dem bewerteten zeitlichen Abstand. Eine Wechselvorrichtung 112 führt insbesondere ein Schalten zwischen einem aktuellen Video-Datenstrom 132a und einem folgenden Video-Datenstrom 132b aus, wenn ein Schlüsselbild des folgenden Video-Datenstroms vorgefunden wird. Wie in 4 gezeigt umfasst der folgende Video-Datenstrom 132b zwei Schlüsselbilder und mehrere Interframes. Die Daten von den Schlüsselbildern werden in einem der vorstehend beschriebenen datenstromspezifischen Puffer 122a–n vorgepuffert. Datenstromspezifische Puffer 122a–n speichern jeweils die Schlüsselbilddaten von den Schlüsselbildern zusammen mit den Interframe-Daten von den Interframes.
-
In anderen Umsetzungen könnte die Bewertung 400 nicht die gleichen Maßnahmen, Elemente oder Komponenten wie vorstehend aufgeführt aufweisen und/oder könnte andere/verschiedene Maßnahmen, Elemente oder Komponenten statt oder zusätzlich zu den vorstehend aufgeführten aufweisen. Die unterschiedlichen Maßnahmen, Elemente oder Komponenten können zu einzelnen Softwaremodulen kombiniert werden, und es können mehrere Softwaremodule auf der gleichen Hardware laufen.
-
4 veranschaulicht, dass der zeitliche Abstand zwischen Schlüsselbildern in dem folgenden Video-Datenstrom 132b zehn Sekunden beträgt. Dadurch sollte die Verarbeitungseinleitungsverzögerung x zwischen der Verarbeitung des aktuellen Video-Datenstroms 132a bei Maßnahme 402 und der Verarbeitung des folgenden Video-Datenstroms 132b bei der Maßnahme 404 mindestens zehn Sekunden oder mehr betragen, um eine Detektion mindestens eines Schlüsselbilds des folgenden Video-Datenstroms 132b zu erlauben. Ein solches Vorgehen eines zeitlich festgelegten Vorladens oder Vorpufferns ermöglicht nicht nur bei Treffen auf ein Schlüsselbild des folgenden Video-Datenstroms zu jedem Zeitpunkt einen reibungslosen Wechsel zwischen dem aktuellen Video-Datenstrom 132a und dem folgenden Video-Datenstrom 132a.
-
5 ist eine Umsetzung zum Modifizieren 500 einer z-Reihenfolge unterschiedlicher komprimierter Video-Datenströme in einer Multicaststreaming-Umgebung, um ein sofortiges Umschalten zwischen den komprimierten Video-Datenströmen zu ermöglichen. 5 zeigt insbesondere drei Zustände 502, 504 und 506 der Multicaststreaming-Umgebung 100. Bei einem stationären Zustand 502 werden Video-Datenströme von drei verschiedenen Video-Datenstrom-Quellen 132a, 132b und 132c durch die Quad-Decoder decodiert und als drei verschiedene Fensterschichten angeordnet, die sich durch visuelles Hashing auszeichnen. Die Fensterschichten werden dann durch eine Videoschaltmatrix zu einem oder mehreren dualen DVI-Ausgangsports übermittelt, die sie zu der Anzeigewand 106 weiterleiten. Die Anzeigewand 106 zeigt über die Benutzeroberflächen D1, D2 bzw. D3 drei Video-Datenströme 132a, 132b und 132c an.
-
In anderen Umsetzungen könnte das Modifizieren 500 nicht die gleichen Zustände, Anordnung, Maßnahmen, Elemente oder Komponenten wie vorstehend aufgeführt aufweisen und/oder könnte andere/verschiedene Zustände, Anordnung, Maßnahmen, Elemente oder Komponenten statt oder zusätzlich zu den vorstehend aufgeführten aufweisen. Die unterschiedlichen Zustände, Anordnung, Maßnahmen, Elemente oder Komponenten können zu einzelnen Softwaremodulen kombiniert werden, und es können mehrere Softwaremodule auf der gleichen Hardware laufen.
-
Die Anordnung der Fensterschichten an den DVI-Ausgangsports bestimmt, welche Video-Datenströme auf welchen Benutzeroberflächen der Anzeigewand 106 angezeigt werden. Diese Anordnung, die als ”z-Anordnung” bezeichnet wird, kann modifiziert werden, um die Anordnung der Fensterschichten an den DVI-Ausgangsports zu ändern und nach Bedarf wiederum einen reibungslosen Wechsel zwischen den Video-Datenströmen 132a, 132b, 132c und 132d zu bewirken. Ein solcher reibungsloser Wechsel wird in dem Umschaltvorbereitungszustand 504 eingeleitet, in dem ein vierter Video-Datenstrom 132 zu der Multicaststreaming-Umgebung 100 hinzugefügt wird. Der vierte Video-Datenstrom 132d wird pseudosimultan verarbeitet, während andere Video-Datenströme 132a, 132b und 132c auf der Anzeigewand 106 angezeigt werden. Eine pseudosimultane Hintergrundverarbeitung des vierten Video-Datenstroms 132d erzeugt eine Fensterschicht für den vierten Video-Datenstrom 132d, die hinter die aktuell anzeigende Fensterschicht eines zu ersetzenden Video-Datenstroms, d. h. des dritten Video-Datenstroms 132c in 5, gesetzt wird, die in die Benutzeroberfläche D3 einspeist. Während des Umschaltvorbereitungszustands 504 wird die neu platzierte Fensterschicht des vierten Video-Datenstroms 132d noch nicht auf der Benutzeroberfläche D3 angezeigt, da die z-Anordnung der Fensterschichten an den dualen DVI-Ausgangsports unverändert bleibt.
-
Bei Schaltzustand 506 wird die z-Anordnung der Fensterschichten an den dualen DVI-Ausgangsports so modifiziert, dass die Fensterschicht des dritten Video-Datenstroms 132c durch die Fensterschicht des vierten Video-Datenstroms 132d ersetzt wird. Dadurch wird der vierte Video-Datenstrom 132d sofort auf der Benutzeroberfläche D3 angezeigt, da seine Fensterschicht ausreichend erzeugt wird, bevor die Multicaststreaming-Umgebung 100 in den Schaltzustand 506 wechselt. Im Anschluss daran wird die zuvor angezeigte Fensterschicht des dritten Video-Datenstroms 132c gelöscht.
-
Flussdiagramm
-
6 ist ein repräsentatives Verfahren 600 zum reibungslosen Wechseln zwischen komprimierten Video-Datenströmen. Das Flussdiagramm 600 kann zumindest teilweise mit einem Computer oder einem anderen Datenverarbeitungssystem implementiert werden, z. B. durch ein oder mehrere Prozessoren, die ausgelegt sind, um Informationen zu empfangen oder abzurufen, die Informationen zu verarbeiten, die Ergebnisse zu speichern und die Ergebnisse zu übermitteln. Andere Umsetzungen können die Maßnahmen in unterschiedlichen Reihenfolgen und/oder mit anderen, weniger oder zusätzlichen Maßnahmen als den in 6 gezeigten durchführen. In manchen Umsetzungen können mehrere Maßnahmen kombiniert werden. Der Einfachheit halber wird dieses Flussdiagramm unter Verweis auf das System beschrieben, das ein Verfahren ausführt. Das System ist nicht unbedingt Teil des Verfahrens.
-
Das in diesem Abschnitt und in anderen Abschnitten der offenbarten Technologie beschriebene Verfahren kann ein oder mehrere der folgenden Merkmale und/oder in Verbindung mit zusätzlichen offenbarten Verfahren beschriebene Merkmale umfassen. Im Interesse der Kürze werden die Kombinationen von Merkmalen, die in dieser Anmeldung offenbart werden, nicht einzeln aufgeführt und nicht mit jedem grundlegenden Satz von Merkmalen wiederholt. Der Leser wird verstehen, wie in diesem Verfahren identifizierte Merkmale mühelos mit Sätzen von grundlegenden Merkmalen kombiniert werden können, die als Umsetzungen wie etwa Multicaststreaming-Umgebung, Multicaststreaming-Arbeitsfluss, pseudosimultane Verarbeitung oder Computersystem bezeichnet sind.
-
Bei Maßnahme 602 wird ein Wechseln zwischen komprimierten Video-Datenströmen zum Zeigen auf einer Fläche einer Anzeige zeitlich angesetzt. Bei einer Umsetzung wird das Wechseln durch einen Administrator angesetzt, der wie vorstehend diskutiert eine Nutzerrechenvorrichtung verwendet.
-
Bei Maßnahme 612 werden während des Decodierens, Dekomprimierens und Pufferns eines ersten Video-Datenstroms zur Anzeige ein Decodieren, Dekomprimieren und Puffern eines zweiten Video-Datenstroms bei einem vorbestimmten Zeitpunkt vor einem geplanten Zeigen des zweiten Video-Datenstroms begonnen. Dies wird mithilfe eines zusätzlichen Satzes von Decodierlogik und Arbeitsspeicher verwirklicht, um ein sofortiges Umschalten von dem ersten Video-Datenstrom zu dem zweiten Video-Datenstrom zu bewirken. Es umfasst das Anlegen von Verarbeitungszeitverzögerungen, um mehrere von Decodierungslogik- und Arbeitsspeichereinheiten pseudosimultan oder gleichzeitig zu verwenden, um erste und zweite Video-Datenströme, die auf die gleiche Anzeige gerichtet sind, zu verarbeiten, so dass ein Decodieren eines zweiten Video-Datenstroms eingeleitet wird, bevor das Eintreten eines Umschaltens angesetzt ist.
-
Bei Maßnahme 622 werden Puffer zwischen der Anzeige des ersten und des zweiten Video-Datenstroms bei dem geplanten Zeigen des zweiten Video-Datenstroms umgeschaltet, um eine sofortige Anzeige des zweiten Video-Datenstroms ohne Verzögerung zu bewirken. In einer Umsetzung umfasst das Umschalten zwischen den Puffern für den ersten und zweiten Video-Datenstrom ferner das Modifizieren einer z-Anordnung von Anzeigeschichten, die dem ersten und zweiten Video-Datenstrom entsprechen, wodurch eine Graphikkarte eine Anzeige bildet, die den zweiten Video-Datenstrom statt des ersten Video-Datenstroms sichtbar macht.
-
In einer anderen Umsetzung umfasst ein Umschalten zwischen den Puffern für den ersten und den zweiten Video-Datenstrom ferner ein Schicht-2-Umschalten der Lieferung des ersten und des zweiten Video-Datenstroms, um statt des ersten Video-Datenstroms den zweiten Video-Datenstrom zur Anzeige zu liefern. In einer noch anderen Umsetzung umfasst ein Umschalten zwischen den Puffern für den ersten und den zweiten Video-Datenstrom ferner das Aktualieren einer Video-Schaltmatrix, um statt des ersten Video-Datenstroms den zweiten Video-Datenstrom mit der Anzeige zu koppeln.
-
Das Verfahren 600 umfasst auch das Bewerten eines zeitlichen Abstands zwischen Schlüsselbilder in dem zweiten Video-Datenstrom und das Wählen des vorbestimmten Zeitpunkts beruhend zumindest zum Teil auf dem zeitlichen Abstand.
-
Im Fall von mehreren Paaren von ersten und zweiten Video-Datenströmen umfasst das Verfahren 600 weiterhin das in eine Reihenfolge bringen von geplanten Wechseln zwischen den ersten und zweiten Video-Datenströmen, um eine Anzahl von Video-Datenströmen zu reduzieren, die zwischen dem Decodieren des ersten und zweiten Video-Datenstroms gleichzeitig unterwegs sind.
-
Andere Umsetzungen des in diesem Abschnitt beschriebenen Verfahrens können ein nicht flüchtiges, maschinell lesbares Speichermedium umfassen, das von einem Prozessor ausführbare Befehle speichert, um eines der vorstehend beschriebenen Verfahren durchzuführen. Eine noch andere Umsetzung des in diesem Abschnitt beschriebenen Verfahrens kann ein System mit Speicher und einem oder mehreren Prozessoren umfassen, die zum Ausführen von Befehlen betreibbar sind, die in dem Speicher gespeichert sind, um eines der vorstehend beschriebenen Verfahren durchzuführen.
-
Computersystem
-
7 ist ein Blockdiagramm eines beispielhaften Computersystems 700 zum reibungslosen Wechseln zwischen komprimierten Video-Datenströmen. Das Computersystem 700 umfasst typischerweise mindestens einen Prozessor 714, der mittels eines Bussubsystems 712 mit einer Reihe von peripheren Vorrichtungen kommuniziert. Diese peripheren Vorrichtungen können ein Speichersubsystem 724, das zum Beispiel Speichervorrichtungen und ein Dateienspeicher-Subsystem umfasst, Nutzerschnittstellen-Eingabevorrichtungen 722, Nutzerschnittstellen-Ausgabevorrichtungen 718 und ein Netzwerkschnittstellen-Subsystem 104 umfassen. Die Eingabe- und Ausgabevorrichtungen ermöglichen eine Nutzerinteraktion mit dem Computersystem 700. Das Netzwerkschnittstellen-Subsystem 104 sieht eine Schnittstelle zu externen Netzwerken vor, einschließlich einer Schnittstelle mit entsprechenden Schnittstellenvorrichtungen in anderen Computersystemen. Der Applikationsserver 720 kann ein Framework sein, der die Anwendungen des Computersystems 700 laufen lässt, etwa die Hardware und/oder Software, z. B. das Betriebssystem.
-
Nutzerschnittstellen-Eingabevorrichtungen 722 können eine Tastatur; Zeigervorrichtungen wie etwa eine Maus, einen Trackball, ein Touchpad oder ein Graphiktablett; einen Scanner; einen in die Anzeige integrierten berührungsempfindlichen Bildschirm; Audio-Eingangsvorrichtungen wie etwa Stimmenerkennungssysteme und Mikrophone; und andere Arten von Eingabevorrichtungen umfassen. Im Allgemeinen soll die Verwendung des Begriffs ”Eingabevorrichtung” alle möglichen Arten von Vorrichtungen und Möglichkeiten zur Eingabe von Informationen in das Computersystem 700 umfassen.
-
Nutzerschnittstellen-Ausgabevorrichtungen 718 können ein Anzeigesubsystem, einen Drucker, ein Faxgerät oder nicht visuelle Anzeigen wie etwa Audio-Ausgabevorrichtungen umfassen. Das Anzeigesubsystem kann eine Kathodenstrahlröhre (CRT), eine Flachbildschirmvorrichtung etwa eine Flüssigkristallanzeige (LCD), eine Projektionsvorrichtung oder einen anderen Mechanismus zum Erzeugen eines sichtbaren Bilds umfassen. Das Anzeigesubsystem kann auch eine nicht visuelle Anzeige wie etwa Audio-Ausgabevorrichtungen vorsehen. Die Verwendung des Begriffs ”Ausgabevorrichtung” soll im Allgemeinen alle möglichen Arten von Vorrichtungen und Möglichkeiten zur Ausgabe von Informationen von dem Computersystem 700 zu dem Nutzer oder einer anderen Maschine oder einem anderen Computersystem umfassen.
-
Das Speichersubsystem 724 speichert Programmierung und Datenkonstrukte, die die Funktionalität einiger oder aller der Module und Verfahren, die hierin beschrieben sind, bereitstellen. Diese Software-Module werden im Allgemeinen von dem Prozessor 714 allein oder kombiniert mit anderen Prozessoren ausgeführt.
-
Der Speicher 726, der in dem Speichersubsystem genutzt wird, kann eine Reihe von Speichern umfassen, die einen Hauptarbeitsspeicher (RAM) 734 für Speicherung von Befehlen und Daten während der Programmausführung und einen Festwertspeicher (ROM) 732, in dem feste Befehle gespeichert sind, umfassen. Ein Dateispeicher-Subsystem 728 kann eine dauerhafte Speicherung für Programm- und Datendateien vorsehen und kann ein Festplattenlaufwerk, ein Floppy-Disk-Laufwerk zusammen mit zugeordneten herausnehmbaren Medien, ein CD-ROM-Laufwerk, ein optisches Laufwerk oder herausnehmbare Medienträger umfassen. Die die Funktionalität von bestimmten Umsetzungen umsetzenden Module können von dem Dateispeicher-Subsystem 728 in dem Speichersubsystem 724 oder in anderen Maschinen, auf die der Prozessor zugreifen kann, gespeichert werden.
-
Das Bussubsystem 712 sieht einen Mechanismus zum planmäßigen Kommunizierenlassen der verschiedenen Komponenten und Subsysteme des Computersystems 700 miteinander vor. Auch wenn das Bussubsystem 712 schematisch als einzelner Bus gezeigt ist, können alternative Umsetzungen des Bussubsystems mehrere Busse nutzen.
-
Das Computersystem 700 kann von unterschiedlichen Arten sein, einschließlich einer Workstation, eines Serves, eines Rechenclusters, eines Bladeservers, einer Serverfarm oder eines anderen Datenverarbeitungssystems oder einer anderen Rechenvorrichtung. Aufgrund der sich ständig ändernden Natur von Computern und Netzwerken soll die Beschreibung des in 7 dargestellten Computersystems 700 nur ein Beispiel sein. Es sind viele andere Konfigurationen des Computersystems 700 mit mehr oder weniger Komponenten als bei dem in 7 dargestellten Computersystem möglich.
-
Die hierin verwendeten Begriffe und Ausdrücke werden als beschreibende, nicht einschränkende Begriffe und Ausdrücke verwendet, und bei der Verwendung dieser Begriffe und Ausführung sollten keine Äquivalente der gezeigten oder beschriebenen Merkmale oder von Teilen derselben ausgeschlossen werden. Nach Beschreiben bestimmter Umsetzungen der offenbarten Technologie ist ferner für den Durchschnittsfachmann des Gebiets offensichtlich, dass andere Umsetzungen, die die hierin offenbarten Konzepte integrieren, verwendet werden können, ohne vom Wesen und Schutzumfang der offenbarten Technologie abzuweichen. Demgemäß sollen die beschriebenen Umsetzungen in jeder Hinsicht nur als veranschaulichend und nicht als einschränkend betrachtet werden.