-
HINTERGRUND
-
Digitale Videodatenströme stellen in der Regel Videos unter Verwendung einer Sequenz von Frames oder Standbilddateien dar. Jeder Frame kann eine Anzahl an Blöcken beinhalten, die wiederum Informationen umfassen können, die den Wert der Farbe, der Helligkeit oder sonstiger Pixelattribute beschreiben. Die Datenmenge eines typischen Videodatenstroms ist hoch und die Übertragung und Speicherung von Video kann dementsprechend hohe Rechen- und Kommunikationskapazitäten in Anspruch nehmen. Aufgrund der großen Datenmenge, die in Verbindung mit Videodaten in Anspruch genommen wird, ist ein leistungsstarkes Komprimierungsverfahren für sowohl deren Übertragung als auch deren Speicherung erforderlich. Ferner ist es wünschenswert, in der Lage zu sein, Videodaten von hoher Qualität bei einer, auf Basis der zur Verfügung stehenden Verbindungen, optimierten Auflösung, zu streamen.
-
ZUSAMMENFASSUNG
-
Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen. Hierin offenbart sind Aspekte von Systemen und Vorrichtungen zum Einsatz einer dynamischen Auflösungsumschaltung, um eine Ziel-Bitrate zur Kodierung eines Videodatenstroms zu erreichen. Eine Vorrichtung gemäß einem Aspekt der Offenbarung umfasst mindestens einen Prozessor, der konfiguriert ist, um Anweisungen auszuführen, die auf einem nicht-greifbaren Speichermedium gespeichert sind, um einen ersten Frame einer Vielzahl von Frames eines Videodatenstroms zu identifizieren, die einen ersten Frame bei einer ersten Bitrate kodieren, die für einen Quantifizierungsparameter repräsentativ ist, die eine oder mehrere kodierbedingte Einschränkungen mit Bezug auf einen Bewegungssuchbereich des ersten Frames identifizieren, die eine erste Bitrate mit einer Zielbitrate für den ersten Frame vergleichen und die einen Quantifizierungsparameter mit sowohl einem Mindestquantifizierungsschwellenwert als auch einem Höchstquantifizierungsschwellenwert vergleichen, die mindestens einen Kodierparameter als Antwort auf das Vergleichen einer ersten Bitrate mit einer Zielbitrate anpassen, und die den Quantifizierungsparameter mit entweder dem Mindestquantifizierungsschwellenwert oder dem Höchstquantifizierungsschwellenwert vergleichen, die einen zweiten Frame des Videodatenstroms identifizieren, die einen zweiten Frame bei einer zweiten Bitrate unter Verwendung mindestens eines eingestellten Kodierparameters kodieren und die den kodierten ersten Frame und den kodierten zweiten Frame in einem Ausgabe-Bitstream übertragen.
-
Eine Vorrichtung gemäß einem anderen Aspekt der Offenbarung umfasst mindestens einen Prozessor, der konfiguriert ist, um Anweisungen, die auf einem nicht-greifbaren Speichermedium gespeichert sind, auszuführen, um einen Eingaberahmen der Vielzahl von Frames zu identifizieren, um den Eingaberahmen unter Verwendung eines Eingabe-Quantifizierungsparameters zu kodieren, um eine oder mehrere kodierte Einschränkungen mit Bezug auf einen Bewegungssuchbereich als Antwort auf das Kodieren des Eingaberahmens zu identifizieren, um eine Anzahl an Bits als Antwort auf das Kodieren des Eingaberahmens zu generieren, um mindestens einen Kodierparameter auf Basis der Anzahl an Bits und einer Ziel-Bitrate zur Kodierung des Eingaberahmen anzupassen, um einen kodierten Frame durch das Kodieren des Eingaberahmens unter Verwendung mindestens eines Kodierparameters zu generieren und um den kodierten Frame in einem Ausgabe-Bitstream zu übertragen.
-
Eine Vorrichtung gemäß einem anderen Aspekt der Offenbarung umfasst mindestens einen Prozessor, der konfiguriert ist, um Anweisungen, die auf einem nicht-greifbaren Speichermedium gespeichert sind, auszuführen, um einen Eingaberahmen der Vielzahl von Frames zu identifizieren, um den Eingaberahmen bei einer ersten Bitrate, die für einen konstanten Quantifizierungsparameter repräsentativ ist, zu kodieren, um eine oder mehrere codierte Einschränkungen mit Bezug auf einen Bewegungssuchbereich als Antwort auf das Kodieren des Eingaberahmens zu identifizieren, um die erste Bitrate einer Mindestzielbitrate und einer Höchstzielbitrate für den Eingaberahmen zu vergleichen, um mindestens einen Kodierparameter als Antwort auf das Vergleichen der ersten Bitrate zur Mindestzielbitrate und zur Höchstzielbitrate anzupassen, um einen kodierten Frame durch das Kodieren des Eingaberahmens unter Verwendung mindestens eines Kodierparameters zu generieren und um den kodierten Frame in einem Ausgabe-Bitstream zu übertragen.
-
Diese und sonstige Aspekte der vorliegenden Offenbarung werden in der folgenden detaillierten Beschreibung der Ausführungsformen, der beiliegenden Ansprüche und der begleitenden Figuren offenbart.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die Erfindung wird am besten anhand der folgenden detaillierten Beschreibung am besten verständlich, wenn sie in Verbindung mit den beigefügten Zeichnungen gelesen wird. Sofern dies nicht anders angegeben ist, beziehen sich gleiche Bezugsnummern innerhalb der verschiedenen Figuren auf gleiche Elemente.
-
1A ist ein Graph, der eine Ziel-Bitrate für das Kodieren eines Videodatenstroms anzeigt, die aufgrund eines Höchstquantifizierungsparameters überschritten wird.
-
1B ist ein Graph, der eine Ziel-Bitrate für das Kodieren eines Videodatenstroms anzeigt, die aufgrund eines Mindestquantifizierungsparameters unterschritten wird.
-
2 ist ein Schaltplan eines Videokodierungs- und -dekodierungssystems.
-
3 ist ein Blockdiagramm eines Beispiels eines Computergeräts, das eine Übertragungsstation oder eine Empfangsstation implementieren kann.
-
4 ist ein Diagramm eines typischen Videodatenstroms, der kodiert, und dann im Anschluss daran, dekodiert werden soll.
-
5 ist ein Blockdiagramm eines Videokomprimierungssystems gemäß einem Aspekt der sich hierin befindlichen Lehren.
-
6 ist ein Blockdiagramm eines Videodekomprimierungssystems gemäß einem anderen Aspekt der sich hierin befindlichen Lehren.
-
7 ist ein Flussdiagramm eines Beispiels eines Prozesses für das Erreichen einer Zielkodierbitrate anhand einer Einzeldurchlaufkodierung.
-
8 ist ein Flussdiagramm eines Beispiels eines Prozesses für das Erreichen einer Zielkodierbitrate anhand einer Zwei-Durchlauf-Kodierung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Ratensteueralgorithmen in Videokodiervorrichtungen verfolgen das Ziel, die kodierungserzeugende konstante Bitrate beizubehalten, wenn die Komplexität der Eingabedaten im Laufe der Zeit variiert. Eine konstante Bitrate kann durch das Anpassen eines Quantifizierungsparameters (QP) für jeden Frame auf Basis der Bitmenge, die vom (von) vorhergehenden Frame(s) generiert worden ist, erzielt werden. Im Allgemeinen reduziert eine höhere Quantifizierung die Bitrate und eine niedrigere Quantifizierung erhöht sie. Der Quantifizierungsparameter lässt auf eine Größenordnung schließen, bei der Daten eines Videodatenstroms von einer Kodiervorrichtung quantifiziert werden. In denjenigen Fällen, in denen ein höherer Quantifizierungsparameter von einer Kodiervorrichtung verwendet wird, umfasst das Quantifizierungsstadium bei höheren Quantifizierungsparametern folglich eine höhere Reduktion der Videodaten und bei niedrigeren Quantifizierungsparametern eine niedrigere Reduktion der Videodaten. Die sich daraus ergebenden quantifizierten Videodaten lassen auf eine Bitrate schließen, bei der ein Frame eines Videodatenstroms, welcher die Daten umfasst, kodiert wird. Im Allgemeinen würde die Verwendung eines höheren Quantifizierungsparameters für den jeweiligen Frame eines Videodatenstroms zu einer geringeren Frame-Bitrate führen und die Verwendung eines niedrigeren Quantifizierungsparameters zu einer höheren Frame-Bitrate führen.
-
Nichtsdestotrotz kann es, je nach der Komplexität der Videosequenz und der unterschiedlichen Fähigkeiten der Kodiervorrichtung, Fälle geben, in denen eine Ziel-Bitrate für das Kodieren eines gegebenen Videodatenstroms nicht erzielt werden kann. Dies hängt möglicherweise damit zusammen, dass der QP bereits auf einen Höchstgrenzwert begrenzt worden ist (z. B. ein Wert für den QP, dessen Erhöhung eine Verringerung der Videoqualität in Relation zur Auflösung durch die Produktion offensichtlicher visueller Artefakte bedingt) und dennoch über eine Bitrate verfügt, die nicht niedrig genug ist, und somit eine Überschreitung der Bitrate zur Folge hat. Alternativ dazu kann die Verwendung eines großen QPs zu Kodierartefakten führen, die eine nachteilige Auswirkung auf die Videoqualität haben. Falls der Wunsch auf ähnliche Weise darin besteht, die Videoqualität für einen Benutzer bei einer gegebenen Bandbreite zu optimieren und der QP einen Mindestschwellenwert erreicht hat (z. B. einen Wert für den QP, für den weitere Senkungen keinerlei Auswirkungen auf die Verbesserung der Videoqualität relativ zur Auflösung haben), gibt es möglicherweise keinen anderen Weg, um die Videoqualität noch weiter zu verbessern. Demzufolge leidet das Benutzererlebnis darunter.
-
1A und 1B sind Graphen, die je eine Ziel-Bitrate für das Kodieren eines Videodatenstroms darstellen, die jeweils aufgrund eines Höchstquantifizierungsparameters überschritten und aufgrund eines Mindestquantifizierungsparameters unterschritten worden ist. Die horizontalen Achsen geben die aufeinanderfolgende Progression der Frames eines Videodatenstroms an. der von einer Kodiervorrichtung kodiert worden ist und die vertikalen Achsen geben einen Quantifizierungsparameter an, der in einem Stadium der Kodiervorrichtung für den jeweiligen Frame verwendet wird. Der Schwellenwert des Mindest-QP 100 und der Schwellenwert des Höchst-QP 102 für die kodierenden Frames des Videodatenstroms werden als konstante Werte relativ zur Ziel-Bitrate 104 dargestellt. Die Figuren geben ferner an, dass je nach den Daten, die codiert werden, die Ziel-Bitrate 104 möglicherweise nicht allein mittels der Erhöhung oder der Senkung des QP 106 erzielt werden kann. Die Frame-Bitrate 108 kann schwanken, zum Beispiel aufgrund der Komplexität der Kodierung der Eingabedaten, die einen gegebenen Frame umfassen.
-
Wie in 1A ersichtlich, steigt die Frame-Bitrate 108 an, sobald die Daten des Videodatenstroms komplexer werden. Als Antwort auf einen Anstieg der Frame-Bitrate 108 erhöht die Kodiervorrichtung den QP 106 und versucht dabei, die Ziel-Bitrate 104 für den Video Datenstrom aufrechtzuerhalten. Schließlich erreicht der QP 106 jedoch den Höchst-QP-Schwellenwert 102 und kann somit nicht weiter erhöht werden, obwohl die Frame-Bitrate 108 immer noch nicht die Ziel-Bitrate 104 erreicht hat, da die kodierten Daten nach wie vor zu umfangreich sind, um die Ziel-Bitrate 104 zu erreichen. Dies wird als eine Bitrate-Überschreitung bezeichnet, da die Frame-Bitrate 108 sich immer noch oberhalb der Ziel-Bitrate 104 befindet, trotz der Tatsache, dass der Höchst-QP-Schwellenwert 102 begrenzt wird. Wie in ähnlicher Weise aus 1B ersichtlich, ist die Kodiervorrichtung in der Lage, den QP 106 zu senken, sofern u. U. ermittelt wird, dass Ziel-Bitrate 104 aufgrund der Tatsache, dass die Frame-Bitrate 108 zu niedrig liegt, nicht erzielt werden konnte. Falls die Frame-Bitrate 108 trotz der Tatsache, dass der Mindest-QP-Schwellenwert 100 erzielt worden ist, unterhalb der Ziel-Bitrate 104 verbleibt, führt dies zu einer Unterschreitung der Bitrate.
-
Dementsprechend sind herkömmliche Kodiervorrichtungen durch eine einfache Anpassung eines QP nicht in der Lage, eine konstante Bitrate für das Kodieren von Videodaten zu erzielen. Während einige Kodiervorrichtungen ferner in der Lage sind, einen Schlüsselrahmen für das Kodieren einzufügen, ist diese Lösung nicht optimal, zumindest aufgrund der Tatsache, dass sie notwendigerweise zu einer Bitraten-Spitze führt, wenn der Schlüsselrahmen kodiert wird. Im Gegensatz dazu beschreibt die vorliegende Offenbarung eine dynamische Skalierung des Referenzframes, um die Durchführung der Ratensteuerung zu verbessern, indem die Auflösung während der Kodierung umgeschaltet wird. Die Ratensteuerung wird demnach zum Beispiel von der Kodiervorrichtung mittels einer internen Skalierung des Referenzframes vor der Ausbildung des dafür vorgesehenen Vorhersagesignals, erzielt. Einzeldurchlauf- und Zwei-Durchlauf-Kodiervorrichtungen für das Kodieren eines Videodatenstroms werden beschrieben. In einer Zwei-Durchlauf-Kodiervorrichtung kodiert ein erster Durchlauf Frames eines Videodatenstroms unter Verwendung einer konstanten Quantifiziervorrichtung und ein zweiter Durchlauf weist jedem Frame Bits auf optimale Weise zu, da ihm im Voraus bekannt ist, welche Frames komplex und welche Frames einfach sind. Weitere Details der dynamischen Skalierung des Referenzframes werden hierin mit dem anfänglichen Verweis auf ein System beschrieben, in dem sie implementiert werden kann.
-
2 ist ein Schaltplan eines Videokodierungs- und -dekodierungssystems 200. Bei einer Übertragungsstation 202 kann es sich zum Beispiel um einen Computer handeln, der über eine interne Konfiguration von Hardware, wie diejenige, die in 3 beschrieben wird, verfügt. Sonstige geeignete Implementierungen der Übertragungsstation 202 sind jedoch möglich. Zum Beispiel kann die Verarbeitung der Daten von der Übertragungsstation 202 auf mehrere Geräte verteilt werden.
-
Ein Netzwerk 204 kann die Übertragungsstation 202 mit einer Empfangsstation 206 zur Kodierung und Dekodierung des Videodatenstroms verbinden. Insbesondere kann der Videodatenstrom in der Übertragungsstation 202 kodiert werden und der kodierte Videodatenstrom kann in der Empfangsstation 206 dekodiert werden. Bei Netzwerk 204 kann es sich zum Beispiel um das Internet handeln. Bei Netzwerk 204 kann es sich auch um ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN), ein virtuelles privates Netzwerk (VPN), ein Mobilfunknetz oder um jedes andere Mittel für das Übertragen des Videodatenstroms von der Übertragungsstation 202 auf die Empfangsstation 206, wie in diesem spezifischen Beispiel dargestellt, handeln.
-
Bei der Empfangsstation 206 kann sich in einem Beispiel um einen Computer handeln, der über eine interne Konfiguration von Hardware verfügt, wie etwa derjenigen, die in 3 beschrieben wird. Dennoch sind sonstige geeignete Implementierungen der Empfangsstation 206 möglich. Zum Beispiel kann die Verarbeitung der Daten von der Empfangsstation 206 auf mehrere Geräte verteilt werden.
-
Sonstige Implementierungen des Videokodierungs- und Dekodierungssystems 200 sind möglich. Zum Beispiel kann eine Implementierung das Netzwerk 204 auslassen. In einer anderen Implementierung kann ein Videodatenstrom kodiert werden und dann zum Zwecke einer zu einem späteren Zeitpunkt stattfindenden Übertragung auf die Empfangsstation 206 oder auf jedes andere Gerät, das über einen Speicher verfügt, gespeichert werden. In einer Implementierung erhält die Empfangsstation 206 (z. B. über das Netzwerk 204, einen Computerbus und/oder einige Kommunikationspfade) den kodierten Videodatenstrom und speichert den Videodatenstrom für ein späteres Dekodieren. In einer exemplarischen Implementierung wird ein Echtzeit-Transportprotokoll (RTP) zur Übertragung des kodierten Videos über das Netzwerk 204 verwendet. In einer anderen Implementierung kann ein Transportprotokoll, zu dem das RTP nicht gehört, verwendet werden z. B. ein HTTP-basiertes Videostreaming-Protokoll.
-
Wenn die Übertragungsstation 202 und/oder die Empfangsstation 206 beispielsweise in einem Videokonferenzsystem verwendet werden, können sie über die Fähigkeit verfügen, einen Videodatenstrom, wie unten beschrieben, sowohl zu kodieren als auch zu dekodieren. Zum Beispiel kann es sich bei der Empfangsstation 206 um einen Videokonferenzteilnehmer handeln, der einen kodierten Videobitstream von einem Videokonferenz-Server erhält (z. B. die Übertragungsstation 202), um diesen zu dekodieren und ihn sich anzusehen und ferner sein eigenes Videobitstream an den Videokonferenz-Server übermittelt, um von anderen Teilnehmern dekodiert und angesehen zu werden.
-
3 ist ein Blockdiagramm eines Beispiels eines Computergeräts 300, das eine Übertragungsstation oder eine Empfangsstation implementieren kann. Zum Beispiel kann das Computergerät 300 sowohl die Übertragungsstation 202 als auch die Empfangsstation 206 aus 2 implementieren. Das Computergerät 300 kann in Form eines Computersystems, einschließlich mehreren Computergeräten, oder in Form eines einzelnen Computergeräts, zum Beispiel eines mobilen Telefons, eines Tablet-Computers, eines Laptop-Computers, eines Notebook-Computers, eines Desktop-Computers usw. zur Verfügung stehen.
-
Bei einer CPU 302 in Computergerät 300 kann es sich um eine herkömmliche zentrale Verarbeitungseinheit handeln. Alternativ dazu, kann es sich bei der CPU 302 um jede andere Art von Gerät handeln, oder um mehrere Geräte, die in der Lage sind, Informationen, die noch nicht existieren, oder erst zu einem späteren Zeitpunkt entwickelt werden, zu manipulieren und zu verarbeiten. Obwohl die offengelegten Implementierungen mit einem einzelnen Prozessor, wie ersichtlich, durchgeführt werden können, z. B. die CPU 302, können Vorteile hinsichtlich der Geschwindigkeit und des Wirkungsgrads unter Verwendung von mehr als einem Prozessor erzielt werden.
-
Bei einem Speicher 304 in Computergerät 300 kann es sich um ein Nur-Lese-Speicher-(ROM)-Gerät oder um ein Direktzugriff-Speicher-(RAM)-Gerät in einer Implementierung handeln. Jede andere geeignete Art von Speichergerät kann als der Speicher 304 verwendet werden. Der Speicher 304 kann Code und Daten 306 beinhalten, auf die, die CPU 302 unter Verwendung eines Busses 312 zugreifen kann. Der Speicher 304 kann ferner ein Betriebssystem 308 und Anwendungsprogramme 310 beinhalten, wobei die Anwendungsprogramme 310 das mindestens eine Programm beinhalten, welches der CPU 302 die Erlaubnis erteilt, die hier beschriebenen Verfahren durchzuführen. Zum Beispiel können Anwendungsprogramme 310 Anwendungen 1 bis N beinhalten, die ferner eine Videokodierungsanwendung beinhalten, welche dich hier beschriebenen Verfahren durchführt. Das Computergerät 300 kann auch eine zweite Speichervorrichtung 314 beinhalten, bei der es sich zum Beispiel um eine Speicherkarte handeln kann, die mit einem mobilen Computergerät verwendet wird. Da die Videokommunikationssitzungen unter Umständen eine beträchtliche Informationsmenge beinhalten können, können sie vollständig oder teilweise im sekundären Speicher 314 gespeichert werden und wenn sie zur Weiterverarbeitung erforderlich sind, auf den Speicher 304 geladen werden.
-
Das Computergerät 300 kann auch ein oder mehrere Ausgabegeräte, wie etwa ein Display 318, beinhalten. Bei Display 318 kann es sich in einem Beispiel um ein berührungsempfindliches Display handeln, das ein Display mit einem berührungsempfindlichen Element kombiniert, das während seines Betriebs in der Lage ist, Berührungseingaben wahrzunehmen. Das Display 318 kann an die CPU 302 über den Bus 312 gekoppelt sein. Sonstige Ausgabegeräte, die es einem Benutzer erlauben, das Computergerät 300 zu programmieren und auf sonstige Weise zu verwenden, können zusätzlich zum Display 318 oder als Alternative dazu, bereitgestellt werden. Wenn es sich bei dem Ausgabegerät um ein Display handelt oder dieses ein Display beinhaltet, kann das Display auf verschiedene Arten, einschließlich anhand einer Flüssigkristallanzeige (LCD), eines Kathodenstrahlröhren-(CRT)-Displays, oder eines Leuchtdioden-(LED)-Displays, wie etwa eines OLED Displays, implementiert werden.
-
Das Computergerät 300 kann auch eine Bildwahrnehmungsvorrichtung 320, wie zum Beispiel eine Kamera, oder jede andere Bildwahrnehmungsvorrichtung 320, die bereits existiert oder zu einem späteren Zeitpunkt entwickelt werden wird, die ein Bild, wie etwa ein Bild eines Benutzers, der das Computergerät 300 betreibt, wahrnehmen kann, beinhalten oder sich in Kommunikation damit befinden. Die Bildwahrnehmungsvorrichtung 320 kann so positioniert werden, dass sie dem Benutzer, der das Computergerät 300 betreibt, direkt zugewandt ist. In einem Beispiel kann die Position und die optische Achse der Bildwahrnehmungsvorrichtung 320 so konfiguriert werden, dass das Sichtfeld einen Bereich, der direkt an das Display 318 angrenzt, und von dem aus, das Display 318 sichtbar ist, beinhaltet.
-
Das Computergerät 300 kann auch eine Lautewahrnehmungsvorrichtung 322, wie zum Beispiel ein Mikrofon oder jede andere Lautewahrnehmungsvorrichtung, die bereits existiert, oder zu einem späteren Zeitpunkt entwickelt werden wird, und die in der Lage ist, Laute in der Nähe eines Computergeräts 300 wahrzunehmen, miteinbeziehen oder sich damit in Kommunikation befinden. Die Lautewahrnehmungsvorrichtung 322 kann so positioniert werden, dass sie dem Benutzer, der das Computergerät 300 betreibt, zugewendet ist, und kann konfiguriert werden, um Laute, wie zum Beispiel Sprechlaute oder sonstige von Äußerungen ausgehende Laute, zu empfangen, die vom Benutzer gemacht werden, während der Benutzer das Computergerät 300 betreibt.
-
Obwohl die CPU 302 und der Speicher 304 des Computergeräts 300 in 3, als innerhalb einer einzelnen Einheit integriert, abbildet werden, können auch andere Konfigurationen verwendet werden. Die Operationen der CPU 302 können über mehrere Maschinen (wobei jede Maschine über einen oder mehrere Prozessoren verfügt) verteilt werden, die direkt bzw. über ein lokales Netzwerk oder ein sonstiges Netzwerk aneinandergekoppelt werden können. Der Speicher 304 kann über mehrere Maschinen, wie etwa netzwerkbasierte Speicher oder Speicher innerhalb mehrerer Maschinen, welche die Operationen des Computergeräts 300 durchführen, verteilt werden. Obwohl der Bus 312 des Computergeräts 300 hier als ein einzelner Bus abgebildet wird, kann er aus mehreren Bussen bestehen. Ferner kann der sekundäre Speicher 314 direkt an die anderen Komponenten des Computergeräts 300 gekoppelt werden oder kann über ein Netzwerk zugänglich gemacht werden und kann eine einzelne integrierte Einheit, wie etwa eine Speicherkarte oder mehrere Einheiten, wie etwa mehrere Speicherkarten umfassen. Das Computergerät 300 kann somit in einer breiten Vielfalt von Konfigurationen implementiert werden.
-
4 ist ein Diagramm eines Beispiels eines Videodatenstroms 400, der kodiert und dann im Anschluss daran, dekodiert werden soll. Der Videodatenstrom 400 beinhaltet eine Videosequenz 402. Auf der nächsten Ebene beinhaltet die Videosequenz 402 eine Anzahl an angrenzenden Frames 404. Während drei Frames als die angrenzenden Frames 404 abgebildet werden, kann die Videosequenz 402 jede Anzahl an angrenzenden Frames 404 beinhalten. Die angrenzenden Frames 404 können dann weiter in einzelne Frames, z. B. ein Frame 406, unterteilt werden. Auf der nächsten Ebene kann der Frame 406 in eine Serie von Segmenten oder Ebenen 408 unterteilt werden. Die Segmente 408 können Teilmengen von Frames sein, die zum Beispiel eine Parallelverarbeitung erlauben. Die Segmente 408 können auch Teilmengen von Frames sein, welche die Videodaten in unterschiedliche Farben trennen können. Zum Beispiel kann ein Frame 406 von Farbvideodaten eine Leuchtdicke-Ebene und zwei Chrominanz-Ebenen beinhalten. Die Segmente 408 können bei verschiedenen Auflösungen abgetastet werden.
-
Unabhängig davon, ob der Frame 406 in Segmente 408 unterteilt ist oder nicht, kann der Frame 406 ferner in Blöcke 410 unterteilt werden, welche Daten umfassen, die zum Beispiel 16×16 Pixel im Frame 406 entsprechen. Die Blöcke 410 können auch angeordnet werden, um Daten von einer oder mehreren Ebenen 408 an Pixeldaten zu enthalten. Die Blöcke 410 können auch über jede andere geeignete Größe, wie etwa 4×4 Pixel, 8×8 Pixel, 16×8 Pixel, 8×16 Pixel, 16×16 Pixel oder größer, verfügen. Sofern nichts anderes angegeben ist, werden die Begriffe Block und Makroblock hierin austauschbar verwendet.
-
5 ist ein Blockdiagramm einer Kodiervorrichtung 500 gemäß einer Implementierung. Die Kodiervorrichtung 500 kann, wie vorstehend beschrieben, in der Übertragungsstation 202 implementiert werden, wie etwa durch das Bereitstellen eines Computersoftwareprogramms, das im Speicher, wie zum Beispiel dem Speicher 304, gespeichert ist. Das Computersoftwareprogramm kann Maschinenanweisungen beinhalten, die, wenn sie von einem Prozessor, wie etwa der CPU 302, ausgeführt werden, die Übertragungsstation 202 dazu veranlassen, Videodaten auf die in 5 beschriebene Weise zu kodieren. Die Kodiervorrichtung 500 kann auch als eine spezialisierte Hardware implementiert werden, die zum Beispiel Teil der Übertragungsstation 202 darstellt. In einer besonders wünschenswerten Implementierung handelt es sich bei der Kodiervorrichtung 500 um eine Hardware-Kodiervorrichtung. Die Kodiervorrichtung 500 verfügt über die folgenden Stadien, um die verschiedenen Funktionen in einem Vorwärtspfad (anhand der durchgezogenen Verbindungslinien dargestellt) durchzuführen, um einen kodierten oder komprimierten Bitstream 520 unter Verwendung des Videodatenstroms 400 als Eingabe zu erstellen: ein Intra/Inter-Prädiktionsstadium 502, ein Transformationsstadium 504, ein Quantifizierungsstadium 506, und ein Entropiekodierungs-Stadium 508. Die Kodiervorrichtung 500 kann auch einen Rekonstruktionspfad (von der punktierten Verbindungslinie dargestellt) beinhalten, um einen Frame für das Kodieren von zukünftigen Blöcken zu rekonstruieren. In 5 verfügt die Kodiervorrichtung 500 über die folgenden Stadien, um die verschiedenen Funktionen im Rekonstruktionspfad durchzuführen: ein Dequantifizierungsstadium 510, ein inverses Transformationsstadium 512, ein Rekonstruktionsstadium 514, ein Loopfiltering-Stadium 516. Sonstige strukturelle Variationen der Kodiervorrichtung 500 können verwendet werden, um den Videodatenstrom 400 zu kodieren.
-
Wenn der Videodatenstrom 400 zur Kodierung präsentiert wird, kann jeder Frame 406 in Blockeinheiten verarbeitet werden. Im Intra/Inter-Prädiktionsstadium 502 kann jeder Block unter Verwendung einer Intra-Frameprädiktion (auch Intra-Prädiktion genannt) oder einer Inter-Frameprädiktion (auch Inter-Prädiktion genannt) kodiert werden. In jedem Fall kann ein Prädiktionsblock ausgebildet werden. Im Falle einer Intra-Prädiktion kann ein Prädiktionsblock aus Proben des gegenwärtigen Frames ausgebildet werden, die zuvor schon kodiert und rekonstruiert worden sind. Im Falle einer Intra-Prädiktion kann ein Prädiktionsblock aus Proben ausgebildet werden, die sich in einem oder mehreren der zuvor schon konstruierten Referenzframe befinden.
-
Danach, und immer noch unter Bezugnahme auf 5, kann der Prädiktionsblock vom gegenwärtigen Block im Intra/Inter-Prädiktionsstadium 502 subtrahiert werden, um einen Restblock zu erzeugen (auch Rest genannt). Das Transformationsstadium 504 wandelt den Rest in Transformationskoeffizienten um – zum Beispiel in die Frequenz-Domain unter der Verwendung blockbasierter Transformationen. Das Quantifizierungsstadium 506 wandelt die Transformationskoeffizienten unter Verwendung eines vom Quantisierer ausgegebenen Wertes oder einer Quantisierungsstufe in diskrete Quantum-Werte, die als quantifizierte Transformationskoeffizienten bezeichnet werden, um. Zum Beispiel können die Transformationskoeffizienten durch den vom Quantisierer ausgegebenen Wert geteilt werden und trunkiert werden. Die quantifizierten Transformationskoeffizienten werden dann im Entropiekodierungsstadium 508 entropiekodiert. Die entropiekodierten Koeffizienten werden dann zusammen mit sonstigen Informationen, die verwendet werden, um den Block zu dekodieren, und die zum Beispiel die Art der Prädiktion, die verwendet wird, die Transformationsart, Bewegungsvektoren und den vom Quantisierer ausgegebenen Wert beinhalten, am komprimierten Bitstream 520 ausgegeben. Der komprimierte Bitstream 520 kann unter Verwendung verschiedener Techniken formatiert werden, wie etwa dem Kodierverfahren mit variabler Länge (VLC) oder dem arithmetischen Kodieren. Der komprimierte Bitstream 520 kann auch als ein kodierter Videodatenstrom oder ein kodierter Video-Bitstream bezeichnet werden, und die Begriffe können hierin austauschbar verwendet werden.
-
Der Rekonstruktionspfad in 5 (dargestellt mittels der punktierten Verbindungslinie) kann verwendet werden, um sicherzustellen, dass sowohl die Kodiervorrichtung 500 als auch die Dekodiervorrichtung 600 (im Folgenden beschrieben) denselben Referenzframe verwenden, um den komprimierten Bitstream 520 zu dekodieren. Der Rekonstruktionspfad führt Funktionen durch, die über ähnliche Eigenschaften wie Funktionen verfügen, die während des Dekodierverfahrens stattfinden, und auf die im Folgenden näher eingegangen wird, einschließlich der Dequantifizierung der quantifizierten Transformationskoeffizienten im Dequantifizierungsstadium 510 und der inversen Transformation der dequantifizierten Transformationskoeffizienten im inversen Transformationsstadium 512, um einen derivativen restlichen Block zu erzeugen (auch als ein derivativer Rest bezeichnet). Im Rekonstruktionsstadium 414 kann der Prädiktionsblock, der im Intra/Inter-Prädiktionsstadium 502 prognostiziert wurde, zum derivativen Rest zugefügt werden, um einen rekonstruierten Block zu erzeugen. Das Loopfiltering-Stadium 516 kann auf den rekonstruierten Block angewendet werden, um eine Verzerrung, wie etwa Sperrartefakte, zu reduzieren.
-
Andere Variationen der Kodiervorrichtung 500 können verwendet werden, um den komprimierten Bitstream 520 zu kodieren. Zum Beispiel kann eine nicht transformbasierte Kodiervorrichtung das restliche Signal direkt und ohne das Transformationsstadium 504 für bestimmte Blöcke oder Frames quantisieren. In einer anderen Implementierung kann die Kodiervorrichtung über ein Quantifizierstadium 506 und ein Dequantifizierstadium 510 verfügen, die in einem einzigen Stadium kombiniert sind.
-
6 ist ein Blockdiagramm einer Dekodiervorrichtung 600 in Übereinstimmung mit einer anderen Implementierung. Die Dekodiervorrichtung 600 kann in der Empfangsstation 206 implementiert werden, zum Beispiel durch das Bereitstellen eines Computersoftwareprogramms, das in Speicher 304 gespeichert ist. Das Computersoftwareprogramm kann Maschinenanweisungen beinhalten, die, wenn sie von einem Prozessor, wie etwa einer CPU 302, ausgeführt werden, die Empfangsstation 206 dazu veranlassen, Videodaten auf diejenige Weise, die in 6 beschrieben wird, zu dekodieren. Die Dekodiervorrichtung 600 kann auch in Hardware implementiert werden, die zum Beispiel in der Übertragungsstation 202 oder der Empfangsstation 206 enthalten ist.
-
Die Dekodiervorrichtung 600, die über ähnliche Eigenschaften wie der Rekonstruktionspfad der Kodiervorrichtung 500, die vorstehend besprochen wird, verfügt, beinhaltet ein Beispiel der folgenden Stadien, um verschiedene Funktionen durchzuführen, um einen Ausgabe-Videodatenstrom 616 vom komprimierten Bitstream 520 zu erzeugen: ein Entropie-Dekodierstadium 602, ein Dequantifizierungsstadium 604, ein inverses Transformationsstadium 606, eine Intra/Inter-Prädiktionsstadium 608, ein Rekonstruktionsstadium 610, ein Loopfiltering-Stadium 612, und ein Deblockier-Filtering-Stadium 614. Sonstige strukturelle Variationen der Dekodiervorrichtung 600 können verwendet werden, um den komprimierten Bitstream 520 zu dekodieren.
-
Wenn der komprimierte Bitstream 520 zur Dekodierung präsentiert wird, können Datenelemente innerhalb des komprimierten Bitstreams 520 vom Entropie-Dekodierstadium 602 dekodiert werden, um einen Satz quantisierter Transformationskoeffizienten zu erzeugen. Im Dequantifizierungsstadium 604 werden die quantifizierten Transformationskoeffizienten (z. B. durch das Multiplizieren der quantifizierten Transformationskoeffizienten mit dem vom Quantisierer ausgegebenen Wert) dequantifiziert und im inversen Transformationsstadium 606 werden die dequantifizierten Transformationskoeffizienten invers transformiert, um einen derivativen Rest zu erzeugen, der mit demjenigen Rest, der im inversen Transformationsstadium 512 in der Kodiervorrichtung 500 erzeugt wurde, identisch ist. Unter Verwendung der Header-Informationen, die vom komprimierten Bitstream 520 dekodiert worden sind, kann die Dekodiervorrichtung 600 das Intra/Inter-Prädiktionsstadium 608 verwenden, um denselben Prädiktionsblock, der in der Kodiervorrichtung 500 erzeugt worden ist, z. B. im Intra/Inter-Prädiktionsstadium 502, zu erzeugen. Im Rekonstruktionsstadium 610 kann der Prädiktionsblock zum derivaten Rest hinzugefügt werden, um einen rekonstruierten Block zu erzeugen. Das Loopfiltering Stadium 612 kann auf den rekonstruierten Block angewendet werden, um blockierende Artefakte zu reduzieren. Sonstige Filtervorgänge können auf den rekonstruierten Block angewendet werden. In diesem Beispiel wird das Deblockier-Filtering-Stadium 614 auf den rekonstruierten Block angewendet, um die Blockierverzerrung zu reduzieren, und das Ergebnis wird als der Ausgabe-Videodatenstrom 616 ausgegeben. Der Ausgabe-Videodatenstrom 616 kann auch als ein dekodierter Videostream bezeichnet werden, und die Begriffe können austauschbar verwendet werden. Sonstige Variationen der Dekodiervorrichtung 600 können verwendet werden, um den komprimierten Bitstream 520 zu dekodieren. Zum Beispiel kann die Dekodiervorrichtung 600 den Ausgabe-Videodatenstrom 616 ohne das Deblockier-Filtering-Stadium 614 erzeugen.
-
Bei den 7 und 8 handelt es sich um Flussdiagramme der Verfahren 700 und 800 für das Verwenden der Auflösungs-Skalierung, um bei der Einzeldurchlauf- und Zwei-Durchlauf-Kodierung eine jeweils konstante Ziel-Bitrate zu erzielen. Die Verfahren 700 und 800 können in einem System, wie etwa dem Computergerät 300, implementiert werden, um die Kodierung eines Videodatenstroms zu unterstützen. Die Prozesse 700 und 800 können zum Beispiel als ein Softwareprogramm implementiert werden, das von einem Computergerät, wie etwa der Übertragungsstation 202 oder der Empfangsstation 206, ausgeführt wird. Das Softwareprogramm kann maschinenlesbare Anweisungen beinhalten, die in einem Speicher, wie etwa dem Speicher 304 gespeichert werden, der, wenn er von einem Prozessor, wie etwa der CPU 302 ausgeführt wird, das Computergerät dazu veranlasst, entweder Verfahren 700 oder Verfahren 800 durchzuführen. Die Verfahren 700 und 800 können auch unter Verwendung von Hardware vollständig oder teilweise implementiert werden. Wie oben erklärt, können einige Computergeräte über mehrere Speicher und mehrere Prozessoren verfügen und die Schritte oder die Operationen jedes der Verfahren 700 und 800 können in derartigen Fällen unter der Verwendung verschiedener Prozessoren und Speicher verteilt werden. Die Verwendung der Begriffe „Prozessor” und „Speicher” im Singular, umfasst hierin sowohl Computergeräte, die lediglich über einen Prozessor oder einen Speicher verfügen, als auch Computergeräte, die über mehrere Prozessoren oder Speicher verfügen, die jeweils bei der Durchführung einiger aber nicht notwendigerweise aller angegebenen Schritte verwendet werden.
-
Zur Vereinfachung der Erklärung wird sowohl Verfahren 700 als auch Verfahren 800 in einer Serie von Schritten oder Operationen abgebildet und beschrieben. Schritte und Operationen in Übereinstimmung mit dieser Offenbarung können jedoch in verschiedenen Reihenfolgen und/oder gleichzeitig erfolgen. Darüber hinaus können Schritte oder Operationen, in Übereinstimmung mit dieser Offenbarung, zusammen mit anderen Schritten oder Operationen, die hierin weder präsentiert noch beschrieben werden, erfolgen. Des Weiteren sind nicht alle veranschaulichten Schritte oder Operationen unbedingt notwendig, um ein Verfahren gemäß dem offenbarten Gegenstand zu implementieren. Eines der Verfahren 700 oder 800 kann für jeden Frame des Eingabesignals wiederholt werden.
-
Unter Bezugnahme auf 7, wird das Verfahren 700 zur Verwendung der Auflösungs-Skalierung im Frame einer Einzeldurchlaufkodierung, um eine relativ konstante Ziel-Bitrate zu erzielen, in Gang gesetzt, indem bei Operation 702, Werte für eine Ziel-Bitrate, ein anfänglicher QP, ein Mindest-QP-Schwellenwert und ein Höchst-QP-Schwellenwert eingestellt werden. Diese Werte können auf eine anfängliche Auflösung schließen lassen, bei der, der Videodatenstrom kodiert wird. Bei Operation 704 kodiert eine Kodiervorrichtung einen ersten Frame eines Videodatenstroms unter Verwendung des anfänglichen QP. Falls das in einer Frame-Bitrate durchgeführte Kodieren der ersten Frameergebnisse mit der Ziel-Bitrate übereinstimmt, bereitet Operation 706 die Kodiervorrichtung für das Kodieren des nächsten Frames des Videodatenstroms über die Rückkehr zu Operation 704 vor. Andernfalls geht das Verfahren 700 zu einer Auslöse-Anpassungsphase der Operation 708 über, die eine Filtering-Logik verwendet, um zu ermitteln, ob Oszillationen in den Videodaten vorhanden sind. Falls keine Oszillationen vorhanden sind, bereitet Operation 708 die Kodiervorrichtung auf das Kodieren des nächsten Frames des Videostreams über die Rückkehr zu Operation 704 vor. Andernfalls geht das Verfahren 700 zu einer Anpassungsphase über, die bei Operation 710 in Gang gesetzt wird.
-
Bei Operation 710 wird ermittelt, ob eine Überschreitung oder eine Unterschreitung der Grund, dafür ist, dass die Frame-Bitrate, nicht mit der Ziel-Bitrate übereinstimmt. Eine Überschreitung findet in denjenigen Fällen statt, in denen die Frame-Bitrate die Ziel-Bitrate übersteigt (überschreitet), zum Beispiel, da der QP zu niedrig für die Auflösung ist, bei der der Videostream kodiert worden ist. Eine Unterschreitung findet in denjenigen Fällen statt, in denen die Frame-Bitrate die Ziel-Bitrate untersteigt (unterschreitet), zum Beispiel, da der QP zu hoch für die Auflösung ist, bei der der Videostream kodiert worden ist. Gleichgültig, ob eine Überschreitung oder eine Unterschreitung ermittelt wird, werden ein oder mehrere Kodierparameter des Videodatenstroms im Folgenden angepasst, um die Qualität des Videodatenstroms zu verbessern. Kodierparameter können jegliche Werte beinhalten, die, wenn sie angepasst werden, eine Wirkung auf die Qualität oder die visuelle Darstellung des Videodatenstroms haben. In einer Implementierung beinhalten Kodierparameter ohne Begrenzung den QP, die Video-Auflösung, den Höchst-QP-Schwellenwert und den Mindest-QP-Schwellenwert. Die im Folgenden von der Kodiervorrichtung gemachten Anpassungen hängen davon ab, ob die Bitrate-Angelegenheit aufgrund einer Überschreitung oder einer Unterschreitung vorliegt.
-
Falls Operation 710 ermittelt, dass eine Bitrate-Überschreitung vorliegt, geht das Verfahren 700 zu Operation 712 über, wobei ermittelt wird, ob der Wert, der gegenwärtig für den QP eingestellt ist (bei dem es sich möglicherweise um den anfänglichen QP handelt, der bei Operation 702 in denjenigen Fällen eingestellt worden ist, in denen Operation 710 nur ein einziges Mal durchgeführt worden ist), demjenigen Wert entspricht, der gegenwärtig für den Höchst-QP-Schwellenwert eingestellt ist. Ist dies nicht der Fall, wird der QP bei Operation 714 erhöht, und diese Operation bereitet die Kodiervorrichtung auf das Kodieren des nächsten Frames des Videodatenstroms unter Verwendung des erhöhten QP mittels der Rückkehr zu Operation 704 vor. Falls der Wert des QP jedoch dem Wert für den Höchst-QP-Schwellenwert entspricht, kann der QP nicht weiter erhöht werden, da er den wirksamsten Wert in Relation zur Auflösung des Videodatenstroms bereits erreicht hat. Demzufolge senkt das Verfahren 700 die Auflösung des Videodatenstroms bei Operation 716, und dies beinhaltet die Neueinstellung der Werte des Mindest-QP-Schwellenwerts und des Höchst-QP-Schwellenwerts. Operation 716 senkt auch den Wert des QP auf Basis der Herabsetzung der Auflösung herab. Operation 716 bereitet dann die Kodiervorrichtung mittels der Rückkehr zu Operation 704 auf das Kodieren des nächsten Frames unter Verwendung der neuen Werte hinsichtlich der Auflösung und des neuen QP, des Mindest-QP-Schwellenwerts, und des Höchst-QP-Schwellenwerts.
-
Falls Operation 710 stattdessen ermittelt, dass eine Bitrate-Unterschreitung vorliegt, geht das Verfahren 700 zu Operation 718 über, wobei ermittelt wird, dass der Wert, der gegenwärtig für den QP eingestellt ist (bei dem es sich möglicherweise um den anfänglichen QP handelt, der bei Operation 702 in denjenigen Fällen eingestellt worden ist, in denen Operation 710 nur ein einziges Mal durchgeführt worden ist) demjenigen Wert entspricht, der gegenwärtig für den Mindest-QP-Schwellenwert eingestellt ist. Ist dies nicht der Fall, wird der QP bei Operation 720 herabgesetzt, und diese Operation bereitet die Kodiervorrichtung auf das Kodieren des nächsten Frames des Videodatenstroms unter Verwendung des herabgesetzten QP mittels der Rückkehr zu Operation 704 vor. Falls der Wert des QP jedoch dem Wert für den Mindest-QP-Schwellenwert entspricht, kann der QP nicht weiter herabgesetzt werden, da er den am wenigsten wirksamsten Wert in Relation zur Auflösung des Videodatenstroms bereits erreicht hat. Demzufolge erhöht das Verfahren 700 die Auflösung des Videodatenstroms bei Operation 722, und dies beinhaltet die Neueinstellung der Werte des Mindest-QP-Schwellenwerts und des Höchst-QP-Schwellenwerts. Operation 722 erhöht auch den Wert des QP auf Basis der Erhöhung der Auflösung. Operation 722 bereitet dann die Kodiervorrichtung mittels der Rückkehr zu Operation 704 auf das Kodieren des nächsten Frames unter Verwendung der neuen Werte hinsichtlich der Auflösung und des neuen QP, des Mindest-QP-Schwellenwerts, und des Höchst-QP-Schwellenwerts.
-
Sofern eine Quelle mit höherer Auflösung zur Verfügung steht, besteht eine andere Option darin, die Videoauflösung zu erhöhen, wo die Kodierungs-Bitrate die Ziel-Bitrate durchgängig unterschreitet oder wo die Kodierungs-Bitrate die Ziel-Bitrate oberhalb einer bestimmten Schwellenanzahl von Malen überschreitet. In den Fällen, in denen ein Benutzer zum Beispiel die Auswahl trifft, um sich ein Video bei einer Auflösung von 360p anzusehen, aber seine Bandbreite die Ansicht einer höheren Auflösung ermöglicht, kann die Auflösung des Videos auf eine maximale Auflösung erhöht werden, bei der, der Benutzer das Video über seine Verbindung streamen kann.
-
Bei einer Zwei-Durchlauf-Kodierung beinhaltet ein erster Durchlauf zur Kodierung von Frames eines Videodatenstroms das Ermitteln, welche Frames auf Basis eines Quantifizierungsparameters zu schwierig oder zu einfach zu kodieren sind, zum Beispiel durch das Erfassen einer Anzahl an Bits, die mittels einer Kodierung eines Eingaberahmens, der einem ersten Frame des Videodatenstroms entspricht, generiert werden. Falls die generierte Anzahl an Bits angibt, dass der Eingaberahmen zu schwer oder zu einfach zu kodieren ist, kann die Kodiervorrichtung die Auflösung des Videodatenstroms nach einem zweiten Durchlauf der Kodierung des entsprechenden Frames anpassen. Auf diese Weise kann die Zwei-Durchlauf-Kodierung die meisten Unterschreitungen und Überschreitungen verhindern, indem sie die potentiellen Instanzen desselben während eines ersten Durchlaufs identifizieren und die erforderlichen Anpassungen vornehmen, um den Videodatenstrom auf effektive Weise in einem zweiten Durchlauf zu kodieren. Die Menge der Unterschreitung und der Überschreitung kann den Grad, um den die Auflösung pro Dimension angepasst werden muss, angeben.
-
Bezieht man sich nun auf 8, startet das Verfahren 800 für das Verwenden der Auflösungs-Skalierung in der Zwei-Durchlauf-Kodierung, um eine relativ konstante Ziel-Bitrate zu erreichen, bei Operation 802, indem anfängliche Werte für eine Ziel-Bitrate und einen QP eingestellt werden. Bei Operation 804 wird ein Eingaberahmen empfangen und unter Verwendung einer eingestellten Ziel-Bitrate und QP-Werten kodiert. Als Antwort auf das Kodieren des Eingaberahmens wird eine Anzahl an Bits bei Operation 806 generiert. Die Anzahl an Bits lässt auf eine Bitrate schließen, bei der der Eingaberahmen kodiert wird. Je nach der Größe der generierten Bits kann das Verfahren 800 zu einer Anpassungsphase für das Anpassen der Kodierparameter des Videodatenstroms, wie etwa der Auflösung eines Videos, übergehen. In einer Implementierung kann die Entscheidung darüber, ob zur nächsten Einstellungsphase übergegangen werden soll, darauf basieren, ob die Frame-Bitrate außerhalb einer spezifizierten Reichweite fällt, innerhalb der QP-Ergebnisse hinsichtlich der wünschenswerten Videoqualität variieren (z. B. Videostreaming ohne sichtbare Kodierungsartefakte in Relation zur Auflösung). Falls die Frame-Bitrate sich zum Beispiel innerhalb von 100 bis 200 kbps der Ziel-Bitrate befindet, kann die Operation 808 die Entscheidung treffen, nicht zur Anpassungsphase überzugehen. Für den Fall, dass keine Anpassungen vorgenommen werden müssen, geht das Verfahren 800 zu Operation 816 über, wobei ein kodierter Frame auf Basis des zuvor eingestellten OP-Werts basiert, und dieser kodierte Frame wird dann als Teil des Ausgabe-Videodatenstroms bei Operation 818 übermittelt. In einer Implementierung kann die Festsetzung bei Operation 808 unter Verwendung einer Flagge kodiert werden.
-
Falls bei Operation 808 ermittelt wird, dass eine Anpassung der Auflösung des Videos gemacht werden muss, geht das Verfahren 800 zu Operation 810 über, die ermittelt, ob die Notwendigkeit für die Anpassung aufgrund der Tatsache besteht, dass die Eingaberahmen-Kodierungs-Bitrate die Ziel-Bitrate entweder unterschreitet oder überschreitet. Im Falle einer Überschreitung werden ein oder mehrere Kodierungs-Parameter bei Operation 812 angepasst, zum Beispiel durch die Verringerung der Auflösung des Videodatenstroms. Im Falle einer Unterschreitung werden ein oder mehrere Kodierparameter bei Operation 814 angepasst, zum Beispiel durch das Erhöhen der Auflösung im Videodatenstrom.
-
In einer Implementierung kann die Anpassung der Auflösung des Videos unter Verwendung einer Quadratwurzel des gewichteten Kehrwerts der prozentualen Bitraten-Abweichung, wie etwa Snew = √(1/(α·Bdev)), wobei Snew das neue Skalierung pro Dimension Verhältnis der Auflösung darstellt, a einen a-Gewichtungsparameter darstellt und Bdev eine Abweichung von der Bitrate-Reichweite repräsentiert. In denjenigen Fällen, in denen das Kodieren des Eingabe-Frames zum Beispiel zu einer weniger als 20%igen Überschreitung führt und das gewichtete Parameter auf 1 eingestellt ist, verfügt der Eingabe-Frame des Videodatenstroms über eine Auflösung von 1280×720, vielleicht um Snew = √(1/(1·1,2)) = 0,913 skaliert, infolgedessen sich ein neue Streaming-Auflösung von 1168×657 ergibt. Auf ähnliche Weise kann das Skalierungsverhältnis in denjenigen Fällen, in denen das Kodieren eines Eingaberahmens zu einer schwerwiegenden Unterschreitung von 50% führt, Snew = √(1/(1·0,5)) = 1,414 sein. Auf diese Weise kann die Auflösung des Videodatenstroms so eingestellt werden, dass er bei 1810×1018 kodiert ist. Das Anpassen des Gewichtungsparameters a oberhalb von 1 kann dazu führen, dass eine neue Frame-Bitrate näher an einen mittleren Wert hinsichtlich des annehmbaren Spektrums liegt, (z. B. 150 kbps für ein Spektrum von 100 bis 200 kbps).
-
Nachdem eine Anpassung der Auflösung des Videos vorgenommen worden ist, geht das Verfahren 800 zu Operation 816 über, wobei ein kodierter Frame, der einem Eingabe-Frame entspricht, als Teil eines zweiten Durchlaufs eines Videodatenstroms kodiert wird. Der kodierte Frame wird daher als Teil des Ausgabe-Videodatenstroms bei Operation 818 übermittelt.
-
Die Auflösungs-Skalierung kann weitere Vorzüge, die über die vorstehend beschriebenen hinausgehen, bereitstellen. Zum Beispiel kann die Auflösungs-Skalierung die Leistung der Kodiervorrichtungen verbessern, die keinen annehmbaren Bewegungsvektor für eine Interprognose mit etabliertem Fensterbereich zur Bewegungssuche gefunden haben. Dies führt in der Regel zu einer schlechten Komprimierung aufgrund einer übermäßigen Verwendung der Intra-Vorhersage. Durch das Herunterskalieren des Videodatenstroms in einer derartigen Situation, wird die Bitrate verringert, da es weniger Pixel gibt, die kodiert werden können, und da die Menge der absoluten Bewegung im Videodatenstrom auch verringert wird. Dies kann die Verwendung des Suchfensters verbessern.
-
In einer Implementierung und als Antwort auf das Ermitteln einer Unterschreitung bei Operation 810, beinhaltet Operation 814 das Verringern der Größe des Bewegungssuchbereichs, welches auch anstelle oder zusätzlich zur Verringerung der Auflösung des Videos vorgenommen werden kann. Auf ähnliche Weise beinhaltet Operation 812 als Antwort auf das Ermitteln einer Überschreitung bei Operation 810, das Erhöhen der Größe des Bewegungssuchbereichs anstelle von oder zusätzlich zur Erhöhung der Auflösung des Videos. In einer Implementierung werden Änderungen der Größe des Bewegungssuchbereichs nur für bestimmte Farbkomponenten des Eingaberahmens gemacht, zum Beispiel die Leuchtdicke- und/oder Chrominanz-Pixelwerte davon.
-
In einer Implementierung können ein oder mehrere Kodiervorrichtungs-Einschränkungen mit Bezug auf den Bewegungssuchbereich identifiziert werden, zum Beispiel als Antwort auf das Kodieren des Eingaberahmens bei Operation 804. Die Kodiervorrichtungs-Einschränkungen können Instanzen angeben, in denen ein Bewegungsvektor, der von Kodiervorrichtung 500 gefunden wird, einen Schwellenwert überschreitet, zum Beispiel, in denjenigen Fällen in denen der Videodatenstrom Szenen mit schneller Bewegung beinhaltet, einschließlich einer Menge von Bewegungen, welche das Vermögen der Kodiervorrichtung 500 überschreitet, die Szenen bei einer gegebenen Auflösung auf adäquate Art und Weise darzustellen. In einer Implementierung kann die Auflösung des Videodatenstroms als Antwort auf die Kodiervorrichtungs-Einschränkungen, die angeben, dass der Bewegungsvektor den Schwellenwert überschreitet, verringert werden.
-
In einer Implementierung unterliegt die Größe des Bewegungssuchbereichs keinerlei Änderungen. In denjenigen Fällen, in denen die Kodiervorrichtung 500 beispielsweise als eine Hardware-Kodiervorrichtung implementiert wird, kann der Bewegungssuchbereich statistisch auf eine Größe von N × M eingestellt werden, wobei N und M entweder über denselben Wert oder über verschiedene Werte verfügen. Der Bewegungssuchbereich kann daher nur einen Abschnitt eines Eingaberahmens abdecken, falls die Auflösung des Videodatenstroms höher als N × M ausfällt. Ein Mittelpunkt-Standort des Bewegungssuchbereichs kann beispielsweise mit Bezug auf einen anfänglichen Referenzstandort eines anfänglichen Abschnitts des Eingaberahmens, der abgedeckt werden soll, definiert werden (z. B. ein Mittelpunkt-Standort eines gegenwärtigen Blocks oder eines Stücks, das kodiert werden soll). In einer Implementierung kann die Auflösung des Videodatenstroms jedoch verringert werden, um zum Beispiel das Vermögen der Kodiervorrichtung 500, Bewegungen innerhalb des Bewegungssuchbereichs zu erfassen, zu verbessern, indem diese den Bewegungssuchbereich dazu veranlasst, einen größeren Abschnitt des Eingaberahmens abzudecken. Die Entscheidung die Auflösung auf diese Art und Weise zu verringern (z. B. als Teil der Feststellung, ob die Kodierungs-Parameter bei Operation 808 angepasst werden sollen) kann, wie vorstehend beschrieben, zum Beispiel auf Basis eines Schwellenwerts oder einer sonstigen Kodierungsvorrichtung-Einschränkung in Relation zum Bewegungssuchbereich, getroffen werden. Die Verringerung der Auflösung veranlasst den Mittelpunkt-Standort des Bewegungssuchbereichs dazu, auf Basis eines Referenzstandorts des Abschnitts des Eingaberahmens, der infolgedessen vom Bewegungssuchbereich abgedeckt wird, erneut eingestellt zu werden. Auf ähnliche Weise kann die Auflösung des Videodatenstroms in einer Implementierung auf Basis eines Schwellenwerts oder einer sonstigen Kodiervorrichtungs-Einschränkung erhöht werden. In denjenigen Fällen, in denen die Auflösung zum Beispiel geringer als die Größe des Bewegungssuchbereichs ausfällt (z. B. in denjenigen Fällen, in denen der Bewegungsbereich mehr als einen gesamten Eingaberahmen abdeckt), kann die Kodiervorrichtung 500 die Auflösung des Datenstroms erhöhen, um sie der Größe des Bewegungssuchbereichs anzupassen. Der Mittelpunkt-Standort des Bewegungssuchbereichs könnte sich daher gegebenenfalls am Referenz-Standort des Eingaberahmens befinden oder dortbleiben. Wie hierin verwendet, bezeichnet der Begriff „Mittelpunkt” eine zentrale Position in Relation zu dementsprechenden Dimensionen.
-
Obwohl der eine oder die mehreren Kodiervorrichtung-Einschränkungen hinsichtlich des Bewegungssuchbereichs hierin mit Bezug auf die Zwei-Durchlauf-Kodierung aus 8 besprochen werden, finden sie auch im Kontext einer Einzeldurchlaufkodierung, wie etwa derjenigen, die mit Bezug auf 7 besprochen worden ist, Anwendung. Zum Beispiel kann das Anpassen der Kodierungs-Parameter eines ersten Frames des Videodatenstroms das Identifizieren von Kodiervorrichtungs-Einschränkungen mit Bezug auf einen Bewegungssuchbereich (z. B. als Teil der Ermittlung einer Trigger-Anpassung bei Operation 708) oder das Verringern (oder das Erhöhen) der Auflösung des Videodatenstroms auf Basis der Kodiervorrichtungs-Einschränkungen beinhalten. In einer Implementierung führt das Ändern der Auflösung auf diese Weise dazu, dass ein Mittelpunkt-Standort des Bewegungssuchbereichs mit Bezug auf einen Referenzstandort des Abschnitts des ersten Frames, der infolgedessen vom Bewegungssuchbereich abgedeckt wird, erneut eingestellt wird.
-
In einer anderen Implementierung, in der es sich bei der Kodiervorrichtung 500 um eine Hardware-Kodiervorrichtung handelt, verbleiben die Parameter der Bewegungssuche von Block zu Block und von Frame zu Frame dieselben, mit der Ausnahme, dass der Mittelpunkt-Standort des Bewegungssuchbereichs sich aufgrund des Blocks des Frames, der kodiert wird, ändert. Deswegen kann mehr oder weniger Bewegung von einer Änderung der Auflösung erfasst werden, wenn die Auflösung geändert wird. Zum Beispiel kann das Ändern der Auflösung für bestimmte Blöcke innerhalb des Frames eine bessere Übereinstimmung und somit auch niedrigere Reste bereitstellen, wenn schnelle Bewegungen vorliegen, da die geringere Auflösung mehr Bewegungen innerhalb desselben Suchbereichs erfasst.
-
Bei der Ziel-Bitrate, die im Frame der anfänglichen Operationen des Prozesses 700 und 800 eingestellt wurde, kann es sich um eine variable Bitrate handeln, die Schwankungen unterliegt. Diese Schwankungen können infolge einer Änderung der Verbindungsgeschwindigkeit oder der Netzwerkverbindungsart eines Benutzers, der ein Video streamt, erfolgen. In denjenigen Fällen, in denen ein Benutzer zum Beispiel anfänglich ein Video über eine Wi-Fi-Verbindung streamt, die plötzlich nicht mehr zur Verfügung steht, kann der Videodatenstrom auf eine LTE-Verbindung umgeschaltet werden. Aufgrund der Tatsache, dass jede Netzwerkverbindungsart auf ihre eigene Ziel-Bitrate für die optimale Ansicht eines gegebenen Videodatenstroms bei einer gegebenen Auflösung schließen lassen kann, kann es wünschenswert sein, Implementierungen zu verwenden, welche die offengelegte Ratensteuerung im Frame einer Einzeldurchlaufkodierung und einer Zwei-Durchlauf-Kodierung für variable Ziel-Bitraten verarbeitet.
-
Die Aspekte der Kodierung und Dekodierung, die vorstehend beschrieben werden, veranschaulichen einige Beispiele von Kodierungs- und Dekodierungstechniken. Es ist jedoch selbstverständlich, dass das Kodieren und das Dekodieren, gemäß der Verwendung dieser Begriffe in den Ansprüchen, Komprimierung, Dekomprimierung, Transformation oder jede andere Verarbeitung oder Änderung von Daten bedeuten könnte.
-
So wie es hierin verwendet ist, bedeutet das Wort „Beispiel” als ein Beispiel, eine Konkretisierung oder Darstellung dienend”. Jeglicher Gesichtspunkt oder Entwurf, der hierin als „Beispiel” beschrieben ist, ist nicht notwendigerweise als vorzugsweise oder vorteilhaft gegenüber sonstigen Gesichtspunkten oder Entwürfen aufzufassen. Das Ziel der Verwendung des Wortes „Beispiel” besteht darin, Konzepte auf eine konkrete Art und Weise präsentieren. Wie in dieser Anmeldung benutzt, soll der Begriff „oder” ein einschließendes „oder” und nicht ein ausschließendes „oder” bedeuten. Das heißt, wenn nicht anders angegeben oder aus dem Zusammenhang deutlich hervorgehend, soll der Ausdruck „X beinhaltet A oder B” alle der natürlichen einschließenden Permutationen bedeuten. Das heißt, wenn X A beinhaltet; X B beinhaltet; oder X sowohl A als auch B beinhaltet, dann ist unter allen der vorherigen Instanzen „X beinhaltet A oder B” erfüllt. Darüber hinaus kann die Verwendung des Artikels „ein” in dieser Anmeldung und den beigefügten Ansprüchen generell so interpretiert werden, dass wenn nicht anders angegeben oder aus dem Zusammenhang deutlich „ein oder mehrere” gemeint ist, was in einer Singular-Form ausgedrückt wird. Außerdem soll die durchgängige Verwendung des Begriffs „eine Implementierung” oder „die Implementierung” nicht dasselbe wie Ausführungsform oder Implementierung bedeuten, es sei denn er wird ausdrücklich als eine solche bezeichnet.
-
Implementierungen der Übertragungsstation 202 und/oder der Empfangsstation 206 (und die Algorithmen, Verfahren, Anweisungen, usw., die darauf gespeichert sind und/oder davon ausgeführt werden, einschließlich von der Kodiervorrichtung 500 und der Dekodiervorrichtung 600) können mittels Hardware, Software oder einer Kombination davon realisiert werden. Die Hardware kann zum Beispiel Computer, Intellectual Property(IP)-Kerne, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare logische Anordnungen, optische Prozessoren, programmierbare logische Steuerungen, Mikrocode. Microcontroller, Server, Mikroprozessoren, digitale Signalprozessoren und alle sonstigen geeigneten Schaltungen beinhalten. In den Ansprüchen sollte der Begriff „Prozessor” als jede der vorstehend genannten Hardware umfassend, und zwar unabhängig davon, ob einzeln oder in Kombination, verstanden werden. Die Begriffe „Signal” und „Daten” werden austauschbar verwendet. Ferner müssen die Abschnitte der Übertragungsstation 202 und der Empfangsstation 206 nicht notwendigerweise auf dieselbe Weise implementiert werden.
-
Ferner können die Übertragungsstation 202 oder die Empfangsstation 206, zum Beispiel, gemäß einem Aspekt, unter Verwendung eines Allzweck-Computers oder eines Allzweck-Prozessors mit einem Computerprogramm implementiert werden, das, sofern es ausgeführt wird, alle entsprechenden Verfahren. Algorithmen und/oder Anwendungen, die hierin beschrieben werden, ausführt. Darüber hinaus oder alternativ dazu, kann zum Beispiel ein für einen bestimmten Zweck vorgesehener Computer/Prozessor verwendet werden, der eine andere Hardware umfassen kann, um jegliche der hierin beschriebenen Verfahren, Algorithmen oder Anweisungen auszuführen.
-
Die Übertragungsstation 202 und die Empfangsstation 206 können zum Beispiel auf Computern in einem Videokonferenzsystem implementiert werden. Alternativ dazu kann die Übertragungsstation 202 auf einem Server implementiert werden und die Empfangsstation 206 kann auf einem vom Server separaten Gerät, wie etwa einem handgehaltenen Kommunikationsgerät, implementiert werden. Im vorliegenden Fall kann die Übertragungsstation 202 Inhalte, die eine Kodiervorrichtung 500 verwenden, in ein kodiertes Videosignal kodieren und das kodierte Videosignal zum Kommunikationsgerät übermitteln. Im Gegenzug kann das Kommunikationsgerät dann das kodierte Videosignal unter Verwendung einer Dekodiervorrichtung 600 dekodieren. Alternativ dazu kann das Kommunikationsgerät Inhalte, die lokal auf dem Kommunikationsgerät gespeichert werden, wie zum Beispiel Inhalte, die nicht von der Übertragungsstation 202 übermittelt worden sind, dekodieren. Andere geeignete übertragende oder empfangende Implementierungsschemas stehen zur Verfügung. Zum Beispiel kann es sich bei der Empfangsstation 206 im Allgemeinen eher um einen stationären Personal Computer als um ein tragbares Kommunikationsgerät handeln und/oder ein Gerät, einschließlich einer Kodiervorrichtung 500 kann auch eine Dekodiervorrichtung 600 beinhalten.
-
Ferner können sämtliche oder ein Abschnitt der Implementierungen der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, auf das zum Beispiel von einem physisch greifbaren computerverwendbaren oder computerlesbaren Medium zugegriffen werden kann. Bei einem computerverwendbaren oder computerlesbaren Medium kann es sich um jedes Gerät handeln, welches das Programm zum Beispiel auf physisch greifbare Weise enthalten, speichern, kommunizieren oder transportieren kann, damit es von jedem beliebigen Prozessor oder in Verbindung mit jedem beliebigen Prozessor verwendet werden kann. Bei dem Medium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches oder ein Halbleitergerät handeln. Andere geeignete Medien stehen ebenfalls zur Verfügung.
-
Gemäß Ausführungsformen erreicht die dynamische Auflösungsumschaltung eine Ziel-Bitrate für die Einzeldurchlauf- und Zwei-Durchlauf-Kodierung eines Videodatenstroms. Eine Einzeldurchlaufkodierung ermittelt, ob eine Kodierungs-Bitrate für einen Frame eine Ziel-Bitrate erfüllt. Falls dies nicht der Fall ist, wird ein Quantifizierungsparameter, der verwendet wird, um den Frame zu kodieren, mit Mindest- und Höchstschwellenwerten verglichen, um zu ermitteln, ob die Auflösung des Videos angepasst werden muss. Eine Zwei-Durchlauf-Kodierung kodiert einen Eingaberahmen unter Verwendung eines Quantifizierungsparameters und ermittelt, ob die Auflösung des Videos für das Kodieren des Frames während eines zweiten Durchlaufs auf Basis der Bitrate, mit der der Eingaberahmen kodiert wird, angepasst werden muss. Die Auflösung kann auf Basis der Kodierungsvorrichtungs-Einschränkungen mit Bezugnahme auf einen Bewegungssuchbereich, der verwendet wird, um einen Frame zu kodieren, angepasst werden.
-
Die vorstehend beschriebenen Ausführungsformen, Implementierungen und Aspekte wurden beschrieben, um ein einfaches Verständnis der vorliegenden Erfindung zu ermöglichen und schränken die vorliegende Erfindung nicht ein. Die Erfindung soll im Gegenteil verschiedene Modifizierungen und äquivalente Anordnungen innerhalb des Umfangs der angehängten Ansprüche abdecken, deren Schutzbereich die breiteste Interpretation erfahren soll, um so alle solche Modifikationen und äquivalenten Aufbauten zu umfassen, wie es unter dem Gesetz vorgesehen ist.