DE69732271T2 - Hochbitrate Huffman Dekodierung - Google Patents

Hochbitrate Huffman Dekodierung Download PDF

Info

Publication number
DE69732271T2
DE69732271T2 DE69732271T DE69732271T DE69732271T2 DE 69732271 T2 DE69732271 T2 DE 69732271T2 DE 69732271 T DE69732271 T DE 69732271T DE 69732271 T DE69732271 T DE 69732271T DE 69732271 T2 DE69732271 T2 DE 69732271T2
Authority
DE
Germany
Prior art keywords
codeword
data
coefficient
length
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69732271T
Other languages
English (en)
Other versions
DE69732271D1 (de
Inventor
Jeffrey A. Hintzman
Brian R. Jung
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE69732271D1 publication Critical patent/DE69732271D1/de
Application granted granted Critical
Publication of DE69732271T2 publication Critical patent/DE69732271T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Description

  • Hintergrund der Erfindung
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf eine Datenkomprimierung und -Dekomprimierung unter Verwendung einer Huffman-Codierung, insbesondere auf eine Huffman-Codierung bei Standbild-(JPEG) und Videobild-(MPEG)Anwendungen und speziell auf eine Huffman-Decodierung mit hoher Bitrate.
  • 2. Beschreibung der verwandten Technik
  • Das Verdichten von Daten, das auch als Datenkomprimierung bezeichnet wird, entweder zur Übertragung oder zur langfristigen Speicherung kann unter Verwendung von Variable-Länge-Codiertechniken erreicht werden. Datenbitzeichenfolgen fester Länge werden in Bitzeichenfolgen variabler Länge codiert, wobei häufiger auftretende Datenbitzeichenfolgen oder Wörter durch Codewörter kürzerer Länge dargestellt werden, wodurch die Übertragungszeit- oder Speichereinrichtungsanforderungen verringert werden. Komprimierte Daten können durch einen Datenprozessor in dieser verdichteten Form nicht verwendet werden. Deshalb werden dieselben in ihre Form fester Länge zurück decodiert, was auch als Dekomprimierung bekannt ist.
  • Eine Form von Variable-Länge-Codes mit minimaler Redundanz wurde durch D. A. Huffman in einem Artikel mit dem Titel „A Method for the Construction of Minimum Redundancy Codes," Protokoll IEEE, IRE, Bd. 40 (9), S. 1098–1101, copr. 1952 vorgeschlagen.
  • Bei einer Huffman-Codierung und -Decodierung erhalten Symbole mit einer höheren Auftrittswahrscheinlichkeit Codes kürzerer Bitlänge. Die Huffman-Codierung ist weit verbreitet, da dieselbe eine einfache Binärbaumkonstruktion und eine optimale Durchschnittscodewortlänge liefert.
  • Verschiedene Techniken wurden entwickelt, um Huffman-Codes zu decodieren. Im Grunde wird eine Decodierung eines Stroms von Huffman-Codes vorgenommen, indem einem Binärdecodiererbaum gefolgt wird. Im Allgemeinen decodieren diese Dekomprimierungsmaschinen einen Huffman-Code entweder iterativ, immer ein oder zwei Bits gleichzeitig unter Verwendung einer sequenziellen Logik, oder parallel, wobei der gesamte Code in einem Taktzyklus unter Verwendung einer kombinatorischen Logik decodiert wird.
  • In der Technik der digitalen Druckkopiewiedergabe wurde ein Standard übernommen, der Huffman-Codes zur Datenkomprimierung verwendet. Dieser Standard wurde vorgeschlagen durch die Joint Picture Expert Group (JPEG – Verbund der Gruppe fotografischer Experten) des ANSI X3L2.8-Ausschusses, veröffentlicht als: "JPEG Digital Compression and Coding of Continuous-tone Still Images," Entwurf ISO 10918, 1991. Ein ähnlicher Standard wurde vorgeschlagen durch die Moving Picture Expert Group (MPEG – Bewegtbildexpertengruppe), veröffentlicht als: ISO/IEC JTC1 CD 11172, „Coding of Moving Pictures and Associated Audio for Digital Storage Media Up to 1.5 Mbits/second," Internationale Standardisierungsorganisation, 1992 (bekannt als „MPEG-1").
  • Bei Hochbitratenanwendungen, wie zum Beispiel Vollfarbdruckkopiedruckern, Farbbildübertragung bei Faxen oder einer digitalen Videoübertragung und dergleichen, ist ein Aufbau eines geeigneten Huffman-Decodierers entscheidend. Sowohl ein Pipeline- als auch ein Paralleldecodieren ist schwierig aufgrund der Notwendigkeit einer Rückkopplungsschleife, die erforderlich ist, um den Bitstrom wieder auszurichten. Der Variable-Länge-Code muss in seine ursprüng liche Datenzeichenfolge fester Länge decodiert werden unter Verwendung einer programmierbaren Codenachschlagetabelle. Diese Operation muss bevorzugt in einem Zyklus abgeschlossen sein, bevor das nächste Codewort decodiert werden kann, wobei diese Aufgabe durch die Beschaffenheit variabler Länge jedes aufeinander folgenden Codeworts kompliziert wird. Außerdem muss, um bei hohen Taktfrequenzen wirksam zu sein, die Logikmenge auf dem kritischen Weg minimiert sein.
  • Bei der spezifischen Anwendung von JPEG/MPEG-Daten ergeben sich zusätzlich zu der eigentlichen Huffman-Decodierungsoperation weitere Komplexitäten. Huffman-Codewörter – die im JPEG-Standard auf ein Maximum von 16 Bits beschränkt sind – werden verwendet, um ein „Begrenzte-Lauflänge-(RLL-)/Koeffizient"-Datenpaar darzustellen. Die RLL stellt die Anzahl von aufeinander folgenden Nullkoeffizienten dar, die dem aktuellen Koeffizienten unmittelbar vorausgehen, der eine Größe aufweist, die die Anzahl von Bits darstellt, die verwendet werden, um die aktuellen Koeffizientendaten zu codieren. Wie es somit in 1 gezeigt ist, folgt jedem Huffman-Codewort variabler Länge 103 ein codierter Koeffizientenwert variabler Länge 105, wobei das Huffman-Codewort 103 angibt, wie viele Bits verwendet sind, um den Koeffizientenwert zu codieren. Zum Beispiel kann es sich bei den dargestellten Daten um einen mit Vorzeichen versehenen Zwölf-Bit-Koeffizientenwert handeln, wie zum Beispiel einen roten, grünen oder blauen („RGB") oder cyanfarbenen, magentafarbenen, gelben, schwarzen („CMYK") Farbstimulusvektor zur Farbumwandlung eines Bildpixels, 8 Bit mal 8 Bit. Jedes Codewort ist ein Koeffizient, der von einem Pixel in dem Bild transformierte. Die Grundlagen von dreidimensionalen Strukturen für RGB- oder andere Dreifarbsysteme werden in der Literatur erörtert, wie zum Beispiel Principles of Color Technology, Billmeyer und Saltzman, John Wiley & Sons publishers, NY, copr. 1981 (2. Aufl.) und Color Science: Concepts and Methods, Quantitative Data and Formulae, von Wyszecki und Stiles, John Wiley & Sons publishers, NY, 1982 (2. Aufl.). Eine weitergehende Erläute rung ist jedoch für einen Fachmann für ein Verständnis der vorliegenden Erfindung nicht nötig.
  • Um noch zusätzlich Komplexität hinzuzufügen, sind im Allgemeinen Anfangsblöcke und Steuermarkierungen 107 in den komprimierten JPEG-/MPEG-Datenstrom eingebettet. Diese Markierungen sind reservierte Datenmuster; das heißt reservierte, bestimmte Zeichenfolgen von Einsen und Nullen, die an Bytegrenzen in dem Datenstrom eingebettet sind. Beispiele wären Markierungen für ABTASTUNGSBEGINN, BILDBEGINN, BILDENDE und NEUSTART. Somit muss ein JPEG-Huffman-Decodierer das Vorhandensein einer Markierung erfassen und die Markierung sowie jegliche Auffüllbits, die eventuell hinzugefügt worden sind, um die Markierung mit einer Bytegrenze auszurichten, entfernen.
  • Bei einem Standard-JPEG-Huffman-Decodierer, der eine Nachschlagetabelle von 216 Speicherorten verwendet, werden die maximalen 16 Bits als eine Adresse zu der Nachschlagetabelle verwendet, die den Lauf und die Größe für das bestimmte empfangene Codewort liefern würde. Dies erfordert jedoch einen großen, langsamen Speicher. In anderen Worten müssen der Ort und die Länge des Huffman-Codes bestimmt werden, gefolgt von einer Nachschlagetabelle- oder anderen Decodieroperation, die die Lauflänge und Größe des folgenden Koeffizienten angibt, gefolgt von einem Extrahieren dieser Daten und einer nachfolgenden Verschiebung, um das nächste Codewort zu finden, um die Operation zu wiederholen.
  • Um den Adressraum zu verringern, entwickelt Tong et al. in der U.S.-Patentschrift Nr. 5,208,593 ein Verfahren, das eine Reihe von führenden Einsen in dem Codewort verwendet, um einen kleineren Speicher zu indexieren. Ein Hinzufügen von Bits beeinträchtigt das Komprimierungsverhältnis. Um die Geschwindigkeit zu erhöhen, entwickeln Retter et al. in der U.S.-Patentschrift Nr. 5,379,070 eine Methodologie einer parallelen Verarbeitung. Dieses Verfahren umfasst zusätzliche teure Hardwarekomponenten.
  • Somit besteht ein Bedarf nach einem Huffman-Decodierverfahren und einer -Architektur hoher Bitrate, die für eine JPEG-/MPEG-Datendekomprimierung eines Bitdatenstromes, wie es in 1 gezeigt ist, geeignet sind.
  • Die US-A-5,343,195 beschreibt einen Variable-Länge-Decodierer, der einen Pufferspeicher, einen Bitstellenverschieber und eine Mehrzahl von ODER-Gattern aufweist, die einem Zwischenspeicher Signale liefern, dessen Ausgang mit dem Adresseingang einer Nachschlagetabelle gekoppelt ist. Diese Kombination liefert den Angaben gemäß eine schnelle Anlegung aufeinander folgender Codewörter variabler Länge an die Nachschlagetabelle.
  • Zusammenfassung der Erfindung
  • In ihren Grundaspekten liefert die vorliegende Erfindung eine Huffman-Decodierervorrichtung, wie dieselbe in Anspruch 1 definiert ist.
  • In einem weiteren Grundaspekt der vorliegenden Erfindung wird ein Verfahren zum Decodieren eines codierten Datenstroms geliefert, wie dasselbe in Anspruch 5 definiert ist.
  • Es ist ein Vorteil der vorliegenden Erfindung, dass die Logik, die in dem kritischen Decodierweg benötigt wird, minimiert ist.
  • Es ist ein weiterer Vorteil der vorliegenden Erfindung, dass ein Codewortkoeffizientenpaar bei jedem Taktzyklus decodiert wird.
  • Es ist ein weiterer Vorteil der vorliegenden Erfindung, dass Direktzugriffsspeicheranforderungen für eine kommerzielle Implementierung annehmbar sind.
  • Es ist ein weiterer Vorteil der vorliegenden Erfindung, dass Steuermarkierungen richtig erfasst werden und auf dieselben reagiert wird, wie es für eine Konformität mit JPEG- und MPEG-Standards notwendig ist.
  • Andere Merkmale und Vorteile der vorliegenden Erfindung werden bei einer Betrachtung der folgenden Erläuterung und der beiliegenden Zeichnungen ersichtlich, in denen gleiche Bezugszeichen gleiche Merkmale in den Zeichnungen darstellen.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist eine schematische Darstellung eines komprimierten JPEG-Datenstroms.
  • 2 ist ein schematisches Blockdiagramm eines Huffman-Decodierers gemäß der vorliegenden Erfindung.
  • 3A und 3B sind ein detailliertes schematisches Logikdiagramm des Huffman-Decodierers gemäß der vorliegenden Erfindung, wie in 2 gezeigt.
  • Die Zeichnungen, auf die in dieser Beschreibung Bezug genommen wird, sollen nicht so verstanden werden, dass dieselben im richtigen Maßstab gezeichnet sind, es sei denn, es wird speziell darauf hingewiesen.
  • Beschreibung des bevorzugten Ausführungsbeispiels
  • Es wird nun im Detail Bezug genommen auf ein spezifisches Ausführungsbeispiel der vorliegenden Erfindung, das die beste Ausführung veranschaulicht, die derzeit von den Erfindern zum Praktizieren der Erfindung betrachtet wird. Alternative Ausführungsbeispiele werden gegebenenfalls ebenfalls kurz beschrieben, Es wird ein exemplarisches Ausfüh rungsbeispiel mit Hinblick auf den JPEG-Standard bereitgestellt. Ein Fachmann wird jedoch erkennen, dass die Erfindung auch bei MPEG oder einer anderen Datendecodierung angewendet werden kann. Die Verwendung des exemplarischen Ausführungsbeispiels soll keine Einschränkung des Schutzbereiches der Erfindung, wie derselbe durch die Ansprüche dargelegt ist, sein und eine derartige Einschränkung soll auch nicht gefolgert werden.
  • Ein spezifisches exemplarisches Ausführungsbeispiel der vorliegenden Erfindung ist in 2 gezeigt.
  • Allgemeine Operation
  • Im Überblick wird der komprimierte JPEG-Datenstrom in Wörtern einer Zeichenfolge von 32 Bits – einem einzigen Huffman-Codewortkoeffizientenpaar maximaler Länge – an einem Bus 200 in einen Koeffizientendecodierer 201 eingegeben. Bytegrenzeninformationen, ein Wort einer Zeichenfolge von 4 Bits, werden über einen Bus 202 in einen RLL-Detektor 203 eingegeben. Anfangsblock-/Markierungscode-4-Bit-Zeichenfolge-Wörter werden über einen Bus 204 zum Decodieren in einem Markierungsdetektor 205 eingegeben. Im Allgemeinen wird nur ein Eingangsschieberegister für die Eingangsdatenzeichenfolge verwendet.
  • Am Beginn eines Bildes werden zwei 32-Bit-Eingangswörter geladen. Der zu verschiebende Betrag wird am Beginn eines Bildes auf Null gelöscht, sodass bei dem ersten Zyklus keine Schiebeoperation durchgeführt wird. Bei jedem nachfolgenden Taktzyklus werden die Daten um die Anzahl von Bits in einem vorhergehenden Huffman-Codewortkoeffizientenpaar verschoben.
  • Eine logische ODER-Operation wird dann zum Decodieren verwendet. Dabei handelt es sich um eine relativ schnelle Operation, da es dieselbe überflüssig macht, in dem Datenteil satz anzuzeigen, wo das nächste Codewort beginnt, wodurch der kritische Weg verkürzt wird. Das Problem besteht jedoch darin, wie die Bytegrenzeninformationen zurückgehalten werden, da die Position dieser Informationen jedes Mal verloren geht, wenn eine Schiebe- und ODER-Operation mit den vorliegenden Eingangsdaten durchgeführt wird. Die Bytegrenzeninformationen sind offensichtlich entscheidend, wenn ein/eine Datenstromanfangsblock/-Markierung angetroffen wird, wie zum Beispiel eine JPEG-Markierung NEUSTART oder BILDENDE. Dies wird deshalb bei der Handhabungsimplementierung des parallelen RLL-Detektors 202 und des Markierungsdetektors 204 berücksichtigt.
  • Eingangsdaten – Laden
  • Mit Bezugnahme auf die 3A und 3B wird ein spezifisches Ausführungsbeispiel eines Hochgeschwindigkeits-Huffman-Decodierers 300 gemäß der vorliegenden Erfindung gezeigt, einschließlich einer Lösung für das Dilemma, Bytegrenzen- und Datenstrommarkierungsinformationen in richtiger Ausrichtung aufrechtzuerhalten. Eine Standardlogik ist vorgestellt, wie es für einen Fachmann zu erkennen ist. Die Huffman-Decodierungstechnik selbst verwendet ein Schema zum Zugreifen auf eine Nachschlagetabelle, basierend auf der Anzahl von führenden Einsen in dem Huffman-Codewort. Dieses Decodierungsverfahren ist in der U.S.-Patentschrift Nr. 4,899,149 (Kahan) und in der U.S.-Patentschrift Nr. 5,208,593 (Tong) beschrieben. Somit konzentriert sich die folgende Beschreibung auf die Beschreibung der Erfindung, die hier beansprucht wird.
  • Das 32-Bit-Eingangsdatenwort, das an dem Bus 200 empfangen wird, wird in ein Datenregister „Q" 301 geladen, ein 75-Bit-Datenregister für das Segment des Eingangsdatenstroms, das derzeit decodiert wird. 75 Bits sind notwendig, da nach einem Verschieben die elf Bits ganz links den Koeffizienten ohne Vorzeichen von dem vorhergehenden Codewortkoeffizien tenpaar halten. Zusätzlich zu diesem Satz von elf Bits werden zwei volle 32-Bit-Wörter von dem aktuellen Eingangsdatenstrom in die Warteschlange gestellt. Zum Decodieren eines „nächsten" Huffman-Codeworts ist es notwendig, das Codewort aus dem Datenstrom in das Q_Register 301 zu extrahieren. Bei dem JPEG-Standard kann dieses Codewort bis zu 16 Bits lang sein. Das vorhergehende Codewortkoeffizientenpaar kann bis zu 27 Bits lang sein (d. h. 16 Bits für das Codewort und 11 Bits für den codierten Koeffizienten). Somit ist es bei jedem beliebigen gegebenen Zyklus notwendig, ein Minimum von 43 Bits (16 Bits + 27 Bits) in dem Q_Register 301 zu haben. Da dreiundvierzig mehr ist als eine 32-Bit-Eingangsdatenwortlänge, wurde bestimmt, dass es eine rasche Implementierung ist, zwei 32-Bit-Wörter in die Warteschlange zu stellen.
  • Anfangsblock/Markierungen/Bytegrenzeninformationsbits – Laden
  • Anfangsblock/Markierungen und Bytegrenzeninformationen in dem Eingangsdatenstrom unter den 32-Bit-Wörtern werden auf eine standardmäßige Weise erfasst, wie es in der Technik bekannt ist, und als 4-Bit-Wörter jeweils auf die Busse 204, 202 auseinander getrennt. Sowohl der RLL-Detektor 203 als auch der Anfangsblock-/Markierungsdetektor 205 erweitert dann jedes jeweilige 4-Bit-Eingangswort auf 32 Bits durch ein Einfügen von sieben Nullen zwischen jedem der vier Bits jeweils an einer „Nulleinfüge"-Hardware 303, 305.
  • Bei dem exemplarischen Ausführungsbeispiel werden im JPEG-Standard definierte Markierungen NEUSTART und BILDENDE („EOI") an Bytegrenzen in den komprimierten JPEG-Datenstrom eingefügt. Diese JPEG-Markierungen werden durch einen Markierungsdetektor 205 erfasst, und vier Bits werden ausgegeben, um anzuzeigen, an welcher Bytegrenze in dem 32-Bit-Eingangswort die Markierung erfasst wurde. Die Markierung selbst wird aus dem Eingangsdatenstrom entfernt. Diese 4- Bit-Markierungsidentifikation wird auf volle 32 Bits erweitert, um mit dem Eingangsdatenwort übereinzustimmen, durch das Einfügen von sieben Nullen zwischen jedem der vier Bits. Die Bitposition der Markierungsidentifiziererbits stimmt somit genau mit dem Punkt in dem Eingangsdatenwort überein, wo die Markierung erfasst und entfernt wurde.
  • Ein ähnlich erweitertes 32-Bit-RLL-Wort wird in ein Register R 307 geladen. Das erweiterte 32-Bit-NEUSTART- oder EOI-Markierungswort wird in ein Register „E" 309 geladen. Nun können die Register Q, R und E 301, 307, 309 synchron derart verschoben werden, dass Bytegrenzen- und Anfangsblock-/Markierungsorte in der gleichen Reihenfolge bewahrt werden, wie es ursprünglich in den Eingangsdaten codiert war. Das heißt, wenn nachfolgende Schiebeoperationen stattfinden, die im Folgenden erläutert sind, werden das Eingangsdatenstrom-Q_Register 301, ein RLL-Wort in dem R_Register 307 und ein NEUSTART- oder EOI-Markierungswort in dem E_Register 309 zusammen verschoben und bleiben miteinander in Synchronisation.
  • Eingangsdaten – Decodierung
  • Ein „nächstes" nachfolgendes 32-Bit-Datenwort des Eingangsdatenstroms von dem Bus 200 wird um einen Betrag, der gleich der Anzahl von Datenbits ist, die in dem 75-Bit-Datenregister 301 vorhanden sein werden, nachdem die „aktuelle" Linksschiebeoperation verarbeitet ist, nach rechts verschoben 313. Dabei handelt es sich um eine Vorbereitung für eine bitweise ODER-Operation 315 in das Q_Register 301. Die Rechtsschiebeoperation 313 plus die bitweise ODER-Operation 315 haben den Nettoeffekt, das neue 32-Bit-Datenwort in die richtige Position unmittelbar rechts von allen Datenbits, die sich momentan in dem Q_Register 301 befinden, zu laden.
  • Das „nächste" Wort wird dann bitweise in einer ODER-Operation 315 in das Q_Register 301 geladen.
  • Das mit 75 Bits gefüllte Q_Register 310 wird dann in einem Register 317 um die Größe der Summe des ersten Codeworts plus Koeffizient nach links verschoben.
  • Die 27 Bits ganz links in dem nach links verschobenen Datenstrom werden dann untersucht. Von diesen 27 Bits sind die 11 Bits ganz links in dem Register 319 der Koeffizient des ersten Codewortkoeffizientenpaars. Die Bits 63:48 enthalten den Variable-Länge-Huffman-Code, der gemäß dem JPEG-Standard bis zu 16 Bits lang sein kann, wobei angenommen wird, dass das Bit ganz links des Registers Bit74 ist und das Bit ganz rechts Bit0 ist.
  • Ein Decodieren des Huffman-Codes unter Verwendung der Nachschlagetabelle ergibt die Länge des kombinierten Huffman-Codeworts und des Koeffizienten ohne Vorzeichen. Bei dem nächsten Taktzyklus wird das Q_Register 301 um diesen Betrag nach links verschoben.
  • Nach der Linksverschiebung enthalten die 11 Bits ganz links des Q_Registers 301 den Koeffizienten variabler Länge ohne Vorzeichen von dem vorhergehenden Codewortkoeffizientenpaar. Der Koeffizient variabler Länge ohne Vorzeichen kann eine beliebige Länge von null bis elf Bits aufweisen, das KOEFF_GRÖßE_A-Register 327 enthält die Länge dieses Koeffizienten. Die KOEFFIZIENT_WIEDERHERSTELLEN-Einheit 331 nimmt den Koeffizienten ohne Vorzeichen und die Koeffizientenlänge und erzeugt den wiederhergestellten Koeffizientenwert als eine mit einem Vorzeichen versehene 12-Bit-Größenausgabe an die CODIER_DECODIER_HUFFMAN-Einheit 333.
  • Es sei darauf hingewiesen, dass, falls der Koeffizient eine geringere Länge als 11 Bits aufweist, die Informationen in den Bits ganz rechts der 11 Bits ganz links des Q_Registers 301 enthalten sind. Somit werden über eine standardmäßige Boolesche Logik Codierter-Koeffizient- und Koeffizientengröße-Daten verwendet, um den codierten Koeffizienten zu einer mit einem Vorzeichen versehenen 12-Bit-Größe 331 wiederherzustellen, die an die nächste Stufe des JPEG-Decodierers (nicht gezeigt) ausgegeben wird 333.
  • Die 16 Bits ganz rechts sind das aktuelle Huffman-Codewort, das an einem Adressgenerator 321 gesendet wird, um die Adresse zu berechnen, um auf die Huffman-Nachschlagetabelle 323 zuzugreifen. Die Nachschlagetabelle 323 liefert dann die Nulllauflänge 325 (die Anzahl von Nullen, die in den Koeffizienten eingefügt sind, die wieder in die decodierten Daten eingefügt werden müssen) und die Koeffizientengrößendaten 327 sowie die Gesamtlänge des aktuellen Codewortkoeffizientenpaares, gleich dem Betrag der nächsten Linksverschiebung 329. Das heißt, die Anzahl von Positionen, um die das Linksschieberegister 317 für den nächsten Untersuchungszyklus zu verschieben ist.
  • Die Nachschlagetabelle decodiert das Huffman-Codewort von dem Eingangsdatenstrom und liefert drei Werte:
    • (1) die Lauflänge von Nullkoeffizienten,
    • (2) die Länge des codierten Koeffizienten variabler Länge, und
    • (3) die Summe der Länge des Huffman-Codeworts und der Länge des codierten Koeffizienten.
  • Der letzte Wert wird unmittelbar verwendet, um das Q_Register 301 nach links zu verschieben. Die Länge des codierten Koeffizienten variabler Länge wird verwendet, um den Koeffizienten zu seinem mit einem Vorzeichen versehenen 12-Bit-Wert wiederherzustellen. Die Lauflängeninformationen werden direkt an den Lauflängendecodierer 363 ausgegeben, verzögert durch das LAUF_LÄNGE_A-Register 325 und das LAUF_LÄNGE_B-Register 326, da bei der pipelineartigen Imp lementierung die Lauflängen- und Koeffizientengrößeninformationen verzögert werden müssen, um mit dem richtigen Koeffizienten von dem CODIER_DECODIER_HUFFMAN-Register 333 übereinzustimmen.
  • Da die Eingangsdaten von variabler Länge sind, wird ein Gültige_Bits-Register 311 verwendet, um zu verfolgen, wie viele gültige Bits in jedem der Q_Register-301-Daten, R_Register-307-Bytegrenzeninformationen und E_Register-309-Kopfblock/Markierung vorhanden sind. Wenn Bits aus den Registern 301, 307, 309 herausgeschoben werden, muss der Wert der Verschiebung – der in jedem Zyklus durch die Nachschlagetabelle geliefert wird – von dem Gültiges_Bit-Zählwert abgezogen werden.
  • Wenn ein neues 32-Bit-Wort von Eingangsdaten geladen wird, wird bei 312 dann 32 zu dem Gültige_Bits-Zählwert addiert. Die Ladesteuerung 314 überwacht die Anzahl von gültigen Datenbits in dem Q_Register 301 und den Betrag an Linksverschiebung, der bei dem nächsten Taktzyklus angewendet wird. Wenn die Ladesteuerung 314 berechnet, dass die Anzahl von gültigen Datenbits in dem Q_Register 301 unter 43 fallen wird, gibt dieselbe ein Signal aus, um ein neues Datenwort in das Q_Register zu laden (d. h. falls Anzahl von gültigen Datenbits minus Verschiebungsbetrag ist gleich weniger als dreiundvierzig, neues Datenwort laden).
  • Anfangsblock/Markierungen/Bytegrenzeninformationsbits – Decodierung
  • Es sei nun aus der vorhergehenden Beschreibung ins Gedächtnis zurückgerufen, dass erweiterte 32-Bit-Kopfblock/Markierungen und -Bytegrenzenwörter in dem E_Register 309 bzw. den R_Register 307 erzeugt wurden. Diese 32-Bit-Größen werden jeweils in Schieberegistern 345, 343 nach rechts verschoben und bitweise jeweils einer ODER-Operation 347, 349 unterzogen, in exakt der gleichen Weise und dem gleichen Taktzyklus wie ihr zugehöriges Eingangsdatenwort in dem Q_Register 301. Dann werden, wenn die Daten nach links verschoben werden 317, die Kopfblock-/Steuermarkierungen und Bytegrenzenwörter durch jeweilige Register 351, 353 zur gleichen Zeit nach links verschoben, wobei die relative Position damit aufrechterhalten wird. Durch ein Untersuchen der Bits ganz links dieser Register 351, 353 können Nullen, die in dem E_Register 309 und dem R_Register 307 eingefügt wurden, erfasst 355 und nach links aus dem Datenstrom heraus verschoben werden 357, und die Kopfblock/Markierungen 365 und Grenzwörter 363 können dementsprechend ausgegeben werden.
  • Zusammenfassend codiert die vorliegende Erfindung somit den Lauf, die Größe des Koeffizienten und die Addition des Koeffizienten und der Codewortlänge. Dieser Wert ergibt sich als der Schiebebetrag, der den Betrag der Verschiebung angibt, um zu dem nächsten Codewort zu gelangen. Dies stellt eine schnellere Methodologie zum Decodieren von codierten JPEG-Huffman-Bit-Strömen dar, da die Decodierung erfolgt, während neue Daten empfangen werden. Gleichzeitig werden Bytegrenzen und Kopfblock/Markierungen ordnungsgemäß durch Schaltungsanordnung 203, 205 verfolgt, die die Datenhandhabung in dem Huffman-Decodierer 201 nachahmt. Wenn eine EOI-Markierung erfasst ist, fährt der Decodierer fort zu verarbeiten, bis die empfangenen Daten erschöpft sind.
  • Die vorhergehende Beschreibung des bevorzugten Ausführungsbeispiels der vorliegenden Erfindung wurde zu Zwecken der Veranschaulichung und Beschreibung präsentiert. Dieselbe soll nicht erschöpfend sein oder die Erfindung auf die genaue offenbarte Form beschränken. Es ist offensichtlich, dass viele Modifizierungen und Variationen für praktizierende Fachleute ersichtlich sein werden. In ähnlicher Weise können alle beschriebenen Prozessschritte mit anderen Schritten austauschbar sein, um das gleiche Ergebnis zu erzielen. Das Ausführungsbeispiel wurde ausgewählt und beschrieben, um die Grundsätze der Erfindung und ihre prakti sche Anwendung in der besten Ausführung bestmöglich zu erläutern, um es dadurch anderen Fachleuten zu ermöglichen, die Erfindung für verschiedene Ausführungsbeispiele und mit verschiedenen Modifizierungen, wie dieselben für die bestimmte beabsichtigte Verwendung geeignet sind, zu verstehen.

Claims (9)

  1. Eine Huffman-Decodierervorrichtung zum Decodieren eines JPEG-Standard-Datenstroms (103, 105, 107), der Huffman-Codewörter (103) von maximal 16 Bit in einem Huffman-Codewortkoeffizientenpaar-Datenformat aufweist, wobei der Datenstrom ferner Bytegrenzeninformationscodes (107) und Anfangsblock-/Markierungsinformationscodes (107) umfasst, wobei die Vorrichtung folgende Merkmale umfasst: einen Eingangsbus (200); ein Rechtsschieberegister (313), das mit dem Eingangsbus (200) zum Empfangen von zumindest zwei Codewortkoeffizientenpaaren von demselben verbunden ist; eine bitweise logische ODER-Einrichtung (315), die mit dem Rechtsschieberegister (313) zum Empfangen einer Rechtsschieberegisterdatenausgabe von demselben verbunden ist; ein Eingangsdatenregister (301), das mit der logischen ODER-Einrichtung (315) zum Empfangen von Logische-ODER-Einrichtung-Ausgangsdaten von derselben verbunden ist; ein Linksschieberegister (317), das mit dem Eingangsdatenregister (301) zum Empfangen von Ausgangsdaten von demselben verbunden ist; eine Einrichtung (331, 333, 363) zum Extrahieren eines aktuellen Codeworts und eines zu decodierenden Koeffizienten von einem Codewortkoeffizientenpaar aus dem Linksschieberegister (317), derart, dass eine Lauflän ge von Koeffizienten, eine Länge eines codierten Koeffizienten variabler Länge und eine Summe der Länge eines Codeworts plus der Länge eines codierten Koeffizienten erhalten wird; und eine Rückkopplungseinrichtung zum Linksverschieben der Daten des Linksschieberegisters (317) um den Betrag der Summe, um ein nächstes aktuelles Codewort und einen zu decodierenden Koeffizienten zu erhalten.
  2. Die Vorrichtung gemäß Anspruch 1, die ferner folgende Merkmale aufweist: eine Einrichtung (203) zum Empfangen und zum Verfolgen der Bytegrenzeninformationscodes, die folgende Merkmale umfasst: eine Einrichtung (303) zum Auffüllen der Bytegrenzeninformationscodes auf die gleiche Bitlänge wie das Codewortkoeffizientenpaar, und eine Einrichtung (353) zum Verschieben des Bytegrenzeninformationscodes synchron zu den Codewortkoeffizientenpaaren.
  3. Die Vorrichtung gemäß Anspruch 1, die ferner folgende Merkmale aufweist: eine Einrichtung (205) zum Empfangen und zum Verfolgen der Anfangsblock-/Markierungsinformationscodes, die folgende Merkmale umfasst: eine Einrichtung (305) zum Auffüllen der Anfangsblock-/Markierungsinformationscodes auf die gleiche Bitlänge wie das Codewortkoeffizientenpaar, und eine Einrichtung (351) zum Verschieben der Anfangsblock-/Markierungsinformationscodes synchron zu den Codewortkoeffizientenpaaren.
  4. Die Vorrichtung gemäß Anspruch 1, bei der das Eingangsregister folgendes Merkmal aufweist: ein Register, das eine Datenkapazität von zumindest der doppelten Bitbreite des Eingangsbusses aufweist.
  5. Ein Verfahren zum Durchführen eines Huffman-Decodierens eines codierten Datenstroms, der Codewortkoeffizientenpaare einer gegebenen maximalen Länge aufweist, durch ein Empfangen und Speichern von Eingangsdatensätzen, wobei jeder Datensatz eine gegebene Anzahl von Bits aufweist, wobei das Verfahren folgende Schritte aufweist: Empfangen eines ersten und eines zweiten sequentiellen Codewortkoeffizientenpaars des Datenstroms in einem Schieberegister (313); Rechtsverschieben des zweiten Codewortkoeffizientenpaars um die Anzahl von Bits in dem ersten Codewortkoeffizientenpaar; Durchführen einer logischen ODER-Operation bezüglich des ersten Codewortkoeffizientenpaars und des zweiten Codewortkoeffizientenpaars und Speichern des Ergebnisses in einem Datenregister (301), das eine Datenkapazität von zumindest dem Doppelten der gegebenen maximalen Länge aufweist; Linksverschieben des gespeicherten Ergebnisses in einem Linksschieberegister (317); Extrahieren einer ersten vorbestimmten Anzahl von höchstwertigen Bits des Ergebnisses, das in dem Links- schieberegister (317) gespeichert ist, als einen Koeffizientenwert und Extrahieren einer zweiten vorbestimmten Anzahl von wertigen Bits des Ergebnisses, das in dem Linksschieberegister (317) gespeichert ist, als ein Codewort, wobei die erste und die zweite vorbestimmte Anzahl in Bezug auf die gegebene maximale Länge bestimmt sind.
  6. Das Verfahren gemäß Anspruch 5, das ferner folgenden Schritt aufweist: Wiederholen der Schritte gemäß Anspruch 5 für jedes nächste sequentielle Eingangscodewortkoeffizientenpaar des Datenstroms, bis der Strom beendet ist.
  7. Das Verfahren gemäß Anspruch 5 oder 6, das ferner folgende Schritte aufweist: Empfangen von Bytegrenzeninformationen, die in dem Datenstrom eingebettet sind, mit einem zugehörigen Datensatz; Auffüllen jedes Bits der Bytegrenzeninformationen mit einer Zeichenfolge von Nullen zwischen den Bits, derart, dass die Bytegrenzeninformationen eine Bitlänge aufweisen, die gleich der Eingangsdatensatzlänge ist; Rechtsverschieben der Bytegrenzeninformationen gleichzeitig mit dem zugehörigen Datensatz; Extrahieren jeder der Zeichenfolge von Nullen, um die Bytegrenzeninformationen in Position mit dem decodierten Datensatz neu zu formulieren.
  8. Das Verfahren gemäß Anspruch 5, 6 oder 7, das ferner folgende Schritte aufweist: Empfangen von Steuermarkierungsinformationen, die in dem Datenstrom eingebettet sind, mit einem zugehörigen Datensatz; Auffüllen jedes Bits der Steuermarkierungsinformationen mit einer Zeichenfolge von Nullen zwischen den Bits, derart, dass die Steuermarkierungsinformationen eine Bitlänge aufweisen, die gleich der Eingangsdatensatzlänge ist; Rechtsverschieben der Steuermarkierungsinformationen gleichzeitig mit dem zugehörigen Datensatz; Extrahieren jeder der Zeichenfolge von Nullen, um die Steuerungsmarkierungsinformationen in Position mit dem decodierten Datensatz neu zu formulieren.
  9. Das Verfahren gemäß Anspruch 5, 6, 7 oder 8, das ferner folgenden Schritt aufweist: bei jedem Taktzyklus, Verschieben der Daten um die Gesamtanzahl von Bits in dem vorhergehenden Codewortkoeffizientenpaar.
DE69732271T 1996-06-19 1997-06-11 Hochbitrate Huffman Dekodierung Expired - Fee Related DE69732271T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US666964 1996-06-19
US08/666,964 US5818364A (en) 1996-06-19 1996-06-19 High bit-rate huffman decoding

Publications (2)

Publication Number Publication Date
DE69732271D1 DE69732271D1 (de) 2005-02-24
DE69732271T2 true DE69732271T2 (de) 2006-01-05

Family

ID=24676264

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69732271T Expired - Fee Related DE69732271T2 (de) 1996-06-19 1997-06-11 Hochbitrate Huffman Dekodierung

Country Status (6)

Country Link
US (1) US5818364A (de)
EP (1) EP0814614B1 (de)
JP (1) JPH1075181A (de)
DE (1) DE69732271T2 (de)
ES (1) ES2231844T3 (de)
SG (1) SG73441A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272257B1 (en) * 1997-04-30 2001-08-07 Canon Kabushiki Kaisha Decoder of variable length codes
US6219457B1 (en) 1998-05-26 2001-04-17 Silicon Graphics, Inc. Method and system for decoding data encoded in a variable length code word
US6697525B1 (en) 1998-10-02 2004-02-24 Parthusceva Ltd. System method and apparatus for performing a transform on a digital image
US6192157B1 (en) 1998-10-27 2001-02-20 Hewlett-Packard Company Modifications of postscript adaptive data compression (ADC) for 3 plane, 8 bit color images, JPEG lossy compression, and variable Q factors
US6385342B1 (en) * 1998-11-13 2002-05-07 Xerox Corporation Blocking signature detection for identification of JPEG images
US6771824B1 (en) * 1999-12-28 2004-08-03 Lucent Technologies Inc. Adaptive variable length decoding method
US6868186B1 (en) 2000-07-13 2005-03-15 Ceva D.S.P. Ltd. Visual lossless image compression
US7039906B1 (en) 2000-09-29 2006-05-02 International Business Machines Corporation Compiler for enabling multiple signed independent data elements per register
US6834337B1 (en) 2000-09-29 2004-12-21 International Business Machines Corporation System and method for enabling multiple signed independent data elements per register
US7581027B2 (en) * 2001-06-27 2009-08-25 Ricoh Co., Ltd. JPEG 2000 for efficent imaging in a client/server environment
US7574363B2 (en) * 2001-08-23 2009-08-11 International Business Machines Corporation Intelligent merchandise indicator
US7394346B2 (en) * 2002-01-15 2008-07-01 International Business Machines Corporation Free-space gesture recognition for transaction security and command processing
JP4247961B2 (ja) * 2003-02-25 2009-04-02 船井電機株式会社 Dvdプレイヤ、および光ディスク再生装置
US6903668B1 (en) * 2003-11-18 2005-06-07 M-Systems Flash Disk Pioneers Ltd. Decompression accelerator for flash memory
US6956511B2 (en) * 2004-01-06 2005-10-18 Sharp Laboratories Of America, Inc. Multi-symbol/coefficient decode operation for Huffman codes
US20050174269A1 (en) * 2004-02-05 2005-08-11 Broadcom Corporation Huffman decoder used for decoding both advanced audio coding (AAC) and MP3 audio
KR100847077B1 (ko) 2006-08-02 2008-07-17 엠텍비젼 주식회사 허프만 부호화 방법 및 이를 구현하기 위한 프로그램이기록된 기록 매체
TWI349894B (en) * 2007-12-05 2011-10-01 Quanta Comp Inc Method for transmitting image bit stream and image encoder
TWI376959B (en) * 2008-05-02 2012-11-11 Novatek Microelectronics Corp Entropy decoding circuit, entropy decoding method, and entropy decoding method using a pipeline manner
TWI343192B (en) * 2009-06-12 2011-06-01 Ind Tech Res Inst Decoding method
FR2958429B1 (fr) * 2010-04-02 2012-11-30 Lead Tech Design Dispositif de traitement permettant d'extraire un ensemble de donnees d'un mot de donnees, circuit electronique et procede d'extraction de donnees correspondants
US9002122B2 (en) 2012-07-19 2015-04-07 Omnivision Technologies, Inc. System and method for improving decoder performance using quantization control
CN110233627B (zh) * 2019-05-22 2023-05-12 深圳大学 一种基于流水式的硬件压缩的系统及方法
CN113824449A (zh) * 2021-09-18 2021-12-21 山东云海国创云计算装备产业创新中心有限公司 一种静态霍夫曼并行编码方法、系统、存储介质及设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3701980A (en) * 1970-08-03 1972-10-31 Gen Electric High density four-transistor mos content addressed memory
US4899149A (en) * 1986-02-28 1990-02-06 Gary Kahan Method of and apparatus for decoding Huffman or variable-length coees
US4780845A (en) * 1986-07-23 1988-10-25 Advanced Micro Devices, Inc. High density, dynamic, content-addressable memory cell
US5208593A (en) * 1991-07-30 1993-05-04 Lsi Logic Corporation Method and structure for decoding Huffman codes using leading ones detection
US5245338A (en) * 1992-06-04 1993-09-14 Bell Communications Research, Inc. High-speed variable-length decoder
US5325092A (en) * 1992-07-07 1994-06-28 Ricoh Company, Ltd. Huffman decoder architecture for high speed operation and reduced memory
US5343195A (en) * 1992-12-18 1994-08-30 Thomson Consumer Electronics, Inc. Variable length codeword decoding apparatus
JP3292221B2 (ja) * 1993-09-14 2002-06-17 ソニー株式会社 画像圧縮符号化方法
US5557271A (en) * 1993-09-23 1996-09-17 Goldstar Co., Ltd. Variable length coder and variable length decoder
US5550542A (en) * 1994-05-04 1996-08-27 Matsushita Electric Corporation Of America Variable length code look-up table having separate code length determination
KR0141298B1 (ko) * 1994-11-17 1998-06-15 배순훈 가변 길이 복호화 장치

Also Published As

Publication number Publication date
SG73441A1 (en) 2003-11-27
DE69732271D1 (de) 2005-02-24
EP0814614A3 (de) 2000-01-05
US5818364A (en) 1998-10-06
ES2231844T3 (es) 2005-05-16
JPH1075181A (ja) 1998-03-17
EP0814614A2 (de) 1997-12-29
EP0814614B1 (de) 2005-01-19

Similar Documents

Publication Publication Date Title
DE69732271T2 (de) Hochbitrate Huffman Dekodierung
DE69817137T2 (de) Bildverarbeitung für elektronisches Wasserzeichensetzen
DE69724347T2 (de) Parallele Datenkomprimierung und -dekomprimierung
DE69631792T2 (de) Apparat und verfahren für die zweidimensionale datenkompression
DE69636150T2 (de) System zur Kodierung von bewegten Bildern, und System zur variablen Längenkodierung
DE69333818T2 (de) Verfahren und Vorrichtung zur Bilddatenkodierung
DE69233620T2 (de) Adaptive Kodierung und Dekodierung von Vollbildern und Halbbildern von Videosignalen
DE69333714T2 (de) Speicher zur Verwendung im Dekodieren von Wörtern variabler Länge und Dekoder und Verfahren zur Verwendung in digitalen Kommunikationssystemen
DE60124443T2 (de) 64b/66b-Dekodierung, für in Paketen geordnete, serielle Daten
KR950012981B1 (ko) 디지틀 통신 전송 및/또는 기록 재생방법 및 그 장치
DE102006023878A1 (de) Codieren und Decodieren von paketierten Daten
CN108924600A (zh) 直播数据的发送接收方法、装置及电子设备
DE69735835T2 (de) Dekodierer variabler Länge und Verfahren zur Dekodierung zweier Kodewörter pro Takt
DE19544761A1 (de) Verfahren zum Komprimieren eines eingegebenen Symbols
DE69630297T2 (de) Weiterentwickeltes fernsehsystem
DE10392586T5 (de) Allgemeine Anpassungsschicht für JVT-Video
DE102005063136B3 (de) Verfahren und Vorrichtung zum Generieren eines markierten Datenstroms, Verfahren und Vorrichtung zum Einfügen eines Wasserzeichens in einen markierten Datenstrom und markierter Datenstrom
DE69928616T2 (de) System zur extrahierung von codierungsparametern aus videodaten
DE112015001145T5 (de) Komprimierter Videotransfer über eine Multimediaverbindung
DE10296787B4 (de) Selektive Prädikation für ein Intra-Codieren eines Videodatenblocks
JP3231800B2 (ja) 画像符号化装置及び画像符号化方法
EP0836785B1 (de) Verfahren zur dekodierung und kodierung eines komprimierten videodatenstroms mit reduziertem speicherbedarf
JP3434088B2 (ja) 画像データ変換装置およびその逆変換装置
CN113347424B (zh) 视频编码数据存储方法、装置及可读存储介质
DE60319742T2 (de) Lauflängencodierung eines quantisierten digitalen bildes

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee