-
Verweis auf in Beziehung stehende Anmeldungen
-
Die vorliegende Erfindung beansprucht die Priorität der PCT Patentanmeldung, Nummer
PCT/CN2012/070428 , eingereicht am 16. Januar 2012 mit dem Titel ”CABAC Simplification for Some Syntax Elements”. Die PCT Patentanmeldung wird hiermit in ihrer Gesamtheit durch Bezugnahme eingeschlossen.
-
Technisches Gebiet
-
Die vorliegende Erfindung bezieht sich auf Videocodierung oder Videoverarbeitung. Insbesondere bezieht sich die vorliegende Erfindung auf CABAC-Codierung von Syntaxelementen mit reduzierter Komplexität in hocheffizienter Videocodierung (High Efficiency Video Coding, HEVC.
-
Hintergrund
-
Die arithmetische Codierung ist als ein effizientes Verfahren zur Datenkomprimierung bekannt und ist in Codierungsstandards wie etwa JBIG, JPEG2000, H.264/AVC und High-Efficiency Video Coding (HEVC) weit verbreitet. Im H.264/AVC JVT Testmodell (JM) und HEVC Testmodell (HM) wird kontextbasierende adaptive binäre arithmetische Codierung (CABAC) als das Entropiecodierungswerkzeug für verschiedene Syntaxelemente im Videocodierungssystem angewendet.
-
1 zeigt ein Beispiel eines CABAC-Codierers 100, welcher drei Teile enthält: Binarisierung 110, Kontextmodellierung 120 und binäre arithmetische Codierung (BAC) 130. Im Binarisierungsschritt wird jedes Syntaxelement einzeln in eine binäre Zeichenfolge (in dieser Offenbarung auch als Bin oder Bins bezeichnet) abgebildet. Im Kontextmodellierungsschritt wird ein Wahrscheinlichkeitsmodell für jedes Bin ausgewählt. Das entsprechende Wahrscheinlichkeitsmodell kann von vorhergehend codierten Syntaxelementen, Bin-Indizes, Randinformationen oder jeder Kombination davon abhängen. Nach der Binarisierung und der Kontextmodellzuweisung wird ein Bin-Wert zusammen mit seinem dazugehörigen Kontextmodell an die binäre arithmetische Codierungsvorrichtung, das heißt den Block BAC 130 in 1, zur Verfügung gestellt. Der Bin-Wert kann abhängig vom Syntaxelement und Bin-Indizes in zwei Codierungsarten codiert werden, wobei eine die reguläre Codierungsart und die andere die Bypass-Art ist. In dieser Offenbarung werden die Bins gemäß der regulären Codierungsart als reguläre Bins bezeichnet, und die Bins gemäß der Bypass-Codierungsart werden als Bypass-Bins bezeichnet. Bei der regulären Codierungsart werden die Wahrscheinlichkeit des Symbols mit der höchsten Wahrscheinlichkeit (MPS) und die Wahrscheinlichkeit des Symbols mit der niedrigsten Wahrscheinlichkeit (LPS) für BAC aus dem dazugehörigen Kontextmodell abgeleitet. Bei der Bypass-Codierungsart sind die Wahrscheinlichkeiten für das MPS und das LPS gleich. In CABAC wird die Bypass-Art eingeführt, um den Codierungsvorgang zu beschleunigen.
-
In HEVC Test Modell Version 5.0 (HM-5.0) werden Syntaxelemente wie merge_flag (zugehörig zum Merge-Flag für eine Codierungseinheit, das heißt CU), merge_idx (zugehörig zum Merge-Index), ref_idx_Ic/ref_idx_I0/ref_idx_I1 (zugehörig zum Referenzbildindex), pred_type (zugehörig zum Vorhersagetyp) und cu_qp_delta (zugehörig zum Delta eines Quantisierungsparameters QP für eine CU) unter Verwendung von CABAC codiert. Das Syntaxelement merge_flag, welches einen Wert entweder gleich 0 oder gleich 1 hat, besitzt nur ein Bin und wird einen Kontext verwendend codiert. Die Bin-Folgen von merge_idx, ref_idx_Ic/ref_idx_I0/ref_idx_I1 und pred_type sind jeweils in Tabelle 1, Tabelle 2 und Tabelle 3 gezeigt. Für merge_idx, pred_type und ref_idx_Ic/ref_idx_I0/ref_idx_I1 wird für jedes Bin ein Kontext verwendet. Für ref_idx_Ic/ref_idx_I0/ref_idx_I1 teilen die zusätzlichen Bins den gleichen Kontext wie das Bin mit binIdx gleich 2, wenn der maximale Wert von ref_idx_Ic/ref_idx_I0/ref_idx_I1 größer als 3 ist. Für cu_qp_delta wird die Bin-Folge durch einen Prozess spezifiziert, der zum nachfolgenden Pseudo-Code äquivalent ist. Der Wert von cu_qp_delta wird als synVal bezeichnet. Für Bin 0 (das heißt binIdx = 0) ist der Bin-Wert mit der Bedingung verknüpft, ob abs(synVal) größer oder gleich 0 ist, wie im Pseudo-Code gezeigt. Wenn Bin 0 einen Wert von 1 hat, werden ein oder mehrere zusätzliche Bins benutzt, um den Wert von Delta-QP zu repräsentieren. Im Pseudo-Code wird ein Parameter QpBdOffsetY aufgrund einer bestimmten Datenrepräsentation von in HM-5.0 verwendetem Delta-QP vorgetragen und QpBdOffsetY bezieht sich auf eine Bittiefe von zugrundeliegenden Videodaten. Tabelle 1. Bin-Folge von merge_idx in HM5.0
Wert | Bin-Folge |
0 | 0 | | | |
1 | 1 | 0 | | |
2 | 1 | 1 | 0 | |
3 | 1 | 1 | 1 | 0 |
4 | 1 | 1 | 1 | 1 |
binIdx | 0 | 1 | 2 | 3 |
Tabelle 2. Bin-Folge von ref_idx_lc/ref_idx_10/ref_idx_I1 in HM5.0
Wert | Bin-Folge |
0 | 0 | | | | | | |
1 | 1 | 0 | | | | | |
2 | 1 | 1 | 0 | | | | |
3 | 1 | 1 | 1 | 0 | | | |
... | . | . | . | . | ... | | |
N – 1 | 1 | 1 | 1 | 1 | | 1 | 0 |
N | 1 | 1 | 1 | 1 | ... | 1 | 1 |
binIdx | 0 | 1 | 2 | 3 | ... | N – 2 | N – 1 |
Tabelle 3. Bin-Folge von pred_type für Zwischenblöcke in HM5.0
Pseudo-Code für Bin-Folgenerzeugung von cu_qp_delta:
-
Die Kontexte, die für die Bin-Folge verwendet werden, sind auch im vorgehenden Pseudo-Code aufgezeigt. Die ersten zwei Bins von cu_qp_delta (das heißt binIdx = 0 und 1) verwenden zwei getrennte Kontexte für jedes Bin, während andere Bins (das heißt binIdx ≥ 2) einen gemeinsamen Kontext teilen. Wenn ein Bin unter Verwendung von Kontexten codiert wird, benötigt es zusätzlichen Speicher und resultiert auch in höherer Komplexität sowohl auf Codierer- als auch auf Decodiererseite. Daher ist es gewünscht, die Anzahl von benötigten Kontexten zu reduzieren.
-
Zusammenfassung
-
Ein Verfahren und eine Vorrichtung für kontextadaptive arithmetische Codierung (CABAC) eines Syntaxelements werden offenbart. Das Verfahren weist Empfangen eines Syntaxelements und Umwandeln des Syntaxelements in eine Bin-Folge auf. Die kontextadaptive arithmetische Codierung wird dann mit einer reduzierten Anzahl von Kontexten auf die Bin-Folge unter Verwendung einer Bin-Level-Bypassbetriebsart, Bin-Level-Kontextmitbenutzung oder einer Kombination aus der Bin-Level-Bypassbetriebsart und der Bin-Level-Kontextmitbenutzung angewendet. Das Syntaxelement gehört zu einer Gruppe, die merge_idx, ref_idx_Ic/ref_idx_I0/ref_idx_I1, pred_type und cu_qp_delta aufweist. In einer Ausführungsform korrespondiert das Syntaxelement zu merge_idx, und mindestens ein Bin der Bin-Folge ist in der Bin-Level-Bypassbetriebsart codiert. Zum Beispiel sind drei Bins der Bin-Folge mit Bin-Indizes entsprechend 1, 2 und 3 in der Bin-Bypassbetriebsart codiert, und der Bin-Index beginnt mit 0. Alternativ teilen mindestens zwei Bins der Bin-Folge von merge_idx einen gemeinsamen Kontext. Zum Beispiel teilen drei Bins der Bin-Folge mit Bin-Indizes entsprechend 1, 2 und 3 einen gemeinsamen Kontext. In einer anderen Ausführungsform korrespondiert das Syntaxelement zu ref_idx_Ic/ref_idx_I0/ref_idx_I1, und mindesten ein Bin der Bin-Folge ist in der Bin-Level-Bypassbetriebsart codiert. Zum Beispiel sind ein oder mehr Bins der Bin-Folge mit Bin-Indizes größer als 1 oder größer als 2 in der Bin-Bypassbetriebsart codiert. Alternativ teilen ein oder mehr Bins der Bin-Folge mit Bin-Indizes größer als 1 einen gemeinsamen Kontext.
-
Verwenden der Bin-Level-Bypassbetriebsart und Bin-Level-Kontextmitbenutzung, um die Anzahl von Kontexten zu reduzieren, kann in mehreren Instanzen oder zusammen angewendet werden. Zum Beispiel kann mindestens ein Bin der Bin-Folge in der Bin-Level-Bypassbetriebsart codiert werden, und mindestens zwei Bins der Bin-Folge können einen gemeinsamen Kontext teilen. In einem anderen Beispiel teilen mindestens zwei erste Bins der Bin-Folge einen ersten gemeinsamen Kontext und mindestens zwei zweite Bins der Bin-Folge teilen einen zweiten gemeinsamen Kontext.
-
Kurze Beschreibung der Zeichnungen
-
1 stellt eine beispielhafte Architektur eines CABAC Codierungssystems mit der Bypassbetriebsart dar.
-
2 stellt ein beispielhaftes Flussdiagramm für kontextadaptive arithmetische Codierung von merge_idx gemäß einer Ausführungsform der vorliegenden Erfindung dar, wobei Bins mit binIdx gleich 1, 2 und 3 in der Bypassbetriebsart codiert werden.
-
3 stellt ein beispielhaftes Flussdiagramm für kontextadaptive arithmetische Codierung von ref_idx_Ic/ref_idx_I0/ref_idx_I1 gemäß einer Ausführungsform der vorliegenden Erfindung dar, wobei Bins mit binIdx gleich 2 oder größer in der Bypassbetriebsart codiert werden.
-
Detaillierte Beschreibung
-
Wie vorgehend beschrieben benötigt die Verwendung von Kontexten zur Syntaxelementcodierung zusätzlichen Speicher und führt zu höherer Komplexität. Ausführungsformen der vorliegenden Erfindung reduzieren die Anzahl von Kontexten durch Verwenden der Bypassbetriebsart für mindestens ein Bin, durch Teilen eines Kontexts von mehr als einem Bin oder durch beides.
-
Zum Beispiel werden, wenn das Syntaxelement merge_idx codiert wird, die Bins für merge_idx, die in Tabelle 1 gezeigt sind, unter Verwendung von Kontexten verarbeitet. Die Bin-Position wird durch binIdx angezeigt, wobei binIdx für merge_idx von 0 bis 3 geht. In konventioneller CABAC wird für merge_idx ein Kontext für jedes Bin verwendet. Ausführungsformen gemäß der vorliegenden Erfindung können die Bypassbetriebsart für mindestens ein Bin benutzen, einen Kontext mit mehr als einem Bin teilen, um die Gesamtzahl von Kontexten zu reduzieren, oder können beides tun. Wenn die Bypassbetriebsart verwendet wird, kann die Bypassbetriebsart auf ein Bin oder auf Bins mit zu einem Satz gehörendem binIdx angewendet werden, wobei der Satz aus 1, 2 oder 3 einzeln oder jeder Kombination davon besteht. In anderen Worten kann der Satz {1}, {2}, {3}, {1,2}, {1,3}, {2,3} oder {1,2,3} sein. Zum Beispiel kann in verschiedenen Ausführungsformen die Bypassbetriebsart auf ein Bin oder auf Bins mit binIdx, die zu {3}, {2,3} oder {1,2,3} gehören, angewendet werden. Wenn die Kontextmitbenutzungsbetriebsart verwendet wird, kann ein Kontext von 2 oder mehr Bins geteilt werden. Zum Beispiel kann in verschiedenen Ausführungsformen ein gemeinsamer Kontext von Bins mit binIdx, die zu {2,3} oder {1,2,3} gehören, geteilt werden.
-
Das vorgehend beschriebene Kontextvereinfachungsverfahren für das Syntaxelement merge_idx reduziert die Anzahl von Kontexten und reduziert als Folge Speicher und Komplexität. Der Einfluss auf Systemperformance im Sinne von BD-Rate ist vernachlässigbar, wobei die BD-Rate ein weit verbreitetes Maß für eine Codierungsqualität im Bereich Videocodierung ist.
-
In einem anderen Beispiel wird das Kontextvereinfachungsverfahren gemäß der vorliegenden Erfindung auf das Syntaxelement ref_idx_Ic/ref_idx_I0/ref_idx_I1 angewendet. Die Binarisierung des Syntaxelements ref_idx_Ic/ref_idx_I0/ref_idx_I1 ist in Tabelle 2 gezeigt. Die Bin-Position wird durch binIdx angezeigt, wobei binIdx für ref_idx_Ic/ref_idx_I0/ref_idx_I1 0, 1, 2, ... N – 1 sein kann, wobei (N + 1) eine ganze Zahl ist, die sich auf die maximale Anzahl von Referenzbildern bezieht, die in einer Liste erlaubt sind. In der konventionellen CABAC wird für ref_idx_Ic/ref_idx_I0/ref_idx_I1 ein Kontext für jedes Bin verwendet. Ausführungsformen gemäß der vorliegenden Erfindung verwenden die Bypassbetreibsart für mindestens ein Bin oder teilen einen Kontext mit mehr als einem Bin, um die Gesamtzahl von Kontexten zu reduzieren. Wenn die Bypassbetreibsart verwendet wird, kann die Bypassbetriebsart auf ein Bin oder auf Bins mit zu einem Satz gehörendem binIdx angewendet werden, wobei der Satz aus 1, 2, ..., N – 2 or N – 1 einzeln oder jeder Kombination davon besteht. Zum Beispiel kann die Bypassbetriebsart in verschiedenen Ausführungsformen auf ein Bin oder Bins mit binIdx, die zu {i; 2 ≤ i ≤ (N – 1)} oder {i; 1 ≤ i ≤ (N – 1)} gehören, angewendet werden. Wenn die Kontextmitbenutzungsbetriebsart verwendet wird, kann ein gemeinsamer Kontext von 2 oder mehr Bins geteilt werden. Zum Beispiel kann in verschiedenen Ausführungsformen ein gemeinsamer Kontext von Bins mit binIdx, die zu {2, 3, ..., N – 1} oder {3, ..., N – 1} gehören, geteilt werden.
-
Das vorgehend beschriebene Kontextvereinfachungsverfahren für das Syntaxelement ref_idx_Ic/ref_idx_I0/ref_idx_I1 kann die Anzahl von Kontexten und als Folge Speicher und Komplexität reduzieren. Der Einfluss auf Systemperformance im Sinne von BD-Rate ist vernachlässigbar.
-
In noch einem weiteren Beispiel wird das Kontextvereinfachungsverfahren gemäß der vorliegenden Erfindung auf das Syntaxelement pred_type angewendet. Die Binarisierung des Syntaxelements pred_type ist in Tabelle 3 gezeigt. Die Bin-Position wird durch binIdx angezeigt, wobei binIdx für pred_type von 0 bis 4 geht. In der konventionellen CABAC wird für pred_type ein Kontext für jedes Bin verwendet. Ausführungsformen gemäß der vorliegenden Erfindung können die Bypassbetriebsart für mindestens ein Bin verwenden oder einen Kontext mit mehr als einem Bin teilen, um die Gesamtzahl von Kontexten zu reduzieren. Wenn die Bypassbetriebsart verwendet wird, kann die Bypassbetriebsart auf ein Bin oder auf Bins mit zu einem Satz gehörendem binIdx angewendet werden, wobei der Satz aus 1, 2, 3 oder 4 einzeln oder jede Kombination davon besteht. Zum Beispiel kann in verschiedenen Ausführungsformen die Bypassbetriebsart auf ein Bin oder auf Bins mit binIdx, die zu {4}, {3,4} oder {2,3,4} gehören, angewendet werden. Wenn die Kontextmitbenutzungsbetriebsart verwendet wird, kann ein gemeinsamer Kontext von 2 oder mehr Bins geteilt werden. Zum Beispiel kann in verschiedenen Ausführungsformen ein Kontext von Bins mit binIdx, die zu {2,3}, {3,4} oder {2,3,4} gehören, geteilt werden.
-
Das vorgehend beschriebene Kontextvereinfachungsverfahren für das Syntaxelement pred_type kann die Anzahl von Kontexten und als Folge Speicher und Komplexität reduzieren. Der Einfluss auf Systemperformance im Sinne von BD-Rate ist vernachlässigbar.
-
In HEVC ist das Syntaxelement merge_flag auch CABAC verwendend codiert. Das Syntaxelement merge_flag hat ein Bin. Eine Ausführungsform gemäß der vorliegenden Erfindung kann die Bypassbetriebsart für das Bin verwenden, anstatt einen Kontext zu verwenden.
-
In einem weiteren Beispiel wird das Kontextvereinfachungsverfahren gemäß der vorliegenden Erfindung auf das Syntaxelement cu_qp_delta angewendet. Die Binarisierung des Syntaxelements cu_qp_delta ist in dem vorher beschriebenen beispielhaften Pseudocode gezeigt. Bin 0 entspricht der Information, die damit verbunden ist, ”ob abs(deltaQP) größer als 0 ist”, wobei deltaQP die Differenz zwischen einem aktuellen QP-Wert und einem vorhergehenden QP-Wert ist und abs() die Absolutwertfunktion ist. Bin 1 entspricht der Information, die damit verbunden ist, ”ob abs(deltaQP) größer ist als 1”. Bins min binIdx größer oder gleich 2 beziehen sich auf ”abs(deltaQP)-1”. Der größte Wert für binIdx (N – 1) hängt vom größten erlaubten abs(deltaQP)-1 ab. In der konventionellen CABAC für cu_qp_delta verwenden die ersten zwei Bins von cu_qp_delta (das heißt binIdx = 0 und 1) zwei getrennte Kontexte für jedes Bin, während andere Bins (das heißt binIdx ≥ 2) einen gemeinsamen Kontext teilen. Ausführungsformen gemäß der vorliegenden Erfindung können die Bypassbetriebsart für mindestens ein Bin verwenden oder einen Kontext mit mehr als einem Bin teilen, um die Gesamtzahl von Kontexten zu reduzieren. Wenn die Bypassbetriebsart verwendet wird, kann die Bypassbetriebsart auf ein Bin oder auf Bins mit binIdx, die zu einem Satz gehören, angewendet werden, wobei der Satz aus 1, 2, ..., N – 1 oder jeder Kombination davon besteht. Zum Beispiel kann die Bypassbetriebsart gemäß einer Ausführungsform auf Bins mit binIdx gleich 2 oder größer angewendet werden. Gemäß einer anderen Ausführungsform kann die Bypassbetriebsart auf Bins mit binIdx gleich 1 oder größer angewendet werden. Wenn die Kontextmitbenutzungsbetriebsart verwendet wird, kann ein Kontext von 2 oder mehr Bins geteilt werden. Zum Beispiel kann gemäß einer Ausführungsform ein Kontext von dem Bin mit binIdx gleich 1 und Bins mit binIdx gleich 2 oder größer geteilt werden. Mit anderen Worten teilen Bins mit binIdx 1 oder größer einen gemeinsamen Kontext. Ein Kontext kann gemäß einer anderen Ausführungsform von Bins mit binIdx gleich n + 1, n + 2, ... geteilt werden, wobei n eine ganze Zahl größer als 0 ist. Bypassbetriebsart und Kontextmitbenutzung können gemäß einer Ausführungsform der vorliegenden Erfindung auch gemeinsam verwendet werden. Zum Beispiel können Bins mit binIdx im Bereich {m, ..., n – 1} denselben Kontext teilen, während Bins mit binIdx im Satz {n, n + 1, ...} die Bypassbetriebsart verwenden, wobei m und n ganze Zahlen sind und (n – 1) > m gilt. Weiter können mehrere Bin-Gruppen jeweilige gemeinsame Kontexte teilen. Zum Beispiel teilen Bins mit binIdx im Bereich {m1, ..., m2 – 1} einen ersten gemeinsamen Kontext und Bins mit binIdx im Bereich {m2, ..., m3 – 1} teilen einen zweiten gemeinsamen Kontext, wobei m1, m2 und m3 ganze Zahlen sind und m3 > m2 > m1 gilt.
-
2 stellt ein beispielhaftes Flussdiagramm für ein System dar, welches Kontextvereinfachung gemäß einer Ausführungsform der vorliegenden Erfindung enthält. In diesem Beispiel wird die Bypassbetriebsart auf Bins des Syntaxelements merge_idx angewendet, wobei merge_idx in 4 Bits binarisiert ist. Im Schritt 210 wird das Syntaxelement merge_idx in die Variable val gelesen. Die Variable val wird dann im Schritt 220 in N Bins: B[0], B[1], ... B[N – 1] binarisiert. Der Zähler i wird im Schritt 230 zu 0 initialisiert. Im Schritt 240 wird der Zähler i geprüft, um festzustellen, ob alle Bins verarbeitet wurden. Wenn alle Bins verarbeitet wurden, wird der Ablauf beendet (das heißt der „Nein”-Pfad). Andernfalls wird der Zähler i in Schritt 250 geprüft (das heißt der „Ja”-Pfad), um zu sehen, ob er gleich 0 ist. Wenn i gleich 0 ist, dann wird das Bin unter Verwendung eines Kontexts codiert, wie in Schritt 260 gezeigt; andernfalls wird das Bin in der Bypassbetriebsart codiert, wie in Schritt 270 gezeigt. Dann wird der Zähler i im Schritt 280 inkrementiert und der Ablauf geht zurück zu Schritt 240, um das nächste Bin zu verarbeiten. Entsprechend wird das Flussdiagramm in 2 dazu führen, dass das Bin mit binIdx gleich 0 unter Verwendung eines Kontexts codiert wird und dass Bins mit binIdx in {1,2,3} in der Bypassbetriebsart codiert werden.
-
3 stellt ein anderes beispielhaftes Flussdiagramm für ein System dar, welches Kontextvereinfachung gemäß einer Ausführungsform der vorliegenden Erfindung enthält. In diesem Beispiel wird die Bypassbetriebsart auf Bins des Syntaxelements ref_idx_Ic/ref_idx_I0/ref_idx_I1 angewendet, wobei ref_idx_Ic/ref_idx_I0/ref_idx_I1 in 5 Bits binarisiert wird. Das Flussdiagramm ist im Wesentlichen dasselbe wie das Flussdiagramm in 2 und dieselben Schirtte sind mit demselben Referenzzeichen gekennzeichnet. Das Syntaxelement ref_idx_Ic/ref_idx_I0/ref_idx_I1 wird in eine Variable val gelesen, wie im Schritt 210 gezeigt, und die Variable val wird im Schritt 220 in N Bins: B[0], B[1], ... B[N – 1] binarisiert, wobei N gleich 5 ist. Im Schritt 350 wird der Zähler i mit einer ganzen Zahl m (m = 2) verglichen. Für i = 0 und 1 wird B[i] unter Verwendung der Kontextbetriebsart codiert. Für Bins mit binIdx aus {2,3,4} werden die Bins in der Bypassbetriebsart codiert.
-
2 und 3 stellen Kontextcodierungsvereinfachung gemäß Ausführungsformen der vorliegenden Erfindung jeweils für die Syntaxelemente merge_idx und ref_idx_Ic/ref_idx_I0/ref_idx_I1 dar. Während in den Beispielen spezielle Syntaxelemente und Parameter (so wie die Anzahl der Bins, die zur Codierung unter Verwendung der Bypassbetriebsart ausgewählten Bins) verwendet werden, kann ein Fachmann auf dem Gebiet die vorliegende Erfindung auf andere Syntaxelemente und/oder Parameter anwenden. Weiter können die in 2 und 3 gezeigten Schritte neu angeordnet werden, und einige Schritte können zusammengefasst oder geteilt werden, um die vorliegende Erfindung auszuführen.
-
Die vorgehende Beschreibung ist vorgelegt, um einem Durchschnittsfachmann auf dem Gebiet in die Lage zu versetzen, die vorliegende Erfindung, wie sie im Zusammenhang mit einer bestimmten Anwendung und deren Anforderungen dargestellt wurde, auszuführen. Verschiedene Veränderungen an den beschriebenen Ausführungsformen sind für die Fachleute auf dem Gebiet offensichtlich und die allgemeinen hier definierten Grundsätze können auf andere Ausführungsformen angewendet werden. Daher ist nicht beabsichtigt, dass die vorliegende Erfindung auf die speziellen gezeigten und beschriebenen Ausführungsformen beschränkt ist, sondern dass sie mit dem weitesten Geltungsbereich, der mit den hier offenbarten Grundsätzen und neuen Eigenschaften konsistent ist, übereinstimmt. In der vorgehenden detaillierten Beschreibung werden verschiedene spezielle Details dargestellt, um ein vollständiges Verständinis der vorliegenden Erfindung zur Verfügung zu stellen. Dennoch werden Fachleute auf dem Gebiet verstehen, dass die vorliegende Erfindung ausgeführt werden kann.
-
Eine Ausführungsform der vorliegenden Erfindung wie vorgehend beschrieben kann in verschiedener Hardware, Softwarecodes oder einer Kombination aus beiden ausgeführt werden. Zum Beispiel kann eine Ausführungsform der vorliegenden Erfindung eine Schaltung sein, die in einen Videokompressions-Chip integriert ist, oder ein Programmcode, der in eine Videokommpressions-Software integriert ist, um die hier beschriebene Verarbeitung auszuführen. Eine Ausführungsform der vorliegenden Erfindung kann auch ein Programmcode sein, der in einem digitalen Signalprozessor (DSP) auszuführen ist, um die hier beschriebene Verarbeitung auszuführen. Die Erfindung kann auch eine Anzahl von Funktionen beinhalten, die von einem Computer-Prozessor, einem digitalen Signalprozessor, einem Mikroprozessor oder eine im (Anwendungs-)Feld programmierbare (Logik-)Gatter-Anordnung (Field Programmable Gate Array, FPGA) auszuführen sind. Diese Prozessoren können konfiguriert sein, um bestimmte Aufgaben gemäß der Erfindung auszuführen durch Ausführen von maschinenlesbarem Softwarecode oder Firmwarecode, welcher die bestimmten in der Erfindung enthaltenen Verfahren definiert. Der Softwarecode oder Firmwarecode kann in verschiedenen Programmiersprachen und in verschiedenen Formaten oder Stilarten entwickelt sein. Der Softwarecode kann auch für verschiedene Zielplattformen compiliert sein. Allerdings werden verschiedene Codeformate, Stilarten und Sprachen von Softwarecodes und andere Mittel, Code zu konfigurieren, um die Aufgaben in Übereinstimmung mit der Erfindung auszuführen, nicht vom Umfang und Geltungsbereich der Erfindung abweichen.
-
Die Erfindung kann in anderen speziellen Formen ausgeführt sein, ohne von ihrem Umfang oder ihren wesentlichen Merkmalen abzuweichen. Die beschriebenen Beispiele sollen in jeder Hinsicht nur als darstellend und nicht als einschränkend angesehen werden. Der Schutzumfang der Erfindung ist daher durch die angefügten Anspüche gegeben und nicht durch die vorgehenden Beschreibungen. Alle Änderungen, die innerhalb der Bedeutung und des Umfangs der Gleichwertigkeit der Ansprüche liegen, sollen in ihren Schutzumfang fallen.