-
Aspekte dieser Offenbarung beziehen sich generell auf Decodierung. Insbesondere bezieht sich ein Aspekt dieser Offenbarung auf die Decodierung von Codes mit variabler Länge.
-
Die wachsende Berechnungskomplexität und die Anforderungen an die Datenrate von neuen Multimedianwendungen erfordern, dass Signalprozessorsysteme effiziente und flexible Routinen zur Komprimierung und Dekomprimierung bereitstellen. Codierung ist eine Technik, die verwendet wird, um Mediendateien, wie beispielsweise Bild- und Videodateien, zu komprimieren. Ein Beispiel eines Bildcodierungs- und Bilddecodierungsstandards, der in verschiedenen Benutzergeräten verwendet werden kann, ist Joint Photographic Experts Group (JPEG).
-
Der JPEG-Standard setzt eine Technik verlustbehafteter Komprimierung ein, um Standbilder basierend auf der Diskreten Cosinus-Transformation (DCT) für Codierungsoperationen und der inversen Diskreten Cosinus-Transformation (IDCT) für Decodierungsoperationen zu komprimieren. Im JPEG-Standard kann ein 8 × 8-Array von Beispieldaten, bekannt als ein Datenblock, zur Verarbeitung verwendet werden, wobei die Beispieldaten Luminanz-(Y) oder Chrominanz-(Cr und CB)-Informationen des Standbildsignals entsprechen können. Vier 8 × 8-Blöcke Luminanz-, ein 8 × 8-Block Cr- und ein 8 × 8-Block CB-Daten sind in der JPEG-Terminologie als eine Minimal Codierte Einheit (Minimum Coded Unit (MCU)) bekannt. Diese Art von JPEG-Codierung wird als YUV420 bezeichnet. Es gibt andere Arten der JPEG-Codierung, wie beispielsweise YUV444.
-
Zusätzlich können Decodierungsoperationen, die beispielsweise durch den JPEG-Standard festgelegt sind, rechenintensive Algorithmen, wie beispielsweise einen Huffman-Decodierungsalgorithmus einsetzen, welcher eine Codierung mit variabler Länge-(VLC)-Technik ist. In dieser Hinsicht kann die Huffman-Decodierung einen großen Teil der chipinternen Rechenleistung und/oder von Speicher-Ressourcen verwenden, was die Bearbeitungszeit erhöhen und die Gesamtsystem-Effizienz verringern kann.
-
Deshalb wäre es vorteilhaft, ein Verfahren, System und Computerprogramm-Produkt zu haben, das eines oder mehrere der vorstehend erörterten Probleme adressiert.
-
In verschiedenen Ausführungsbeispielen wird ein Verfahren zum Decodieren eines Codes mit variabler Länge bereitgestellt. Das Verfahren kann aufweisen: ein Empfangen des Codes mit variabler Länge, wobei der Code mit variabler Länge eine Mehrzahl von Bits ist; ein Identifizieren einer Anzahl der Male, die ein Führungsbit aufeinanderfolgend am Anfang der Mehrzahl von Bits wiederholt wird, wobei das Führungsbit zuvor auf eine 1 oder 0 festgelegt wird; und ein Identifizieren eines Codewortes in einer Tabelle von Codewörtern unter Verwendung der Anzahl der Male, die das Führungsbit wiederholt wird.
-
In einer Ausgestaltung kann der Schritt des Identifizierens eines Codewortes aufweisen: ein Ermitteln, ob die Anzahl kleiner als ein Grenzwert ist; und als Reaktion auf das Ermitteln, dass die Anzahl kleiner als der Grenzwert ist, ein Identifizieren des Codeworts in einer ersten Tabelle von Codewörtern.
-
In noch einer Ausgestaltung kann das Verfahren ferner aufweisen als Reaktion auf die Bestimmung, dass die Anzahl gleich oder größer als der Grenzwert ist, ein Identifizieren des Codeworts in einer zweiten Tabelle von Codewörtern.
-
In noch einer Ausgestaltung kann der Schritt, das Codewort in der ersten Tabelle zu identifizieren, aufweisen: ein Identifizieren einer Stelle auf einer ersten Achse der ersten Tabelle unter Verwendung der Anzahl; ein Identifizieren einer Stelle auf einer zweiten Achse der ersten Tabelle unter Verwendung einer Bitfolge in der Mehrzahl von Bits; und ein Identifizieren des Codewortes unter Verwendung der Stelle auf der ersten Achse und der Stelle auf der zweiten Achse.
-
In noch einer Ausgestaltung kann der Grenzwert 9 und das Führungsbit kann eine 1 sein.
-
In noch einer Ausgestaltung kann jeglichen Führungsbits ein 0-Bit folgen, und die Bitfolge kann aus drei Bits bestehen, die dem 0-Bit folgen.
-
In noch einer Ausgestaltung kann der Schritt, das Codewort in der zweiten Tabelle zu identifizieren, aufweisen: ein Identifizieren einer Bitfolge in der Mehrzahl von Bits; ein Paaren der Bitfolge mit einem Eintrag in der zweiten Tabelle; und ein Identifizieren des Codewortes, das mit dem Eintrag verbunden ist.
-
In noch einer Ausgestaltung kann die Bitfolge sieben Bits nach neun Bits am Anfang der Mehrzahl von Bits sein.
-
In noch einer Ausgestaltung kann der Code mit variabler Länge von einer Bilddatei stammen.
-
In noch einer Ausgestaltung kann der Schritt, das Codewort in der Tabelle zu identifizieren, aufweisen: ein Identifizieren einer Stelle auf einer ersten Achse der Tabelle unter Verwendung der Anzahl; ein Identifizieren einer Stelle auf einer zweiten Achse der Tabelle unter Verwendung einer Bitfolge in der Mehrzahl von Bits; und ein Identifizieren des Codewortes unter Verwendung der Stelle auf der ersten Achse und der Stelle auf der zweiten Achse.
-
In noch einer Ausgestaltung kann jeglichen Führungsbits ein 0-Bit folgen, und die Bitfolge kann irgendwelche Bits sein, die dem 0-Bit folgen.
-
In verschiedenen Ausführungsbeispielen wird ein System zum Decodieren eines Codes mit variabler Länge bereitgestellt. Das System kann aufweisen: eine Speichereinheit; einen Prozessor, der mit der Speichereinheit verbunden ist; und ein Decodierungsmodul, das eingerichtet ist, den Code mit variabler Länge zu empfangen, wobei der Code mit variabler Länge eine Mehrzahl von Bits ist; eine Anzahl der Male, die das Führungsbit aufeinanderfolgend am Anfang der Mehrzahl von Bits wiederholt wird, zu identifizieren, wobei das Führungsbit zuvor auf eine 1 oder 0 festgelegt wird; und ein Codewort in einer Tabelle von Codewörtern unter Verwendung der Anzahl der Male, die das Führungsbit wiederholt wird, zu identifizieren.
-
In einer Ausgestaltung kann das Decodierungsmodul, das eingerichtet ist, das Codewort zu identifizieren, aufweist, dass das Decodierungsmodul eingerichtet sein: zu ermitteln, ob die Anzahl kleiner als ein Grenzwert ist; und das Codewort in einer ersten Tabelle von Codewörtern als Reaktion auf die Bestimmung, dass die Anzahl kleiner als der Grenzwert ist, zu identifizieren.
-
In nach einer Ausgestaltung kann das Decodierungsmodul ferner eingerichtet sein, das Codewort in einer zweiten Tabelle von Codewörtern als Reaktion auf das Ermitteln, dass die Anzahl gleich oder größer als der Grenzwert ist, zu identifizieren.
-
In noch einer Ausgestaltung kann beim Identifizieren eines Codewortes in einer ersten Tabelle das Decodierungsmodul ferner eingerichtet sein: eine Stelle auf einer ersten Achse der ersten Tabelle unter Verwendung der Anzahl zu identifizieren; eine Stelle auf einer zweiten Achse der ersten Tabelle unter Verwendung einer Bitfolge in der Mehrzahl von Bits zu identifizieren; und das Codewort unter Verwendung der Stelle auf der ersten Achse und der Stelle auf der zweiten Achse zu identifizieren.
-
In noch einer Ausgestaltung kann der Grenzwert 9 und das Führungsbit kann eine 1 sein.
-
In noch einer Ausgestaltung kann beim Identifizieren des Codewortes in der zweiten Tabelle das Decodierungsmodul ferner eingerichtet sein: eine Bitfolge in der Mehrzahl von Bits zu identifizieren; die Bitfolge mit einem Eintrag in der zweiten Tabelle zu paaren; und das Codewort, das mit dem Eintrag verbunden ist, zu identifizieren.
-
In verschiedenen Ausführungsbeispielen wird ein Computerprogramm-Produkt bereitgestellt, das Logik aufweist, die auf einem körperlichen Medium codiert ist, um einen Code mit variabler Länge zu decodieren, wobei die Logik Anweisungen aufweist für: ein Empfangen des Codes mit variabler Länge, wobei der Code mit variabler Länge eine Mehrzahl von Bits ist; ein Identifizieren einer Anzahl der Male, die ein Führungsbit aufeinanderfolgend am Anfang der Mehrzahl von Bits wiederholt wird, wobei das Führungsbit zuvor auf eine 1 oder 0 festgelegt wird; und ein Identifizieren eines Codewortes in einer Tabelle von Codewörtern unter Verwendung der Anzahl der Male, die das Führungsbit wiederholt wird.
-
In einer Ausgestaltung kann das Computerprogramm-Produkt ferner aufweisen Anweisungen für: ein Ermitteln, ob die Anzahl kleiner als ein Grenzwert ist; und als Reaktion auf die Bestimmung, dass die Anzahl kleiner als der Grenzwert ist, ein Identifizieren des Codewortes in einer ersten Tabelle von Codewörtern.
-
In noch einer Ausgestaltung kann das Computerprogramm-Produkt ferner aufweisen Anweisungen für: ein Identifizieren des Codewortes in einer zweiten Tabelle von Codewörtern als Reaktion auf das Ermitteln, dass die Anzahl gleich oder größer als der Grenzwert ist.
-
In den Zeichnungen verweisen gleiche Bezugsnummern generell auf gleiche Teile überall in den verschiedenen Ansichten. Die Zeichnungen sind nicht unbedingt maßstäblich. In der folgenden Beschreibung werden Aspekte dieser Offenbarung unter Bezugnahme auf die folgenden Zeichnungen beschrieben, wobei:
-
1 ein Blockdiagramm eines Medienabfragesystems gemäß einem Aspekt dieser Offenbarung ist;
-
2 ein Blockdiagramm eines Medien-Decodierungssystems gemäß einem Aspekt dieser Offenbarung ist;
-
3 eine Codewort-Tabelle gemäß einem Aspekt dieser Offenbarung ist;
-
4 eine Codewort-Tabelle gemäß einem Aspekt dieser Offenbarung ist;
-
5 ein Ablaufdiagramm zur Decodierung eines Codes mit variabler Länge gemäß einem Aspekt dieser Offenbarung ist;
-
6 ein Ablaufdiagramm ist, um ein Codewort in einer Tabelle gemäß einem Aspekt dieser Offenbarung zu lokalisieren;
-
7 ein Ablaufdiagramm ist, um ein Codewort in einer Tabelle gemäß einem Aspekt dieser Offenbarung zu lokalisieren;
-
8 ein Ablaufdiagramm ist, um einen Code mit variabler Länge gemäß einem Aspekt dieser Offenbarung zu decodieren; und
-
9 ein Ablaufdiagramm ist, um einen Code mit variabler Länge gemäß einem Aspekt dieser Offenbarung zu decodieren.
-
Die folgende ausführliche Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die mittels Veranschaulichung spezielle Details und Aspekte dieser Offenbarung zeigen. Das Wort „exemplarisch” wird hier in der Bedeutung „als ein Beispiel, Fall oder Veranschaulichung” verwendet. Ein jeglicher Aspekt dieser Offenbarung oder Konstruktion, der hier als „exemplarisch” beschrieben ist, ist nicht zwangsläufig als bevorzugt oder vorteilhaft gegenüber einem anderen Aspekt dieser Offenbarung oder dieser Konstruktionen auszulegen.
-
1 ist ein Blockdiagramm eines Medienabfragesystems gemäß einem Aspekt dieser Offenbarung. Das Medienabfragesystem 2 weist eine Quelle 4 und ein Teilnehmerendgerät 12 auf. Bei einem Aspekt dieser Offenbarung umfasst die Quelle 4 ein Medium 6. Es kann mit einem Teilnehmerendgerät über eine drahtgebundene Verbindung und/oder drahtlos verbunden sein. Bei einem weiteren Aspekt dieser Offenbarung kann die Quelle 4 auch ein Teil des Teilnehmerendgeräts 12 sein. Das Teilnehmerendgerät 12 weist eine Anzeigevorrichtung (Display) 16 auf, um ein Medium 6 anzuzeigen.
-
Bei einem Aspekt dieser Offenbarung weist die Quelle 4 das Medium 6 mit der Auflösung 8 auf. Die Quelle 4 kann eine Webseite im Internet, eine Speicherquelle, wie beispielsweise eine Speicherkarte oder Festplatte, ein Teilnehmerendgerät, wie beispielsweise ein mobiles Gerät oder ein Laptop oder eine andere Art von Quelle sein. Bei einem weiteren Aspekt dieser Offenbarung kann die Quelle 4 ein Speicher in dem Teilnehmerendgerät 12 sein. Zum Beispiel kann die Quelle 4 ein Bild sein, das unter Verwendung einer Kamera in dem Teilnehmerendgerät 12 aufgenommen wurde. Das Medium 6 kann ein Video oder Bild sein. Das Medium 6 kann mit einer beliebigen Codierungsart codiert sein. Zum Beispiel kann das Medium 6 mit JPEG, MPEG, H.264 oder einer anderen Art von Mediencodierungsart codiert sein.
-
Das Medium 6 hat die Auflösung 8. Die Auflösung 8 kann die systemeigene Auflösung des Mediums 6 sein. Beispielsweise kann bei einem Aspekt dieser Offenbarung die Auflösung 8 SVGA (Super Video Graphics Array) sein, die eine Auflösung von 800 × 600 hat. Die Auflösung 8 kann eine beliebige Auflösung, einschließlich, aber nicht beschränkt auf, QVGA, VGA, SVGA, XGA, WXGA und andere Arten der Auflösung sein.
-
Bei einem Aspekt dieser Offenbarung weist das Teilnehmerendgerät 12 die Decodiereinheit 14 für das Decodierungsmedium 6 auf. Das Teilnehmerendgerät 12 weist auch das Display 16 mit der Auflösung 18 auf. Bei einem Aspekt dieser Offenbarung kann das Teilnehmerendgerät 12 ein Gerät sein, das eine Decodiereinheit aufweist. Beispielsweise kann das Teilnehmerendgerät 12 ein Laptop, ein Tablet-Computer, ein Mobiltelefon, eine Kamera oder irgendeine andere Geräteart sein, die eine Decodiereinheit enthält, es ist aber nicht beschränkt darauf. Bei einem Aspekt dieser Offenbarung kann das Teilnehmerendgerät 12 ein Gerät ohne eine Decodiereinheit sein, solange das Teilnehmerendgerät 12 Zugriff auf eine Decodiereinheit hat. Zusätzlich kann das Teilnehmerendgerät 12 fähig oder eingerichtet sein, auf Mediendateien zuzugreifen. Beispielsweise kann das Teilnehmerendgerät 12 eingerichtet sein, auf eine Mediendatei über das Internet, ein Speichergerät, das mit Teilnehmerendgerät 12 verbunden ist, ein Gerät, auf das drahtlos zugegriffen wird, durch die Verwendung einer Kamera auf dem Teilnehmerendgerät 12 und/oder eine andere geeignete Quelle 4 des Mediums 6 zuzugreifen.
-
Bei einem Aspekt dieser Offenbarung ist die Decodiereinheit 14 ein Gerät, das die umgekehrte Operation eines Encoders durchführt und die Codierung rückgängig macht, so dass die Ausgangsinformation abgerufen werden kann. Die Decodiereinheit 14 kann eingerichtet sein, einen Bitstrom von Daten, die codiert wurden, zu decodieren. Bei einem Aspekt dieser Offenbarung wurden die Daten unter Verwendung einer Huffman-Codierungstechnik codiert. Die Daten können ein Medium, wie beispielsweise eine Bilddatei, sein.
-
Bei einem Aspekt dieser Offenbarung kann das Teilnehmerendgerät 12 das Medium 6 unter Verwendung des Displays 16 anzeigen. Das Display 16 kann ein Monitor und/oder irgendein anderes Anzeigegerät sein. Das Display 16 besitzt die Auflösung 18. Bei einem Aspekt dieser Offenbarung kann die Auflösung 18 QVGA (Quarter Video Graphics Array) sein, die eine Auflösung von 320 × 240 hat. Jedoch kann die Auflösung 18 eine beliebige Auflösung sein, einschließlich, aber nicht beschränkt auf, QVGA, VGA, SVGA, XGA, WXGA und andere Arten der Auflösung.
-
Zusätzlich kann das Teilnehmerendgerät 12 ein oder mehr Speicherelemente (z. B. Speicherelement 20) aufweisen, um Informationen zu speichern, die bei der Erzielung von Operationen in Verbindung mit dem Anwendungsmanagement, wie es hier dargelegt ist, zu verwenden sind. Diese Geräte können weiter Informationen in jedem geeigneten Speicherelement (z. B. Vielfachzugriffsspeicher (Random Access Memory) (RAM), Nur-Lese-Speicher (Read Only Memory) (ROM), Field Programmable Gate Array (FPGA), löschbarer programmierbarer ROM (EPROM), elektrisch lösch- und programmierbarer ROM (EEPROM), usw.), in jeder Software, Hardware oder in jeder anderen geeigneten Komponente, Gerät, Element oder Objekt speichern, wo es geeignet ist und auf speziellen Notwendigkeiten basiert. Jeder Speicher oder jedes Speicherelement, das hier beschrieben wird, sollte als eingeschlossen innerhalb des breiten Begriffs „Speicherelement”, wie er hier verwendet wird, ausgelegt werden.
-
Darüber hinaus können die Operationen zur Decodierung von Codes mit variabler Länge mittels Logik implementiert werden, die in einem oder mehr körperlichen Medien codiert ist, was nicht flüchtige Medien einschließen kann (z. B. eingebettete Logik, die in einem Anwendungs-spezifischen integrierten Schaltkreis (Application Specific Integrated Circuit) (ASIC) bereitgestellt wird, digitaler Signal-Prozessor-(DSP)-Anweisungen, Software potenziell einschließlich Maschinencode und Quellcode, der von einem Prozessor oder einer anderen ähnlichen Maschine auszuführen ist, usw.). In einigen dieser Fälle können ein oder mehrere Speicherelemente (z. B. Speicherelement 20) Daten speichern, die für die hier beschriebenen Operationen verwendet werden. Dies weist Speicherelemente, die Software, Logik, Code oder Prozessor-Anweisungen speichern können, welche ausgeführt werden, um die hier beschriebenen Aktivitäten durchzuführen, auf.
-
Zusätzlich kann das Teilnehmerendgerät 12 einen Prozessor 22 aufweisen. Der Prozessor 22 kann ein Prozessor, Mehrkernprozessor, Einzelkernprozessor, Mikrocontroller, ein Controller-Schaltkreis oder eine beliebige andere Art von Verarbeitungsgerät sein. Ein Prozessor kann irgendeine Art von Anweisungen ausführen, die mit den Daten verbunden sind, um die Operationen zu erzielen, die hier beschrieben sind. Bei einem Aspekt dieser Offenbarung könnten die Prozessoren ein Element oder einen Artikel (z. B. Daten) von einem Zustand oder einer Sache in einen anderen Zustand oder andere Sache transformieren. Bei einem weiteren Beispiel können die hier dargelegten Aktivitäten mit fester Logik oder programmierbarer Logik (z. B. Software/Computeranweisungen, die durch einen Prozessor ausgeführt werden) implementiert sein und die hierin identifizierten Elements könnten eine Art eines programmierbaren Prozessors, eine programmierbare Digitallogik (z. B. ein FPGA, ein EPROM, ein EEPROM) oder ein ASIC sein, das Digitallogik, Software, Code, elektronische Anweisungen, Flash-Speicher, optische Disks, CDs, DVD-ROM, magnetische oder optische Speicherkarten oder andere Arten von maschinell lesbaren Medien einschließt, die geeignet sind, elektronische Anweisungen zu speichern, oder eine beliebige geeignete Kombination davon.
-
Die Veranschaulichung des Medienabfragesystems 2 in 1 ist nicht dazu beabsichtigt, physikalische oder architektonische Einschränkungen zu der Weise, in der ein Aspekt dieser Offenbarung implementiert werden kann, zu implizieren. Andere Komponenten können zusätzlich und/oder anstelle von denjenigen, die veranschaulicht sind, verwendet werden. Einige Komponenten können bei einem Aspekt dieser Offenbarung unnötig sein. Außerdem werden die Blöcke präsentiert, um einige funktionelle Komponenten zu veranschaulichen. Einer oder mehrere dieser Blöcke können kombiniert und/oder in unterschiedliche Blöcke unterteilt sein, wenn sie bei einem Aspekt dieser Offenbarung implementiert sind. Beispielsweise kann sich bei einem Aspekt dieser Offenbarung die Quelle 4 innerhalb des Teilnehmerendgeräts 12 befinden.
-
2 ist ein Blockdiagramm eines Medien-Decodierungssystems gemäß einem Aspekt dieser Offenbarung; das Mediendecodierungssystem 24 weist die Quelle 4 und das Teilnehmerendgerät 12 auf. Das Mediendecodierungssystem 24 ist ein System, das eine Mediendatei decodieren und die decodierte Mediendatei anzeigen kann.
-
Bei einem Aspekt dieser Offenbarung weist das Teilnehmerendgerät 12 die Decodiereinheit 14, das Display 16, die erste Tabelle 38 und die zweite Tabelle 42 auf. Die Decodiereinheit 14 kann ein Decodierungsmodul 26, eine inverse Quantisierungseinheit 44, eine inverse Diskrete Cosinus Transformations-(IDCT)-Einheit 46 und Zusammenführ-(Reassembling)-Einheit 48 aufweisen.
-
Bei einem Aspekt dieser Offenbarung kann die Decodiereinheit 14 ein Entropie-Decoder sein. Ein Entropie-Decoder kann ein Datenerweiterungsverfahren aufweisen, anhand dem ein zuvor codiertes Symbol decodiert wird. Bei einem Aspekt dieser Offenbarung kann die Decodiereinheit 14 Daten decodieren, die unter Verwendung eines Huffman-Encoders codiert wurden. Es können jedoch andere Arten von Encodern, wie beispielsweise arithmetische Encoder, Fibonacci-Encoder sowie andere Encoder decodiert werden.
-
Bei einem Aspekt dieser Offenbarung kann die inverse Quantisierungseinheit 44 eingerichtet sein, einen numerischen Wert basierend auf einem binären Wert zu identifizieren. Der numerische Wert kann eine Repräsentation der Basis 10 des binären Wertes aufweisen. Bei einem weiteren Aspekt kann die inverse Quantisierungseinheit 44 Zahlenwerte in andere Zahlenwerte ohne Rücksicht auf die Repräsentation der Zahlenwerte umwandeln. Wenn beispielsweise eine Quantisierungseinheit eine Zahl mit drei multipliziert, kann die inverse Quantisierungseinheit 44 die Zahl durch drei teilen.
-
Bei einem Aspekt dieser Offenbarung kann die IDCT-Einheit 46 eine inverse DCT an dem empfangenen Block von numerischen Werten von der inversen Quantisierungseinheit 44 durchführen. Der empfangene Block von numerischen Werten kann eine Repräsentation der Frequenz der YUV-Farbraum-Informationen aufweisen, die mit einem 8 × 8-Block verbunden sind. Die IDCT-Einheit 46 kann Teil der Nachverarbeitung sein.
-
Der 8 × 8-Block kann Pixel aufweisen, die in Zeilen und Spalten angeordnet sind, wobei jede Zeile 8 Pixel aufweisen kann. Jedes der Pixel kann YUV-Informationen aufweisen. Die YUV-Informationen können von einem Speicher abgerufen und während der Nachbearbeitung in eine RGB-Repräsentation umgewandelt werden. Bei einem weiteren Aspekt könnte JPEG nicht auf YUV begrenzt sein. Beispielsweise kann JPEG in einem RGB-Farbmodell codiert sein.
-
Bei einem Aspekt dieser Offenbarung ist das Bild in 8 × 8-Blocks von Pixeln aufgeteilt, wenn das Medium 6 ein Bild ist. Nach dem Empfang der Informationen von der IDCT-Einheit 46, mit möglichen anderen Schritten, die dazwischen durchgeführt werden, bringt der Reassembling-Block die 8 × 8-Blöcke in eine Ordnung, so dass das Bild gebildet wird. Das Bild wird schließlich an das Display 16 weitergeleitet, um es beispielsweise auf einem Monitor anzuzeigen.
-
Die Veranschaulichung des Decodierungsmoduls 26, der inversen Quantisierungseinheit 44, der IDCT-Einheit 46 und der Reassembling-Einheit 48 ist nicht dazu beabsichtigt, physikalische oder architektonische Einschränkungen zu der Weise, in der ein Aspekt dieser Offenbarung implementiert werden kann, zu implizieren. Andere Komponenten können zusätzlich und/oder anstelle von denjenigen, die veranschaulicht sind, verwendet werden. Beispielsweise kann es beim Prozess der Decodierung verwendete Komponenten geben, die nicht dargestellt sind. Beispielsweise sind eine Farbentransformationseinheit, eine Hoch-Abtast(Up-Sampling)-Einheit, eine Nachverarbeitungseinheit, ein Bit-Entpackprogramm, eine inverse Zick-Zack-Einheit und andere Einheiten nicht veranschaulicht, können aber in Verbindung mit einem Aspekt dieser Offenbarung verwendet werden.
-
Bei einem Aspekt dieser Offenbarung kann das Decodierungsmodul 26 einen Bitstrom empfangen, der mit einer Art von Encoder, wie beispielsweise einem Huffman-Encoder, codiert wurde. Das Decodierungsmodul 26 kann einen Code mit variabler Länge 28 und den Grenzwert 36 aufweisen. Der Code mit variabler Länge 28 kann Teil des Bitstroms sein, der von der Quelle 4 stammt. Es kann andere Bits nach und vor dem Code mit variabler Länge 28 geben.
-
Bei einem Aspekt dieser Offenbarung weist der Code mit variabler Länge 28 eine Mehrzahl von Bits 30 auf. Die Mehrzahl von Bits 30 kann ferner die Bitfolge 34 und ein Führungsbit 32 aufweisen. Das Führungsbit 32 kann die Art von Bit sein, die vorher als am Anfang des Codes mit variabler Länge 28 stehend festgelegt wird. Beispielsweise kann das Führungsbit 32 eine „1” sein. Das Decodierungsmodul 26 kann eingerichtet sein, um die Zahl an Führungsbits am Anfang des Codes mit variabler Länge 28 zu zählen. Das Decodierungsmodul 26 kann auch eingerichtet sein, um die Anzahl an Führungsbits mit dem Grenzwert 36 zu vergleichen. Basierend auf dem Vergleich kann das Decodierungsmodul 26 auf die erste Tabelle 38 oder die zweite Tabelle 42 zugreifen.
-
Bei einem Aspekt dieser Offenbarung weisen die erste Tabelle 38 und die zweite Tabelle 42 Codewörter auf, wie beispielsweise ein Codewort 40. Das Codewort 40 kann mit dem Code mit variabler Länge 26 verbunden sein.
-
Das Decodierungsmodul
26 kann als Software oder Hardware implementiert sein. Wenn das Decodierungsmodul
26 als Software implementiert ist, kann es Maschinencode einsetzen, um Codewörter zu identifizieren und auf die erste Tabelle
28 und die zweite Tabelle
42 zuzugreifen. Ein Beispiel von Code in Form von Pseudocode kann wie folgt erscheinen:
-
In dem obigen Pseudocode identifiziert das Programm die Anzahl von Einsen und identifiziert dann den Code unter Verwendung der geeigneten Tabelle. Der Pseudocode identifiziert, ob ein Führungsbit eine Anzahl von Malen aufeinanderfolgend am Anfang der Mehrzahl von Bits wiederholt wird, mit dem Code „(Einsen < 9)”. Hier ist der Grenzwert 9.
-
Wenn die „Einsen” kleiner oder gleich 8 waren, dann wird eine erste Tabelle mit dem Pseudocode „Code = Tabelle [8*Einsen + ((VLC>> (28-Einsen)) & 7)]” verwendet. Wenn die „Einsen” kleiner oder gleich 8 waren, dann wird eine zweite Tabelle mit dem „Else”-Befehl des Pseudocodes verwendet und die Tabelle wird als „Code = Tabelle [9*8 + VLC>> 16) & 127]” repräsentiert.
-
Im obigen Pseudocode werden Operatoren der Programmiersprache C verwendet. Im Allgemeinen kann der Code sein:
-
Hier können Grenzwert und Zusatzbits (addierebits (addbits)) Konstanten sein. Der Pseudocode identifiziert, ob ein Führungsbit eine Anzahl von Malen aufeinanderfolgend am Anfang der Mehrzahl von Bits wiederholt wird, mit dem Code „(Einsen <=Grenzwert)”. Der Grenzwert kann eine Konstante sein, wie beispielsweise: „8”.
-
Wenn die Einsen kleiner oder gleich 8 waren, dann wird eine erste Tabelle mit dem Pseudocode „Code = Tabelle [(1 << addierebits (addbits)) * ((VLC>> (32 – addierebits (addbits) – 1-)) & ((1 addierebits (addbits)) – 1))]” verwendet. Wenn die „Einsen” kleiner oder gleich 8 waren, dann wird eine zweite Tabelle mit dem „Else”-Befehl des Pseudocodes verwendet und die Tabelle wird als „Code = Tabelle [(Grenzwert+1)*(1 << addierebits (addbits)) + ((VLC>> 16) & ((1 <<(16 – Grenzwert – 1)) – 1))]” repräsentiert.
-
Der Ausdruck „32-addierebits(addbits)-1-Einsen” ist die Anzahl an nicht genutzten Bits, die weggeschoben wurde. Das Wort hat 32 Bits. Die Anzahl an führenden Einsen wird vom Wort subtrahiert. Dann wird 1 für ein „0”-Bit subtrahiert, das den Einsen folgt. Dann wird die Anzahl an Zusatzbits subtrahiert.
-
Der Ausdruck „16 – Grenzwert” ist die maximale Anzahl an Bits, die im Code bleiben, wenn eine Grenzwertanzahl oder mehr führende „1”-Bits gefunden werden. Die maximale im JPEG-Standard definierte Codelänge ist sechzehn Bits.
-
Die Veranschaulichung des Mediendecodierungssystems 12 in 2 ist nicht dazu beabsichtigt, physikalische oder architektonische Einschränkungen zu der Weise zu implizieren, in der ein Aspekt dieser Offenbarung implementiert werden kann. Andere Komponenten können zusätzlich und/oder anstelle von denjenigen, die veranschaulicht sind, verwendet werden. Einige Komponenten können bei einem Aspekt dieser Offenbarung unnötig sein. Außerdem werden die Blöcke präsentiert, um einige funktionelle Komponenten zu veranschaulichen. Einer oder mehrere dieser Blöcke können kombiniert und/oder in unterschiedliche Blöcke unterteilt sein, wenn sie bei einem Aspekt dieser Offenbarung implementiert sind. Beispielsweise kann sich bei einem Aspekt dieser Offenbarung die Quelle 4 innerhalb des Teilnehmerendgeräts 12 befinden.
-
Die Aspekte dieser Offenbarung können die Decodierung eines VLC unter Verwendung der Anzahl der führenden „1”-Bits bereitstellen. Die VLC-Codes in der JPEG-Codierung bestehen gewöhnlich aus einer Abfolge von „1”-Bits plus einer kleinen Anzahl an Zusatzbits, in den meisten Fällen drei oder weniger. Somit ist es möglich, die VLC-Codierung zu decodieren, indem zuerst die Anzahl der führenden „1”-Bits festgestellt und dann eine Tabelle mit der Anzahl an führenden „1”-Bits und den drei Zusatzbits indiziert wird. Diese Tabelle ist viel kleiner als eine vollständige Codewort-Tabelle. Bei JPEG beträgt die maximale Codelänge 16 Bits, also hat eine vollständige Code-Tabelle 64 kB oder mehr. Die meisten modernen Prozessoren können, die Anzahl an führenden Nullen in einem Wort in einem einzelnen Zyklus bestimmen, so dass die Anzahl an führenden „1”-Bits schnell bestimmt werden kann. Ein JPEG-Decoder, der dieses Verfahren einsetzt, ist bei wichtigen Anwendungsfällen um einen Faktor zwei schneller als ein JPEG-Decoder mit zuvor bekannten Verfahren. Bei einer praktischen Implementierung verwenden wir dieses Verfahren für bis zu acht führende „1”-Bits. Im Fall von neun oder mehr führenden „1”-Bits kann der Code max. sieben Zusatzbits haben, da die maximale vom JPEG-Standard definierte Codelänge sechzehn Bits beträgt. Für diese sieben Bits verwenden wir eine vollständige Tabelle mit 128 Einträgen. Also hat die vollständige Tabelle eine Größe von 72 (9 mal 8) plus 128 Bytes, was gleich 200 Bytes ist. Die „9” ist für die Möglichkeiten von 0 bis 8 führenden „1”-Bits und die „8” ist für die verschiedenen Kombinationen eines Drei-Bit-Binärcodes. Zusätzlich kann den führenden „1”-Bits ein einzelnes „0”-Bit folgen, dem dann drei Bits folgen, die für die Codewort-Stelle in einer Tabelle verwendet werden. Im Fall von mehr als acht führenden „1”-Bits kann ein „1”-Bit den ersten neun Bits folgen. Deshalb ist die folgende Anzahl an Bits basierend auf der Anzahl an führenden „1”-Bits unterschiedlich.
-
Ein Mobiltelefon kann eine Kameraauflösung von 1600×1200 (2MP) Pixel und ein Display mit 320×240 Pixel (QVGA) haben oder ein Mobiltelefon kann eine Kamera mit 3200×2400 (8MP) und ein Display mit 640×480 Pixel (VGA) haben. In beiden Fällen ist das Verhältnis zwischen der Pixelanzahl der Kamera und des Displays 25. Dies bedeutet, dass nur 4% der Informationen im Bild angezeigt werden können, während 96% der Informationen im Bild verworfen werden können, wann immer ein Bild, das mit der Kamera aufgenommen wurde, angezeigt wird. Wenn das Bild als Vollbild angezeigt wird, können feine Details, die in Hochfrequenzkoeffizienten in der DCT codiert sind, verworfen werden. Wenn ein Zoom-In des Bildes angezeigt wird, können geclippte Makroblocks verworfen werden. In beiden Fällen bedeutet das Verwerfen, dass die entsprechenden DCT-Koeffizienten im codierten Bild übersprungen sein können.
-
Die Aspekte dieser Offenbarung berücksichtigen, dass aufgrund der Art der Codierung mit variabler Länge, die codierte Größe eines DCT-Koeffizienten ohne das Decodieren des VLC-Codes nicht bekannt sein kann. Dies bedeutet, dass VLC-Decodierung für das Überspringen von verworfenen Hochfrequenzkoeffizienten und geclippten Makrobausteinen verwendet werden kann. Da nur 4% des Bildes sichtbar ist, muss die VLC-Decodierung nur für 96% der Bildinformation erfolgen, während 4% der Bildinformation eine volle Verarbeitung benötigen kann. Dies macht die Geschwindigkeit der VLC-Decodierung für die Geschwindigkeit des gesamten Decodierprozesses wichtig.
-
Die Aspekte dieser Offenbarung berücksichtigen, dass beim Durchführen einer Suche in einer kompletten Tabelle von jedem VLC die benötigte Zeit, um die Suche durchzuführen, in der Funktion logarithmisch ist. Die Aspekte dieser Offenbarung berücksichtigen auch, dass die Verwendung einer vollständigen Code-Tabelle hinsichtlich der Zeit, die benötigt wird, um eine Suche durchzuführen, sowie hinsichtlich der ausgiebigeren Verwendung des Prozessors verglichen mit Aspekten dieser Offenbarung aufwendig sein kann.
-
Die Aspekte dieser Offenbarung berücksichtigen, dass die Verwendung einer kompletten Tabelle mit einer maximalen Codelänge größer sein kann als ein Prozessor-Speicher-Cache, wie beispielsweise ein L1-Cache. Die komplette Tabelle kann einen erweiterten Code von 16 Bits für jeden VLC haben. Die Tabelle wird dann basierend auf den 16-Bit-VLC-Codes gebildet. In dieser Tabelle kann der VLC-Code 00 beispielsweise 16.384 Mal gefunden werden. Diese Art der Tabelle kann 64 kB Speicher erfordern, um zu laden. In vielen Fällen ist der L1-Cache für ein Mobiltelefon kleiner als 64 kB.
-
Die Aspekte dieser Offenbarung berücksichtigen, dass eine Kombination der obigen zwei Tabellen verwendet werden kann. Bei diesem Aspekt kann eine 8-Bit-Tabelle erst für die Codes mit 8 Bits und darunter verwendet werden. Dann erfolgt eine zweite Suche für die Codes über 8 Bits anhand der Durchführung der binären Schnittflächensuche in einer vollständigen Code-Tabelle.
-
Die Aspekte dieser Offenbarung können das Verwenden der Anzahl an führenden 1-Bits im Code bereitstellen, um eine kleine schrittweise Nachschlagetabelle zu konstruieren. Die Anzahl an führenden 1-Bits im VLC wird verwendet, um die Nachschlagetabelle zu indizieren.
-
Die Aspekte dieser Offenbarung können berücksichtigen, dass einige gegenwärtige Methoden zusätzliche Tabellen in JPEG-Kopfzeilen verwenden, um Teile des VLC zu überspringen. Dieser Prozess kann bei der Decodierung verwendet werden, wenn Zoom-Out-Decodierung durchgeführt wird. Dieses Verfahren erfordert die Generierung der Tabellen, was bedeutet, dass eine Modifikation an Hardware-JPEG-Encodern erforderlich ist.
-
Die Aspekte dieser Offenbarung sorgen für einen Mechanismus, um eine 9 × 8-Eintragstabelle für VLCs mit 0 bis 8 führenden 1-Bits mit acht Einträgen für drei zusätzliche Bits zu verwenden. Ein 0-Bit kann den führenden 1-Bits folgen. Die drei zusätzlichen Bits können dem 0-Bit folgen. Es kann eine zusätzliche 128-Einträge-Tabelle für die VLCs mit neun oder mehr führenden 1-Bits geben. Das Ergebnis ist eine Tabelle mit 72 plus 128, was 200 Bytes gleicht. Diese Tabellengröße ist viel kleiner als eine 64-kB-Tabelle und kann in einen Prozessor-Speicher-Cache auf einem Mobiltelefon passen. Dieser Aspekt kann für weniger unvorhersagbare Verzweigungen und eine einfache Nachschlagetabelle selbst für die längsten Codes sorgen.
-
Für Bilder mit hoher Auflösung, die in diesen Tagen üblich sind, kann die Software-Decodierung eine beträchtliche Zeit in Anspruch nehmen. Die Aspekte dieser Offenbarung können 2 Megapixel-Bilder innerhalb von 300 ms auf einem 208-MHz-Prozessor decodieren. Ein vorheriger Decoder, einer, der gegenwärtig in Verwendung ist, decodierte das 2-Megapixel-Bild in 1,2 Sekunden. Das ist viermal länger als bei dem in den Aspekten dieser Offenbarung offenbarten Decoder.
-
Das Vorangehende hat eher breit die Merkmale und technischen Vorteile der unterschiedlichen Aspekte dieser Offenbarung dargestellt, damit die folgende ausführliche Beschreibung besser verstanden werden kann. Zusätzliche Funktionen und Vorteile der Aspekte dieser Offenbarung werden im Folgenden beschrieben. Es sollte für fachkundige Personen offensichtlich sein, dass die Konzeption und die speziellen offenbarten Aspekte leicht als eine Basis verwendet werden können, um andere Strukturen oder Prozesse zu modifizieren oder neu zu gestalten, um die gleichen Zwecke der unterschiedlichen Aspekte dieser Offenbarung durchzuführen. Es sollte von fachkundigen Personen auch erkannt werden, dass solche äquivalenten Konstruktionen nicht vom Sinn und Umfang, wie dargelegt in den angefügten Ansprüchen, abweichen.
-
3 ist eine Codewort-Tabelle gemäß einem Aspekt dieser Offenbarung. Die Tabelle 302 weist eine Achse 304, eine Achse 306 und eine Mehrzahl von Codewörtern, wie beispielsweise ein Codewort 308 auf. Die Tabelle 302 kann ein Beispiel der ersten Tabelle 38 sein, wie gezeigt in 2. Auf die Tabelle 302 kann von dem Decodierungsmodul 26 zugegriffen werden. Außerdem kann die Tabelle 302 in einem Speichergerät, Speicher, Prozessor-Speicher und/oder irgendeinem anderen geeigneten Speichermedium gespeichert werden.
-
Bei einem Aspekt dieser Offenbarung hat die Achse 304 die Zahlen 0 bis 8. Diese Zahlen können die Anzahl an führenden Bits in einem VLC repräsentieren. Beispielsweise ist im VLC von 11111001 die Anzahl an führenden Bits fünf, wenn sie auf eine 1 festgelegt wurden. Es gibt fünf „1”-Bits, die das VLC beginnen und aufeinanderfolgend sind. Bei diesem Beispiel ist die Anzahl fünf. Deshalb wäre die auf der Achse 304 ausgewählte Zahl „5”. Bei einem weiteren Beispiel ist im VLC 01 die Anzahl an führenden Bits Null, wenn sie auf 0 festgelegt wurden. Es gibt ein „0”-Bit, das das VLC beginnt, deshalb existieren keine Führungsbits von „1” in diesem VLC. Bei diesem Beispiel ist die Anzahl Null. Deshalb wäre die auf der Achse 304 ausgewählte Zahl „0”. Bei anderen Aspekten dieser Offenbarung können die Zahlen auf der Achse 304 unterschiedlich sein und/oder zu höheren Zahlen nach oben gehen.
-
Bei einem Aspekt dieser Offenbarung hat die Achse 306 die Zahlen 0 bis 7, die in Binärform repräsentiert sind. Beispielsweise ist die Binärform von 5 101. Diese Zahlen können eine Bitfolge in einem VLC repräsentieren. Bei einem Aspekt dieser Offenbarung sind beispielsweise im VLC von 11111001 die ersten fünf Bits Einsen und Führungsbits. Dann ist das nächste Bit von 0 eine Anzeige dafür, dass die Führungsbits beendet sind. Nach dem Anzeigebit kommen die Bitfolgen. Bei diesem Beispiel ist die Bitfolge die Bits 01. Bei einem Aspekt der Offenbarung ist die Bitfolge drei Bits. Deshalb wird das nächste Bit im Bitstrom nach dem VLC genommen, um 01X zu bilden, wobei X eine 1 oder 0 repräsentiert. Deshalb wird entweder 010 oder 011 auf der Achse 306 ausgewählt. Wie ersichtlich, ist das Codewort 308 für beide Spalten für jede Zahl gleich, die auf der Achse 304 ausgewählt ist. Wenn beispielsweise „5” auf der Achse 304 ausgewählt ist, dann ist Codewort 308 für 010 und 011 „22”. Bei anderen Aspekten dieser Offenbarung können die Zahlen auf der Achse 306 unterschiedlich sein und/oder zu höheren Zahlen nach oben gehen.
-
Bei einem Aspekt dieser Offenbarung ist die Achse 304 die Zahlen 0–8 und die Achse 306 ist der binäre Wert 0–7 (000, 001, 010, 011 ... usw.), wenn der Grenzwert 9 ist. Unter Verwendung der obigen Beispiele ist Codewort 308 22.
-
Im Gegensatz dazu kann eine Huffman-Tabelle eine Reihe von Bits sein, der ein Codewort folgt, und ein Prozess muss durch jede Zeile filtern, um das Codewort zu identifizieren. Beispielsweise kann eine Huffman-Tabelle ähnlich einer Tabelle sein, wie sie in der Norm ISO/IEC 10918-1:1993(E), Tabelle K.5 gelistet ist. 4 ist eine Codewort-Tabelle gemäß einem Aspekt dieser Offenbarung.
-
Die Standardtabelle, die nach dem Code sortiert ist, ist hier teilweise gezeigt:
-
Diese Tabelle wird hier, nachdem sie basierend auf führenden „1”-Bits aufgeteilt ist, teilweise gezeigt:
-
Die Tabelle 402 weist Einträge, wie beispielsweise Eintrag 404, und eine Mehrzahl von Codewörtern, wie beispielsweise das Codewort 406 auf. Die Tabelle 402 kann ein Beispiel für die zweite Tabelle 42 sein, wie gezeigt in 2. Auf die Tabelle 402 kann von dem Decodierungsmodul 26 zugegriffen werden. Außerdem kann die Tabelle 402 in einem Speichergerät, Speicher, Prozessor-Speicher und/oder irgendeinem anderen geeigneten Speichermedium gespeichert werden.
-
Bei einem Aspekt dieser Offenbarung hat die Tabelle 402 Einträge von VLCs und ihren jeweiligen Codewörtern. Beispielsweise hat der Eintrag 404 den VLC 1111111110000010 und das Codewort 406 von 09. Bei einem Aspekt dieser Offenbarung, beispielsweise im VLC 1111111110000011, sind die ersten neun Bits Einsen und Führungsbits. Nach den Führungsbits kommt die Bitfolge. Bei diesem Beispiel ist die Bitfolge die Bits 0000011.
-
Bei einem Aspekt dieser Offenbarung ist die Bitfolge immer die Bits (bis zu sieben) die den ersten neun Bits folgen. Bei einem weiteren Aspekt kann die Bitfolge eine unterschiedliche Größe sein. Wenn beispielsweise der Grenzwert 9 ist, haben alle Einträge in der Tabelle zumindest neun Einsen zu Beginn. Die Bitfolge kann mit den Bits, die den neun Führungsbits folgen, gepaart werden. Beispielsweise wird 0000011 mit dem Eintrag für 1111111110000011 gepaart. Bei einem weiteren Beispiel kann der vollständige VLC mit einem Eintrag gepaart werden. Beispielsweise wird 1111111110000011 mit dem vollen Eintrag von 1111111110000011 gepaart. Die Tabelle 402 kann eine unterschiedliche Anzahl an Einträgen haben, je nachdem worauf ein Grenzwert eingestellt ist, wie beispielsweise Grenzwert 36 von 2.
-
5 ist ein Ablaufdiagramm, um einen Code mit variabler Länge gemäß einem Aspekt dieser Offenbarung zu decodieren. Der Prozess 500 kann in dem Mediendecodierungssystem 24 von 2 implementiert sein.
-
Der Prozess 500 beginnt mit einem Decodierungsmodul und kann eingerichtet sein, um den Code mit variabler Länge zu empfangen, wobei der Code mit variabler Länge eine Mehrzahl von Bits ist (Schritt 502). Dann kann das Decodierungsmodul eine Anzahl der Male identifizieren, die das Führungsbit aufeinanderfolgend am Anfang der Mehrzahl von Bits wiederholt wird (Schritt 504). Das Führungsbit kann zuvor auf 1 oder 0 festgelegt werden. Bei einem Aspekt dieser Offenbarung ist das Führungsbit 1.
-
Dann wird eine Ermittlung durchgeführt, ob die Zahl kleiner als ein Grenzwert ist (Schritt 506). Bei einem Aspekt dieser Offenbarung ist der Grenzwert 9. Wenn die Zahl kleiner als ein Grenzwert ist, kann das Decodierungsmodul ein Codewort in einer ersten Tabelle von Codewörtern identifizieren (Schritt 508). Deshalb wird bei einem Aspekt dieser Offenbarung dann die erste Tabelle verwendet, wenn die Zahl an Führungsbits (z. B. 1) kleiner als 9 ist. Wenn beispielsweise die 16-Bit-Zahl 1111101001011101 ist, dann würde das Decodierungsmodul auf die erste Tabelle zugreifen, um das mit dieser Zahl verbundene Codewort zu finden. Die erste Tabelle kann die Tabelle 302 sein, wie gezeigt in 3. Bei diesem Beispiel wäre das Codewort unter Verwendung der Tabelle in 3 71.
-
Alternativ kann das Decodierungsmodul das Codewort in einer zweiten Tabelle von Codewörtern identifizieren (Schritt 510), wenn die Zahl nicht kleiner als der Grenzwert ist. Deshalb wird bei einem Aspekt dieser Offenbarung dann die zweite Tabelle verwendet, wenn die Zahl an Führungsbits (z. B. 1) gleich oder größer als 9 ist. Wenn beispielsweise die 16-Bit-Zahl 1111111110000011 ist, dann würde das Decodierungsmodul auf die zweite Tabelle zugreifen, um das mit dieser Zahl verbundene Codewort zu finden. Die zweite Tabelle kann Tabelle 402 sein, wie gezeigt in 4. Bei diesem Beispiel wäre das Codewort 0a unter Verwendung der Tabelle in 4. Danach endet der Prozess.
-
6 ist ein Ablaufdiagramm, um ein Codewort in einer Tabelle gemäß einem Aspekt dieser Offenbarung zu lokalisieren. Der Prozess 600 kann in dem Mediendecodierungssystem 24 von 2 mit der Tabelle 302 von 3 implementiert sein.
-
Der Prozess 600 beginnt mit einem Decodierungsmodul und kann eingerichtet sein, um eine Stelle auf einer ersten Achse der Tabelle unter Verwendung der Zahl zu identifizieren (Schritt 602). Bei einem Aspekt der Offenbarung wird die Stelle auf der ersten Achse anhand der Anzahl an führenden Bits im Code mit variabler Länge (VLC) identifiziert. Die Tabelle kann die Tabelle 302 sein, wie gezeigt in 3. Beispielsweise ist im VLC 11111001 die Anzahl an führenden Bits fünf, wenn sie auf eine 1 festgelegt wurden. Es gibt fünf „1”-Bits, die das VLC beginnen und aufeinanderfolgend sind. Bei diesem Beispiel ist die Anzahl fünf. Bei einem weiteren Beispiel ist im VLC 01 die Anzahl an führenden Bits Null, wenn sie auf eine 0 festgelegt wurden. Es gibt ein „0”-Bit, welches das VLC beginnt, deshalb existieren keine Führungsbits von „1” in diesem VLC. Bei diesem Beispiel ist die Anzahl Null.
-
Dann kann das Decodierungsmodul eine Stelle auf einer zweiten Achse der Tabelle unter Verwendung einer Bitfolge in der Mehrzahl von Bits identifizieren (Schritt 604). Die Bitfolge ist ein Teil der Mehrzahl von Bits, die den VLC bilden. Bei einem Aspekt dieser Offenbarung sind beispielsweise im VLC 11111001 die ersten fünf Bits Einsen und Führungsbits. Dann ist das nächste Bit von 0 eine Anzeige dafür, dass die Führungsbits beendet sind. Nach dem Anzeigebit kommen die Bitfolgen. Bei diesem Beispiel ist die Bitfolge die Bits 01. Bei einem Aspekt der Offenbarung ist die Bitfolge drei Bits. Deshalb nimmt das Decodierungsmodul das nächste Bit im Bit-Stream nach dem VLC, um 01X zu bilden, wobei X eine 1 oder 0 repräsentiert.
-
Letztendlich kann das Decodierungsmodul das Codewort unter Verwendung der Stelle auf der ersten Achse und der Stelle auf der zweiten Achse identifizieren (Schritt 606). Bei einem Aspekt dieser Offenbarung ist die erste Achse die Zahlen 0–8 und die zweite Achse der binäre Wert 0–7 (000, 001, 010, 011 usw.), wenn der Grenzwert 9 ist. Unter Verwendung der obigen Beispiele ist das Codewort mit fünf führenden Einsen und einer Bitfolge, die 01X gleicht, 22. Das Codewort 22 ist sowohl für 010 als auch 011 als die Bitfolge anwendbar. Danach endet der Prozess.
-
7 ist ein Ablaufdiagramm, um ein Codewort in einer Tabelle gemäß einem Aspekt dieser Offenbarung zu lokalisieren. Der Prozess 700 kann in dem Mediendecodierungssystem 24 von 2 mit der Tabelle 402 von 4 implementiert sein.
-
Der Prozess 700 beginnt mit einem Decodierungsmodul und kann eingerichtet sein, um eine Bitfolge in der Mehrzahl von Bits zu identifizieren (Schritt 702). Bei einem Aspekt dieser Offenbarung, beispielsweise im VLC 1111111110000011, sind die ersten neun Bits Einsen und Führungsbits. Nach den Führungsbits kommt die Bitfolge. Bei diesem Beispiel ist die Bitfolge die Bits 0000011. Bei einem Aspekt dieser Offenbarung ist die Bitfolge immer die Bits (bis zu sieben), die den ersten neun Bits folgen. Bei einem weiteren Aspekt kann die Bitfolge eine unterschiedliche Größe sein. Dann kann das Decodierungsmodul die Bitfolge mit einem Eintrag in der zweiten Tabelle paaren (Schritt 704). Wenn beispielsweise der Grenzwert 9 ist, haben alle Einträge in der Tabelle zumindest neun Einsen zu Beginn. Die Bitfolge kann mit den Bits, die den neun Führungsbits folgen, gepaart werden. Letztendlich kann das Decodierungsmodul das mit dem Eintrag verbundene Codewort identifizieren (Schritt 706). Beispielsweise wird 0000011 mit dem Eintrag für 1111111110000011 gepaart. Unter Verwendung von Tabelle 402 von 4 würde 0000011 in einem Codewort von 0a resultieren. Danach endet der Prozess.
-
8 ist ein Ablaufdiagramm, um einen Code mit variabler Länge gemäß einem Aspekt dieser Offenbarung zu decodieren. Der Prozess 800 kann in dem Mediendecodierungssystem 24 von 2 implementiert sein.
-
Der Prozess 800 beginnt mit einem Abrufen einer Mediendatei (Schritt 802). Die Mediendatei kann eine Bilddatei sein, wie beispielsweise ein JPEG. Die Mediendatei kann von einer Quelle, wie beispielsweise einem Speichergerät, oder vom Internet abgerufen werden. Die Mediendatei kann als ein binärer Bit-Stream empfangen werden. Dann identifiziert der Prozess einen Code mit variabler Länge im Bit-Stream (Schritt 804). Dann identifiziert der Prozess die Anzahl an führenden Einsen im VLC (Schritt 806). Das Führungsbit kann vorher als eine 1 oder 0 festgelegt werden. Bei einem Aspekt dieser Offenbarung ist das Führungsbit eine 1.
-
Dann wird eine Bestimmung durchgeführt, ob die Zahl kleiner als ein Grenzwert ist (Schritt 808). Bei einem Aspekt dieser Offenbarung ist der Grenzwert 9. Wenn die Zahl kleiner als ein Grenzwert ist, kann das Decodierungsmodul ein Codewort in einer ersten Tabelle von Codewörtern identifizieren (Schritt 810). Deshalb wird bei einem Aspekt dieser Offenbarung dann die erste Tabelle verwendet, wenn die Zahl an Führungsbits (z. B. 1) kleiner als 9 ist. Wenn beispielsweise die 16-Bit-Zahl 1111101001011101 ist, dann würde das Decodierungsmodul auf die erste Tabelle zugreifen, um das mit dieser Zahl verbundene Codewort zu finden. Bei diesem Beispiel wäre das Codewort unter Verwendung der Tabelle in 3 71.
-
Alternativ kann das Decodierungsmodul das Codewort in einer zweiten Tabelle von Codewörtern identifizieren (Schritt 812), wenn die Zahl nicht kleiner als der Grenzwert ist. Deshalb wird bei einem Aspekt dieser Offenbarung dann die zweite Tabelle verwendet, wenn die Zahl an Führungsbits (z. B. 1) gleich oder größer als 9 ist. Wenn beispielsweise die 16-Bit-Zahl 1111111110000011 ist, dann würde das Decodierungsmodul auf die zweite Tabelle zugreifen, um das mit dieser Zahl verbundene Codewort zu finden. Bei diesem Beispiel wäre das Codewort 0a unter Verwendung der Tabelle in 4. Danach endet der Prozess.
-
9 ist ein Ablaufdiagramm, um einen Code mit variabler Länge gemäß einem Aspekt dieser Offenbarung zu decodieren. Der Prozess 900 kann in dem Mediendecodierungssystem 24 von 2 implementiert sein.
-
Der Prozess 900 beginnt mit einem Decodierungsmodul und kann eingerichtet sein, um den Code mit variabler Länge zu empfangen, wobei der Code mit variabler Länge eine Mehrzahl von Bits ist (Schritt 902). Dann kann das Decodierungsmodul eine Anzahl der Male identifizieren, die das Führungsbit aufeinanderfolgend am Anfang der Mehrzahl von Bits wiederholt wird (Schritt 904). Das Führungsbit kann vorher als eine 1 oder 0 festgelegt werden. Bei einem Aspekt dieser Offenbarung ist das Führungsbit eine 1.
-
Dann kann das Decodierungsmodul das Codewort in einer Tabelle von Codewörtern unter Verwendung der Anzahl der Male, die das Führungsbit aufeinanderfolgend wiederholt wird, identifizieren (Schritt
906). Prozess
900 unterscheidet sich von Prozess
500 dadurch, dass bei Prozess
900 nur eine Tabelle verwendet wird. Die Tabelle, die bei Prozess
900 verwendet wird, ist ähnlich der Tabelle
302 von
3. Jedoch kann die Tabelle in dem Prozess
900 größer sein als die Tabelle
302 von
3. Die Tabelle, die in dem Prozess
900 verwendet wird, kann alle Codewörter aufweisen. Wenn nur eine Tabelle verwendet wird, kann die Tabellengröße 16×64 Bytes sein, was eine Tabellengröße von 1024 Bytes ergibt. Diese Größe ist immer noch viel kleiner als 64 kB. Etwas von der Tabelle kann von den folgenden Codes erstellt werden:
-
Danach endet der Prozess.
-
Die Flussdiagramme und Blockdiagramme in den unterschiedlichen abgebildeten Aspekten veranschaulichen die Architektur, Funktionalität und Operation von einigen möglichen Implementierungen von Vorrichtung, Verfahren, System und Computerprogramm-Produkten. In dieser Hinsicht kann jeder Block im Ablaufdiagramm oder den Prinzipschaltbildern ein Modul, Segment oder Abschnitt von computernutzbarem oder lesbarem Programmcode repräsentieren, der eine oder mehrere ausführbare Anweisungen umfasst, um die angegebene Funktion oder angegebenen Funktionen zu implementieren. Bei einigen alternativen Implementierungen kann die Funktion oder können die Funktionen, die im Block angemerkt sind, außer der Reihenfolge auftreten, wie sie in den Figuren angemerkt sind. Beispielsweise können in einigen Fällen zwei in Abfolge gezeigte Blöcke im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal abhängig von der einbezogenen Funktionalität in umgekehrter Reihenfolge ausgeführt werden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- Norm ISO/IEC 10918-1:1993(E) [0082]