DE69735835T2 - Dekodierer variabler Länge und Verfahren zur Dekodierung zweier Kodewörter pro Takt - Google Patents

Dekodierer variabler Länge und Verfahren zur Dekodierung zweier Kodewörter pro Takt Download PDF

Info

Publication number
DE69735835T2
DE69735835T2 DE69735835T DE69735835T DE69735835T2 DE 69735835 T2 DE69735835 T2 DE 69735835T2 DE 69735835 T DE69735835 T DE 69735835T DE 69735835 T DE69735835 T DE 69735835T DE 69735835 T2 DE69735835 T2 DE 69735835T2
Authority
DE
Germany
Prior art keywords
length
value
decoding
bits
encoded data
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
DE69735835T
Other languages
English (en)
Other versions
DE69735835D1 (de
Inventor
Richard Audubon Sita
Edward M. King of Prussia Brosz
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.)
Panasonic Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of DE69735835D1 publication Critical patent/DE69735835D1/de
Application granted granted Critical
Publication of DE69735835T2 publication Critical patent/DE69735835T2/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
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • H03M7/425Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Description

  • Die vorliegende Erfindung betrifft einen Decodierer für variable Wortlänge (VDL) und insbesondere einen Decodierer für einen Code mit variabler Länge, der zum Decodieren komprimierter Bilddaten geeignet ist.
  • HINTERGRUND DER ERFINDUNG
  • In letzter Zeit sind auf dem Gebiet der Technik der Bilddatenkomprimierung beträchtliche Fortschritte erzielt worden. Die Aufgabe dieser Techniken besteht darin, die Wirksamkeit z. B. der digitalen Übertragung und Aufzeichnung zu verbessern, indem die Bilddaten bei einer Bitrate codiert werden, die kleiner ist als jene, die für nicht codierte Bilddaten erforderlich wäre. Beispielhafte Techniken, die verwendet worden sind, um die Wirksamkeit der Codierung zu erreichen, sind die prädiktive Codierung und die Transformationscodierung.
  • Eine weitere Bilddaten-Komprimierung kann außerdem erreicht werden, indem an dem komprimierten Code eine Codierung mit variabler Länge ausgeführt wird. Die Codierung mit variabler Länge enthält das Ändern der codierten Bitbreite gemäß der Häufigkeit des Auftretens des zu codierenden Wertes. Typischerweise werden Werte, die mit einer größeren Häufigkeit auftreten, kürzeren Codes zugewiesen als Werte, die mit einer geringeren Häufigkeit auftreten. Dadurch kann im Vergleich zur Codierung mit fester Wortlänge eine kleinere Bitrate erhalten werden. Ein Beispiel eines Codes mit variabler Länge ist ein Huffman-Code.
  • Codewörter mit variabler Länge (VLCs) werden typischerweise unter Verwendung einer Nachschlagtabelle (LUT) decodiert. Ein paralleles n-Bit-Datensignal wird zu der LUT geschaltet. Das n-Bit-Signal enthält ein Codewort mit variabler Länge (dessen Länge n Bits betragen kann), das als eine Adresse für in der LUT gespeicherte Daten verwendet wird. Die in der LUT gespeicherten Daten entsprechen der Codelänge und dem Codewert. Die Codelänge legt die Länge des Codeworts mit variabler Länge fest, das in dem n-Bit-Signal identifiziert wurde. Der Codewert ist der decodierte Wert (d. h. die feste Länge) des Codes mit variabler Länge. Die Ausgangssignale der LUT sind die Codelänge und der Codewert.
  • In den Vereinigten Staaten ist eine Norm für digital codierte Signale des hochauflösenden Fernsehens vorgeschlagen worden. Diese Norm ist im Wesentlichen gleich der MPEG-2-Norm, die von der Moving Pictures Expert Group (MPEG) der Internationalen Organisation für Normung (ISO) vorgeschlagen wurde. Diese Norm wird nachfolgend als die "MPEG-Norm" bezeichnet. Diese Norm ist in einer Veröffentlichung des Entwurfs einer internationalen Norm (DIS) mit dem Titel "Information Technology-Generic Coding of Moving Pictures and Associated Audio", Empfehlung N.262 ISO/IEC 13818-2: 1995 (E) beschrieben, die von der ISO zur Verfügung gestellt wird und hier wegen ihrer Erkenntnisse in Bezug auf die digitale MPEG-2-Videocodiernorm durch Literaturangabe eingefügt ist.
  • Als ein Beispiel, wie die MPEG-Norm die Codierung mit variabler Wortlänge verwendet, werden die Codetabellen B-14 und B-15, die im Anhang B der MPEG-2-Norm definiert sind, betrachtet. In dieser Codetabelle sollen Codewörter mit variabler Länge mit einer maximalen Größe von 17 Bits decodiert werden. Jeder Code entspricht einer entsprechenden unterschiedlichen Kombination von "Run"- und "Level"-Werten (Lauf- und Pegel-Werte), wobei der Run-Wert die Anzahl von Nullkoeffizienten, die einem von null verschiedenen Koeffizienten vorhergehen, in der Abtastreihenfolge ist und der Level-Wert der absolute Wert des von null verschiedenen Koeffizienten ist.
  • Videodecodierer für MPEG-2-Hochauflösungsfernsehen (NDTV) erfordern eine sehr große Decodierrate. Obwohl viele Bereiche in dem komprimierten Bitstrom mit variabler Länge codiert sind, umfassen etwa 85 % des Bitstroms eine Koeffizientendecodierung mit diskreter Kosinus-Transformation (DCT). Der HDTV-Bitstrom erfordert das Decodieren von Codes mit variabler Länge in der Größenordnung von 100 Millionen pro Sekunde. Wird zu einem Zeitpunkt ein einzelner Code decodiert, wäre somit ein 100 MHz-Takt erforderlich, der jenseits der praktischen Einschränkungen von gegenwärtig verfügbaren hochintegrierten ASICs liegen. Die Alternative besteht darin, mehrere Codes pro Taktzyklus zu decodieren.
  • Ein Verfahren zum Decodieren von mehreren Codes enthält die Verwendung von zwei VLDs, die tandemartig betrieben werden. Der Nachteil dieses Lösungsansatzes besteht darin, dass auf Grund der Tatsache, dass die Daten im Schichtformat vorliegen, die Länge jeder Schicht vor dem Decodieren unbekannt ist, wobei die beiden parallelen Pfade an separaten Schichten arbeiten müssen, was eine Vorverarbeitung und einen Speicher erfordert, um die Schichten abwechselnd zu trennen.
  • Die US-Patentschrift Nr.5.428.356 an Ozaki ist hier ausdrücklich wegen ihrer Erkenntnisse in Bezug auf einen VLD unter Verwendung einer vorgegebenen, mit Prioritäten versehenen Decodieranordnung durch Literaturhinweis eingefügt. Der VLD von Ozaki enthält eine erste Decodiererschaltung zum Decodieren eines vorhergehenden Huffmann-Codes einer Huffmann-Codefolge und eine zweite Decodiererschaltung zum Decodieren einer fortlaufenden Folge aus zwei vorgegebenen Huffman-Codes aus dem ersten Abschnitt der Huffman-Codefolge. Der erste Decodierer verwendet eine LUT, wie oben beschrieben wurde. Der zweite Decodierer verwendet eine LUT, bei der jedes von einer festen Anzahl von vorgegebenen Codewortpaaren als eine Adresse für in der LUT gespeicherte Daten verwendet wird. Die in der LUT gespeicherten Daten entsprechen Paaren aus Codelängen- und Codewert-Paaren. Wenn eines der vorgegebenen Codewortpaare in dem Eingangsstrom auftritt, werden die entsprechenden Codelängenpaare und Codewertpaare vom zweiten Decodierer ausgegeben. Wenn der zweite Decodierer zwei decodierte Werte ausgibt, wählt ein Wähler den Ausgang des zweiten Decodierers. Wenn der zweite Decodierer keine zwei decodierten Werte erzeugt, wählt der Wähler den Ausgang des ersten Decodierers.
  • Der VLD des Patents an Ozaki ist dahingehend beschränkt, dass der zweite Decodierer lediglich eine begrenzte Anzahl von vorgegebenen Kombinationen aus zwei Folgen decodieren kann. Der zweite Decodierer decodiert im Einzelnen lediglich ausgewählte Paare von Codes, für die das Paar eine kurze Gesamtlänge hat. Mehrere Taktzyklen sind erforderlich, wenn Folgen mit größeren Längen vorkommen. Da die Huffman-Codes im Allgemeinen so gewählt werden, dass die Codes mit geringer Häufigkeit größere Längen haben, wird der zweite Decodierer von Ozaki keine Codepaare decodieren, die Codes mit geringerer Häufigkeit enthalten, und es sind mehrere Taktzyklen erforderlich.
  • Darüber hinaus benötigt der VLD von Ozaki einen großen Speicher, da eine n-Bit-Adresse als eine Eingabe an die LUT bereitgestellt werden muss. Außerdem speichert jede Speicherstelle in der LUT eine z Bit-Codelänge und einen v Bit-Codewert. Folglich werden insgesamt z + v Bits benötigt, um die Codelänge und den Codewert zu speichern. Die Gesamtanzahl der für die LUT benötigten Bits beträgt 2n*(z + v).
  • Es sind demzufolge Vorschläge gemacht worden, um die Größe der Umsetzungstabellen zu begrenzen, damit die erforderliche Speichergröße für die Umsetzungstabelle verringert werden kann. Diese Techniken haben jedoch einen langsameren Decodierungsvorgang zur Folge.
  • Das Patent JP 07.249.994 offenbart eine Huffman-Code-Decodierschaltung, bei der eine 32-Bit-Huffman-Code-Datenfolge in einen ersten Bitentscheidungsabschnitt eingegeben wird, in dem der anfängliche Wert das erste Bit der eingegebenen 32 Bits der Huffman-Code-Datenfolge ist und die 32 Bits von dem ersten Bit ausgegeben werden. 16 Bits werden in den Adresseneingang jeder Decodierungstabelle eingegeben. In der Decodierungstabelle werden die 16 Bit-Datenfolgen von dem ersten Bit eingegeben. In diesem Fall werden das Decodierungswort und die Codelänge als Ausgabe eingestellt und das Signal wird ausgegeben und als ein Auswahlsignal zu einem Wähler gesendet. Andererseits werden die 16 Bit-Huffman-Code-Datenfolgen von einer Decodierungstabelle in eine Tabelle eingegeben und zu dem Wähler gesendet. Die beiden Decodierungswörter werden durch Wiederholen der Operation decodiert.
  • KURZBESCHREIBUNG DER FIGUREN
  • 1 ist ein Blockschaltplan eines beispielhaften Decodierers mit Decodierkoeffizienten mit variabler Länge;
  • 2 ist ein Blockschaltplan der VLD-Längendecodierschleife des Decodierers mit variabler Länge von 1;
  • 3 ist ein Blockschaltplan der in 2 gezeigten Steuerlogik;
  • 4 ist ein Blockschaltplan des in 1 gezeigten Run/Level-Decodierers (Lauf-/Pegel-Decodierer); und
  • 5 ist ein Blockschaltplan einer zweiten beispielhaften VLD-Längendecodierschleife, die in dem in 1 gezeigten Decodierer mit variabler Wortlänge verwendet werden kann.
  • BESCHREIBUNG DER BEISPIELHAFTEN AUSFÜHRUNGSFORM
  • Übersicht
  • 1 ist ein Blockschaltplan eines beispielhaften Koeffizientendecodierers 100 mit Decodierer mit variabler Wortlänge (VLD), bei dem die vorliegende Erfindung verwendet werden kann. Die vorliegende Erfindung ist eine Längendecodierschleife 110 mit Decodierer mit variabler Wortlänge (VLD), der jede mögliche Kombination aus zwei aufeinanderfolgenden codierten Datenwerten in einem einzigen Taktzyklus decodieren kann. In dem Beispiel von 1 wird die Erfindung zum Decodieren der Länge der DCT-Koeffizienten (die bis zu etwa 85 % des codierten Datenstroms ausmachen) verwendet. Ein Fachmann wird erkennen, dass die Erfindung außerdem verwendet werden kann, um andere mit variabler Länge codierte Datenwerte, wie etwa die höhere Syntax oder einen anderen mit variabler Länge codierten Wert, zu decodieren.
  • 2 ist ein Blockschaltplan der VLD-Längendecodierschleife 110, die in 1 gezeigt ist. Die beispielhafte Vorrichtung 110 der Längendecodierschleife enthält eine Verschiebeeinrichtung 206, um mit variabler Länge codierte Datenwerte an einen Decodierer 210 der ersten Länge zu übertragen. Der Decodierer 210 der ersten Länge führt eine Decodieroperation aus, um eine Länge 211 eines ersten Datenwertes der codierten Datenwerte zu bestimmen.
  • Die Decodierungsmittel 212 der zweiten Länge sind geschaltet, um codierte Datenwerte vom Schieber-Multiplexer 206 zu empfangen, um eine zweite Decodier operation auszuführen, um einzeln eine Länge eines zweiten codierten Datenwertes zu bestimmen, der dem ersten codierten Datenwert direkt folgt. Die erste und die zweite Decodieroperation werden gleichzeitig ausgeführt. Die Decodierungsmittel 212 der zweiten Länge enthalten mehrere Decodierer 212a bis 212p, wobei für jede entsprechende mögliche Länge des ersten codierten Datenwertes ein Decodierer vorhanden ist. Alle Decodierer 212a bis 212p bestimmen gleichzeitig eine Länge 213a bis 213p des zweiten codierten Datenwertes, wobei jeweils eine entsprechende unterschiedliche Länge des ersten codierten Datenwertes angenommen wird. Dann verwendet der Decodierer 214 der kombinierten Länge die tatsächliche decodierte Länge 211 des ersten Datenwertes, um eine der decodierten Längen 213a bis 213p, die von den Decodierern 212a bis 212p ausgegeben werden, auszuwählen und ein Signal L3 der kombinierten Länge auszugeben.
  • Eine Verschiebungssteuereinheit, die die Blöcke 218, 222, 234 und 236 enthält, ist geschaltet, um die kombinierte Länge von dem Decodierer 214 der kombinierten Länge zu empfangen, um ein Verschiebungs-Steuersignal 235 zu bilden, das verwendet wird, um festzulegen, welche der mehreren codierten Datenwerte an die Decodiermittel der ersten und der zweiten Länge übertragen werden. Das Verschiebungs-Steuersignal 235 wird an die Verschiebungseinrichtung 206 übertragen.
  • Weitere Einzelheiten der beispielhaften VLD-Längendecodierschleife 110 werden später bei Bezugnahme auf 2 genau dargestellt.
  • Genaue Beschreibung
  • Ausreichende Kenntnisse der Empfehlung N.262 ISO/IEC 13818-2: 1995 (E) "Information Technology-Generic Coding of Moving Pictures and Associated Audio Information: Video" (die nachfolgend als "die MPEG-Norm" bezeichnet wird) werden vorausgesetzt und werden an dieser Stelle nicht wiederholt.
  • In 1 empfängt eine VLD-Längendecodierschleife 110 den komprimierten 48 Bit-Eingangsdatenstrom DATA_IN 111, der die codierten Daten enthält. Zusätzliche Eingangssignale (MAKROBLOCK_INTRA, LUMA/CHROMA, INTRA_VLC_FORMAT, TEST_MODE, HOLD, RESTART und EXTERNAL_MUX_POSITION), die an die VLD-Längendecodierschleife 110 bereitgestellt werden, werden später unter Bezugnahme auf 3 genauer beschrieben. Der Merker MAKROBLOCK_INTRA wird im Abschnitt 6.3.17.1 sowie in den Tabellen B-2 bis B-8 der MPEG-Norm definiert; der Merker LUMA/CHROMA gibt an, ob der empfangene Block ein Luminanz- oder Chrominanzblock ist; und der Wert INTRA_VLC_FORMAT ist in der Bildcodierungserweiterung festgelegt, die im Abschnitt 6.2.3.1 der MPEG-Norm festgelegt ist.
  • Die VLD-Längendecodierschleife 110 bestimmt die Längen von zwei aufeinanderfolgenden Datenwerten während jedes Taktzyklus. Die Länge des ersten decodierten Datenwertes wird durch L1 angegeben und die kombinierte Länge des ersten und des zweiten Datenwertes wird durch L3 angegeben. Eine Teilmenge 112 der Eingangsdaten 111 und die decodierten Längenwerte L1 und L3 werden an den VLD-Run/Level-Decodierblock 120, den VLD-Decodierblock 130 für interne DC-Koeffizienten und den Ausgabesteuerblock 140 übertragen.
  • Die VLD-Längendecodierschleife 110 liefert Signale B14 und B15 an die VLD-Run/Level-Decodierfunktion 120, die festlegen, welche LUT bei der Run/Level-Decodierung zu verwenden sind. Das Signal B14 gibt an, dass die LUT der DCT-Koeffiziententabelle null (wie in der MPEG-Norm, Anhang B, Tabelle B-14 festgelegt ist) verwendet wird. Das Signal B15 gibt an, dass die Informationen der DCT-Koeffiziententabelle eins (wie in der MPEG-Norm, Anhang B, Tabelle B-15 festgelegt ist) verwendet wird. Diese zuletzt genannten Tabellen werden nachfolgend als "Tabelle B-14" bzw. "Tabelle B-15" bezeichnet. Die Tabellen B14 und B15 legen den Run-Wert und den Level-Wert (Laufwert und Pegelwert) für jeden VLC fest (mit Ausnahme für escape-codierte Werte, für die Run- und Level-Werte durch die Tabelle B-16 festgelegt werden).
  • Wenn der decodierte Wert eines Koeffizienten (der in Tabelle B-14 oder B-15 identifiziert wurde) die Folge "Blockende" ist, gibt es keine weiteren Koeffizienten in dem Block. Die VLD-Längendecodierschleife 110 erfasst die Blockende-Folge und liefert ein Signal END_OF_BLOCK an die Ausgabesteuerfunktion 140.
  • Der VLD-Run/Level-Decodierblock 120 empfängt die Eingangsdaten, die Längen L1 und L3, die Tabelle B14 und die Tabelle B15. Der VLD-Run/Level-Decodierblock 120 verwendet diese Informationen, um decodierte Werte zu bestimmen. Für DCT-Koeffizienten, die von DC-Intern-Koeffizienten verschieden sind, bestimmt der VLD-Run/Level-Decodierblock 120 den Run-Wert und den Level-Wert (gemäß Definition in der MPEG-Norm, Absatz 3.79 und 3.119) für jeden der beiden VLCs in den Eingangsdaten. Diese Werte werden mit RUN_1, LEVEL_1, RUN_2 bzw. LEVEL_2 bezeichnet. Die Bestimmung der decodierten Werte erfolgt anhand einer der Tabellen B14 und B15, wobei die anwendbare Tabelle für einen vorgegebenen Block in Übereinstimmung mit der Tabelle 7-3 der MPEG-Norm festgelegt wird.
  • Viele mögliche Kombinationen der Werte Run und Level besitzen für ihre Darstellung keinen Code mit variabler Länge (VLC). Um diese statistisch seltenen Kombinationen zu codieren, wird das Verfahren der Escape-Codierung verwendet, das in der MPEG-Norm, Absatz 7.2.2.3 festgelegt ist. Gemäß diesem Verfahren folgt einem Escape-VLC ein 6 Bit-Code mit fester Länge, der dem Run-Wert entspricht, dem dann ein 12 Bit-Code mit fester Länge folgt, der den Wert des bezeichneten Levels angibt. Wenn der codierte Datenwert den "Escape-Code" enthält, liefert der VLD-Run/Level-Decodierblock 120 Run- und Level-Werte gemäß Definition in der MPEG-Norm, Anhang B, Tabelle B-16. Die Erfassung eines Escape-Codes wird in 1 durch die Signale ESC_1 und ESC_2 angegeben und die decodierten Werte werden durch die Variablen RUN_1_ESC, LEVEL_1_ESC, RUN_2_ESC, LEVEL_2_ESC angegeben. Es wird angemerkt, dass der Escape-Code trotzdem ein VLC ist und ein Escape-Code erscheint in jeder der LUTs von B14 und B15, obwohl die Run- und Level-Werte für Werte des Escape-Codes feste Längen besitzen, ist der Escape-Code, der den Run- und Level-Werten vorhergeht, ein VLC.
  • Bei dem beispielhaften Koeffizienten-Decodierer decodierte eine separate VLD-Intern-DC-Koeffizientendecodierfunktion 130 den ersten VLC eines intern codierten Blocks (d. h. den DC-Koeffizienten, für den die Häufigkeit in beiden Dimensionen null ist). Wenn der erste VLC in einem Block von der VLD-Längendecodierschleife 110 empfangen wird, wird das Ausgangssignal COEF_1 eingestellt. Wenn sowohl COEF_1 als auch MACROBLOCK_INTRA eingestellt wurden, wird die VLD-Intern-DC-Koeffizientendecodierfunktion 130 freigegeben. Die VLD-Intern-DC-Koeffizientendecodierfunktion 130 decodiert den DC-Koeffizienten unter Verwendung der ausgewählten Daten und der Länge des ersten decodierten Datenwertes, der durch die Längendecodierschleifen 110 geliefert wird. Die Werte dct_dc_size, die durch die VLD-Intern-DC-Koeffizientendecodierfunktion 130 decodiert werden, sind in der MPEG-Norm, Anhang B, Tabelle B-12 und B-13 festgelegt. Wenn der Block ein Luminanz-Block ist, werden die Werte dct_dc_size von Tabelle B-12 verwendet. Wenn der Block ein Chrominanz-Block ist, werden die Werte dct_dc_size von Tabelle B-13 verwendet.
  • Wenn der decodierte Wert von dct_dc_size nicht null ist, folgt dem VLC ein Code fester Länge dc_dct_differential. Die Länge von dc_dct_differential ist die Bitlänge von dct_dc_size. Ein Differentialwert wird zuerst aus den codierten Daten wiederhergestellt. Der Differentialwert wird einer Vorhersageeinrichtung hinzuaddiert, um den endgültigen decodierten Koeffizienten zu erhalten. Ein Fachmann kann in einfacher Weise die VLD-Intern-DC-Koeffizientendecodierfunktion 130 realisieren.
  • Eine Ausgangssteuereinheit 140 empfängt zwei der Bits L3 mit kombinierter Länge (113) und die Signale END_OF_BLOCK und ERROR von der VLD-Längendecodierschleife 110. Die Ausgangssteuereinheit 140 empfängt außerdem das Signal INTRA_VLC_FORMAT. Die Ausgangssteuereinheit 140 erzeugt zwei Signale ENABLE_1 und ENABLE_2, die angeben, wann die Signale RUN und LEVEL gültige Informationen enthalten. Die Ausgangssteuereinheit 140 stellt die Signale ENABLE_1 und ENABLE_2 am Beginn eines Blocks ein und setzt diese am Ende des Blocks zurück. In Abhängigkeit von der verwendeten Tabelle (B14 oder B15) (was durch INTRA_VLC_FORMAT angegeben wird) und davon, ob L3(0) oder L3(2) gesetzt ist, wenn das Signal END_OF_BLOCK auftritt, stellt die Ausgangssteuereinheit 140 fest, ob der letzte Code des Blocks RUN_1/LEVEL_1 oder RUN_2/LEVEL_2 lautet. Wenn ein Fehler erfasst wird (das Signal ERROR wird auf einen logischen Hochpegel gesetzt), werden ENABLE_1 und ENABLE_2 zurückgesetzt.
  • Die Ausgangssignale von dem VLD-Run/Level-Decodierblock 120 und die Intern-DC-Koeffizientendecodierfunktion 130 werden an einen Ausgangsmultiplexer 150 bereitgestellt. Der Ausgangsmultiplexer 150 verwendet das Signal ESC_1, um entweder Werte RUN_1 und LEVEL_1 (121 und 122) oder Werte RUN_1_ESC und LEVEL_1_ESC (123 und 124) auszuwählen. Der Ausgangsmultiplexer 150 verwendet gleichfalls das Signal ESC_2, um entweder Werte RUN_2 und LEVEL_2 (125 und 126) oder Werte RUN_2_ESC und LEVEL_2_ESC (127 und 128) auszuwählen. Die ausgewählten Werte werden als Wert RUN_1 151, Wert LEVEL_1 152, Wert RUN_2 153 und Wert LEVEL_2 154 ausgegeben. Außerdem wählen die Signale FC_FLAG und MACROBLOCK_INTRA das Signal DC_LEVEL im Fall des ersten Koeffizienten für intern codierte Blöcke (d. h. den DC-Koeffizienten). Der Ausgangsmultiplexer 150 überträgt den DC-Koeffizienten auf dem Kanal RUN_1/LEVEL_1.
  • 2 ist eine beispielhafte Ausführungsform der VLD-Längendecodierschleife 110.
  • Ein Verschiebungsmechanismus ist zum Empfangen des Datenstroms DATA_IN vorgesehen. In der beispielhaften Ausführungsform enthält der Verschiebungsmechanismus einen Schieber-Multiplexer 206 und zwei Register 202 und 204. Der Schieber-Multiplexer 206 spricht auf ein Verschiebungssteuersignal 235 an, um eine Teilmenge der codierten Datenwerte mit variabler Länge zur Längendecodierung zu übertragen.
  • Jedes Register 202 und 204 ist so bemessen, dass es zwei VLCs mit der größtmöglichen Länge speichert. In der beispielhaften Ausführungsform hat der längste VLC eine Länge von 24 Bits, so dass jedes Register 48 Bits hält. Der Schieber-Multiplexer 206 hält ebenso viele Bits wie die kombinierten Register 204 und 204 (minus eins). Das beispielhafte Register 202 empfängt 48 Bits neue Daten und gibt die empfangenen Daten an das Register 204 und den Schieber-Multiplexer 206 aus. Daher ist das Register 204 immer einen Zyklus hinter dem Register 202 zurück. Wenn die Inhalte der Register 202 und 204 an das Register 206 übertragen werden, werden die Inhalte des Registers 202 im Register 204 nach unten verschoben, 48 neue Bits werden an das Register 202 übertragen und beide werden an den Schieber-Multiplexer 206 übertragen. Wenn die Register 202 und 204 freigegeben werden, um ein neues 48 Bit-Wort einzutakten, realisieren sie folglich eine 48 Bit-Abwärtsverschiebung der Inhalte des Schieber-Multiplexers 206. Das tritt dann auf, wenn 48 oder mehr der 95 Bits, die gegenwärtig im Schieber-Multiplexer 206 gespeichert sind, bereits an die Längendecodierfunktion 208 übertragen wurden (was die Übertragung eines Signals 238 "größer als 48" bewirkt, um die Register 202 und 204 freizugeben, wie später erläutert wird). Der beispielhafte Schieber-Multiplexer 206 überträgt eine 48 Bit-Teilmenge seines Inhalts an eine Decodierfunktion 208 von zwei Längen.
  • Die Längendecodierfunktion 208 enthält Decodiermittel sowohl der ersten als auch der zweiten Länge. In der beispielhaften Ausführungsform sind die Decodiermittel der ersten Länge eine herkömmlichen Decodierschaltung 210, die so geschaltet ist, dass sie die Teilmenge der mehreren codierten Datenwerte von dem Schieber-Multiplexer 206 empfängt. Der Decodierer 210 führt eine erste Decodieroperation aus, um die Länge des ersten Datenwertes der codierten Datenwerte in der Teilmenge zu bestimmen.
  • Auf Grund der Art, wie die Koeffizienten in den Tabelle B-14 und B-15 codiert sind, werden lediglich (mindestens ein und) höchstens 12 Bits benötigt, um die Länge des VLC zu bestimmen (selbst bei einem Code der Länge 24 Bits). Wenn der erste Code ein 24 Bit-Code und der zweite Code ein 17 Bit-Code ist, ist es daher erforderlich, 36 Bits zu verarbeiten, um beide Längen zu bestimmen. Dabei kennzeichnen die ersten 6 Bits die Länge des ersten Codes und die Bits 25 bis 36 kennzeichnen die Länge des zweiten Codes. In der beispielhaften Ausführungsform werden die Register so geladen, dass die Codes vom LSB zum MSB decodiert werden; wobei (höchstens) 12 LSBs jedes VLC verwendet werden, um die Länge des VLC zu kennzeichnen.
  • Die Decodiererschaltung 210 kann z. B. einen Nur-Lese-Speicher (ROM), eine programmierbare logische Anordnung (PLA), ein logisches Gatter oder dergleichen enthalten (nicht gezeigt). Von den m Bits in der Eingangsfolge, die den ersten codierten Wert bilden, werden die ersten n Bits (n < m, wobei n und m ganzzahlig sind) verwendet, um die Länge des Codes zu bestimmen. Wenn z. B. m gleich 24 und n gleich 12, können die ersten 12 Bits die Länge des Codes angeben und die restlichen Bits können den Code und das Vorzeichen definieren.
  • Der Decodierer 210 decodiert die Länge sowohl von DC-Koeffizienten als auch von AC-Koeffizienten. Die Längen von DC-Koeffizienten werden unter Verwendung der B12-LUT (Luminanz) oder der B13-LUT (Chrominanz) decodiert und AC-Koeffizienten werden unter Verwendung der B14-LUT (für nicht intern codierte Blöcke und für intern codierte Blöcke mit intra_vlc_format gleich null) oder der B15-LUT (für intern codierte Blöcke mit intra_vlc_format gleich eins) decodiert. Deswegen benötigt der Decodierer 210 die Signale B12, B13, B14, B15, B14–15, COEFF_1 von der Steuerlogik 216, um festzulegen, welche Nachschlagtabelle für den Koeffizienten, der gegenwärtig decodiert wird, zu verwenden ist. Diese Signale konfigurieren den Decodierer 210, die geeignete LUT zu verwenden.
  • Die Decodiererschaltung 210 speichert Codes, die den n Bits entsprechen, die zum Bestimmen der Länge verwendet werden. Wenn der erste Abschnitt (mit einer Länge von bis zu n Bits) der Teilmenge der codierten Datenwerte mit einem Code übereinstimmt, der in der Decodiererschaltung 210 gespeichert ist, gibt der Decodierer 210 ein Übereinstimmungssignal 211 aus, das die Länge des ersten codierten Wertes kennzeichnet.
  • Der Decodierer 210 der ersten Länge gibt ein entsprechendes Bit für jede mögliche Länge des ersten codierten Datenwertes aus. Ein einzelnes Bit der von dem Längendecodierer 210 ausgegebenen Bits wird auf einen Wert eins gesetzt. Das gesetzte Bit entspricht der Länge des ersten codierten Datenwertes, die durch den Decodierer 210 der ersten Länge ermittelt wurde. Das 20 Bit-Signal 211 wird von der VLC-Längendecodierschleife 110 als das Signal L1 von 2 ausgegeben.
  • In der beispielhaften Ausführungsform kann der erste Code mit variabler Länge zwanzig unterschiedliche Längenwerte besitzen, die den entsprechenden Werten von zwei bis 20 oder dem Wert 24 entsprechen. Diese möglichen Längen werden durch Tabellen B12 bis B15 der MPEG-Norm bestimmt. Das Längensignal 211 ist ein 20 Bit-Signal, wobei jedes Bit einer entsprechenden Länge der zwanzig möglichen Längen des codierten Wertes entspricht. 19 Bits von den im Signal 211 vorhandenen Bits haben einen Wert null und ein Bit der zwanzig Bits, das der decodierten Länge des ersten Codes entspricht, ist auf eins gesetzt. Der Vorteil dieser Form des Ausgangssignals 211 besteht darin, dass das Ausgangssignal 211 keine Decodierung erfordert. Das einzelne gesetzte Bit des Ausgangssignals 211 kann ohne weitere Decodierung als ein Freigabesignal verwendet werden, wie später erläutert wird.
  • In der beispielhaften Ausführungsform ist es nicht erforderlich, DC-Koeffizienten mit der Länge von 21 Bits zu decodieren, da die beispielhafte Vorrichtung in einem Hauptprofil-MPEG-Decodierer verwendet wird und daher in dem Bitstrom keine Codes der Länge 21 Bits auftreten. Ein Fachmann wird erkennen, dass bei anderen Typen von Bitströmen andere Codelängen auftreten und der Decodierer der ersten Länge auf alle zusätzlichen Längen angepasst wäre, die in der geeigneten LUT erforderlich sind.
  • Die Decodiermittel 212 der zweiten Länge sind mit dem Schieber-Multiplexer 206 gekoppelt, um die Teilmenge der mehreren codierten Datenwerte zu empfangen. Die Decodiermittel 212 der zweiten Länge enthalten jeweils einen Längendecodierer 212a bis 212p für jede mögliche Länge des ersten codierten Datenwertes. Alle Längendecodierer 212a bis 212p decodieren gleichzeitig jeweils einen anderen Abschnitt der Teilmenge der mehreren codierten Datenwerte. Die Decodiermittel 212 der zweiten Länge führen eine zweite Decodierungsoperation aus, um eine Länge eines zweiten Datenwertes der codierten Datenwerte in der Teilmenge einzeln zu bestimmen, der dem ersten codierten Datenwert in der Teilmenge direkt folgt. Die erste und die zweite Decodierungsoperation werden gleichzeitig ausgeführt.
  • Der hier definierte Ausdruck "einzeln bestimmen" bedeutet, dass die Länge des zweiten Codes bestimmt wird, indem der zweite Code als ein vom ersten Code separater Code behandelt wird. Die erste Codelänge wird durch den ersten Decodierer 210 bestimmt und die zweite Codelänge wird durch die Decodiermittel 212 der zweiten Länge bestimmt. Dadurch werden der erste und der zweite Code nicht für Decodierungszwecke zu einem Code mit doppelter Länge verbunden, wie in der US-Patentschrift Nr. 5.428.356 beschrieben ist (bei der jeder Code mit doppelter Länge in einer einzelnen Nachschlagtabellenoperation durch einen einzelnen Decodierer decodiert wird, um ein vorgegebenes Paar decodierter Werte zu identifizieren).
  • In der beispielhaften Ausführungsform kann der erste Code z. B. eine Länge von 2 bis 20 oder 24 Bits haben. Die Bits in der Teilmenge werden gewöhnlich von 0 bis 47 nummeriert. Der Decodierer 212a versucht, einen Abschnitt einer Folge zu decodieren, der in der Teilmenge von Datenwerten mit dem dritten Bit (Bit Nr. 2) beginnt, das das erste Bit des zweiten codierten Datenwertes ist, jedoch nur dann, wenn die Länge des ersten Codes mit variabler Länge zwei ist. Der Decodierer 212b versucht eine Folge zu decodieren, die in der Teilmenge von Datenwerten mit dem vierten Bit (Bit Nr. 3) beginnt, das das erste Bit des zweiten codierten Datenwertes ist, jedoch nur dann, wenn die Länge des ersten Codes mit variabler Länge drei ist. Die verschiedenen Decodierer 212c bis 212r entsprechen aufeinanderfolgenden Abschnitten des ersten codierten Wertes, wie ein Fachmann leicht erkennt. Der Decodierer 212s versucht eine Folge zu decodieren, die in der Teilmenge von Datenwerten mit dem 21. Bit (Bit Nr. 20) beginnt, das das erste Bit des zweiten codierten Datenwertes ist, jedoch nur dann, wenn die Länge des ersten Codes mit variabler Länge 20 ist. Schließlich versucht der Decodierer 212p eine Folge zu decodieren, die in der Teilmenge von Datenwerten mit dem 25. Bit (Bit Nr. 24) beginnt, das das erste Bit des zweiten codierten Datenwertes ist, jedoch nur dann, wenn die Länge des ersten Codes mit variabler Länge die maximal mögliche Länge, d. h. 24 ist.
  • In der beispielhaften Ausführungsform von 2 wird während des Zyklus, wenn der erste Decodierer 210 einen Intern-DC-Koeffizienten verarbeitet, lediglich eine Codelänge verarbeitet. Der erste und der zweite AC-Koeffizient werden in dem Zyklus verarbeitet, der dem Zyklus folgt, in dem der DC-Koeffizient decodiert wird. Der Vorteil dieses Entwurfs besteht darin, dass die Längendecodierfunktion 208 während des gleichen Taktzyklus nicht sowohl einen DC-Koeffizienten als auch einen AC-Koeffizienten decodieren muss. Deswegen müssen die Decodiermittel 212 der zweiten Länge lediglich einen entsprechenden Decodierer 212a bis 212p für jede der 16 möglichen Längen der AC-Koeffizienten enthalten. Es ist nicht erforderlich, zusätzliche Decodierer 212q bis 212t für die vier Längen (12, 18, 19 und 20 Bits) vorzusehen, die bei DC-Koeffizienten, jedoch nicht bei AC-Koeffizienten vorkommen. Ein Fachmann wird verstehen, dass in einer alternativen Ausführungsform (die nachfolgend unter Bezugnahme auf 5 beschrieben wird) die Decodierfunktion 508 den Intern-DC-Koeffizienten in dem Längendecodierer 510 zur gleichen Zeit decodieren kann, wenn der erste AC-Koeffizient in dem Decodierer 512 der zweiten Länge decodiert wird; wobei jedoch bei dieser Ausführungsform in den Decodiermitteln der zweiten Länge zusätzliche Decodierer erforderlich sind.
  • Nochmals in 2 müssen die Decodierer 212a bis 212p lediglich die B14- und B15-LUTs für AC-Koeffizienten verwenden, da der zweite codierte Koeffizient für den Block niemals der DC-Koeffizient sein kann. Die Decodierer 212a bis 212p werden (durch Anwenden der geeigneten LUT) durch die Signale B14, B15 und B14–B15, die von der Steuerlogik 216 empfangen werden, konfiguriert.
  • Gemäß einem Aspekt der Erfindung bestimmt jeder Längendecodierer 212a bis 212p gleichzeitig einen entsprechenden Wert der Länge des zweiten codierten Datenwertes anhand einer entsprechenden möglichen Länge des ersten codierten Datenwertes. Nur eine dieser Längen, die durch die Decodierer 212a bis 212p bestimmt werden, ist die korrekte Länge des zweiten Wertes. Um die Verzögerung zu eliminieren, die im Stand der Technik auftritt (das Warten auf die Decodierung der Länge des ersten codierten Wertes, um festzustellen, wo die Decodierung des zweiten Wertes beginnt), bestimmt die vorliegende Erfindung alle möglichen Längen des zweiten Wertes zum gleichen Zeitpunkt, gleichzeitig mit der Decodierung des ersten Wertes (wobei jede mögliche Länge des zweiten Codes auf einer entsprechenden unterschiedlichen möglichen Länge des ersten Codes basiert). Dann wird die decodierte Länge des ersten Wertes verwendet, um den korrekten Längenwert aus den decodierten Werten der zweiten Länge, die bereits erzeugt wurden, auszuwählen.
  • Durch die Verwendung des einzelnen gesetzten Bits des Signals 211 als ein Freigabebit ermöglicht der Decodierer der kombinierten Länge eine rasche Übertragung des Ausgangs eines einzelnen Decodierers der Decodierer 212a bis 212p ohne jede weitere Decodierung der ersten Länge. Ein Fachmann könnte in dem Decodierer der kombinierten Länge leicht eine Logik aufbauen, um einen der Decodierer der zweiten Länge 212a bis 212p auszuwählen.
  • Jeder der Längendecodierer 212a bis 212p der Decodiermittel der zweiten Länge erzeugt ein entsprechendes Ausgangssignal 213a bis 213p, das eine Länge des zweiten decodierten Datenwertes darstellt, die durch die Längendecodierer 212a bis 212p bestimmt wurden. In der beispielhaften Ausführungsform ist jedes der Ausgangssignale 213a bis 213p ein 16 Bit-Signal, das jeweils den 16 möglichen Längen (2 bis 11, 13 bis 17 und 24) des zweiten codierten Wertes entspricht. Die Längen 12 und 18 bis 20 werden nur für den DC-Koeffizienten verwendet und entsprechen deswegen niemals der Länge des zweiten codierten Wertes. Das 16 Bit-Signal enthält fünfzehn Nullen und eine einzige Eins, ähnlich wie das 20 Bit-Signal, das von dem ersten Decodierer 210 ausgegeben wird.
  • Der Codierer 214 der kombinierten Länge verwendet das einzelne gesetzte Bit des Signals 211 (das Signal, das die erste Länge angibt), um eine Übertragung von einem der Ausgangssignale 213a bis 213p durch den entsprechenden der Längendecodierer 212a bis 212p freizugeben. Das eine freigegebene Ausgangssignal ist das Ausgangssignal des Decodierers, der der Länge des ersten codierten Datenwertes entspricht, für den das Bit im Signal 211 gesetzt ist. Mit anderen Worten, der Decodierer 214 der kombinierten Länge reagiert auf das Signal 211 der ersten Länge zum Wählen eines Ausgangssignals von einem der Längendecodierer 212a bis 212p. Der Längendecodierer (einer der Decodierer 212a bis 212p), der das ausgewählte Ausgangssignal (eines der Signale 312a bis 312p) aufweist, ist der Längendecodierer, der der Länge des ersten codierten Datenwertes entspricht, die durch das Signal 211 der ersten Länge angegeben ist. Das ausgewählte Ausgangssignal gibt die tatsächliche Länge des zweiten codierten Datenwertes an.
  • Es wird z. B. der Fall betrachtet, bei dem der erste codierte Wert eine Länge von 3 Bits hat und der zweite codierte Wert eine Länge von 17 Bits hat. Wenn die Länge des ersten Codes drei ist, wird der Wert des zweiten Bits des Signals 211 auf eins gesetzt und alle Bits vom ersten Bit und vom dritten bis zum zwanzigsten Bit des Signals 211 haben einen Wert null. Gleichzeitig mit der Decodierung des ersten Wertes versucht der Decodierer 212a, die Länge des zweiten codierten Wertes zu decodieren, wobei er (fälschlicherweise) annimmt wird, dass die Länge des ersten codierten Wertes zwei ist; der Decodierer 212b decodiert die Länge des zweiten codierten Wertes, wobei er (richtigerweise) annimmt, dass die Länge des ersten codierten Wertes drei ist, usw. Der Decodierer 214 der kombinierten Länge verwendet das gesetzte (zweite) Bit des Signals 211, um eine Übertragung des Ausgangssignals des Decodierers 212b (der zweite Decodierer von den Decodierern 212a bis 212p in den zweiten Decodiermitteln 212) freizugeben. Das freigebebene Ausgangssignal 213b hat 16 Bits. Wenn die Länge des zweiten codierten Wertes 17 ist, ist der Wert des 15. Bits des Ausgangssignals 213b auf eins gesetzt und die Werte der Bits 1 bis 14 und des 16. Bits des Signals 213b sind auf null gesetzt.
  • In der beispielhaften Ausführungsform gibt der Decodierer 214 der kombinierten Länge ein 40 Bit-Signal 215 aus. Die möglichen Längen des ersten codierten Wertes (2–11, 13–17 und 24 für AC-Koeffizienten in der Ausführungsform von 2) können mit den möglichen Längen des zweiten codierten Wertes (2–11, 13–17 und 24, die in den Tabelle B14 und B15 der MPEG-Norm definiert sind) kombiniert werden, um 40 unterschiedliche kombinierte Längen zu erhalten, die den kombinierten Längen 2–35, 37–41 und 48 entsprechen. Eines der 40 Bits ist gesetzt, wodurch es die kombinierte Länge des ersten und des zweiten codierten Wertes kennzeichnet. Die Werte aller anderen 39 Bits des Signals 215 sind auf null gesetzt. Das 40 Bit-Ausgangssignal L3 kennzeichnet die kombinierte Länge der beiden codierten Datenwerte. Die Signale L1 und L3 werden an die VLD-Run/Level-Decodierfunktion 120 (die in 1 gezeigt ist) übertragen.
  • Die VLD-Run/Level-Decodierschleife enthält außerdem einen Verschiebungssteuermechanismus (der die Funktionen 218, 222, 234 und 236 enthält), der geschaltet ist, um die kombinierte Länge 215 des ersten und des zweiten codierten Datenwertes zu empfangen. Der Verschiebungssteuermechanismus bildet die Verschiebungssteuersignale 235, um festzulegen, welche codierten Datenwerte in der Teilmenge enthalten sind, die an die Längendecodierfunktion 208 übertragen wird, und sendet die Verschiebungssteuersignale 235 an den Schieber-Multiplexer 206. Der Verschiebungssteuermechanismus bildet außerdem ein Verschiebungsfreigabesignal 238 und sendet dieses an die Register 202 und 204, um von Zeit zu Zeit neue Daten in den Schieber-Multiplexer 206 zu laden, um eine ausreichende Menge codierter Daten "in der Pipeline" des Schieber-Multiplexers 206 aufrechtzuerhalten, um Unterbrechungen der Längendecodierung zu vermeiden.
  • Zwei Register 234 und 236 des Verschiebungssteuermechanismus werden mit den sechs niederwertigsten Bits (LSBs) einer Speicherstelle in dem Schieber-Multiplexer 206 versorgt. Diese LSBs geben eine Bitposition zwischen 1 und 48 an, an der sich das LSB des ersten codierten Datenwertes befindet.
  • Der im Register 234 befindliche Wert wird über das Signal 235 an den Multiplex-Auswahlanschluss 206a des Schieber-Multiplexers 206 angelegt, um zu bewirken, dass der Schieber-Multiplexer 206 die 48 Bits, beginnend mit dem im Signal 235 gekennzeichneten Bit bereitstellt.
  • Der im Register 236 befindliche Wert wird über das Signal 237 an den Eingang eines Summengenerationsblocks 218 angelegt. Der Zweck des Summengenerationsblocks 218 besteht darin, die nächste Anfangsbitposition in dem Schieber-Multiplexer 206 für den dritten und den vierten codierten Datenwert in dem Datenstrom DATA_IN zu berechnen (d. h. die beiden Werte, die dem ersten und dem zweiten Datenwert direkt folgen). Diese Berechnung wird parallel mit der Längendecodieroperation ausgeführt, die durch den Längendecodierer 210 und die Decodiermittel 212 der zweiten Länge ausgeführt wird. Der Summengenerationsblock 218 enthält mehrere Addierer 2201 bis 22040 . Jeder Addierer 2201 bis 22040 entspricht einem entsprechenden unterschiedlichen Wert der kombinierten Länge 215 (d. h. es gibt jeweils einen Addierer für jeden möglichen Wert einer kombinierten Länge). Alle Addierer bilden gleichzeitig ein entsprechendes Kandidaten-Verschiebungssteuersignal. Alle Addierer addieren eine entsprechende unterschiedliche Konstante zu der Position des ersten codierten Datenwertes während des gleichen Taktzyklus, in dem die Längendecodierer 212a bis 212p die Länge des zweiten codierten Datenwertes decodieren (Demzufolge besitzen die Addierer eine geringere Komplexität, da jeder Addierer lediglich eine einzige Konstante addiert.). Somit werden 40 unterschiedliche Kandidatenpositionen, jeweils eine für jede mögliche Länge gleichzeitig berechnet. Die entsprechende Konstante in jedem Addierer ist die kombinierte Länge, die dem Addierer entspricht. Jeder Addierer führt eine Modulo-48-Addition aus. Der Ausgang jedes Addierers ist ein 7 Bit-Signal 2211 bis 22140 . Die sechs LSBs des Addierer-Ausgangssignals identifizieren die Modulo-48-Summe, die durch den Addierer berechnet wird; wobei das hochwertigste Bit (MSB) ein Merker ist, der gesetzt ist, wenn die Summe wenigstens 48 beträgt. Die Ausgangssignale 2211 bis 22140 der Addierer 2201 bis 22040 werden an eine Summenwählerfunktion 222 übertragen.
  • Wenn das MSB 238 des Ausgangssignals 223 des Summenwählers auf eins gesetzt ist, befindet sich das MSB des zweiten codierten Datenwertes in den 48 MSBs des Schieber-Multiplexers 206. Um den Schieber-Multiplexer 206 mit Daten, die noch nicht decodiert wurden, gefüllt zu halten, wird das MSB 238 des Ausgangssignals 223 verwendet, um das Laden von neuen Daten von den Registern 202 und 204 in den Schieber-Multiplexer 206 freizugeben. Wie oben angemerkt wurde, hat die Ladeoperation eine Abwärtsverschiebung der Daten in dem Schieber-Multiplexer 206 zur Folge, so dass die bisherigen 47 MSBs nun die 47 LSBs sind. 48 zusätzliche Bits neuer Daten werden in die MSB-Positionen des Schieber-Multiplexers 206 verschoben.
  • Der Summenwähler 222 empfängt die 40 Kandidaten-Verschiebungssteuersignale, die 40 Kandidatenpositionen darstellen. Der Summenwähler 222 empfängt außerdem die gegenwärtige Multiplexerposition 237 vom Register 236 sowie eine von außen bereitgestellte Multiplexerposition 240, die beide nachfolgend erläutert werden. Das Ausgangssignal 215 des Decodierers 214 der kombinierten Länge wird zur Steuerung des Summenwählers 222 verwendet. Das einzelne gesetzte Bit des Signals 215 der kombinierten Länge wird als ein Freigabesignal verwendet, um die Übertragung des Ausgangs von einem der Addierer 2201 bis 22040 vom Summenwähler 222 freizugeben.
  • Wenn in der Ausführungsform von 2 der Intern-DC-Koeffizient in dem Decodierer 210 der ersten Länge verarbeitet wird, gibt der Decodierer 214 der kombinierten Länge eine kombinierte Länge aus, die gleich der Länge des DC-Koeffizienten ist, so dass der erste und der zweite AC-Koeffizient im nächsten Zyklus verarbeitet werden. Es ist somit möglich, die Länge des Intern-DC-Koeffizienten in einem separaten Zyklus zu berechnen, wobei die Decodiermittel 212 der zweiten Länge mit lediglich 16 Decodierern 212a bis 212p implementiert werden.
  • Es gibt zwei Situationen, in denen keines der 40 Ausgangssignale 2211 bis 22140 durch den Summenwähler 222 ausgewählt wird. Erstens gibt die Steuerlogik 216 dann, wenn das System initialisiert wird, indem das Neustart-Signal an die Steuerlogik 216 übertragen wird, ein Signal zum externen Laden an den Summenwähler 222 aus, wodurch bewirkt wird, dass der Summenwähler 222 die extern bereitgestellte Multiplexerposition 240 ausgibt. Die Steuerlogik 216 wird später unter Bezugnahme auf 3 genauer beschrieben.
  • Die zweite Situation, in der keines der Addierer-Ausgangssignale 2211 bis 22140 verwendet wird, tritt dann auf, wenn die Verarbeitung des Blocks beendet ist und das Blockende erfasst wird. Die Steuerlogik 216 gibt das Bypass-Signal an den Summenwähler 222 aus. Der Summenwähler 222 wählt die gegenwärtige Multiplexerposition 237, die an dem Bypass-Eingangsanschluss 222a erfasst wird, damit sie als Ausgabewert 223 verwendet wird. Dadurch bleibt der Schieber-Multiplexer 206 ohne weitere Indexierung in dem gegenwärtigen Zustand.
  • 3 ist ein Blockschaltplan der beispielhaften Logik für die VLD-Längendecodierung-Steuerlogik 216. Die Steuerlogik empfängt mehrere extern festgelegte Parameter, die enthalten: BP_OVRD (HOLD), RESTART, TEST_MODE, MAC-ROBLOCK_INTRA, LUMA/CHROMA und INTRA_VLC_FORMAT. Die Decodierfunktion 208 versorgt die Steuerlogik 216 mit einer Angabe, ob ein Zustand Blockende oder Fehler erfasst wurde. Die Steuerlogik 216 kennzeichnet die folgenden Parameter für die Decodierer 210 und 212a bis 212p: (1) ob der Koeffizient ein DC-Koeffizient oder von einem anderen Typ ist; und (2) welche der Koeffiziententabellen B12 bis B15 für den ersten und den zweiten codierten Wert verwendet wird.
  • Das ODER-Gatter 314 setzt den Merker BYPASS auf einen logischen Hochpegel, wenn das Signal BP_OVRD (HOLD) auf den logischen Hochpegel gesetzt ist, ein Blockende erfasst wird (END_OF_BLOCK ist auf einem logischen Hochpegel), ein Fehler erfasst wird (ERR_FLAG ist auf einem logischen Hochpegel) oder wenn der Merker BYPASS zuvor auf den logischen Hochpegel gesetzt wurde. Nachdem der Merker BYPASS auf den logischen Hochpegel gesetzt wurde, bleibt er in dem Zustand, bis das Signal RESTART auf den logischen Hochpegel gesetzt wird. Der Merker BYPASS wird zu dem Summenwähler 222 übertragen (der in 2 gezeigt ist) und bewirkt, dass der Schieber-Multiplexer 206 in seinem Zustand bleibt, bis das Signal RESET auf den logischen Hochpegel gesetzt wird.
  • Wenn das Signal END_OF_BLOCK auf Hochpegel ist, setzt das ODER-Gatter 316 das Flip-Flop 318 (Ausgang EOB_FLAG) auf Hochpegel und das Flip-Flop 318 bleibt in diesem Zustand, bis das Signal RESTART auf den logischen Hochpegel gesetzt wird. Das Signal END_OF_BLOCK wird an die Ausgabesteuereinheit 140 (die in 1 gezeigt ist) bereitgestellt.
  • Das ODER-Gatter 324 setzt den D-Anschluss des Flip-Flop 326 auf logischen Hochpegel (um das Signal ERR_FLAG auf logischen Hochpegel zu setzen), wenn das Signal ERROR auf dem logischen Hochpegel ist und weder das Signal END_OF_BLOCK noch der Ausgang BYPASS des Flip-Flop 312 auf logischem Hochpegel ist. Das Signal ERR_FLAG wird an die Ausgabesteuereinheit 140 (1) bereitgestellt. Nachdem das Signal ERR_FLAG auf logischen Hochpegel gesetzt wurde, bleibt es auf Hochpegel, bis das Flip-Flop 326 durch das Signal RESTART zurückgesetzt wird.
  • Das ODER-Gatter 328 gibt ein Signal LOAD_EXTERNAL aus, das den logischen Hochpegel besitzt, wenn entweder das Signal TEST_MODE oder das Signal RESTART auf logischem Hochpegel ist. Das Signal LOAD_EXTERNAL wird an den Summenwähler 222 (der in 2 gezeigt ist) bereitgestellt. Wenn das Signal LOAD_EXTERNAL auf dem logischen Hochpegel ist, wird eine extern festgelegte Multiplexerposition von dem Schieber-Multiplexer 206 (der in 2 gezeigt ist) verwendet.
  • Der D-Anschluss des Flip-Flop 330 wird auf den logischen Hochpegel gesetzt (Setzen des Signals COEFF_1 auf logischen Hochpegel), wenn das Signal RESTART auf logischem Hochpegel ist. Das Signal COEFF_1 wird somit am Beginn einer Blockverarbeitungsoperation auf logischen Hochpegel gesetzt, wenn ein DC-Koeffizient verarbeitet wird. Das Signal COEFF_1 wird an die Längendecodierfunktion 210 gesendet (um den Decodierer 210 zum Bestimmen der Länge des DC-Koeffizienten zu konfigurieren) und wird außerdem an die VLD-Intern-DC-Koeffizientendecodierfunktion 130 bereitgestellt.
  • Das UND-Gatter 332 setzt den D-Anschluss des Flip-Flop 334 auf den logischen Hochpegel, um das Ausgangssignal B12 auf den logischen Hochpegel zu setzen, wenn die Signale RESTART und MACROBLOCK_INTRA auf logischem Hochpegel sind und das Signal LUMA/CHROMA auf logischem Tiefpegel ist. Das erfolgt dann, wenn der erste (DC-) Koeffizient eines intern codierten Luminanzblocks verarbeitet wird. Das Signal B12 wird an den Längendecodierer 210 (2) übertragen.
  • Das UND-Gatter 336 setzt den D-Anschluss des Flip-Flop 338 auf den logischen Hochpegel, um den Merker B13 auf den logischen Hochpegel zu setzen, wenn die Signale RESTART, MACROBLOCK_INTRA und LUMA/CHROMA auf logischem Hochpegel sind. Das erfolgt dann, wenn der erste (DC-) Koeffizient eines intern codierten Chrominanzblocks verarbeitet wird. Das Signal B13 wird an den Längendecodierer 210 (2) übertragen.
  • Die logischen Komponenten mit den Bezugszeichen 340 bis 354 in 3 realisieren die "Auswahl von VLC-Tabellen der DCT-Koeffizienten", die in der Tabelle 7-3 der MPEG-Norm festgelegt sind. Das ODER-Gatter 342 setzt den D-Anschluss des Flip-Flop 344 auf den logischen Hochpegel, um den Merker B14 auf logischen Hochpegel zu setzen, wenn der Merker MACRO_BLOCK_INTRA auf logischem Tiefpegel ist oder MACRO_BLOCK_INTRA auf logischem Hochpegel ist und RESTART und INTRA_VLC_FORMAT auf logischem Tiefpegel sind. Dies setzt den Merker B14, so dass die Decodierer 212a bis 212p die B14-Tabelle für Koeffizienten von Blöcken, die nicht intern codiert sind, sowie für Koeffizienten von intern codierten Blöcken, die von DC-Koeffizienten, für die der Wert INTRA_VLC_FORMAT null ist, verschieden sind, verwenden.
  • Das UND-Gatter 346 setzt den D-Anschluss des Flip-Flop 348 auf logischen Hochpegel, um den Merker B15 auf logischen Hochpegel zu setzen, wenn der Merker MACRO_BLOCK_INTRA und der Merken INTRA_VLC_FORMAT auf logischem Hochpegel sind und RESTART auf logischem Tiefpegel ist. Dies setzt den Merker B15, so dass die Decodierer 212a bis 212p die Tabellen B15 für Koeffizienten (die von den DC-Koeffizienten verschieden sind) von intern codierten Blöcken, für die der Wert INTRA_VLC_FORMAT eins ist, verwenden.
  • Das ODER-Gatter 352 setzt den D-Anschluss des Flip-Flop 354 auf logischen Hochpegel, um den Merker B14_B15 auf logischen Hochpegel zu setzen, wenn entweder der Merker MACROBLOCK_INTRA auf logischen Tiefpegel gesetzt ist oder MACROBLOCK_INTRA auf logischen Hochpegel gesetzt ist und das Signal RESTART auf logischen Tiefpegel gesetzt ist. Somit wird der Merker B14_B15 immer dann auf logischen Hochpegel gesetzt, wenn die Decodierer 212a bis 212p entweder die Tabelle B14 oder die Tabelle B15 verwenden sollten (d. h. für nicht intern codierte Makroblöcke und für die AC-Koeffizienten von intern codierten Makroblöcken).
  • 4 ist ein Blockschaltplan des beispielhaften VLD-Run/Level-Decodierer 120, der in 1 gezeigt ist. Da eine separate Funktion (VLD-Intern-DC-Koeffizientendecodierer 130) für den DC-Koeffizienten verwendet wird, verarbeitet der Block 120 bei einem intern codierten Block den DC-Koeffizienten nicht. Die Schaltungsanordnung muss lediglich Codes verarbeiten, die Längen 2 bis 11, 13 bis 17 und 24 aufweisen. Die entsprechenden Run/Level-Decodierschaltungen für den ersten und den zweiten codierten Datenwert in der VLD-Run/Level-Decodierfunktion 120 sind sehr ähnlich, wobei lediglich einige kleinere Unterschiede vorhanden sind, die nachfolgend erläutert werden. Deswegen werden lediglich 16 Bits (die Bits 0–9, 11–15 und 19) des Signals L1 (das in 1 gezeigt ist) verwendet, wobei diese 16 Bits durch L1(15:0) in der oberen linken Ecke von 4 angegeben sind.
  • Ein Code 1/Daten 2-Wähler 410 verarbeitet die Länge L1 des ersten Codes. Wenn die Länge L1 24 Bits beträgt (d. h., wenn das letzte Bit des 16 Bit-Signals gesetzt ist), ist der erste Wert escape-codiert. Das letzte Bit des 16 Bit-Signals L1 wird als Signal ESC_1 ausgegeben. Bei einem escape-codierten Wert geben die ersten sechs Bits den Escape-Code an, die nächsten sechs Bits sind der Run-Wert und die letzten 12 Bits sind der Level-Wert. Wenn die Länge 24 Bits beträgt, wird deswegen der Merker ESC_1 auf logischen Hochpegel gesetzt. Die Bits Nr. 6 bis 11 des Signals DATA_IN (vom siebten Bit bis zum elften Bit) werden als Wert RUN_1_ESC übertragen, der durch den Ausgangs-Multiplexer 150 (1) ausgegeben wird, wenn der Merker ESC_1 gesetzt ist. Die Bits Nr. 12 bis 23 des Signals DATA_IN (vom 13. Bit bis zum 24. Bit) werden als der Wert LEVEL_1_ESC übertragen, der durch den Ausgangs-Multiplexer 150 (1) ausgegeben wird, wenn der Merker ESC_1 gesetzt ist.
  • Da bei allen anderen VLCs (nicht escape-codierte Werte) die Länge des VLC bereits durch die (höchstens) 12 LSBs gekennzeichnet wird, können die Werte Run und Level unter Verwendung von höchstens 5 Bits, die in 4 durch Code_1(4:0) und Code_2(4:0) angegeben sind, bestimmt werden. In Tabelle B-14 gibt es z. B. 16 VLCs, die eine Länge von 17 Bits aufweisen. Alle diese 16 VLCs besitzen die gleichen 12 LSBs und die nächsten fünf Bits kennzeichnen jeweils unterschiedliche Kombinationen von Run- und Level-Werten für jeden der 17 Bit-VLCs.
  • Die 5 Bits von Code_1(4:0) werden an den Run-Decodierer 420 und den Level-Decodierer 430 übertragen. Die Decodierer 420 und 430 enthalten LUTs, die die Run- und Level-Werte von den Tabelle B-14 und B-15 speichern. Wenn das Signal B-14 einen logischen Hochpegel aufweist, sollte die Tabelle B14 verwendet werden, und wenn das Signal B15 einen logischen Hochpegel aufweist, sollte die Tabelle B15 verwendet werden (wie oben unter Bezugnahme auf die 2 und 3 beschrieben wurde). Wenn die Code_1(4:0)-Bits, L1 und die Signale B14 und B15 vorgegeben sind, bestimmen der Run-Decodierer 420 und der Level-Decodierer 430 die Werte Run bzw. Level.
  • Der Code 1/Daten 2-Wähler 410 ermittelt außerdem den zweiten codierten Datenwert Data_2 (anhand des Wertes L1) und überträgt:
    • (1) die ersten 17 Bits [d. h. Data_2(16:0)] des zweiten codierten Datenwertes Data_2 an den Code 2-Wähler 450;
    • (2) die Bits 7 bis 12 von Data_2[d. h. Data_2(11:6)] an die Register 480 zur Übertragung als das Signal RUN_2_ESC; und
    • (3) die Bits 13 bis 24 von Data_2[d. h. Data_2(23:12)] an die Register 480 zur Übertragung als das Signal LEVEL_2_ESC.
  • Der VLD-Run/Level-Decodierer 120 enthält einen Decodierer 440 der Länge 2, der das Signal L1(15:0) und die kombinierte Länge L3(37:0) verarbeitet, um die Länge des zweiten codierten Datenwertes zu bestimmen. Da L1 und L3 jeweils in Form eines Mehrbitsignals bereitgestellt werden, kann der Decodierer 440 der Länge 2 eine Schaltung aus Logikgattern verwenden an Stelle einer Subtrahiereinheit, um die Länge des zweiten codierten Datenwertes effektiv zu bestimmen und diese Länge in Form eines 16 Bit-Wertes auszugeben, bei dem lediglich ein einzelnes Bit auf den Wert "eins" gesetzt ist. In der gleichen Weise wie der Code 1/Daten 2-Wähler 410 wird das 16. Bit L2(15) für einen codierten 24 Bit-Datenwert, der escape-codiert ist, auf den logischen Tiefpegel gesetzt. Ein Fachmann könnte den Decodierer 440 der Länge 2 in einfacher Weise aufbauen.
  • Ein Code 2-Wähler verarbeitet das Signal L2 in der gleichen Weise wie der Wähler 410, um die 5 Bits Data_2(4:0) zu bestimmen, die zur Identifizierung von Run und Level für nicht escape-codierte Werte benötigt werden. Der Code2-Wähler sendet die Werte Code2(4:0) an den Run-Decodierer 460 und den Level-Decodierer 470 in der gleichen Weise, wie der Code1-Wähler 410 diese Informationen an die Decodierer 420 und 430 überträgt. Der Run-Decodierer 460 und der Level-Decodierer 470 sind mit dem Run-Decodierer 420 und dem Level-Decodierer 430 identisch, so dass deren Beschreibung hier nicht wiederholt wird.
  • 5 ist ein Blockschaltplan einer beispielhaften Decodierfunktion 510 der zweiten Länge. Komponenten und Signale von 5, die gleich jenen von 2 sind, besitzen die gleichen Bezugszeichen und werden nicht erneut beschrieben.
  • Die Längendecodierfunktion 510 kann die Länge des Intern-DC-Koeffizienten in dem Decodierer 510 der Länge 1 zum gleichen Zeitpunkt decodieren, an dem der erste AC-Koeffizient in den Decodiermitteln 512 der zweiten Länge decodiert wird. Um diese Möglichkeit zu schaffen, sind zusätzliche Decodierer 512q bis 512t vorgesehen, so dass die Decodiermittel 512 der zweiten Länge jeweils einen Längendecodierer für jede mögliche Länge eines Intern-DC-Koeffizienten (2–4, 6–20) oder einen AC-Koeffizienten (2–11, 13–17 oder 24) enthalten. Das heißt, es gibt 20 Decodierer 512a bis 512t für alle möglichen Längen (2–20 oder 24) des ersten codierten Wertes, unabhängig davon, ob der erste Wert einen DC-Koeffizienten oder einen AC-Koeffizienten darstellt.
  • Bei dieser Konfiguration kann die kombinierte Länge L3 44 Werte annehmen, die den kombinierten Längen 2–44 und 48 entsprechen. Deswegen sind 44 Addierer 520 bis 52044 vorgesehen (an Stelle der 40 Addierer in 2), die diesen 44 möglichen kombinierten Längen entsprechen. Somit muss der Summenwähler 522 einen Wert aus 46 Werten (44 mögliche Längen, Bypass oder extern bereitgestellte Position) auswählen.
  • Der Decodierer für variable Länge wurde hier in Form eines beispielhaften DCT-Koeffizienten-Längendecodierer beschrieben. Eine (nicht gezeigte) Schaltungskonfiguration, die dem Koeffizientendecodierer 100 (1) ähnlich ist, kann verwendet werden, um Elemente der höheren Syntax zu decodieren, wie in den Abschnitten 6.1 bis 6.13 der MPEG-Norm beschrieben ist. Wenn in dem Koeffizientendecodierer 100 das Blockende erreicht ist, wird der Merker BYPASS (der oben unter Bezugnahme auf 3 beschrieben wurde) auf logischen Hochpegel gesetzt und die Steuerung wird zusammen mit dem Ort des nächsten Codes an den Decodierer der höheren Syntax übergeben. Wenn dann der höhere Code decodiert wurde, wird das Signal RESTART auf den logischen Hochpegel gesetzt, um die nächsten beiden DCT-Koeffizienten zu decodieren.
  • Obwohl die Erfindung in Bezug auf eine beispielhafte Ausführungsform unter Verwendung des MPEG-codierten Videodaten-Bitstroms beschrieben wurde, kann die Erfindung bei anderen Typen von Decodierern mit variabler Länge ausgeführt werden.

Claims (10)

  1. Decodierungsvorrichtung für MPEG-2-codierte Datenwerte mit variabler Länge zum Decodieren eines Datenstroms aus codierten Datenwerten mit variabler Länge, VLCs, die gemäß der MPEG-2-Norm codiert sind, wobei die Vorrichtung umfasst: Verschiebungsmittel (206), die den Datenstrom empfangen und in Reaktion auf ein Verschiebungssteuersignal eine Teilmenge der mehreren codierten Datenwerte mit variabler Länge senden; erste Längenbestimmungsmittel (210), die eine durch die erste Anzahl von n Bits der Teilmenge der mehreren VLCs adressierte Nachschlagtabelle (210) enthalten, wobei n kleiner als die maximale Codelänge der VLCs ist, wobei die Nachschlagtabelle (210) so angeschlossen ist, dass sie die Teilmenge der mehreren codierten Datenwerte empfängt, um eine erste Längenbestimmungsoperation auszuführen, um eine Länge eines ersten der codierten Datenwerte in der Teilmenge zu bestimmen, ohne den ersten codierten Datenwert zu decodieren; zweite Längenbestimmungsmittel (212), die mehrere Nachschlagtabellen (212a, 212p) enthalten, wobei jede der mehreren Nachschlagtabellen (212a, 212p) durch eine Anzahl von n Bits der Teilmenge der mehreren VLCs adressiert wird, wobei n kleiner als die maximale Codelänge der VLCs ist, wobei die mehreren Nachschlagtabellen (212a, 212p) so angeschlossen sind, dass sie die Teilmenge der mehreren codierten Datenwerte empfangen, um eine zweite Längenbestimmungsoperation auszuführen, um eine Länge eines zweiten der codierten Datenwerte in der Teilmenge einzeln zu bestimmen, ohne den zweiten codierten Datenwert zu decodieren, wobei der zweite codierte Datenwert dem ersten codierten Datenwert in der Teilmenge direkt folgt, wobei die erste und die zweite Längenbestimmungsoperation gleichzeitig ausgeführt werden; Mittel (214) zum Bestimmen einer kombinierten Länge, die in Reaktion auf die Längen des ersten und des zweiten codierten Datenwertes eine kombinierte Länge des ersten und des zweiten Datenwertes gleichzeitig an Verschiebungssteuermittel (218, 222, 234, 236) und an Wertdecodierungsmittel (410, 420, 430, 440, 460, 470) ausgeben; wobei die Verschiebungssteuermittel (218, 222, 234, 236) in Reaktion auf die kombinierte Länge des ersten und des zweiten Datenwertes das Verschiebungssteuersignal bilden, um so eine Position eines nächsten codierten Datenwertes in den Verschiebungsmitteln (206) zu identifizieren, wobei der nächste codierte Datenwert dem zweiten codierten Datenwert direkt folgt, wobei die Verschiebungssteuermittel (218, 222, 234, 236) das Verschiebungssteuersignal zu den Verschiebungsmitteln (206) senden; und die Wertdecodierungsmittel (410, 420, 430, 440, 460, 470) so angeschlossen sind, dass sie die Teilmenge der mehreren codierten Datenwerte und die Länge des ersten codierten Datenwertes und die kombinierte Länge des ersten und des zweiten codierten Datenwertes empfangen, um den ersten und den zweiten codierten Datenwert in einen ersten bzw. einen zweiten decodierten Datenwert umzusetzen, wobei die zweiten Längenbestimmungsmittel (212) umfassen: eine jeweilige Längenbestimmungs-Nachschlagtabelle (212a, 212p) für jede mögliche Länge des ersten codierten Datenwertes, wobei jede Längenbestimmungs-Nachschlagtabelle gleichzeitig eine Codelänge eines jeweils anderen Abschnitts der Teilmenge der mehreren codierten Datenwerte bestimmt, wobei jede Längenbestimmungs-Nachschlagtabelle (212a, 212p) gleichzeitig einen entsprechenden Wert der Länge des zweiten codierten Datenwertes anhand einer entsprechenden möglichen Länge des ersten codierten Datenwertes bestimmt.
  2. Vorrichtung nach Anspruch 1, bei der die ersten Längenbestimmungsmittel (210) ein erstes Längensignal, das die Länge des ersten codierten Datenwertes angibt, erzeugen und senden und jede der Längenbestimmungs-Nachschlag-tabellen (212a, 212p) der zweiten Längenbestimmungsmittel (212) ein jeweiliges Ausgangssignal erzeugen und senden und die Mittel (214) zum Bestimmen der kombinierten Länge in Reaktion auf das erste Längensignal ein Ausgangssignal der Längenbestimmungs-Nachschlagtabelle (212a, 212p) auswählen, das der Länge des ersten codierten Datenwertes entspricht, der durch das erste Längensignal angegeben wird, während das ausgewählte Ausgangssignal die Länge des zweiten codierten Datenwertes angibt.
  3. Vorrichtung nach Anspruch 1, bei der: die ersten Längenbestimmungsmittel (210) ein entsprechendes Bit für jede mögliche Länge des ersten codierten Datenwertes ausgeben, eines der Bits, die durch die ersten Längenbestimmungsmittel (210) ausgegeben werden, gesetzt wird, wobei das gesetzte Bit der Länge des ersten codierten Datenwertes entspricht, die durch die ersten Längenbestimmungsmittel (210) bestimmt wird, und jede der Längenbestimmungs-Nachschlagtabellen (212a, 212p) der zweiten Längenbestimmungsmittel (212) ein entsprechendes Ausgangssignal erzeugt, das eine Länge des zweiten codierten Datenwertes repräsentiert, der durch die Längenbestimmungs-Nachschlagtabelle (212a, 212p) bestimmt wird, und die kombinierten Längenbestimmungsmittel (212) in Reaktion auf das eine gesetzte Bit das Senden des Ausgangssignals durch die entsprechende Längenbestimmungs-Nachschlagtabelle (212a, 212p), das der Länge des ersten codierten Datenwertes entspricht, für die das Bit von den ersten Längenbestimmungsmitteln (210) gesetzt wird, freigeben.
  4. Vorrichtung nach Anspruch 3, bei der die Verschiebungssteuermittel (218, 222, 234, 236) einen jeweiligen Addierer (2201 , 22040 ) für jeden möglichen Wert der kombinierten Länge des ersten und des zweiten codierten Datenwertes enthalten, wobei jeder Addierer (2201 , 22040 ) ein entsprechendes Kandidaten-Verschiebungssteuersignal bildet; die kombinierten Längenbestimmungsmittel (214) ein entsprechendes Bit für jede mögliche kombinierte Länge des ersten und des zweiten codierten Datenwertes ausgeben, eines der Bits, die durch die kombinierten Längenbestimmungsmittel (214) ausgegeben werden, gesetzt wird, wobei das gesetzte Bit der kombinierten Länge der ersten und zweiten codierten Daten entspricht, und die Verschiebungssteuermittel (218, 222, 234, 236) das von den kombinierten Längenbestimmungsmitteln (214) ausgegebene gesetzte Bit dazu verwenden, das Senden des Kandidaten-Verschiebungssteuersignals, das von einem der Addierer (2201 , 22040 ) ausgegeben wird, freizugeben, wobei dieser eine Addierer der kombinierten Länge des ersten und des zweiten codierten Datenwertes entspricht.
  5. Vorrichtung nach Anspruch 1, bei der die Verschiebungsmittel (216) einen Schieber-Multiplexierer (206) umfassen, der den Datenstrom empfängt und eine feste Anzahl von Datenbits zu den ersten und den zweiten Längenbestimmungsmitteln (210, 212) sendet, und das Verschiebungssteuersignal eine Stelle eines ersten der festen Anzahl von Datenbits in dem Schieber-Multiplexierer (206) identifiziert.
  6. Vorrichtung nach Anspruch 1, bei der die Verschiebungssteuermittel (218, 222, 234, 236) umfassen: einen entsprechenden Addierer (2201 , 22040 ) für jeden möglichen Wert der kombinierten Länge des ersten und des zweiten codierten Datenwertes, wobei jeder Addierer (2201 , 22040 ) gleichzeitig ein entsprechendes Kandidaten-Verschiebungssteuersignal bildet und sendet, und Summenauswahlmittel (222), die in Reaktion auf die kombinierte Länge des ersten und des zweiten codierten Datenwertes das Kandidaten-Verschiebungssteuersignal auswählen, das der kombinierten Länge des ersten und des zweiten codierten Datenwertes entspricht, und den ausgewählten Kandidaten zu den Verschiebungsmitteln (206) als das Verschiebungssteuersignal senden.
  7. Vorrichtung nach Anspruch 6, bei der jeder Addierer (2201 , 22040 ) eine entsprechende Modulo-Arithmetikoperation ausführt, um das Kandidaten-Verschiebungssteuersignal des Addierers (2201 , 22040 ) zu bilden.
  8. Vorrichtung nach Anspruch 7, bei der die Verschiebungsmittel (206) einen Schieber-Multiplexierer (206) umfassen, der den Datenstrom empfängt und eine feste Anzahl aufeinander folgender Datenbits zu den ersten und den zweiten Längenbestimmungsmitteln (210, 212) sendet und das Verschiebungssteuersignal einen Ort eines ersten der festen Anzahl aufeinander folgender Datenbits in dem Schieber-Multiplexierer (206) identifiziert.
  9. Vorrichtung nach Anspruch 1, bei der der Datenstrom ein codiertes Videosignal enthält und der erste und der zweite codierte Datenwert Koeffizienten einer diskreten Kosinustransformation des Videosignals repräsentieren.
  10. Decodierungsverfahren für MPEG-2-codierte Datenwerte mit variabler Länge zum Decodieren mehrerer codierter Datenwerte mit variabler Länge, die gemäß der MPEG-2-Norm codiert sind und in einem Datenstrom in einem einzigen Taktzyklus enthalten sind, umfassend die folgenden Schritte: Empfangen des Datenstroms und eines Verschiebungssteuersignals; Ausführen einer ersten Längenbestimmungsoperation, um eine Länge eines ersten der codierten Datenwerte in der Teilmenge durch Verarbeiten einer Anzahl von n Bits des Datenstroms unter Verwendung einer durch die erste Anzahl von n Bits der Teilmenge der mehreren VLCs adressierten Nachschlagtabelle (210) zu bestimmen, wobei n kleiner als die maximale Codelänge der VLCs ist, ohne den ersten codierten Datenwert zu decodieren; Ausführen einer zweiten Längenbestimmungsoperation, um eine Länge eines zweiten der codierten Datenlänge in der Teilmenge einzeln zu bestimmen, indem der Datenstrom gleichzeitig in mehreren Nachschlagtabellen verarbeitet wird, wobei eine Längenbestimmungs-Nachschlagtabelle (212a, 212p) für jede mögliche Länge des ersten codierten Datenwertes verwendet wird, wobei jede Längenbestimmungs-Nachschlagtabelle gleichzeitig eine Codelänge eines entsprechenden, unterschiedlichen Abschnitts der Teilmenge der mehreren codierten Datenwerte bestimmt, wobei jede Längenbestimmungs-Nachschlagtabelle (212a, 212p) gleichzeitig einen entsprechenden Wert der Länge des zweiten codierten Datenwertes auf der Grundlage einer entsprechenden möglichen Länge des ersten codierten Datenwertes bestimmt, wobei jede Nachschlagtabelle durch eine Anzahl von n Bits der Teilmenge der mehreren VLCs adressiert wird, wobei n kleiner als die maximale Codelänge der VLCs ist, wobei die zweite Längenbestimmungsoperation die Länge des zweiten codierten Datenwertes bestimmt, ohne den zweiten codierten Datenwert zu decodieren, wobei der zweite codierte Datenwert dem ersten codierten Datenwert in der Teilmenge direkt folgt, wobei die erste und die zweite Längenbestimmungsoperation gleichzeitig ausgeführt werden, Ausgeben einer kombinierten Länge des ersten und des zweiten Datenwertes gleichzeitig in eine Verschiebungssteuereinheit (218, 222, 234, 236) und in einen Decodierer (410, 420, 430, 440, 460, 470); Bilden des Verschiebungssteuersignals in der Verschiebungssteuereinheit (218, 222, 234, 236) in Reaktion auf den kombinierten Längenwert, um einen der mehreren codierten Datenwerte zu bestimmen, die in der Teilmenge enthalten sind; Senden des Verschiebungssteuersignals zu den Verschiebungsmitteln (206), um die Verschiebungsmittel (206) zu veranlassen, einen dritten Codewert mit variabler Länge zu verarbeiten, der dem ersten und dem zweiten Codewert mit variabler Länge folgt; und Decodieren des ersten und des zweiten Codewerts mit variabler Länge in dem Decodierer (410, 420, 430, 440, 460, 470) in Reaktion auf den kombinierten Längenwert.
DE69735835T 1996-03-29 1997-03-20 Dekodierer variabler Länge und Verfahren zur Dekodierung zweier Kodewörter pro Takt Expired - Fee Related DE69735835T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/623,651 US5841380A (en) 1996-03-29 1996-03-29 Variable length decoder and method for decoding two codes per clock cycle
US623651 1996-03-29

Publications (2)

Publication Number Publication Date
DE69735835D1 DE69735835D1 (de) 2006-06-14
DE69735835T2 true DE69735835T2 (de) 2006-10-19

Family

ID=24498899

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69735835T Expired - Fee Related DE69735835T2 (de) 1996-03-29 1997-03-20 Dekodierer variabler Länge und Verfahren zur Dekodierung zweier Kodewörter pro Takt

Country Status (6)

Country Link
US (1) US5841380A (de)
EP (1) EP0798931B1 (de)
JP (2) JP3737599B2 (de)
KR (1) KR100276037B1 (de)
CN (1) CN1135846C (de)
DE (1) DE69735835T2 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU728882B2 (en) * 1997-04-30 2001-01-18 Canon Kabushiki Kaisha Compression
US6215424B1 (en) * 1998-12-16 2001-04-10 Thomson Licensing S.A. System for variable length codeword processing suitable for video and other applications
US6771824B1 (en) * 1999-12-28 2004-08-03 Lucent Technologies Inc. Adaptive variable length decoding method
DE60100416T2 (de) * 2000-04-28 2004-06-09 Matsushita Electric Industrial Co., Ltd., Kadoma Dekoder für Kode variabler Länge
GB0124882D0 (en) * 2001-10-17 2001-12-05 Koninkl Philips Electronics Nv Improved variable length decoder
KR100486251B1 (ko) * 2002-08-03 2005-05-03 삼성전자주식회사 가변 길이 코드 복호화 장치 및 방법
US7283591B2 (en) * 2003-03-28 2007-10-16 Tarari, Inc. Parallelized dynamic Huffman decoder
JP4617644B2 (ja) * 2003-07-18 2011-01-26 ソニー株式会社 符号化装置及び方法
US6956511B2 (en) * 2004-01-06 2005-10-18 Sharp Laboratories Of America, Inc. Multi-symbol/coefficient decode operation for Huffman codes
US7830964B2 (en) * 2004-11-24 2010-11-09 Lsi Corporation Method and/or apparatus for parsing compressed video bitstreams
US8630354B2 (en) * 2006-06-16 2014-01-14 Intel Corporation Hardware accelerated compressed video bitstream escape code handling
JP5075136B2 (ja) * 2009-01-16 2012-11-14 キヤノン株式会社 復号装置及びその制御方法
JP5075135B2 (ja) * 2009-01-16 2012-11-14 キヤノン株式会社 復号装置及びその制御方法
US20110149338A1 (en) * 2009-12-22 2011-06-23 Holley Michael J Parallel decode for run length limited encoded datastreams
JP2011139128A (ja) * 2009-12-25 2011-07-14 Samsung Electronics Co Ltd 可変長符号復号装置
CN102740066B (zh) * 2011-04-01 2015-06-17 富士通株式会社 Cavlc解码方法和系统
JP2013016897A (ja) 2011-06-30 2013-01-24 Toshiba Corp 可変長符号復号装置、符号システムおよび可変長符号復号方法
US9252805B1 (en) * 2015-03-28 2016-02-02 International Business Machines Corporation Parallel huffman decoder
WO2019227323A1 (zh) * 2018-05-30 2019-12-05 深圳市大疆创新科技有限公司 变长解码方法与装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03145223A (ja) * 1989-10-30 1991-06-20 Toshiba Corp 可変長符号復調装置
US5173695A (en) * 1990-06-29 1992-12-22 Bell Communications Research, Inc. High-speed flexible variable-length-code decoder
US5225832A (en) * 1992-02-13 1993-07-06 Industrial Technology Research Institute High speed variable length decoder
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
JP3136796B2 (ja) * 1992-09-24 2001-02-19 ソニー株式会社 可変長符号デコーダ
JP2746109B2 (ja) * 1994-03-09 1998-04-28 日本電気株式会社 ハフマン符号復号化回路

Also Published As

Publication number Publication date
JP2006042336A (ja) 2006-02-09
CN1135846C (zh) 2004-01-21
JP4023548B2 (ja) 2007-12-19
EP0798931A3 (de) 2000-11-15
CN1171699A (zh) 1998-01-28
JPH1065549A (ja) 1998-03-06
EP0798931B1 (de) 2006-05-10
EP0798931A2 (de) 1997-10-01
KR100276037B1 (ko) 2000-12-15
US5841380A (en) 1998-11-24
KR970068648A (ko) 1997-10-13
DE69735835D1 (de) 2006-06-14
JP3737599B2 (ja) 2006-01-18

Similar Documents

Publication Publication Date Title
DE69735835T2 (de) Dekodierer variabler Länge und Verfahren zur Dekodierung zweier Kodewörter pro Takt
DE69637068T2 (de) System zur Dekodierung von bewegten Bildern
DE69333714T2 (de) Speicher zur Verwendung im Dekodieren von Wörtern variabler Länge und Dekoder und Verfahren zur Verwendung in digitalen Kommunikationssystemen
DE4314741C2 (de) Dekodierer für Einheiten von Huffman-kodierten Daten
DE19506164C2 (de) Verfahren zum Komprimieren eingegebener Symbole in Codeworte
DE69631792T2 (de) Apparat und verfahren für die zweidimensionale datenkompression
DE69434668T2 (de) Adaptives Codierungs- und Decodierungsverfahren mit variabler Länge für Bilddaten
DE69932543T2 (de) Verlustfreies Kodierungs- und Dekodierungssystem
DE69735680T2 (de) Verfahren zur Bilddecodierung
DE69817137T2 (de) Bildverarbeitung für elektronisches Wasserzeichensetzen
DE69535569T2 (de) Verfahren zur Synchronisationsrückgewinnung und Vorrichtung zur variablen Längendekodierung
DE2614916C2 (de) Konverter zur Codeumwandlung
DE69838729T2 (de) Verfahren und vorrichtung zur verringerung des benötigten speicherplatzes zur speicherung von referenzbildern in einem videodekoder
DE69432660T2 (de) Vorrichtung und verfahren zur kodierung/dekodierung von daten für untertitel
DE4400355A1 (de) Adaptiver Längenvariabel-Kodierer/Dekodierer
DE69535710T2 (de) Dekodierer variabler Länge für bitgestopfte Daten
DE69835211T2 (de) Umschaltung zwischen komprimierten videobitströmen
DE69813349T2 (de) Vorrichtung zur Kontrolle der Datenmenge und Kodierer dieselbige anwendend
EP0687111A2 (de) Verfahren zur Codierung/Decodierung eines Datenstroms
DE60211171T2 (de) Verarbeitung von einem komprimierten mediensignal
DE69535392T2 (de) Vorrichtung zur Dekodierung von Codes mit variablen Lauflängen unter Verwendung einer relativen Adressierung
DE69724440T2 (de) Mpeg-2-videodatendekodierer für codes variabler länge und dekodiererarchitektur mit zwei geschwindigkeiten
DE69816971T2 (de) Videokodierer mit skalierungsabhängiger vlc (variable length code) kodierung
EP1472888B1 (de) Kontextsensitive kodierung und dekodierung eines videodatenstroms
DE19900150B4 (de) Apparat und Verfahren zum Kodieren von Information mit einem finiten Automaten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: PANASONIC CORP., KADOMA, OSAKA, JP

8339 Ceased/non-payment of the annual fee