-
TECHNISCHES GEBIET
-
Diese Anmeldung betrifft generell Computer erzeugtes Video und insbesondere die Verbesserung einer Computer erzeugten Videokodierung unter Verwendung einer Inhaltsinformation.
-
HINTERGRUND
-
Die Video-Technik, die in vielen Konsumgeräten und professionellen Geräten verbreitet ist, beruht auf einem oder mehreren Video-Prozessoren, um Videosignale für die Anzeige zu erzeugen. Dies gilt insbesondere für Video-Spieleanwendungen.
-
Eine der populäreren Eigenschaften zur Integration in moderne Video-Prozessoren ist die Realisierung einer mächtigen Echtzeit-Videokomprimierung. Videokomprimierung oder Videokodierung vergleicht typischerweise ein Video mit dem nächsten und sendet lediglich die Unterschiede zwischen Blöcken bzw. Rahmen. Eine derartige Kodierung funktioniert gut, wenn das Video nur einen kleinen Anteil an Bewegung enthält. Ein stillstehender Block aus Text kann beispielsweise mit sehr wenigen übermittelten Daten wiederholt werden. In Bereichen des Videobilds mit mehr Bewegung ändern sich mehr Pixel von einem Block zum nächsten, und daher muss das Video-Komprimierschema mehr Daten übertragen, um der größeren Anzahl an sich ändernden Pixel Rechnung zu tragen.
-
Häufig weist der aufwändigste Videoinhalt große Unterschiede zwischen Blöcken auf (beispielsweise große Anteile an Bewegung, Explosionen, usw.). Es wird typischerweise eine sehr mächtige Video-Verarbeitungsarchitektur benötigt, um ein derartiges intensives Video zu handhaben. Ein derartiges Video weist häufig einen großen Anteil an hochfrequenten Details auf, und um die Blockrate beizubehalten, verringert der Video-Prozessor entweder die Qualität des Videos oder er erhöht die Bitrate des Videos, um diese zusätzliche Information mit dem gleichen Grad an Detail wie in vorhergehenden Blöcken als Bild darzustellen.
-
Weitere Kodierungsverfahren sind in Martinez, J.L. et al: „Efficient WZ-to-H264 transcoding using motion vector information sharing“ in IEEE International Conference on Multimedia and Expo, Seiten 1394-1397, vom 28.Juni 2009 bis 3. Juli 2009, und in Daribo, I. „Arbitrarily shaped sub-block motion prediction in texture map compression using depth information“ in Picture Coding Symposium (PCS) 2012, Seiten 121-124, 7.-9.5 2012, sowie in
US 2004/0095999 A1 .
-
ÜBERBLICK
-
Ein Aspekt stellt ein Video-Kodiersystem bereit gemäß Anspruch 1. Das System umfasst unter anderem eine Kodier-Verarbeitungseinheit und eine Transformationsfunktion. Die Kodier-Verarbeitungseinheit ist ausgebildet, ein Signal zu empfangen, das einen Block an Videodaten repräsentiert, und kodierte Information zu erzeugen, die mit dem Block an Videodaten in Beziehung steht. Die Transformationsfunktion ist ausgebildet, ein Signal zu empfangen, das Inhaltsinformation in Bezug auf einen Inhalt des Blocks an Videodaten repräsentiert, und die Inhaltsinformation in Kodierer-Steuerinformation zu transformieren. Die Transformationsfunktion ist ferner ausgebildet, den Betrieb der Kodier-Verarbeitungseinheit unter Verwendung der Kodierer-Steuerinformation zu steuern.
-
Ein noch weiterer Aspekt stellt ein dreidimensionales (3D) Modellsystem gemäß Anspruch 5 bereit, das einen kodierten Videostrom erzeugt. Das System umfasst unter anderem eine Inhalts-Verarbeitungseinheit, eine Bilderzeugungseinheit und einen Videokodierer. Die Bilderzeugungseinheit ist ausgebildet, von der Inhalts-Verarbeitungseinheit Information zu empfangen, die ein 3D-Modell betrifft, und entsprechende zweidimensionale (2D) Bilder zu erzeugen. Der Videokodierer ist ausgebildet, die 2D-Bilder aus der Bilderzeugungseinheit zu empfangen und einen entsprechenden kodierten Videostrom zu erzeugen. Der Videokodierer ist ferner ausgebildet, aus der Inhalts-Verarbeitungseinheit Inhaltsinformation zu empfangen, die die 2D-Bilder betrifft, die Inhaltsinformation in Kodierer-Steuerinformation zu transformieren und die Kodierung der 2D-Bilder entsprechend der Kodierer-Steuerinformation zu steuern.
-
KURZE BESCHREIBUNG
-
Es wird nun auf die folgenden Beschreibungen in Verbindung mit den begleitenden Zeichnungen verwiesen, in denen:
- 1 eine Blockansicht eines Spielesystems ist;
- 2 eine Blockansicht eines Spielesystems gemäß der Offenbarung ist; und
- 3 eine Blockansicht eines Kodierers gemäß der Offenbarung ist.
-
DETAILLIERTE BESCHREIBUNG
-
1 ist eine Blockansicht eines Spielesystems 100. obwohl die vorliegende Offenbarung ein Spielesystem beschreibt, ist zu beachten, dass Aspekte der Offenbarung in anderen 3D-Modellsystemen angetroffen werden können, die einen kodierten Videostrom erzeugen.
-
Eine Inhalts-Verarbeitungseinheit 102 oder eine andere Anwendung erzeugt ein dreidimensionales (3D) Modell 104 (oder eine Szenendatei) für eine Bilderzeugungseinheit 106. Die Inhalts-Verarbeitungseinheit 102 kann eine Echtzeit-Verarbeitungsfunktionalität zum Ausführen eines Videospiels bereitstellen, etwa eine Anwendereingabe/Ausgabefunktion, eine Physik-Verarbeitungseinheit, Animation, künstliche Intelligenz, einen Szenengraphen und andere Funktionen. Das 3D-Modell 104 kann Information, etwa Geometrie-, Betrachtungspunkt-, Oberflächenbeschaffenheits-, Beleuchtungs- und Schattierungsinformation, in einer Beschreibung einer virtuellen Szene enthalten.
-
Die Bilderzeugungseinheit 106 empfängt das 3D-Modell 104 und erzeugt ein entsprechendes zweidimensionales (2D) Bild 108. Typischerweise erzeugt die Bilderzeugungseinheit 106 neue 2D-Bilder 108 mit einer Rate, die für ein Videospiel geeignet ist. Ein Kodierer 110 empfängt die 2D-Bilder 108 und erzeugt einen kodierten Videostrom 112. Der Videostrom 112 ist für unmittelbare Betrachtung auf einem Video-Anzeigegerät oder für die Aufzeichnung auf einem analogen oder digitalen Aufzeichnungsmedium für eine spätere Betrachtung geeignet.
-
Der Videostrom 112 enthält typischerweise I-(blockinterne) Blöcke, P-(vorhergesagte) Blöcke und B-(bidirektionale) Blöcke. I-Blöcke enthalten all diejenigen Daten, die zum Beschreiben eines einzelnen 2D-Bild 108 erforderlich sind und dienen als das erste Element einer Struktur, die als eine „Gruppe von Bildern“ (GOP) bezeichnet ist. T-Blöcke und P-Blöcke beschreiben einen Unterschied zwischen einem 2D-Bild 108 und einem vorhergehenden oder nachfolgenden I-Block oder P-Block.
-
Der Kodierer 110 kann beginnen, indem er einen Differenzblock aus einem 2D-Bild 108, das aus der Bilderzeugungseinheit 106 empfangen ist, erzeugt. Der Differenzblock wird typischerweise erzeugt, indem das 2D-Bild 108 mit einem vorhergehenden Videoblock verglichen wird. Der Differenzblock wird typischerweise erzeugt, indem das 2D-Bild 108 in Makro-Blöcke aufgebrochen wird, die eine quadratische oder rechteckige Ansammlung mit festgelegter Größe aus benachbarten Pixel sind.
-
Der Differenzbetrag wird dann in eine geeignete Form transformiert, die für die Komprimierung geeignet ist; beispielsweise durch Anwenden einer diskreten Kosinustransformation (TCP) oder einer Ganzzahl-Transformation (IT) auf den Differenzbetrag, um Transformationskoeffizienten oder einfach Koeffizienten zu erzeugen. Die Koeffizienten werden dann auf der Grundlage eines Parameters quantisiert, der typischerweise als der „Quantisierungsparameter“ oder „QP“ bezeichnet wird. Eine Quantifizierung beschränkt den ursprünglichen Wertebereich der Transformationskoeffizienten auf eine kleinere Menge diskreter Pegel. Typischerweise wird der QP über ein gesamtes Bild hinweg angewendet, indem jeder der Koeffizienten durch den Wert des QP dividiert wird.
-
Die quantisierten Transformationskoeffizienten werden dann in Symbole oder Codewörter transformiert. Diese Transformation beruht typischerweise auf einer Häufigkeit des Auftretens von Symbolen in der Sequenz aus Blöcken aus quantisierten Koeffizienten. Diese Blöcke aus Symbolen (zusammen mit anderer Information, etwa QP, Blockzeitstempel, eine Sequenz, in der Makro-Blöcke in dem Block ausgewählt werden, und jegliche andere Informationen, die zum Dekodieren erforderlich ist) bilden den kodierten Videostrom 112.
-
Eine Ratensteuerfunktion innerhalb des Kodierers 110 bestimmt den Wert von QP, um typischerweise eine mittlere Bitrate des kodierten Videostroms 112 auf einen Sollwert zu beschränken, während versucht wird, eine adäquate Qualität (oder eine spezifizierte Qualität) eines Videoblocks, der aus den kodierten Daten wieder hergestellt wird, sicherzustellen.
-
Wenn frühere Blöcke weniger Bits als den Sollmittelwert verwendet haben, kann ein kleinerer Wert von QP für nachfolgende Blöcke angewendet werden, um zu gestatten, dass mehr Bits für die nachfolgenden Blöcke erzeugt werden. In ähnlicher Weise kann ein höherer QP-Wert in Fällen vorgesehen werden, in denen die früheren Blöcke den Sollmittelwert überschritten haben. In einigen extremen Fällen kann ein Kodierer die Kodierung von Blöcken überspringen, um sicherzustellen, dass der Sollmittelwert nicht überschritten wird, wobei dies jedoch typischerweise die Qualität des dekodierten Videostroms reduziert.
-
Die Kodierung von Videoblöcken kann zusätzlich das Vergleichen von Makro-Blöcken, die erzeugt wurden, während ein Differenzbetrag erzeugt wurde, mit einem oder mehreren vorhergehenden Blöcken beinhalten, um zu erkennen, ob ein Makro-Block im Wesentlichen unverändert geblieben ist, jedoch nur eine gewisse Anzahl von Pixel in dem Block verschoben worden ist. Eine derartige Ermittlung wird häufig durch Verschieben eines Makro-Blocks um eine kleine Anzahl von Pixel in allen Richtungen (beispielsweise N, NO, O, SO, S, SW, W, NW) und durch Vergleichen jedes verschobene Makro-Blocks mit dem vorhergehenden Block durchgeführt. Wenn keine Übereinstimmung gefunden wird, kann der Makro-Block um eine größere Strecke in jeder Richtung verschoben und wiederum mit dem vorhergehenden Block verglichen werden.
-
Wenn eine Übereinstimmung schließlich gefunden wird, kann eine Teil-Kodierung des Blockes erzeugt werden, indem die ID des Makro-Blocks in dem vorhergehenden Block und Betrag und Richtung der Verschiebung verwendet werden. Die Werte von Betrag und Richtung können als ein „Bewegungsvektor“ bezeichnet werden. Mehrere Bewegungsvektoren für entsprechende mehrere Makro-Blöcke können als ein „Bewegungsfeld“ bezeichnet werden. Bewegungsvektoren und Bewegungsfelder können auch verwendet werden, um eine Bewegung in nachfolgenden Blöcken vorherzusagen.
-
Die Ratensteuerfunktion, die zuvor beschrieben ist, kann ferner eine Zeitgrenze oder Iterationsgrenze für derartige Suchvorgänge für Bewegungsvektoren festlegen, und, wenn keine Übereinstimmung innerhalb der Grenze ermittelt wird, wird die Suche abgebrochen. Die Ratensteuerfunktion wägt die für die Bewegungsabschätzung und die Differenzberechnungen aufgewendete Verarbeitungsleistung gegeneinander ab, um einen Videostrom mit hoher Qualität mit einer gewünschten Bitrate, oder einen Videostrom kleiner Bitrate bei gewünschter Videoqualität zu erzeugen.
-
Einige Video-Kodierstandards erlauben das Ausführen von Vergleichen zwischen Blöcken nur mit Bezug auf einen unmittelbar vorhergehenden oder nachfolgenden Block. Andere Standards erlauben eine Kodierung eines Bildes in Bezug auf mehrere vorhergehende oder nachfolgende Blöcke. Derartige Kodierungsstandards mit „mehreren Referenzblöcken“ erfordern typischerweise eine größere Verarbeitungsleistung oder Verarbeitungszeit für die Kodierung.
-
2 ist eine Blockansicht eines Spielesystems 200 (oder eines anderen 3D-Modellsystems) gemäß der Offenbarung. Eine Inhalts-Verarbeitungseinheit 202 erzeugt ein dreidimensionales (3D) Modell 204 (oder eine Szenendatei) für eine Bilderzeugungseinheit 206. Die Bilderzeugungseinheit 206 empfängt das 3D-Modell 204 und erzeugt einen oder mehrere entsprechende zweidimensionale (2D) Blöcke an Videodaten 208. Ein Kodierer 210 empfängt die 2D-Blöcke (oder Bilder) und erzeugt einen kodierten Videostrom 212.
-
Der Kodierer 210 empfängt ferner aus der Inhalts-Verarbeitungseinheit 202 Inhaltsinformation 214, die die 2D-Bilder 208 betrifft. Auf der Grundlage der Inhaltsinformation 214 kann der Kodierer 210 seinen Kodiervorgang von dem mit Bezug zu dem Kodierer 110 aus 1 beschriebenen Prozess ausgehend ändern, mit dem Ergebnis, dass die Qualität erhöht und/oder die Datenmenge in dem kodierten Videostrom 212 reduziert wird. Der Kodierer 210 gemäß der Offenbarung ist somit in der Lage, ein Videobild mit besserer Qualität für eine spezifizierte Videostrom-Bitrate zu erzeugen, oder eine kleinere Videostrom-Bitrate für eine spezifizierte Videobildqualität zu erzeugen. Derartige Verbesserungen können erreicht werden, indem eine verbesserte Zuweisung von Bits in dem kodierten Videostrom oder von Prozessorzyklen in dem Kodierungsprozess vorgenommen wird. Beispiele derartiger Verbesserungen sind nachfolgend detaillierter mit Bezug zu 2 und 3 beschrieben.
-
Ein 3D-Modellsystem gemäß der Offenbarung, etwa das Spielesystems 200, kann in vielen unterschiedlichen Formen von Hardware realisiert werden. Für einfache 3D-Modelle kann das System 200 in einem Einzelprozessor-System realisiert werden. Typischer ist es, ein System gemäß der Offenbarung in einem Multi-Prozessorsystem zu realisieren, das eine spezielle Grafikverarbeitungsunterstützung bereitstellt. Ein derartiges Multi-Prozessorsystem kann einen übergeordneten Prozessor bzw. Hauptprozessor enthalten, der eine oder mehrere grafische Verarbeitungseinheiten steuert, die mehrere Prozessoren (oder Mehrfach-Verarbeitungseinheiten) bereitstellen.
-
In einigen Ausführungsformen ist ein System gemäß der Offenbarung in einer Klienten-Dienstleister bzw. Server-Konfiguration realisiert. Ein Klientengerät stellt eine Videoanzeige, die Funktion einer Anwenderschnittstelle und möglicherweise einige Elemente auf höherer Ebene der Inhalts-Verarbeitungseinheit 202 bereit, während ein Dienstleister andere Elemente der Inhalts-Verarbeitungseinheit 202, die Bilderzeugungseinheit 204 und den Kodierer 206 bereitstellt. Der kodierte Videostrom 212 kann dann dem Klienten-Gerät über eine Kommunikationsverbindung zur Anzeige auf dem Klientengerät zugeleitet werden.
-
In einigen derartigen Ausführungsformen kann eine Klienten-Dienstleister-Konfiguration realisiert werden, wobei der Dienstleister in mehreren Orten (beispielsweise in einer „Wolke“-Konfiguration oder einer anderen verteilten Rechnerumgebung) vorgesehen ist, wobei der Klient mit dem bzw. den Dienstleister bzw. Dienstleistern über das Internet, ein Funktelefonsystem oder ein anderes Netzwerk in Verbindung steht.
-
In anderen derartigen Ausführungsformen kann der Dienstleister durch einen Personalcomputer (möglicherweise mit einer speziellen Grafikverarbeitungskarte oder Schaltung) in verdrahteter oder drahtloser Kommunikation mit einem Tablett-Gerät, Funktelefon oder einem anderen tragbaren Rechnergerät bereitgestellt sein. In noch weiteren anderen derartigen Ausführungsformen kann ein Tablett-Rechner, ein Funktelefon oder ein anderes tragbares Rechnergerät als ein Dienstleister dienen und drahtlos mit einem Fernsehgerät oder einer anderen Anzeigeeinrichtungen mit großem Bildschirm in Verbindung stehen.
-
3 ist eine Blockansicht eines Kodierers 300 gemäß der Offenbarung. Der Kodierer 300 umfasst eine Kodier-Verarbeitungseinheit 302 und eine Inhaltsinformations-Transformationsfunktion 304. In der dargestellten Ausführungsform ist die Kodier-Verarbeitungseinheit 302 ausgebildet, Videoblöcke 308 zu empfangen, und ist ferner ausgebildet, aus den Blöcken 308 einen kodierten Videostrom 312 zu erzeugen. In der dargestellten Ausführungsform ist die Inhaltsinformations-Transformationsfunktion 304 ausgebildet, Inhaltsinformation 314, die die 2D-Bilder 308 betrifft, zu empfangen, und ist ferner ausgebildet, die empfangene Information in Kodierer-Steuerinformation 310 umzuwandeln. In der dargestellten Ausführungsform ist die Kodier-Verarbeitungseinheit 302 ausgebildet, eine Kodierung entsprechend der Kodierer-Steuerinformation 310 auszuführen.
-
Es werden nun Beispiele der Kodierung von Videos unter Verwendung einer Inhaltsinformation gemäß der Offenbarung mit Bezug zu dem Spielesystem 200 aus 2 und dem Kodierer 300 aus 3 angegeben. Diese Ausführungsformen stellen Darstellungen des Kodierens gemäß der Offenbarung dar, wobei jedoch zu beachten ist, dass andere Videokodierer unter Verwendung von Inhaltsinformation, die hierin nicht beschrieben sind, ebenfalls innerhalb des Schutzbereichs der Offenbarung liegen. Diese Beispiele können separat oder zusammen in beliebiger Kombination verwendet werden.
-
Beispiel #1
-
Die Inhalts-Verarbeitungseinheit 202 erzeugt typischerweise Parameter für die Bilderzeugungseinheit 206, die eine Kameraposition beinhalten, aus der die Bilderzeugungseinheit ihre 2D-Bilder erzeugen soll, und eine Projektionsmatrix, die die geometrische Abbildung des 3D-Modells in einem 2D-Bild repräsentiert. In einigen Ausführungsformen sind eine Projektionsmatrix in der Inhaltsinformation 314, die der Transformationsfunktion 304 zugeleitet werden, enthalten. Änderungen aus vorhergehenden Werten in aktuelle Werte der Projektionsmatrix können eine globale Bewegung über das Bild hinweg angeben. In Verbindung mit einer Z-Puffer-Information (Koordinateninformation über die Bildtiefe) für Elemente des 3D-Modells, die auch in der Inhaltsinformation 314 enthalten sein können, kann die Transformationsfunktion 304 einen Bewegungsvektor gemäß „bester Abschätzung“ für das gerade zu kodierende Bild berechnen. Die Kodier-Verarbeitungseinheit 302 kann dann diese „beste Abschätzung“ als einen Anfangswert in ihrem Suchvorgang zum Auffinden von Bewegungsvektoren für einen oder mehrere Makro-Blöcke in dem Block 208 verwenden.
-
Der Suchvorgang unter Verwendung dieses Anfangswerts hat eine höhere Wahrscheinlichkeit, ein akzeptables Bewegungsfeld für das Bild zu finden und hat eine höhere Wahrscheinlichkeit, weniger Verarbeitungszyklen zum Abschließen der Suche zu erfordern. In einigen Fällen kann die Verwendung weniger Verarbeitungszyklen bei der Bewegungsabschätzung die Verarbeitungszeit bei der Erzeugung des kodierten Videostroms 312 verringern. Ferner kann ein besseres Bewegungsfeld die Ratensteuerfunktion veranlassen, weniger Bits pro Block zuzuweisen, wodurch die gesamte Verarbeitungszeit beim Senden des kodierten Videos über einen Bus oder ein Netzwerk verbessert wird. In anderen Fällen kann die Reduzierung der Anzahl an Verarbeitungszyklen bei der Bewegungsabschätzung es möglich machen, dass Verarbeitungszyklen in anderen Kodierfunktionen verwendet werden, was zu einer höheren Qualität der kodierten Bilder beiträgt.
-
Beispiel #2
-
Die Z-Puffer-Information für das aktuelle 3D-Modell kann bei der Verteilung der Bitzuweisung über den Block hinweg hilfreich sein. Da das menschliche visuelle System empfindlicher für Kanten ist, kann eine Verbesserung bei der Kodierung erreicht werden, indem der Kodierer angeleitet wird, mehr Zyklen und Bits um Kanten herum anzuwenden. In einigen Ausführungsformen enthält die Inhaltsinformation 314 eine Z-Puffer-Information und die Transformationsfunktion 304 kann Kanten erkennen, indem ein Filter (beispielsweise ein 3x3-Laplace-Filter oder ein anderer Kantenerkennungsfilter) auf die empfangene Z-Puffer-Information angewendet wird. Daten, die die erkannten Kanten repräsentieren, können dann in die Kodierer-Steuerinformation 310 eingebaut werden, um die Kodier-Verarbeitungseinheit 302 zu veranlassen, mehr Zyklen und/oder Bits Gebieten des Bilds 308 um die erkannten Kanten herum zuzuweisen.
-
Auf diese Weise verwendet die Kodier-Verarbeitungseinheit 302 weniger Verarbeitungszyklen und Bits in dem kodierten Videostrom auf Bereiche, die keine Kanten sind, für die das menschliche visuelle System weniger empfindlich ist. Die Kodier-Verarbeitungseinheit 302 kann Bits und Zyklen Gebieten des Blocks zuweisen, in denen eine verbesserte Bildqualität eine Wirkung auf einen menschlichen Betrachter haben kann. Bits und Verarbeitungszyklen, die in Gebieten des Blocks eingespart wurden, in denen der Betrachter die reduzierte Qualität nicht bemerkt, können dann von der Kodier-Verarbeitungseinheit 302 verwendet werden, um die Gesamtqualität des kodierten Bilds zu erhöhen oder um die Anzahl an Bits in einem kodierten Block zu reduzieren.
-
Beispiel #3
-
Blitze und Explosionen sind übliche Erscheinungen in Videospielen. Eine Leuchtstärkenrampe ist eine gute Annäherung an derartige Effekte. In einigen Ausführungsformen ist eine Leuchtstärkenrampe in der Inhaltsinformation 314 enthalten, und die Transformationsfunktion 304 ermittelt ein Gebiet des Bildes 308, das den Blitz oder die Explosion enthält, und liefert dieses Gebiet an die Kodier-Verarbeitungseinheit 302 in der Kodierer-Steuerinformation 310.
-
Die Kodier-Verarbeitungseinheit 302 kann die Gebietsinformation auf eine oder zwei Arten verwenden. Die Gebietsinformation kann von der Kodier-Verarbeitungseinheit 302 verwendet werden, um in besserer Weise Bits zuzuweisen, die zum Kodieren des Bildes des Blitzes oder der Explosion verwendet werden. Die Gebietsinformation kann zusätzlich oder alternativ von der Kodier-Verarbeitungseinheit 302 als ein Auslöser für eine Mehrfach-Referenzblock-Bewertung verwendet werden. Eine Mehrfach-Referenzblock-Bewertung erfordert mehr Verarbeitungszyklen als eine Bewertung eines einzelnen Referenzblocks und kann für spezielle Fälle, etwa Szenen mit Explosionen/Blitzen, reserviert sein.
-
Beispiel #4
-
In einigen Ausführungsformen gibt die Inhalts-Verarbeitungseinheit 202 in der Inhaltsinformation 314 an, dass ein Teilbereich des Videoblocks überlagert (oder zusammengesetzt) ist mit einem alternativen Inhaltsgebiet, etwa einem Textfeld, einem Dialogfeld oder einem anderen Element der Anwenderschnittstelle. Die Transformationsfunktion 304 kann ein Gebiet des Blocks 308 ermitteln, das von dem alternativen Inhalt besetzt ist und kann ein Ausmaß des Gebiets in der Kodierer-Steuerinformation 310 angeben.
-
Die Kodier-Verarbeitungseinheit 302 kann dann die Gebietsinformationen benutzen, um Bits und/oder Verarbeitungszyklen zu begrenzen oder zu vermeiden, die zum Kodieren eines Teils des Blockes vorgesehen sind, der den Inhalt enthält, der von dem alternativen Inhalt ausgeschlossen ist. Dies kann erreicht werden, indem der Wert des Quantisierungsparameters (QP) in dem alternativen Inhaltsgebiet verkleinert wird, oder indem ein Suchbereich für einen Bewegungsvektor auf der Grundlage des alternativen Inhaltsgebiets reduziert wird.
-
Die vorliegende Erfindung enthält die folgenden Konzepte:
- Konzept 1. Ein Verfahren zum Kodieren eines Blocks an Videodaten, wobei das Verfahren umfasst: (i) Empfangen, von einer Anwendung, sowohl eines Blocks an Videodaten, der zu kodieren ist, als auch einer Inhaltsinformation, die einen Inhalt des Blocks an Videodaten betrifft, (ii) Transformieren der Inhaltsinformation in Kodierer-Steuerinformation, und (iii) Ändern einer Kodierung des Blocks an Videodaten auf der Grundlage der Kodierer-Steuerinformation.
- Konzept 2. Das Verfahren wie beschrieben in Konzept 1, wobei der Änderungsvorgang beinhaltet: Ermitteln eines Bewegungsvektor auf der Grundlage eines Anfangswertes eines Bewegungsvektor, der aus der Kodierer-Steuerinformation ermittelt ist.
- Konzept 3. Das Verfahren wie beschrieben in Konzept 2, wobei die Inhaltsinformation eine Kameraposition und/oder eine Projektionsmatrix und/oder eine Z-Puffer-Information enthält, und wobei die Transformation beinhaltet: Ermitteln des Anfangswerts des Bewegungsvektors unter Anwendung einer Kameraposition und/oder einer Projektionsmatrix und/oder einer Z-Puffer-Information.
- Konzept 4. Das Verfahren wie beschrieben in einem der Konzepte 1-3, wobei das Verfahren kodierte Information erzeugt, die den Block an Videodaten betrifft und wobei die Änderung beinhaltet (a) Verwenden der Inhaltsinformation zur Erkennung von Kanten in dem Block an Videodaten auf der Grundlage der Inhaltsinformation, und (b) Zuweisen von Bits in der kodierten Informationen und/oder von Prozessorzyklen in dem Kodierungsprozess zu Gebieten des Blocks an Videodaten, wobei die Zuweisung auf den erkannten Kanten beruht.
- Konzept 5. Das Verfahren wie beschrieben in Konzept 4, wobei die Inhaltsinformation eine Z-Puffer-Information enthält, und wobei der Vorgang des Verwendens eine Filterung der Z-Puffer-Information zum Erkennen von Kanten umfasst.
- Konzept 6. Das Verfahren wie beschrieben in einem der Konzepte 1-5, wobei das Verfahren kodierte Information, die den Block an Videodaten betrifft, erzeugt, wobei die Inhaltsinformation eine Leuchtstärkenrampeninformation enthält, und wobei der Vorgang des Änderns umfasst: Zuweisen von Bits in der kodierten Information und/oder Ausführen einer Mehrfach-Referenzblock-Bewertung des Blocks an Videodaten auf der Grundlage der Leuchtstärkenrampeninformation.
- Konzept 7. Das Verfahren wie beschrieben in einem der Konzepte 1-6, wobei die Inhaltsinformation eine Information über ein alternatives Inhaltsgebiet enthält; und wobei der Vorgang des Änderns umfasst: Einstellen eines Wertes eines Quantisierungsparameters und/oder Reduzieren eines Suchbereichs für einen Bewegungsvektor auf der Grundlage der Information über ein alternatives Inhaltsgebiet.
- Konzept 8. Ein Video-Kodiersystem mit (i) einer Kodier-Verarbeitungseinheit, die ausgebildet ist, ein Signal zu empfangen, das einen Block an Videodaten repräsentiert, und kodierte Information, die den Block an Videodaten betrifft, zu erzeugen, und (ii) einer Transformationsfunktion, die mit der Kodier-Verarbeitungseinheit gekoppelt und ausgebildet ist, um (a) eine Signal zu empfangen, das eine Inhaltsinformation repräsentiert, die in Beziehung steht mit einem Inhalt des Blocks an Videodaten, (b) die Inhaltsinformation in eine Kodierer-Steuerinformation umzuwandeln, und (c) den Betrieb der Kodier-Verarbeitungseinheit unter Verwendung der Kodierer-Steuerinformation zu steuern.
- Konzept 9. Das Video-Kodiersystem wie beschrieben in Konzept 8, wobei die Transformationsfunktion ausgebildet ist, einen Anfangswert eines Bewegungsvektors aus der Kodierer-Steuerinformation zu ermitteln, und wobei die Kodier-Verarbeitungseinheit ausgebildet ist, einen Bewegungsvektor auf der Grundlage des Anfangswertes eines Bewegungsvektors zu ermitteln.
- Konzept 10. Das Video-Kodiersystem wie beschrieben in Konzept 9, wobei die Inhaltsinformation eine Kamerabewegung und/oder eine Projektionsmatrix und/oder eine Z-Puffer-Information enthält, und wobei die Transformationsfunktion ausgebildet ist, den Anfangswert des Bewegungsvektors unter Anwendung der Kamerabewegung und/oder der Projektionsmatrix und/oder der Z-Puffer-Information zu ermitteln.
- Konzept 11. Das Video-Kodiersystem wie beschrieben in einem der Konzepte 8-10, wobei die Transformationsfunktion ausgebildet ist, Kanten in dem Block an Videodaten auf der Grundlage der Inhaltsinformation zu erkennen, und wobei die Kodier-Verarbeitungseinheit ausgebildet ist, Bits in der kodierten Information und/oder Prozessorzyklen in dem Kodiervorgang Gebieten des Blocks an Videodaten zuzuweisen, wobei die Zuweisung auf den erkannten Kanten beruht.
- Konzept 12. Das Video-Kodiersystem wie beschrieben in Konzept 11, wobei die Inhaltsinformation eine Z-Puffer-Information enthält, und wobei die Transformationsfunktion ausgebildet ist, die Z-Puffer-Information zum Erkennen von Kanten zu filtern.
- Konzept 13. Das Video-Kodiersystem wie beschrieben in einem der Konzepte 8-12, wobei die Inhaltsinformation Leuchtstärkenrampeninformation enthält, und wobei die Transformationsfunktion ausgebildet ist, die Kodier-Verarbeitungseinheit zu veranlassen, um Bits in der kodierten Information zuzuweisen und/oder eine Mehrfach-Referenzblock-Bewertung des Blocks an Videodaten auf der Grundlage der Leuchtstärkenrampeninformation auszuführen.
- Konzept 14. Das Video-Kodiersystem wie beschrieben in einem der Konzepte 8-13, wobei die Inhaltsinformation Information über ein alternatives Inhaltsgebiet enthält, und wobei die Transformationsfunktion ausgebildet ist, die Kodier-Verarbeitungseinheit zu veranlassen, einen Wert eines Quantisierungsparameters einzustellen und/oder einen Suchbereich eines Bewegungsvektors zu reduzieren, auf der Grundlage der Information über das alternative Inhaltsgebiet.
- Konzept 15. Ein dreidimensionales (3D) Modellsystem, das einen kodierten Videostrom erzeugt, wobei das System umfasst (i) eine Inhalts-Verarbeitungseinheit, (ii) eine Bilderzeugungseinheit, die mit der Inhalts-Verarbeitungseinheit gekoppelt und ausgebildet ist, aus der Inhalts-Verarbeitungseinheit Information zu empfangen, die ein 3D-Modell betrifft, und entsprechende zweidimensionale (2D) Bilder zu erzeugen, und (iii) einen Videokodierer, der mit der Bilderzeugungseinheit gekoppelt und ausgebildet ist, die 2D-Bilder aus der Bilderzeugungseinheit zu empfangen und einen entsprechenden kodierten Videostrom zu erzeugen, wobei der Kodierer ferner ausgebildet ist, aus der Inhalts-Verarbeitungseinheit Inhaltsinformation zu empfangen, die die 2D-Bilder betrifft, die Inhaltsinformation in eine Kodierer-Steuerinformation zu transformieren und eine Kodierung der 2D-Bilder entsprechend der Kodierer-Steuerinformation zu steuern.
- Konzept 16. Das 3D-Modellsystem wie beschrieben in Konzept 15, wobei die Inhaltsinformation eine Kamerabewegung und/oder eine Projektionsmatrix und/oder eine Z-Puffer-Information enthält, und wobei der Videokodierer ausgebildet ist, einen Anfangswert eines Bewegungsvektors unter Verwendung der Kamerabewegung und/oder der Projektionsmatrix und/oder der Z-Puffer-Information zu ermitteln, und einen Bewegungsvektor auf der Grundlage des Anfangswerts des Bewegungsvektors zu ermitteln.
- Konzept 17. Das 3D-Modellsystem wie beschrieben in Konzept 15, wobei der Videokodierer ausgebildet ist, Kanten in dem Block an Videodaten auf der Grundlage der Inhaltsinformation zu erkennen, und Bits in der kodierten Information und/oder Prozessorzyklen in dem Kodiervorgang Gebieten des Blocks an Videodaten zuzuweisen, wobei die Zuweisung auf den erkannten Kanten beruht.
- Konzept 18. Das 3D-Modellsystem wie beschrieben in Konzept 17, wobei die Inhaltsinformation eine Z-Puffer-Information enthält, und wobei der Videokodierer ausgebildet ist, die Z-Puffer-Information zum Erkennen von Kanten zu filtern.
- Konzept 19. Das 3D-Modellsystem wie beschrieben in Konzept 15, wobei die Inhaltsinformation eine Leuchtstärkenrampeninformation enthält, und wobei der Videokodierer ausgebildet ist, Bits in der kodierten Information zuzuweisen und/oder eine Mehrfach-Referenzblock-Bewertung des Blocks an Videodaten auszuführen, auf der Grundlage der Leuchtstärkenrampeninformation.
- Konzept 20. Das 3D-Modellsystem wie beschrieben in Konzept 15, wobei die Inhaltsinformation eine Information über ein alternatives Inhaltsgebiet enthält, und wobei der Videokodierer ausgebildet ist, einen Wert eines Quantisierungsparameters einzustellen und/oder einen Suchbereich eines Bewegungsvektors zu reduzieren, auf der Grundlage der Information über das alternative Inhaltsgebiet.