DE102008016179A1 - Automatische Generierung von Kompaktcodetabellen - Google Patents

Automatische Generierung von Kompaktcodetabellen Download PDF

Info

Publication number
DE102008016179A1
DE102008016179A1 DE102008016179A DE102008016179A DE102008016179A1 DE 102008016179 A1 DE102008016179 A1 DE 102008016179A1 DE 102008016179 A DE102008016179 A DE 102008016179A DE 102008016179 A DE102008016179 A DE 102008016179A DE 102008016179 A1 DE102008016179 A1 DE 102008016179A1
Authority
DE
Germany
Prior art keywords
group
codeword
compact
groups
code
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.)
Withdrawn
Application number
DE102008016179A
Other languages
English (en)
Inventor
Munsi A. San Jose Haque
Musa Palo Alto Jahanghir
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102008016179A1 publication Critical patent/DE102008016179A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Eine Vorrichtung schließt ein Kompakttabellen-Generatormodul und ein Speichermedium ein. Der Kompakttabellengenerator erzeugt eine Kompaktcodetabelle mit mehreren Codewortgruppen, angeordnet in einer oder mehr Hierarchien. Jede dieser Codewortgruppen schließt eine Gruppenmaske ein, die einem oder mehr Codewörtern in einer Tabelle mit Codes variabler Länge entspricht. Das Speichermedium speichert Informationen zu den Codewortgruppen, wie beispielsweise eine Gruppenmaske für jede der Codewortgruppen und einen Code-Index für jedes Codewort in der Tabelle mit Codes variabler Länge.

Description

  • Elektronische Daten, einschließlich Text, Graphiken, Sprache, Multimedia und andere Zeichenketten, können durch Binärcodes dargestellt werden, die derartige Informationen komprimieren. Eine derartige Komprimierung reduziert die zum Speichern und/oder Senden der Daten erforderliche Anzahl von Bits. Binärcodes unterschiedlicher oder variabler Länge können verwendet werden, um unterschiedliche Zeichen in einem Datenbitstrom darzustellen. Gemäß einigen Techniken zur Komprimierung von Binärcodes werden häufiger auftretende Zeichen innerhalb eines Bitstroms durch kürzere Codes dargestellt, und weniger häufig auftretende Codes werden durch Verwendung längerer Codes dargestellt. Ein derartiges Schema kann als Variable Längencodierung (VLC) bezeichnet werden.
  • Eine Art eines VLC-Schemas kann Huffman-Codes umfassen. Huffman-Codes können zum Beispiel verwendet werden bei digitaler Videokomprimierung und Informationsabruf für Videocodierungsstandards, wie beispielsweise MicrosoftTM Windows Media, MPEG-2, MPEG-4, H.263, H.264 und anderen derartigen Standards, die VLC einsetzen.
  • Huffman-Codes setzen Codewörter variabler Länge ein. Somit kann bei einigen Huffman-Decodierungsimplementierungen ein Bitstromsegment des ankommenden Bitstroms nach einem „Nibble-für-Nibble"-Ansatz mit dem Inhalt einer Verweistabelle (LUT) abgeglichen werden. Zum Beispiel kann ein Decoder ein erstes Nibble mit fester Größe betrachten und versuchen, dieses mit ersten Tabelleneinträgen in einer Huffman-Decodiertabelle abzugleichen. Wird keine Übereinstimmung gefunden, kann der Decoder ein zweites Nibble mit fester Größe betrachten und versuchen, dieses mit zweiten Tabelleneinträgen abzugleichen und so weiter. Ein derartiger Ansatz kann konzeptionell als eine Hash-Funktion ausgelegt sein.
  • Bei längeren Huffman-Codewörtern (zum Beispiel 23-Bit-Codewörter) können derartige Nibble-Schemata bis zu 6 Schritte und/oder Takte benötigen, um die längsten Huffman-Codewörter abzugleichen. Längere Codewörter können in einem derartigen Nibble-Schema den Decodierdurchsatz begrenzen.
  • Um derartige Durchsatzbegrenzungen zu reduzieren, können Tabellen mit Huffman-Codewörtern in Kompakttabellen neu abgebildet werden. Derartige Kompakttabellen können Decodieren durch die Detektion von Lauflängen eines bestimmten Binärwertes (zum Beispiel 0 oder 1) vorsehen. Die Lauflängendetektion kann schneller durchgeführt werden als Nibble-für-Nibble-Ansätze. Eine derartige Detektion kann mit dedizierter Hardware-Logik, Software (zum Beispiel einem Detektor für führende Nullen (LZD)) oder Kombinationen derselben implementiert werden. Darüber hinaus können längere Läufe von Binärwerten eine schnelle Detektion durch dedizierte Hardware-Logik oder einen Software-Detektor (zum Beispiel einem Detektor für führende Nullen (LZD)) oder eine Kombination derselben erleichtern.
  • Die Generierung von Kompakttabellen kann manuell durchgeführt werden. Derartige Techniken sind jedoch arbeitsaufwändig und anfällig für das Entstehen von Tabellenfehlern.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 veranschaulicht eine Ausführungsform einer Vorrichtung, die verwendet werden kann, um Kompakttabellen zu generieren.
  • 2 veranschaulicht eine Ausführungsform einer Komponente.
  • 3 veranschaulicht eine Ausführungsform eines logischen Diagramms.
  • 4A und 4B veranschaulichen Ausführungsformen logischer Diagramme.
  • 5 ist ein Diagramm einer beispielhaften Kompakttabellenanordnung.
  • 6A bis 6C veranschaulichen verschiedene Ausführungsformen.
  • 7 ist eine beispielhafte Ausführungsform eines logischen Flusses.
  • 8 ist ein Diagramm einer Systemausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Verschiedene Ausführungsformen können im Allgemeinen auf die Generierung und Verwendung von Codes gerichtet sein. In einer Ausführungsform schließt zum Beispiel eine Vorrichtung ein Kompakttabellen-Generatormodul und ein Speichermedium ein. Der Kompakttabellengenerator erzeugt eine Kompaktcodetabelle, die mehrere in einer oder mehr Hierarchien angeordnete Codewortgruppen aufweist. Jede dieser Codewortgruppen schließt eine Gruppenmaske ein, die einem oder mehr Codewörtern in einer Tabelle mit Codes variabler Länge entspricht. Das Speichermedium speichert Informationen zu den Codewortgruppen, wie beispielsweise eine Gruppenmaske für jede der Codewortgruppen und einen Code-Index für jedes Codewort in der Tabelle mit Codes variabler Länge. Eine derartige Erzeugung und Speicherung von Kompaktcodetabellen kann automatisch durchgeführt werden.
  • Auf diese Weise kann ein schnelles und effizientes Decodieren erreicht werden. Außerdem kann eine effizientere Speicherung von Codetabellen realisiert werden. Es können auch andere Ausführungsformen beschrieben und beansprucht sein.
  • Verschiedene Ausführungsformen können ein oder mehr Elemente umfassen. Ein Element kann jede beliebige Struktur umfassen, die angeordnet ist, um bestimmte Vorgänge durchzuführen. Jedes Element kann als Hardware, Software oder Kombinationen derselben implementiert sein, wie für einen gegebenen Satz von Auslegungsparametern oder Leistungseinschränkungen gewünscht. Obwohl eine Ausführungsform mit einer begrenzten Anzahl von Elementen in einer bestimmten Topologie beispielhaft beschrieben sein kann, kann die Ausführungsform größere oder weniger Elemente in alternativen Topologien einschließen, wie für eine gegebene Implementierung gewünscht. Es sei darauf hingewiesen, dass jede Bezugnahme auf „eine Ausführungsform" bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Kennzeichen, das/die in Verbindung mit der Ausführungsform beschrieben ist, in zumindest einer Ausführungsform eingeschlossen ist. Das Auftreten der Formulierung „in einer Ausführungsform" an verschiedenen Stellen in der Patentschrift bezieht sich nicht notwendigerweise auf dieselbe Ausführungsform.
  • 1 ist ein Blockdiagramm einer Vorrichtung 100, die verwendet werden kann, um Kompakttabellen aus Huffman-Tabellen zu generieren. Wie in 1 gezeigt, kann Vorrichtung 100 verschiedene Elemente einschließen. Zum Beispiel kann Vorrichtung 100 ein Kompakttabellen-Generatormodul 102 und ein Speichermedium 104 einschließen. Diese Elemente können in Hardware, Software, Firmware oder einer Kombination derselben implementiert sein.
  • Vorrichtung 100 kann Huffman-Codetabellen eins zu eins abbilden, sodass jede Huffman-Codetabelle mit ihren vielen sich ändernden Einsen und Nullen in einem langen Zweig geglättet wird zu nur Nullen oder nur Einsen. Ein derartiges Glätten erlaubt schnelles Decodieren, zum Beispiel durch Lauflängendecoderhardware.
  • Wie in 1 gezeigt, empfängt Kompakttabellen-Generatormodul 102 eine Huffman-Codetabelle 120 und generiert eine entsprechende Kompakttabelle 122, die an Speichermedium 104 gesendet werden kann. Kompakttabelle 122 kann in verschiedenen Vorgängen verwendet werden, wie beispielsweise Codieren und Decodieren von Informationssequenzen.
  • Vorgänge für Ausführungsformen können weiterhin unter Bezugnahme auf die folgenden Figuren und beigefügten Beispiele beschrieben sein. Einige der Figuren können einen logischen Fluss einschließen. Obwohl derartige hier dargestellte Figuren einen bestimmten logischen Fluss einschließen können, ist ersichtlich, dass der logische Fluss nur ein Beispiel dafür bietet, wie die allgemeine hier beschriebene Funktionalität implementiert werden kann. Weiterhin muss der gegebene logische Fluss, sofern nicht anderweitig angegeben, nicht notwendigerweise in der dargestellten Reihenfolge ausgeführt werden. Zusätzlich kann der gegebene logische Fluss durch ein Hardware-Element, ein von einem Prozessor ausgeführtes Software-Element oder eine Kombination derselben implementiert sein. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • 2 ist ein Diagramm eines logischen Flusses 200, den Ausführungsformen wie beispielsweise Vorrichtung 100 bei der Generierung von Kompakttabellen aus Tabellen mit Codes variabler Länge ausführen können.
  • Wie in 2 gezeigt, empfangt ein Block 202 eine Tabelle mit Codes variabler Länge, wie beispielsweise eine Huffman-Tabelle. Aus dieser empfangenen Codetabelle werden durch einen Block 204 eine oder mehr Codewortgruppen generiert. Diese Gruppen sind in einer oder mehr Hierarchien angeordnet. Zum Beispiel kann eine Hierarchie als eine Baumstruktur angeordnet sein, umfassend eine übergeordnete Gruppe und eine oder mehr Untergruppen. In derartigen Anordnungen können die übergeordnete Gruppe und die Untergruppen jeweils eine oder mehr Untergruppen aufweisen.
  • Bei der Generierung jeder Codewortgruppe kann Block 204 weiterhin entsprechende Informationen generieren. Zum Beispiel kann Block 204 für jede Codewortgruppe eine Gruppenmaske generieren. Gruppenmasken können eingesetzt werden bei der Ermittlung, ob weitere Codewort-Untergruppen zu generieren sind.
  • Zusätzlich zum Einsatz bei der Generierung von Kompakttabellen können Gruppenmasken weiterhin bei Decodierungsvorgängen eingesetzt werden.
  • Ein Block 206 speichert Informationen zu der Codewortgruppe. Diese Informationen können die Gruppenmaske für jede Gruppe sowie die jeder Gruppe entsprechenden Code-Indizes einschließen. Die Ausführungsformen sind jedoch nicht auf diese Beispiele beschränkt.
  • 3 ist ein Blockdiagramm, das eine beispielhafte Implementierung 300 von Codegeneratormodul 102 zeigt. Wie in 3 gezeigt, kann Implementierung 300 verschiedene Elemente einschließen. Zum Beispiel zeigt 3, dass Implementierung 300 ein Speichermedium 302, ein Identifikationsmodul für übergeordnete Gruppen 304, ein Gruppenanalysemodul 306 und ein Tabellenschreibmodul 308 einschließen kann. Diese Elemente können in Hardware, Software, Firmware oder einer Kombination derselben implementiert sein.
  • Speichermedium 302 speichert verschiedene bei der Generierung von Kompakttabellen verwendete Informationen. Zum Beispiel kann Speichermedium 302 eine oder mehr Huffman-Codetabellen 320 speichern. Zusätzlich kann Speichermedium 302 eine oder mehr entsprechende Kompakttabellen 330 speichern. Speichermedium 302 kann auch verschiedene Formen von Informationen während der Kompakttabellengenerierung speichern. Zum Beispiel zeigt 3 Speichermedium, das eine Gruppenmaske 322, eine Treffermaskenliste 324, eine Indexliste 326 und eine Untergruppenliste 328 speichert.
  • Identifikationsmodul für übergeordnete Gruppen 304 identifiziert übergeordnete Anfangsgruppen von Codewörtern innerhalb einer Huffman-Codetabelle 320.
  • Gruppenanalysemodul 306 analysiert eine oder mehr Codewortgruppen. Diese Analyse kann weitere Untergruppen identifizieren, die bestimmten Gruppen entsprechen. Zusätzlich kann diese Analyse die Generierung von Informationen umfassen. Derartige Informationen können Masken, Treffermaskenlisten und/oder Listen mit Indizes einschließen.
  • Kompakttabellenschreibmodul 308 formatiert Tabelleneinträge und gibt diese aus, und zwar gemäß einer von Gruppenanalysemodul durchgeführten Verarbeitung.
  • 4A ist ein Diagramm eines logischen Flusses, den Ausführungsformen wie beispielsweise Vorrichtung 100 und/oder Implementierung 300 bei der Generierung von Kompakttabellen aus Tabellen mit Codes variabler Länge ausführen können.
  • Wie in 4A gezeigt, empfangt ein Block 402 eine Huffman-Codetabelle, die mehrere Codewörter mit variablen Längen einschließt. Die Codewörter in der Huffman-Codetabelle werden durch einen Block 403 sortiert. Zum Durchführen dieses Sortierens kann ein Gewichtsschema eingesetzt werden, da die Codewörter verschiedene Längen aufweisen. Ein beispielhaftes Gewichtsschema weist einem Minimalgewicht Leerstellen zu, einem Zwischengewicht den Bitwert „1" und einem Maximalgewicht den Bitwert „0". Unten stehende Tabellen 1-1 und 1-2 bieten ein Beispiel für eine derartige Sortierung. Insbesondere zeigt Tabelle 1-1 unsortierte Huffman-Codewörter, und Tabelle 1-2 zeigt diese Codewörter sortiert.
    Wert Codewort
    1 0110
    2 1011
    3 101
    4 001
    5 01
    Tabelle 1-1: Unsortierte Werte und Codewörter
    Wert Codewort
    5 01
    3 101
    4 001
    2 1011
    1 0110
    Tabelle 1-2: Sortierte Werte und Codewörter
  • 4A zeigt, dass bei einem Block 404 eine Anfangsgruppe von Codewörtern zum Verarbeiten ausgewählt werden kann. Diese ausgewählte Gruppe (hier als die aktuelle Gruppe bezeichnet) kann zum Beispiel eine gesamte Tabelle mit Codewörtern umfassen. Alternativ kann diese Anfangsgruppe einen Abschnitt der gesamten Tabelle umfassen. Derartige Abschnitte können zum Beispiel mehrere Codewörter mit dem gleichen Präfix oder Anfangssatz von einem oder mehr Bits einschließen (zum Beispiel den gleichen 4-Bit-Präfix).
  • Diesem Anfang wird ein Anfangsserienindex (zum Beispiel ein Index Null) zugewiesen. Somit kann diese Anfangsgruppe hier als „Gruppe 0" bezeichnet werden.
  • Bei einem Block 406 wird die Gruppe Bit für Bit verarbeitet, um (gegebenenfalls) eine oder mehr Untergruppen zu extrahieren. Derartigen extrahierten Untergruppen werden Serienindizes in der Reihenfolge verliehen, in der sie extrahiert werden. Weitere Einzelheiten zu einer beispielhaften Verarbeitung einer Gruppe sind unten unter Bezugnahme auf 4B beschrieben.
  • Der Fluss schließt weiterhin einen Block 408 ein, der ermittelt, ob weitere Gruppen (Untergruppen) zu verarbeiten sind. Ist dies der Fall, wählt ein Block 410 eine nächste Untergruppe zum Verarbeiten aus. Andernfalls fährt der Fluss mit einem Block 412 fort.
  • Bei einem Block 410 kann die nächste Untergruppe gemäß einem nächsten ansteigenden Serienindex ausgewählt werden. Wenn zuletzt bei Block 406 Gruppe 0 verarbeitet wurde, dann würde Block 410 somit Untergruppe 1 auswählen.
  • Nach dieser Auswahl kehrt der Vorgang zum Verarbeiten der ausgewählten Untergruppe zu Block 406 zurück. Somit kann diese Verarbeitung weitere Untergruppen extrahieren, denen ebenfalls in der Reihenfolge, in der sie extrahiert werden, Serienindizes zugewiesen werden. Dementsprechend ist dieser durch Block 408 bereitgestellte Fluss iterativ und wird fortgesetzt, bis keine weiteren Untergruppen zum Verarbeiten vorhanden sind. Wenn keine weiteren Untergruppen zum Verarbeiten vorhanden sind, zeigt 4A, dass ein Block 412 eine Kompakttabelle auf der Grundlage der bei Block 406 und 410 durchgeführten Verarbeitungen generiert.
  • Wie durch Block 406 angegeben, kann somit jede bestimmte Gruppe von Codewörtern sequenziell verarbeitet werden. Ein Beispiel für eine derartige Verarbeitung wird nun unter Bezugnahme auf einen logischen Fluss 400 von 4B beschrieben. Dieser Fluss kann durch Ausführungsformen, wie beispielsweise Vorrichtung 100 und/oder Implementierung 300, ausgeführt werden.
  • 4B zeigt, dass bei einem Block 452 eine Maske für eine aktuelle Gruppe generiert wird. Unter Bezugnahme auf 4A ist die aktuelle Gruppe die zuletzt entweder von Block 404 oder von Block 410 gewählte Gruppe. Die Generierung dieser Maske kann das Identifizieren eines längsten Codewortes in der aktuellen Gruppe und das Ausfüllen seiner rechten Seite (oder seiner am wenigsten signifikanten Seite) mit einer „1" umfassen. Mitunter kann eine aktuelle Gruppe mehr als ein längstes Codewort aufweisen. Wenn dies eintritt, kann ein bestimmtes Codewort (zum Beispiel das letzte Codewort in der sortierten Untergruppe) ausgewählt werden. Wie in 4B gezeigt, wird die generierte Maske bei einem Block 454 gespeichert.
  • Bei einem Block 458 wird ein Satz maskierter Einträge generiert. Die Generierung dieses Satzes kann das Vornehmen einer EXKLUSIV-ODER (XOR)-Verknüpfung mit jedem Tabelleneintrag in der aktuellen Gruppe und der bei Block 452 generierten Maske umfassen. Für diese XOR-Verknüpfungen werden die am weitesten links befindlichen Bits der Tabelleneinträge an dem am weitesten links befindlichen Bit der Maske ausgerichtet.
  • Wie unten beschrieben, werden diese maskierten Einträge verarbeitet, um eine Treffermaskenliste (oder „Treffer Masken Liste") für die aktuelle Gruppe zu generieren. Die Treffermaskenliste ist eine Binärzahl, die Bit für Bit von rechts nach links geschrieben wird. Diese Liste identifiziert die Stelle von nicht eindeutigen 1en. Daher kann die Treffermaskenliste während Kompakttabellengenerierungs- und/oder Decodierungsvorgängen eingesetzt werden, um zu ermitteln, ob eine Lauflänge eines gegebenen Zeichens (zum Beispiel Null oder mehr „0en") einen Wert in einer aktuellen Gruppe identifiziert oder ob das Decodieren in einer Untergruppe fortgeführt werden muss.
  • Bei einem Block 460 wird die am weitesten links befindliche Bitposition als eine aktuelle Bitposition ausgewählt. Nach dieser Auswahl überprüft ein Block 462 jeden der maskierten Einträge an der aktuellen Bitposition. Wenn die überprüften Bits an einer bestimmten Bitstelle des maskierten Ergebnisses eine „Eindeutige 1" ergeben, dann wird diese Stelle als ein „TREFFER" betrachtet. Andernfalls wird diese Stelle als ein „FEHLTREFFER" betrachtet. Eine Eindeutige 1 tritt auf, wenn ein maskierter Eintrag eine „1" an der bestimmten Bitstelle aufweist und keine weiteren Einträge der gleichen Größe oder größer an dieser Stelle eine „1" aufweisen.
  • Somit fährt der Vorgang, wie durch einen Block 464 angegeben, mit einem Block 466 fort, wenn ein TREFFER erfolgt. Andernfalls fährt der Vorgang mit einem Block 468 fort, wenn ein FEHLTREFFER erfolgt.
  • Bei Block 466 wird in die Treffer_Masken_Liste der Kompakttabelle eine „0" eingefügt (die einen Treffer anzeigt). Außerdem wird der Index (zum Beispiel Tabelleneintragsnummer) des maskierten Eintrags, der die Eindeutige 1 aufweist, in eine temporäre Index_Liste eingefügt.
  • Im Gegensatz dazu wird bei Block 468 in die Treffer_Maken_Liste der Kompakttabelle eine „1" eingefügt (die einen Fehltreffer anzeigt).
  • 4B zeigt, dass auf Block 468 ein Block 472 folgt. Bei diesem Block wird ermittelt, ob die maskierten Einträge nicht eindeutige 1en an der aktuellen Bitposition aufweisen. Ist dies der Fall, dann werden diese Einträge in eine neue Untergruppe eingefügt, wie durch einen Block 474 angegeben. Dementsprechend kann Block 474 eine derartige neue Untergruppe erzeugen.
  • Wie in 4B gezeigt, wird bei einem Block 478 ermittelt, ob die aktuelle Bitposition die letzte „1" der Maske erreicht hat (was bedeutet, dass alle Einträge der ausgewählten Gruppe erschöpft sind). Ist dies der Fall, dann wird die aktuelle Bitposition an einem Block 479 um eine Position nach rechts bewegt. Im Anschluss daran kehrt der Vorgang zu Block 462 zurück.
  • Wenn jedoch die aktuelle Bitposition die letzte „1" der Maske erreicht hat, fährt der Vorgang mit einem Block 480 fort. Bei diesem Block 480 werden die Informationen an der (den) nächsten verfügbaren Stelle(en) in die Kompakttabelle geschrieben. Derartige Informationen können die Treffermaskenliste und die temporäre Indexliste für diese Untergruppe einschließen.
  • Nunmehr erneut Bezug nehmend auf 4A kann nach diesem Fluss (bei Block 408) ermittelt werden, ob (gegebenenfalls) neue Untergruppen noch nicht berücksichtigt wurden. Wie oben beschrieben, können derartige neue Untergruppen bei Block 474 von 4B erzeugt werden. Wenn derartige Untergruppen aktuell existieren, dann kann Block 410 von 4A eine dieser Untergruppen als die aktuelle Gruppe auswählen. Somit kann der Fluss von 4B erneut stattfinden.
  • Wie oben beschrieben, umfasst der Fluss von 4B das Verarbeiten von Gruppen sowie die Identifizierung von Untergruppen. Ein Beispiel für ein derartiges Verarbeiten und eine derartige Identifizierung ist im Anschluss angegeben. Dieses Beispiel umfasst eine beispielhafte Gruppe 0, die Tabelle 2-1 unten stehend in unsortierter Reihenfolge auflistet.
    Index Codewort
    0: 01
    1: 101
    2: 000
    3: 11
    4: 0010
    5: 100
    6: 0011
    Tabelle 2-1: Unsortierte Gruppe 0
  • Diese Gruppe wird, wie unten stehend in Tabelle 2-2 angegeben, sortiert. Außerdem wird für Gruppe 0 eine Gruppenmaske von 00100 generiert. Wie oben stehend beschrieben, wird diese Maske aus dem Codewort am Ende der sortierten Gruppe generiert (0010).
  • Wie oben beschrieben, wird für jedes Codewort Gruppe 0 ein Maskierungsvorgang durchgeführt. Die dritte Spalte von Tabelle 2-2 gibt weiterhin die Ergebnisse dieser Maskierungsvorgänge an.
    Index Codewort Maskiertes Codewort
    3: 11 11
    1: 101 100
    5: 100 101
    0: 01 01
    2: 000 001
    6: 0011 0001
    4: 0010 0000
    Tabelle 2-2: Sortierte Gruppe 0
  • Nach Durchführung dieses Maskierungsvorgangs kann jede Bitposition der maskierten Codewörter analysiert werden, um Codewörter zum Einfügen in Untergruppen zu identifizieren sowie um Codewörter zum Zurückbehalten in der aktuellen Gruppe zu identifizieren. Die folgende Beschreibung gibt eine beispielhafte Analyse für jede Bitposition an.
  • Bezüglich der am weitesten links befindlichen Bitposition gibt die dritte Spalte von Tabelle 2-2 an, dass die maskierten Codewörter für Indizes 1, 3 und 5 Fehltreffer sind, da sie jeweils eine 1 an dieser Position aufweisen. Diese mehreren 1en bedeuten das Auftreten von nicht eindeutigen 1en an dieser Position. Daher wird für Indizes 1, 3 und 5 eine neue Untergruppe (bezeichnet als Gruppe 1) erzeugt. Da an dieser Position ein Fehltreffer auftritt, wird außerdem dem am weitesten rechts befindlichen Bit der Treffermaskenliste eine 1 zugewiesen. Somit ergeben sich nach Verarbeitung der am weitesten links befindlichen Bitposition folgende aktuelle Gruppierungen und Treffermaskenliste.
    Gruppe 0: Indizes 0, 2, 4, 6
    Gruppe 1: Indizes 1, 3, 5
    Treffer_Masken_Liste: 1
  • An der zweiten Bitposition von links tritt eine eindeutige 1 auf. Insbesondere weist nur das maskierte Codewort für Index 0 an dieser Position eine 1 auf. Dementsprechend werden keine neuen Untergruppen erzeugt, und der entsprechenden Treffermaskenlistenposition wird eine 0 zugewiesen. Die Ergebnisse nach Verarbeitung dieser Bitposition sind wie folgt zusammengefasst.
    Gruppe 0: Indizes 0, 2, 4, 6
    Gruppe 1: Indizes 1, 3, 5
    Treffer_Masken_Liste: 01
  • Eine eindeutige 1 tritt außerdem an der dritten Bitposition von links auf. Speziell weist nur das maskierte Codewort für Index 2 an dieser Position eine 1 auf. Dementsprechend führt die Verarbeitung dieser Position zu den folgenden Ergebnissen.
    Gruppe 0: Indizes 0, 2, 4, 6
    Gruppe 1: Indizes 1, 3, 5
    Treffer_Masken_Liste: 001
  • An der vierten Bitposition von links tritt eine eindeutige 1 auf, da nur das maskierte Codewort für Index 5 eine 1 aufweist. Somit existieren nach Verarbeitung dieser Bitposition die folgenden Gruppierungen und die folgende Treffermaskenliste.
    Gruppe 0: Indizes 0, 2, 4, 6
    Gruppe 1: Indizes 1, 3, 5
    Treffer_Masken_Liste: 0001
  • Wenn das letzte (am weitesten rechts befindliche) Maskenbit erreicht ist, weisen keine maskierten Codewörter Bits an dieser Position auf. Der Treffermaskenliste wird für diese Stelle eine 0 zugewiesen, und die aktuellen Gruppierungen ändern sich nicht. Somit existieren bei Vollendung von Gruppe 0 die folgenden Ergebnisse.
    Gruppe 0: Indizes 0, 2, 4, 6
    Gruppe 1: Indizes 1, 3, 5
    Treffer_Masken_Liste: 00001
  • An diesem Punkt kann die Verarbeitung von Gruppe 1 erfolgen. Diese Gruppe ist in unsortierter Reihenfolge in Tabelle 2-3 aufgelistet.
    Index Codewort
    1: 101
    3: 11
    5: 100
    Tabelle 2-3: Unsortierte Gruppe 1
  • Gruppe 1 wird in der in Tabelle 2-4 gezeigten Reihenfolge sortiert. Aus dieser Sortierung wird für Gruppe 1 eine Gruppenmaske von 1001 generiert. Wie oben beschrieben, beruht diese Maske auf dem Codewort am Ende der sortierten Gruppe (100). Wie bei Gruppe 0 wird für jede Codewortgruppe 1 ein Maskierungsvorgang durchgeführt. Die dritte Spalte von Tabelle 2-4 gibt die Ergebnisse dieser Maskierungsvorgänge an.
    Index Codewort Maskiertes Codewort
    3: 11 01
    1: 101 001
    5: 100 000
    Tabelle 2-4: Sortierte Gruppe 1
  • Nach Beendigung des Maskierungsvorgangs kann jede Bitposition der maskierten Codewörter analysiert werden. Zum Beispiel gibt die dritte Spalte von Tabelle 2-2 an, dass sämtliche maskierten Codewörter Fehltreffer an der am weitesten links befindlichen Bitposition sind, da die maskierten Codewörter von Indizes 1, 3 und 5 an dieser Position jeweils ein Nullbit aufweisen. Außerdem werden an dieser Stelle keine neuen Untergruppen erzeugt, da an dieser Position keine nicht Eindeutigen 1en vorhanden sind. Dementsprechend ist die Treffermaskenliste für Gruppe 1 aktuell wie unten gezeigt gesetzt.
  • Treffer_Masken_Liste: 1
  • An der zweiten Bitposition von links zeigt Tabelle 2-4, dass ein Treffer erfolgt. Dies ist darauf zurückzuführen, dass an dieser Position für das Index 3 entsprechende maskierte Codewort eine Eindeutige 1 existiert. Somit wird die Treffermaskenliste für Gruppe 1 auf folgende Weise aktualisiert.
  • Treffer_Masken_Liste: 01
  • Ein Treffer erfolgt außerdem an der dritten Bitposition von links, da an dieser Position für das Index 1 entsprechende Codewort eine Eindeutige 1 existiert.
  • Treffer_Masken_Liste: 001
  • Wenn das letzte (am weitesten rechts befindliche) Maskenbit erreicht ist, weisen an dieser Position keine maskierten Codewörter Bits auf. Somit wird der Treffermaskenliste, wie oben beschrieben, für diese Stelle eine 0 zugewiesen, und die aktuellen Gruppierungen ändern sich nicht. Nach Beendigung von Gruppe 1 werden somit keine neuen Teilgruppen erzeugt, und Gruppe 1 weist die folgende Treffermaskenliste auf.
  • Treffer_Masken_Liste: 0001
  • Somit hat das oben stehende Beispiel die folgende Treffermaskenliste aus den in Tabelle 2-1 aufgelisteten Codewörtern generiert.
  • Gruppe 0: 00001
  • Gruppe 1: 0001
  • Dementsprechend kann, nachdem alle Gruppen (Gruppe 0 und Gruppe 1) identifiziert und verarbeitet wurden, eine Kompakttabelle generiert werden.
  • In Ausführungsformen wird eine vorbestimmte Anzahl von Anfangsbits sämtlicher Huffman-Codewörter in einer Huffman-Codetabelle als übergeordnete Zweige für Anfangsgruppen verwendet. Eine beispielhafte Anzahl von Anfangsbits ist vier (also das erste Nibble der Huffman-Codewörter). Wenn das 4-Bit-Anfangsnibble eingesetzt wird, existieren somit sechzehn (also 24) übergeordnete Gruppen. Jede dieser Gruppen wird verarbeitet, zum Beispiel wie oben unter Bezugnahme auf 2 und 4 beschrieben. Wie oben angegeben, kann eine derartige Verarbeitung weitere Untergruppen aufzeigen.
  • Ausführungsformen können weiterhin Schutz gegen unzulässige Codes bereitstellen. Huffman-Codetabellen, die zum Codieren und Decodieren von Standardbitströmen verwendet werden, sind mitunter unvollständig („unzulässig"). Zum Beispiel können einige Codewörter in derartigen Tabellen fehlen, da diese nicht für Codierungszwecke benötigt werden. Ein derartiges ungenutzte Codewort beziehungsweise Löcher in Codetabellen können zu Bitstromfehlern beim Decodieren führen.
  • Bei der Generierung von Kompakttabellen kann Set-Partitionierung verwendet werden, um die Löcher ungenutzter Codewörter zu detektieren und zu fixieren. Eine derartige Fixierung kann bei konventionellen Huffman-Decodern auch durchgeführt werden, indem die Huffman-Codetabellen mit ungenutzten Codewörtern aufgefüllt werden.
  • 5 ist ein Diagramm, das eine Anordnung einer Kompakttabelle 500 für eine Huffman-Codetabelle darstellt. Wie in 5 gezeigt, kann ein erster Tabelleneintrag 502 eine Maske für jeden der übergeordneten Zweige eines „Baums" enthalten. Wie oben beschrieben, können diese übergeordneten Zweige oder Gruppen ermittelt werden durch Verwendung einer bestimmten Anzahl von Anfangsbits aller Huffman-Codewörter in der Huffman-Codetabelle. In Ausführungsformen kann diese vorbestimmte Anzahl von Anfangsbits das erste 4-Bit-Nibble sämtlicher Huffman-Codewörter in der Huffman-Codetabelle sein. Somit umfasst in derartigen Ausführungsformen erster Tabelleneintrag 502 sechzehn (also 24) Masken für sechzehn übergeordnete Gruppen.
  • Ein nächster Tabelleneintrag 504 schließt Längen für jede/s der übergeordneten Codewörter/Masken ein. Außerdem kann Tabelleneintrag 504 einen Maskentyp für jede/s dieser Codewörter/Masken einschließen.
  • 5 zeigt Kompakttabelle 500, die mehrere aufeinanderfolgende Tabelleneinträge 506 aufweist. Diese Einträge können unterschiedliche Kombinationen von Masken, Treffermaskenlisten, Sprungadressen und originalen Codetabellenindizes enthalten.
  • Während Decodierungsvorgängen werden logische Verknüpfungen (zum Beispiel XOR-Verknüpfungen) zwischen (codierten) Eingangswerten und Masken vorgenommen, die in Einträgen 506 gespeichert sind. Das Ergebnis dieser Verknüpfungen kann ein Offset zu anderen Einträgen 506 bereitstellen. Diese anderen Einträge wiederum können einen Code-Index, eine Sprungadresse und/oder eine weitere Maske enthalten.
  • Auf der Grundlage des Inhalts derartiger anderer Einträge kann die Durchquerung der Kompakttabelle fortgesetzt werden (zum Beispiel durch logische Operationen mit Masken, Zugriff auf resultierende Offsets und/oder Springen zu anderen Adressen). Die Durchquerung kann bei dem Eintreffen von Code-Index in einem Eintrag 506 abgeschlossen werden. An dieser Stelle kann eine neue Durchquerung auf der Grundlage weiterer (codierter) Eingangsdaten beginnen.
  • Somit bilden die Einträge von Kompakttabelle 500 zusammen mehrschichtige und mehrfach verknüpfte Datenstrukturen mit einer sehr genauen Ordnung untereinander. Zum Beispiel können diese Datenstrukturen den rekursiven Baum-Zweig-Blatt-Strukturen von Huffman-Codetabellen oder Fraktalstrukturen folgen.
  • In Ausführungsformen können superkompakte Tabellen erzeugt werden, die mehreren Codetabellen entsprechen. Die Ausführungsformen sind jedoch nicht auf diesen Zusammenhang beschränkt.
  • 6A und 6B sind Diagramme von Decodierungsimplementierungen. Insbesondere zeigt 6A eine konventionelle Huffman-Decodierungsimplementierung 600. Im Gegensatz dazu zeigt 6B eine Huffman-Decodierungsimplementierung 650, die Kompakttabellen einsetzt.
  • Wie in 6A gezeigt, schließt Implementierung 600 eine Huffman-Codetabelle 602 und einen Huffman-Decoder 604 ein. Bei Empfang eines codierten Eingangsbitstroms 620 decodiert Huffman-Decoder 604 den Bitstrom und gibt eine decodierte Syntax 622 aus.
  • 6B zeigt, dass Implementierung 650 auch decodierte Syntax 622 aus Eingangsbitstrom 620 generiert. Anstelle eines konventionellen Huffman-Decoders setzt Implementierung 650 jedoch einen schnellen Kompaktentropiedecoder 608 ein, um Bitstrom 620 effizient zu decodieren. Insbesondere führt Decoder 608 diese effiziente Decodierung durch unter Verwendung einer Kompakttabelle 624, die von einem Kompakttabellengenerator 606 generiert wird. Kompakttabelle 624 kann gemäß den hier beschriebenen Techniken generiert werden. Somit kann Kompakttabellengenerator 606 zum Beispiel die Anordnungen von 1 und/oder 3 einschließen.
  • Wie in 6B gezeigt, schließt Decoder 608 Steuerlogik 610 und Tabellenspeichereinheit 612 ein. Steuerlogik 610 kann durchführen Steuerlogik 610 kann in Hardware, Software, Firmware oder einer Kombination derselben implementiert sein. Tabellenspeichereinheit 612 kann mit einem Speichermedium, wie beispielsweise Speicher, implementiert sein.
  • 6B zeigt, dass Tabellenspeichereinheit 612 Kompakttabelle 624 speichert. Steuerlogik 610 kann auf diese Tabelle von Tabellenspeichereinheit 612 aus zugreifen und verschiedene Vorgänge durchführen. Diese Vorgänge können logische Operationen wie beispielsweise XOR-Operationen zwischen empfangenen Bitsequenzen und in Kompakttabelle 624 gespeicherten Masken einschließen. Darüber hinaus können derartige Operationen die Identifizierung von Präambeln (zum Beispiel der ersten vier Bits in einem Codewort) zur Gruppenidentifizierung sowie die Berechnung von Adressen innerhalb von Kompakttabelle einschließen. Derartige Berechnungen können zum Beispiel auf in Kompakttabelle 624 enthaltenen Sprungadressen beruhen. Darüber hinaus kann Steuerlogik Ergebnisse derartiger Vorgänge analysieren sowie auf der Grundlage derartiger Operationen und derartiger Analyse decodierte Syntax 622 generieren. Beispiele für Merkmale sind unter Bezugnahme auf 7 angegeben.
  • In Ausführungsformen können Kompakttabellen vorteilhaft verwendet werden, um Verschlüsselungs- und Wasserzeichenmarkierungsmerkmale bereitzustellen. Zum Beispiel kann anstelle einer gegebenen Standard-Huffman-Codetabelle ein Satz ersetzbarer Huffman-Codetabellen erzeugt werden. Der Prozess des Erzeugens derartiger Ersatztabellen kann jedem beliebigen Prozess folgen, der an einem gegebenen Verschlüsselungs- oder Wasserzeichenmarkierungsprozess beteiligt ist. Beispielsweise können derartige Ersatztabellen neue Tabellen sein, die der gegebenen Standardtabelle ähnlich sind, oder durch Neuanordnen einiger Blätter der Codewörter mit der gleichen Codelänge oder Einsetzen der ungenutzten (oder unzulässigen) Codes in die Codetabellen an einer sogenannten arbiträren Position (Wasserzeichenmarkierung) und so weiter. Während des Codierungsprozesses kann eine gegebene Standardtabelle gemäß einer zuvor festgelegten Verschlüsselungs- oder Wasserzeichenmarkierungsregel durch eine Ersatztabelle ersetzt werden, und somit wird ein verschlüsselter oder wasserzeichenmarkierter Bitstrom generiert.
  • Derartige Verschlüsselungs-/Wasserzeichenmarkierungsregeln können an einen schnellen Kompaktdecoder gesendet werden (zum Beispiel vor dem Decodieren derartiger verschlüsselter/wasserzeichenmarkierter Bitströme). Diese Regeln können über andere Kommunikationsmedien oder andere Transportschichten gesendet werden (zum Beispiel als Privatanwenderdaten). Dementsprechend kann der schnelle Kompaktdecoder bei Empfang derartige Regeln verwenden, um die Kompakttabelle(n) zum Decodieren neu anzuordnen. Eine derartige Neuanordnung kann das Verschieben (oder Bewegen) von Code-Indizes zwischen ihren aktuellen Positionen in einer Kompakttabelle umfassen.
  • Dementsprechend veranschaulicht 6C eine Decodierungsimplementierung 660, die ein Beispiel für derartige Merkmale darstellt. Die Implementierung von 6C ist ähnlich derjenigen von 6B. Jedoch wird in 6B der Decoder 608 durch einen Decoder 608' ersetzt. Wie in 6B gezeigt, schließt Decoder 608' Steuerlogik 610' ein. Steuerlogik 610' kann die Vorgänge von Steuerlogik 610 durchführen. Jedoch kann Steuerlogik 610' weiterhin Kompakttabelle 624 gemäß den hier beschriebenen Verschlüsselungs-/Wasserzeichenmarkierungstechniken neu anordnen.
  • 6C zeigt Steuerlogik 610', die Neuanordnungsregel 614' empfangt. Wie oben beschrieben, können diese Regeln über Kommunikationsmedien oder Transportschichten gesendet werden, die nicht eingesetzt werden, um Eingangsbitstrom 620 zu empfangen. Bei Empfang von Regeln 614' kann Steuerlogik 610' Kompakttabelle 624 innerhalb von Tabellenspeichereinheit 612 neu anordnen. Wie oben beschrieben, kann eine derartige Neuanordnung das Verschieben von Code-Indizes untereinander umfassen.
  • 7 ist ein Diagramm eines logischen Flusses 700, der bei der Decodierung von mit variabler Länge codierten Informationen, wie beispielsweise Huffman-codierten Informationen (zum Beispiel Bitströmen), eingesetzt werden kann. Zum Beispiel kann dieser logische Fluss durch die Implementierung von 6B und 6C ausgeführt werden.
  • 7 zeigt einen Block 702, der eine Huffman-Codetabelle empfangt. Aus dieser Tabelle generiert ein Block 704 eine entsprechende Kompakttabelle. Unter Bezugnahme auf 6B kann dieser Block mit Kompakttabellengenerator 606 implementiert sein.
  • Bei einem Block 706 wird ein Huffman-codierter Bitstrom empfangen. Von einem Block 708 wird ein Präfix (also eine vorbestimmte Anzahl von Anfangsbits) innerhalb des Bitstroms identifiziert. Wie oben beschrieben, können die Ausführungsformen Vier-Bit-Präfixe einsetzen. Es können jedoch auch Präfixe anderer Länge eingesetzt werden.
  • Wie in 7 gezeigt, wählt ein Block 710 auf der Grundlage des identifizierten Präfixes einen Tabelleneintrag aus. Dieser Tabelleneintrag entspricht einer übergeordneten Gruppe (Gruppe 0).
  • Ein Block 712 führt einen Maskierungsvorgang (zum Beispiel eine EXKLUSIV-ODER-Operation) zwischen einer nachfolgenden Anzahl von Bits nach dem Präfix und einer Maske in dem ausgewählten Tabelleneintrag durch. Diese Maske ist die übergeordnete Maske (Maske der Gruppe 0) der/des
  • Das Ergebnis dieses Maskierungsvorgangs wird von einem Block 714 analysiert. Diese Analyse kann das Detektieren einer Lauflänge eines bestimmten Wertes umfassen, wie beispielsweise einen Lauf von 0en.
  • Auf der Grundlage der detektierten Lauflänge greift ein Block 716 auf eine neue (auch als eine Sprungadresse bezeichnete) Adresse in der Kompakttabelle zu.
  • Wie in 7 gezeigt, ruft ein Block 718 eine Maske aus der neuen Adresse ab und führt einen Maskierungsvorgang zwischen einem oder mehr Bits in dem Bitstrom und einer an der neuen Adresse gespeicherten Maske durch. Diese Anzahl von Bits kann die oben unter Bezugnahme auf Block 712 genannte nachfolgende Anzahl von Bits sein. Alternativ können ein oder mehr Bits aus dieser nachfolgenden Anzahl von Bits stammen, die auf die von Block 716 ermittelte Lauflänge folgen.
  • Ein Block 720 analysiert das Ergebnis dieses Maskierungsvorgangs. Dies kann das Detektieren einer Lauflänge eines bestimmten Wertes umfassen, wie beispielsweise einen Lauf von 0en. Auf der Grundlage der detektierten Lauflänge greift ein Block 722 auf eine neue (Sprung-)Adresse in der Kompakttabelle zu.
  • Wie durch einen Block 724 angegeben, wird ermittelt, ob der Eintrag an dieser neuen Adresse einen Code-Index oder eine weitere Maske aufweist. Wenn der Eintrag einen Code-Index aufweist, dann wurde uncodierte Syntax identifiziert, die einem Codewort, auf das zugegriffen wurde, entspricht. Somit kann der Vorgang zum Verarbeiten von nachfolgenden Bits in dem codierten Bitstrom zu Block 708 zurückkehren. Andernfalls ist weiteres Verarbeiten erforderlich, und der Vorgang kehrt zu Block 718 zurück, damit das Verarbeiten der Maske fortgesetzt werden kann.
  • 8 veranschaulicht eine Ausführungsform eines Systems. Insbesondere veranschaulicht 8 ein System 800, das repräsentativ sein kann für ein System oder eine Architektur, das/die zur Verwendung mit einer oder mehr der hier beschriebenen Ausführungsformen geeignet ist.
  • Wie in 8 gezeigt, kann System 800 eine Vorrichtung 802, ein Kommunikationsnetz 804 und eine oder mehr ferne Vorrichtungen 806 einschließen. 8 zeigt, dass Vorrichtung 802 die Elemente von 1 einschließen kann. Weiterhin zeigt 8, dass Vorrichtung 802 einen Decoder 803 einschließen kann. Dieser Decoder kann schnelle Kompaktdecodierungstechniken ausführen, wie beispielsweise die oben unter Bezugnahme auf 7 beschriebenen. Darüber hinaus kann Decoder 803 die Merkmale von Decoder 608 und/oder 608' implementieren.
  • Zusätzlich kann Vorrichtung 802 einen Speicher 808 einschließen, eine Anwenderschnittstelle 810, eine Kommunikationsschnittstelle 812 und eine Stromversorgung 814. Diese Elemente können gemäß verschiedenen Techniken gekoppelt werden. Eine derartige Technik umfasst den Einsatz von einer oder mehr Busschnittstellen.
  • Speicher 808 kann Informationen in Form von Daten speichern. Zum Beispiel kann Speicher 808 in Speichermedium 104 enthaltene Informationen speichern. Somit kann Speicher 808, obgleich separat gezeigt, Speichermedium 104 umfassen.
  • Alternativ oder zusätzlich kann Speicher 808 Steuerlogik, Befehle und/oder Software-Komponenten speichern. Diese Software-Komponenten schließen Befehle ein, die von einem Prozessor ausgeführt werden können. Derartige Befehle können Funktionalität von einem oder mehr Elementen in System 800 bereitstellen.
  • Speicher 808 kann implementiert sein durch Verwendung jedes beliebigen maschinenlesbaren oder rechnerlesbaren Mediums, das in der Lage ist, Daten zu speichern, einschließlich sowohl flüchtiger als auch nichtflüchtiger Speicher. Zum Beispiel kann Speicher 808 Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM), dynamisches RAM (DRAN), Doppeldatenraten-DRAN (DDRAM), synchrones DRAN (SDRAM), statisches RAM (SRAM), programmierbares ROM (PROM), löschbares programmierbares ROM (EPROM), elektrisch löschbares programmierbares ROM (EEPROM), Flash-Speicher, Polymerspeicher, wie beispielsweise ferroelektrischen Polymerspeicher, Ovonik-Speicher, Phasenänderungs- oder ferroelektrischen Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium-Speicher (SONOS-Speicher), Magnet- oder optische Karten oder jede andere Art von zum Speichern von Informationen geeigneten Medien einschließen.
  • Anwenderschnittstelle 810 erleichtert die Anwenderinteraktion mit Vorrichtung 802. Diese Interaktion kann die Eingabe von Informationen durch einen Anwender einschließen. Diese Interaktion kann auch die Ausgabe von Informationen, wie beispielsweise Inhalte, an einen Anwender umfassen. Dementsprechend kann Anwenderschnittstelle 810 eine oder mehr Vorrichtungen umfassen, wie beispielsweise ein Tastaturfeld, einen Berührungsbildschirm, ein Mikrofon und/oder einen Lautsprecher. Zusätzlich kann Anwenderschnittstelle 810 eine Anzeige einschließen, um Informationen auszugeben und/oder Bilder/Videos wiederzugeben, die von Vorrichtung 802 verarbeitet wurden. Beispielhafte Anzeigen schließen Flüssigkristallanzeigen (LCDs), Plasmaanzeigen und Videoanzeigen ein.
  • Kommunikationsschnittstelle 812 ermöglicht den Austausch von Informationen mit anderen Vorrichtungen über Kommunikationsmedien, wie beispielsweise Netzwerke. Diese Informationen können Inhalte, wie beispielsweise Bild-, Video- und/oder Audioübertragungen – entweder in codierten oder in uncodierten Formaten – einschließen.
  • Kommunikationsschnittstelle 812 kann drahtlose oder drahtgebundene Kommunikation ermöglichen. Bei drahtloser Kommunikation kann Kommunikationsschnittstelle 812 Komponenten wie beispielsweise einen Transceiver, eine Antenne und Steuerlogik zum Ausführen von Vorgängen gemäß einem oder mehr Kommunikationsprotokollen einschließen. Somit kann Kommunikationsschnittstelle 812 gemäß verschiedenen Protokollen über drahtlose Netze kommunizieren. Zum Beispiel können Vorrichtung 802 und Vorrichtung(en) 806 gemäß verschiedenen drahtlosen lokalen Netzprotokollen (WLAN-Protokollen) arbeiten, wie beispielsweise der Protokollreihe IEEE 802.11, einschließlich dem IEEE 802.11a, 802.11b, 802.11e, 802.11g, 802.11n und so weiter. In einem weiteren Beispiel können diese Vorrichtungen gemäß verschiedenen mobilen Breitband-Drahtloszugriffsprotokollen (MBWA-Protokollen) für drahtlose Stadtnetze (WMAN) arbeiten, wie beispielsweise einem Protokoll aus der Protokollreihe IEEE 802.16 oder 802.20. In einem weiteren Beispiel können diese Vorrichtungen gemäß verschiedenen drahtlosen persönlichen Netzen (WPAN) arbeiten. Derartige Netze schließen zum Beispiel IEEE 802.16e, Bluetooth und dergleichen ein. Außerdem können diese Vorrichtungen gemäß Protokollen zur Weltweiten Interoperabilität für Mikrowellenzugang (WiMax) arbeiten, wie den durch IEEE 802.16 festgelegten.
  • Außerdem können diese Vorrichtungen drahtlose zellulare Protokolle gemäß einem oder mehr Standards nutzen. Bei diesen zellularen Standards kann es sich zum Beispiel unter anderem um Mehrfachzugriff im Codemultiplex (CDMA), CDMA 2000, Breitbandigen Mehrfachzugriff im Codemultiplex (W-CDMA), Enhanced General Packet Radio Service (GPRS) handeln. Die Ausführungsformen sind in diesem Zusammenhang jedoch nicht beschränkt.
  • Bei drahtloser Kommunikation kann Kommunikationsschnittstelle 812 Komponenten wie beispielsweise einen Transceiver und Steuerlogik zum Ausführen von Vorgängen gemäß einem oder mehr Kommunikationsprotokollen einschließen. Beispiele für derartige Kommunikationsprotokolle schließen Protokolle für Ethernet (zum Beispiel IEEE 802.3), Protokolle für dienstintegrierte digitale Netze (ISDN-Protokolle), Protokolle für öffentliche Telefonnetze (PSTN-Protokolle) und verschiedene Kabelprotokolle ein.
  • Zusätzlich kann Kommunikationsschnittstelle 812 Eingangs-/Ausgangs-Adapter (I/O-Adapter), physikalische Konnektoren zum Verbinden des I/O-Adapters mit einem entsprechenden drahtgebundenen Kommunikationsmedium, eine Netzwerkkarte (NIC), Plattenkontroller, Videokontroller, Audiokontroller und so weiter einschließen. Beispiele für drahtgebundene Kommunikationsmedien können einen Draht, ein Kabel, Metalladern, Leiterplatte (PCB), Rückwandplatine, Schaltmatrix, Halbleitermaterial, paarig verdrillten Draht, Koaxialkabel, Faseroptik und so weiter einschließen.
  • Stromversorgung 814 stellt Betriebsleistung für Elemente von Vorrichtung 802 bereit. Dementsprechend kann Stromversorgung 814 eine Schnittstelle zu einer externen Stromquelle wie beispielsweise eine Wechselstromquelle (AC-Quelle) einschließen. Zusätzlich oder alternativ kann Stromversorgung 814 eine Batterie einschließen. Eine derartige Batterie kann wechselbar und/oder wiederaufladbar sein. Jedoch sind die Ausführungsformen nicht auf dieses Beispiel beschränkt.
  • Zahlreiche spezifische Einzelheiten wurden hier dargelegt, um ein umfassendes Verständnis der Ausführungsformen zu ermöglichen. Für den Fachmann wird jedoch ersichtlich sein, dass die Ausführungsformen auch ohne diese spezifischen Einzelheiten praktisch umgesetzt werden können. In anderen Fällen wurden hinreichend bekannte Vorgänge, Komponenten und Schaltungen nicht im Einzelnen beschrieben, damit die Ausführungsformen klarer hervortreten. Es ist ersichtlich, dass die hier offenbarten spezifischen strukturellen und funktionellen Einzelheiten repräsentativ sein können und nicht notwendigerweise den Umfang der Ausführungsformen beschränken.
  • Verschiedene Ausführungsformen können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination derselben implementiert sein. Beispiele für Hardware-Elemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (zum Beispiel Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikschaltungen (PLD) digitale Signalprozessoren (DSP), frei programmierbare logische Anordnungen (FPGA), Logikgatter, Register, Halbleiterbauelement, Chips, Mikrochips, Chip-Sätze und so weiter einschließen. Beispiele für Software können Software-Komponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystem-Software, Middleware-, Firmware-, Software-Module, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Software-Schnittstellen, Anwendungsprogrammschnittstellen (API), Befehlssätze, Rechencode, Rechnercode, Codesegmente, Rechnercodesegmente, Wörter, Werte, Symbole oder eine Kombination derselben einschließen. Das Ermitteln, ob eine Ausführungsform unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert ist, kann gemäß einer Anzahl von Faktoren variieren, wie beispielsweise gewünschter Rechengeschwindigkeit, Leistungspegel, Wärmetoleranzen, Verarbeitungszyklusbilanz, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Auslegungs- oder Leistungsbeschränkungen.
  • Einige Ausführungsformen können unter Verwendung der Ausdrücke „gekoppelt" und „verbunden" zusammen mit deren Ableitungen beschrieben sein. Diese Begriffe sind nicht als Synonyme füreinander gedacht. Zum Beispiel können einige Ausführungsformen unter Verwendung der Begriffe „verbunden" und/oder „gekoppelt" beschrieben sein, um anzugeben, dass zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt miteinander stehen. Der Begriff „gekoppelt" kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, jedoch dennoch zusammenarbeiten oder miteinander interagieren.
  • Einige Ausführungsformen können zum Beispiel unter Verwendung eines maschinenlesbaren Mediums oder Artikels implementiert sein, das/der einen Befehl oder einen Satz von Befehlen speichern kann, der bei Ausführung durch eine Maschine die Maschine dazu veranlassen kann, ein Verfahren und/oder Vorgänge gemäß den Ausführungsformen auszuführen.
  • Eine derartige Maschine kann zum Beispiel ein/e/geeignete/s/n Verarbeitungsplattform, Rechenplattform, Rechenvorrichtung, Verarbeitungsvorrichtung, Rechensystem, Verarbeitungssystem, Rechner, Prozessor oder dergleichen einschließen und kann implementiert sein unter Verwendung einer geeigneten Kombination aus Hardware und/oder Software. Das maschinenlesbare Medium oder der maschinenlesbare Artikel kann zum Beispiel eine geeignete Art von Speichereinheit (memory unit), Speichervorrichtung (memory device), Speicherartikel (memory article), Speichermedium (memory medium), Speichervorrichtung (storage device), Speicherartikel (storage article), Speichermedium (storage medium) und/oder Speichereinheit (storage unit) einschließen, zum Beispiel Speicher, wechselbare oder nicht wechselbare Medien, löschbare oder nicht löschbare Medien, beschreibbare oder wiederbeschreibbare Medien, digitale oder analoge Medien, Festplatte, Diskette, Compact Disk Read Only Memory (CD-ROM), beschreibbare Compact Disk (CD-R), überschreibbare Compact Disk (CD-RW), optische Platte, Magnetmedien, magneto-optische Medien, wechselbare Speicherkarten oder -platten, verschiedene Arten von Digital Versatile Disk (DVD), ein Band, eine Kassette oder dergleichen. Die Befehle können eine geeignete Art von Code einschließen, wie beispielsweise Quellcode, Kompilierercode, Interpretierercode, ausführbaren Code, statischen Code, dynamischen Code, verschlüsselten Code und dergleichen, implementiert unter Verwendung einer geeigneten höheren, niederen, objektorientierten, visuellen, Kompilierer- und/oder Interpretierer-Programmiersprache.
  • Sofern nicht ausdrücklich anders angegeben, ist ersichtlich, dass sich Begriffe wie „Verarbeiten", „Rechnen", „Berechnen", „Ermitteln" oder dergleichen auf die Aktion und/oder Prozesse eines Rechners oder Rechensystems oder eine ähnliche elektronische Rechenvorrichtung beziehen, die als physikalische Größen dargestellte Daten (zum Beispiel elektronische) innerhalb der Register und/oder Speicher des Rechensystems handhabt und/oder in andere Daten umwandelt, die auf ähnliche Weise als physikalische Größen innerhalb der Speicher, Register oder anderen derartigen Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen innerhalb der Speicher des Rechensystems dargestellt sind. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Obwohl der Gegenstand der Erfindung in einer für strukturelle Merkmale und/oder methodische Handlungen spezifischen Sprache beschrieben wurde, sei darauf hingewiesen, dass der in den beigefügten Ansprüchen definierte Gegenstand nicht notwendigerweise auf die oben beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr sind die oben beschriebenen spezifischen Merkmale und Handlungen als Beispielformen von Implementierungen in den Ansprüchen offenbart.

Claims (17)

  1. Vorrichtung, umfassend: ein Kompakttabellen-Generatormodul zum Generieren einer Kompaktcodetabelle, wobei die Kompaktcodetabelle eine Mehrzahl von Codewortgruppen umfasst, angeordnet in einer oder mehr Hierarchien, wobei jede Codewortgruppe eine Gruppenmaske einschließt, die einem oder mehr Codewörtern in einer Tabelle mit Codes variabler Länge entspricht, und ein Speichermedium zum Speichern von Informationen zu den Codewortgruppen, wobei die Informationen die Gruppenmaske für jede der Codewortgruppen und einen Code-Index für jedes Codewort in der Tabelle mit Codes variabler Länge umfasst.
  2. Vorrichtung nach Anspruch 1, wobei das Kompakttabellen-Generatormodul umfasst: ein Identifikationsmodul für übergeordnete Gruppen zum Generieren einer oder mehr übergeordneter Gruppen der Mehrzahl von Codewortgruppen, ein Gruppenanalysemodul zum Ermitteln einer Gruppenmaske für jede der übergeordneten Gruppen.
  3. Vorrichtung nach Anspruch 2, wobei das Gruppenanalysemodul zum Identifizieren von einer oder mehr Untergruppen aus der einen oder mehr übergeordneten Gruppe und Generieren einer Maske für jede dieser Untergruppen dient.
  4. Vorrichtung nach Anspruch 1, wobei die Tabelle mit Codes variabler Länge eine Huffman-Codetabelle ist.
  5. Vorrichtung nach Anspruch 1, weiterhin umfassend einen Decoder zum Decodieren eines Eingangsbitstroms mit der Kompaktcodetabelle.
  6. Vorrichtung nach Anspruch 5, wobei der Decoder zum Empfangen einer oder mehr Neuanordnungsregeln und Neuanordnen der Kompaktcodetabelle auf der Grundlage der einen oder mehr Neuanordnungsregeln dient.
  7. Verfahren, umfassend: Empfangen einer Tabelle mit Codes variabler Länge, aufweisend eine Mehrzahl von Codewörtern, Generieren einer Kompaktcodetabelle, wobei die Kompaktcodetabelle eine Mehrzahl von Codewortgruppen umfasst, angeordnet in einer oder mehr Hierarchien, wobei jede Codewortgruppe eine Gruppenmaske aufweist, und Speichern von Informationen zu den Codewortgruppen, wobei die Informationen die Gruppenmaske für jede der Codewortgruppen und einen Code-Index für jedes Codewort in der Tabelle mit Codes variabler Länge einschließt.
  8. Verfahren nach Anspruch 7, wobei die Tabelle mit Codes variabler Länge eine Huffman-Codetabelle ist.
  9. Verfahren nach Anspruch 7, wobei die Mehrzahl von Codewortgruppen eine oder mehr übergeordnete Gruppen und eine oder mehr Untergruppen einschließt und wobei das Generieren der Mehrzahl von Codewortgruppen umfasst: iteratives Generieren der einen oder mehr Untergruppen aus der einen oder mehr übergeordneten Gruppe.
  10. Verfahren nach Anspruch 9, wobei das iterative Generieren der einen oder mehr Untergruppen umfasst Auswählen einer der Mehrzahl von Codewortgruppen, Generieren der Gruppenmaske der ausgewählten Codewortgruppe, Produzieren eines oder mehr maskierter Werte mit der Gruppenmaske der ausgewählten Codewortgruppe und des einen oder mehr Codewortes innerhalb der ausgewählten Codewortgruppe und, wenn zwei oder mehr der maskierten Werte eine Lauflängencharakteristik teilen, Erzeugen einer neuen Untergruppe und Übertragen der den zwei oder mehr maskierten Werten entsprechenden Codewörter von der ausgewählten Codewortgruppe auf die neue Untergruppe.
  11. Verfahren nach Anspruch 10, wobei das Produzieren eines oder mehr maskierter Werte das Vornehmen von EXKLUSIV-ODER (XOR)-Operationen zwischen der Maske der ausgewählten Codewortgruppe und jedes der Codewörter innerhalb der ausgewählten Codewortgruppe umfasst.
  12. Verfahren nach Anspruch 7, weiterhin umfassend: Decodieren eines Eingangsbitstroms mit der Kompaktcodetabelle.
  13. Verfahren nach Anspruch 12, weiterhin umfassend: Empfangen von einer oder mehr Neuanordnungsregeln und Neuanordnen der Kompaktcodetabelle auf der Grundlage der einen oder mehr Neuanordnungsregeln.
  14. Artikel, umfassend ein maschinenlesbares Speichermedium, enthaltend Befehle, die bei Ausführung ein System in die Lage versetzen: eine Tabelle mit Codes variabler Länge, aufweisend eine Mehrzahl von Codewörtern, zu empfangen, eine Kompaktcodetabelle zu generieren, wobei die Kompaktcodetabelle eine Mehrzahl von Codewortgruppen, angeordnet in einer oder mehr Hierarchien, aufweist und jede Codewortgruppe eine Gruppenmaske aufweist, und Informationen zu den Codewortgruppen zu speichern, wobei die Informationen die Gruppenmaske für jede Codewortgruppe und einen Code-Index für jedes Codewort in der Tabelle mit Codes variabler Länge einschließen.
  15. Artikel nach Anspruch 12, wobei die Tabelle mit Codes variabler Länge eine Huffman-Codetabelle ist.
  16. Artikel nach Anspruch 12, wobei die Mehrzahl von Codewortgruppen eine oder mehr übergeordnete Gruppen und eine oder mehr Untergruppen einschließt, und wobei das maschinenlesbare Speichermedium Befehle enthält, die bei Ausführung das System in die Lage versetzen, iterativ eine oder mehr Untergruppen aus der einen oder mehr übergeordneten Gruppe zu generieren.
  17. System, umfassend: ein Kompakttabellen-Generatormodul zum Generieren einer Kompaktcodetabelle, wobei die Kompaktcodetabelle eine Mehrzahl von Codewortgruppen umfasst, angeordnet in einer oder mehr Hierarchien, wobei jede Codewortgruppe eine Gruppenmaske aufweist, die einem oder mehr Codewörtern in einer Tabelle mit Codes variabler Länge entspricht, ein Speichermedium zum Speichern von Informationen zu den Codewortgruppen, wobei die Informationen die Gruppenmaske für jede der Codewortgruppen und einen Code-Index für jedes Codewort in der Tabelle mit Codes variabler Länge umfasst, einen Decoder zum Decodieren eines Eingangsdatenstroms mit der Kompaktcodetabelle und eine Schnittstelle zum Empfangen des Eingangsdatenstroms von einem Kommunikationsmittel.
DE102008016179A 2007-03-30 2008-03-28 Automatische Generierung von Kompaktcodetabellen Withdrawn DE102008016179A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/694,785 US7970215B2 (en) 2007-03-30 2007-03-30 Automatic generation of compact code tables
US11/694,785 2007-03-30

Publications (1)

Publication Number Publication Date
DE102008016179A1 true DE102008016179A1 (de) 2008-10-09

Family

ID=39736419

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008016179A Withdrawn DE102008016179A1 (de) 2007-03-30 2008-03-28 Automatische Generierung von Kompaktcodetabellen

Country Status (3)

Country Link
US (1) US7970215B2 (de)
CN (1) CN101286744B (de)
DE (1) DE102008016179A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2335245B1 (de) * 2008-09-28 2015-01-07 Ramot at Tel-Aviv University Ltd. Verfahren und system zur adaptiven codierung in flash-speichern
US8671327B2 (en) 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories
US7777652B2 (en) * 2008-10-29 2010-08-17 Silicon Image, Inc. Coding system for memory systems employing high-speed serial links
JP2010279496A (ja) * 2009-06-03 2010-12-16 Fujifilm Corp データ転送システム、送信装置、受信装置、放射線画像転送システム、および放射線画像診断システム
US9201652B2 (en) 2011-05-03 2015-12-01 Qualcomm Incorporated Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy
US9455799B2 (en) 2013-08-06 2016-09-27 OptCTS, Inc. Dynamic control of quality of service (QOS) using derived QOS measures
US9444580B2 (en) 2013-08-06 2016-09-13 OptCTS, Inc. Optimized data transfer utilizing optimized code table signaling
US10523490B2 (en) 2013-08-06 2019-12-31 Agilepq, Inc. Authentication of a subscribed code table user utilizing optimized code table signaling
CN105934888B (zh) * 2014-01-31 2020-06-05 惠普发展公司,有限责任合伙企业 相不变码字的组
US10056919B2 (en) 2014-07-02 2018-08-21 Agilepq, Inc. Data recovery utilizing optimized code table signaling
CA3026281A1 (en) 2016-06-06 2017-12-14 Agilepq, Inc. Data conversion systems and methods
US11019150B2 (en) * 2017-09-20 2021-05-25 Intel Corporation Internet-of-thing gateway and related methods and apparatuses

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970009408B1 (ko) * 1994-01-18 1997-06-13 대우전자 주식회사 인터/인트라 테이블 선택 회로
US5548338A (en) * 1995-06-07 1996-08-20 News American Publishing, Inc. Compression of an electronic programming guide
US6275616B1 (en) * 1997-09-12 2001-08-14 Samsung Electronics Co., Ltd. Method and apparatus for converting a high definition image to a relatively lower definition image using wavelet transforms
US6141457A (en) * 1997-09-12 2000-10-31 Samsung Electronics Co., Ltd. Method and apparatus for processing a high definition image to provide a relatively lower definition image using both discrete cosine transforms and wavelet transforms
DE10004873A1 (de) * 2000-02-04 2001-08-23 Infineon Technologies Ag Verfahren und Vorrichtung zur Erzeugung von OVSF-Codeworten
US7129864B2 (en) 2004-12-31 2006-10-31 Intel Corporation Fast compact decoder for huffman codes
US7804903B2 (en) 2005-06-27 2010-09-28 Intel Corporation Hardware-based CABAC decoder
US7262722B1 (en) 2006-06-26 2007-08-28 Intel Corporation Hardware-based CABAC decoder with parallel binary arithmetic decoding

Also Published As

Publication number Publication date
CN101286744A (zh) 2008-10-15
US20080240596A1 (en) 2008-10-02
CN101286744B (zh) 2012-04-25
US7970215B2 (en) 2011-06-28

Similar Documents

Publication Publication Date Title
DE102008016179A1 (de) Automatische Generierung von Kompaktcodetabellen
DE102016204602B4 (de) Huffmann-Paralleldecoder
DE19606178C2 (de) Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE602004010922T2 (de) Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen
DE68907812T2 (de) Verfahren und Vorrichtung zur Kodierung, Dekodierung und Übertragung von Daten in komprimierter Form.
DE10196890B4 (de) Verfahren zum Ausführen einer Huffman-Decodierung
DE69023329T2 (de) Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem.
DE3882738T2 (de) Datenkomprimierungsverfahren und -vorrichtung.
DE68925798T2 (de) Datenverdichtung
DE69838074T2 (de) Verfahren und vorrichtung zur gleichzeitigen verschlüsselung und komprimierung von daten
DE60033184T2 (de) Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen unter Verwendung von paketweisen Hash Tabellen
DE2346525C3 (de) Virtuelle Speichereinrichtung
DE60129643T2 (de) Verfahren und Gerät für die Ermittlung vom längsten Prefixzusammenbringen in einem Kommunikationsnetz
DE3852341T2 (de) Zeichenverarbeitungssystem mit Funktion zur Prüfung von Rechtschreibung.
DE69532775T2 (de) Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät
DE102020110578A1 (de) Selbstprüfungskompression
DE69123660T2 (de) Datenkompressionsmethode und Gerät
DE112012005557B4 (de) Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden
DE112012003503T5 (de) Skalierbares Deduplizierungssystem mit kleinen Blöcken
DE2208664A1 (de) Verfahren zur Decodierung eines vorsatzfreien Verdichtungscodes veränderlicher Länge
DE2264090B2 (de) Datenverdichtung
DE60225785T2 (de) Verfahren zur codierung und decodierung eines pfades in der baumstruktur eines strukturierten dokuments
DE3485824T2 (de) Verfahren zur datenkompression.
DE19952683A1 (de) Vorrichtung und Verfahren zum Senden und Empfangen von Video-Daten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee