DE60009502T2 - Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung - Google Patents

Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung Download PDF

Info

Publication number
DE60009502T2
DE60009502T2 DE60009502T DE60009502T DE60009502T2 DE 60009502 T2 DE60009502 T2 DE 60009502T2 DE 60009502 T DE60009502 T DE 60009502T DE 60009502 T DE60009502 T DE 60009502T DE 60009502 T2 DE60009502 T2 DE 60009502T2
Authority
DE
Germany
Prior art keywords
code
run
count
data
lzw
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 - Lifetime
Application number
DE60009502T
Other languages
English (en)
Other versions
DE60009502D1 (de
Inventor
C. Albert COOPER
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.)
Unisys Corp
Original Assignee
Unisys 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 Unisys Corp filed Critical Unisys Corp
Publication of DE60009502D1 publication Critical patent/DE60009502D1/de
Application granted granted Critical
Publication of DE60009502T2 publication Critical patent/DE60009502T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Description

  • Querbezug zu verwandten Anmeldungen
  • Die U.S.-Patentanmeldung 09/264.269 von Cooper, eingereicht am 8. März 1999 unter dem Titel "Data Compression Method And Apparatus With Embedded Run-Length Encoding".
  • Die U.S.-Patentanmeldung 09/300.810 von Cooper, eingereicht am 27. April 1999 unter dem Titel "Data Compression Method And Apparatus With Embedded Run-Length Encoding Using Mathematical Run Processing" eingereicht.
  • Die Patentanmeldungen 09/264.269 und 09/300.810 sind unter Bezugnahme hierin eingeschlossen.
  • Hintergrund der Erfindung
  • 1. Gebiet der Erfindung
  • Die Erfindung betrifft LZW-Datenkomprimierungs- und -dekomprimierungssysteme insbesondere in Bezug auf das Einschließen einer Lauflängencodierung und -decodierung jeweils innerhalb der LZW-Komprimierungs- und -Dekomprimierungsverarbeitung.
  • 2. Beschreibung des Standes der Technik
  • Die Professoren Abraham Lempel und Jacob Ziv stellten die theoretischen Grundlagen für LZ-Datenkomprimierungs- und -dekomprimierungssysteme bereit, die heutzutage weitverbreitet verwendet werden. Zwei ihrer grundlegenden Veröffentlichungen erscheinen in der IEEE Transactions on Information Theory, IT-23-3, Mai 1977, S. 337–343 und in der IEEE Transactions on Information Theory, IT-24-5, Sept. 1978, S. 530–536. Ein allgegenwärtig verwendetes, als LZW bekanntes Datenkomprimierungsund -dekomprimierungssystem, übernommen als Standard für V.42 bis Kompressions- and Dekompressionsmodems, wird im U.S.-Patent 4.558.302 von Welch, erteilt am 10 Dezember 1985, beschrieben. LZW wurde als der- Kompressions- und Dekompressionsstandard übernommen, der in GIF- und TIFF-Bildkommunikationsprotokollen verwendet wird.
  • Eine andere Art der Datenkomprimierung- und -dekomprimierung, die als Lauflängencodierung (RLE) bezeichnet wird, komprimiert einen sich wiederholenden Lauf von Zeichen mittels der Bereitstellung eines komprimierten Codes, der das Zeichen und die Länge des Laufs anzeigt. RLE ist demnach bei der Codierung langer Strings desselben Zeichens wirksam. Zum Beispiel ist die RLE beim Komprimieren einer langen Sequenz an Leerstellen wirksam, die am Anfang einer Datendatei eingeschlossen werden kann. Die RLE ist auch bei der Bildkomprimierung effektiv, wo ein Bild einen langen Lauf an aufeinanderfolgenden Bildpunkten enthält, die denselben Wert haben, wie beispielsweise im Himmelsbereich eines Land-Himmel-Bildes.
  • Im Stand der Technik wurde die Lauflängencodierung mit LZ-Systemen kombiniert, wie durch die folgenden U.S.-Patenten veranschaulicht wird: Patent 4.929.946 von O'Brien et al., eingereicht am 29 Mai 1990; Patent 4.971.407 von Hoffman, eingereicht am 20. Nov. 1990; Patent 4.988.998 von O'Brien, eingereicht am 20. Januar 1991; Patent 5.247.638 von O'Brien et al., eingereicht am 21. Sept. 1993; Patent 5.389.922 von Seroussi et al., eingereicht am 14. Februar 1995; und Patent 5.861.827 von Welch et al., eingereicht am 19 Januar 1999.
  • In einigen Systemen aus dem Stand der Technik wurde eine Lauflängencodierung mit einem LZ-System kombiniert, indem die Daten an einem Lauflängencodierer angelegt und danach die Lauflängen-codierten Daten am LZ-basierten System angelegt werden. In einer solchen Architektur wird ein Lauflängencodierer an dem vorderen Ende des Kompressors verwendet, und ein Lauflängencodierer wird an dem Ausgabeende des Dekompressors verwendet. Ein solches System leidet unter den Nachteilen der erweiterten Ausstattung, der Erhöhung von Kosten, des Steuer-Aufwands und der Verarbeitungszeit. Die Patente 4.971.407 und 4.988.998 veranschaulichen ein solches System.
  • Im dem LZW-basierten System des Patents 5.389.922 werden bestimmte Ausgabecodes vom Kompressor unterdrückt beim Vorhandensein eines Laufs sich wiederholender Eingabe-Datenzeichen. Eine besonderer Laufverbesserungs-Mechanismus wird am Eingang des Dekompressors verwendet, um die fehlenden Codes wieder zu erzeugen.
  • Im Kompressor des Systems vom Patent 5.861.827 wird, wenn ein Teil-String W und ein Zeichen C gefunden werden, ein neuer String mit C als ein Erweiterungszeichen am String PW gespeichert, worin P der String war, der im zuletzt übertragenen komprimierten Ausgabecode befördert wurde. Mit diesem Komprimierungsalgorithmus wird ein Lauf von Zeichen ungeachtet seiner Länge in zwei komprimierten Codes codiert. Der Dekompressor dieses Systems verwendet ein besonderes, nicht erkanntes Codeverfahren, um den Synchronismus mit dem Kompressor aufrecht zu erhalten.
  • Im System des Patents 4.929.946 wird ein Lauf angezeigt, indem ein Wert eines vorbestimmten Satzes an reservierten Bezugswerten, gefolgt von einem Wiederholungszählwert für den Lauf, übertragen wird. Die reservierten Bezugswerte sind so definiert, dass der Zählwert der Bits im Wiederholungszählwert, die dem reservierten Bezugswert folgen, reduziert wird. Das Erfordernis der Verwendung des reservierten Bezugswertes im komprimierten Strom für jeden Lauf der erfasst wird, neigt dazu, die Komprimierung zu reduzieren. Zusätzlich ist das System offensichtlich auf die Verarbeitung von relativ kleinen Lauflängen eingeschränkt. Patent 5.247.638 stellt Beschreibungen bereit, die denen des Patents 4.929.946 ähnlich sind.
  • Ein anderes Datenkomprimierungssystem, das die Codierung der Datenzeichenläufe einschließt, ist in der Patentanmeldung S.N. 09/264.269 offenbart. Im Kompressor dieser Patentanmeldung werden Läufe verarbeitet, durch das sukzessive Vorschauen in die Eingabe, um zu bestimmen, ob im Lauf aneinander grenzende, numerisch ansteigende Segmente existieren.
  • Wiederum ein anderes Datenkomprimierungssystem, das die Codierung der Datenzeichenläufe beinhaltet, wird in der Patentanmeldung S.N. 09/300.810 offenbart. Im Kompressor dieser Patentanmeldung werden Läufe verarbeitet, indem mathematisch aus der Länge des Laufs die jeweiligen Ausgabecodes bestimmt werden, die den aneinander grenzenden, numerisch ansteigenden Segmenten, die im Lauf vorliegen, entsprechen.
  • Es ist eine Aufgabe der vorliegenden Erfindung, in einem LZW-Datenkompressions- und -dekompressionssystem eine Lauflängencodierung und -decodierung einzubetten, worin eine Maßnahme eingeschlossen ist, die keine Übertragung eines besonderen reservierten Codes benötigt, um den Dekompressor von der Existenz des Laufs zu unterrichten. Es ist eine weitere Aufgabe der vorliegenden Erfindung, für die Verarbeitung von Läufen sehr großer Länge zu sorgen.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung verbessert das gut bekannte LZW-Datenkomprimierungs/dekomprimierungssystem, indem bestimmt wird, wann ein Lauf an Eingabe-Datenzeichen erfolgt, und indem der Laufzeichenzählwert mit dem existierenden Codewert vom den Kompressor-Codezähler kombiniert wird, um eine Kompressorausgabe zu erzeugen, die den Laufzählwert darstellt. Der Dekompressor verwendet den existierenden Codewert im Dekompressor-Codezähler, um den Laufzählwert aus der Kompressorausgabe wieder zu gewinnen. In einem weiteren Merkmal der vorliegenden Erfindung werden Läufe sehr großer Länge verarbeitet, indem der Laufzählwert durch einen ausgewählten vorbestimmten Prozess gesenkt und der reduzierte Laufzählwert ausgegeben wird, wobei ein reservierter Code vorausgeht, der den ausgewählten vorbestimmten Prozess darstellt. Als Reaktion auf den empfangenen reservierten Code wendet der Dekompressor den vorbestimmten Prozess an, der dem empfangenen reservierten Code entspricht, um den ursprünglichen Laufzählwert wieder zu gewinnen, indem der empfangene reduzierte Zählwert in Übereinstimmung mit dem vorbestimmten Prozess erhöht wird.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein schematisches Blockdiagramm eines Datenkompressors zur Komprimierung der Daten in Übereinstimmung mit der vorliegenden Erfindung.
  • 2 ist ein Diagramm, das Details für die Zählwertsenkungstabelle der 1 bereitstellt.
  • 3 ist ein Steuerablaufdiagramm, das die Betriebe darstellt, die vom Kompressor der 1 ausgeführt werden, um die Datenkomprimierung in Übereinstimmung mit der vorliegenden Erfindung durchzuführen.
  • 4 ist ein Steuerablaufdiagramm, das die im Flussdiagramm der 3 verwendete Laufverarbeitungslogik darstellt, um die Datenkomprimierung in Übereinstimmung mit den Merkmalen der vorliegenden Erfindung durchzuführen.
  • 5 ist ein schematisches Blockdiagramm eines in Übereinstimmung mit der vorliegenden Erfindung verkörperten Datendekompressors zur Wiedergewinnung der vom Kompressor der 1 komprimierten Daten.
  • 6 ist ein Diagramm, das die Details der Zählwerterhöhungstabelle der 5 bereitstellt.
  • 7 ist ein Steuerablaufdiagramm, das die vom Dekompressor der 5 ausgeführten Betriebe darstellt, um die Datendekompression in Übereinstimmung mit der vorliegenden Erfindung durchzuführen.
  • 8 ist ein Steuerablaufdiagramm, das die im Flussdiagramm der 7 verwendete Laufverarbeitungslogik darstellt, um die Datendekompression in Übereinstimmung mit den Merkmalen der vorliegenden Erfindung durchzuführen.
  • 9 ist ein Diagramm, das durch Beispiele die Betriebe des Kompressors der 1 in Übereinstimmung mit den Steuerablaufdiagrammen der 3 und 4 belegt.
  • 10 ist ein Diagramm, das durch Beispiele die Betriebe des Dekompressors der 5 in Übereinstimmung mit den Steuerablaufdiagrammen der 7 und 8 belegt.
  • Beschreibung der bevorzugten Ausführungsform
  • Nimmt man jetzt auf 1 Bezug, wird ein Datenkompressor 10 dargestellt, der einen Strom von an einer Eingabe 11 angelegten Eingabe-Datenzeichen in einen Strom von entsprechenden komprimierten Codes an einer Ausgabe 12 komprimiert. Der Kom pressor 10 schließt Arbeitsregister ein, die als Aktuelles-Zeichen-Register 13, Aktuelle-Übereinstimmung-Register 14, Codegrößen-Register 15, Vorausschau-Puffer 16, Zählwert-Register 17, Maxcode-Register 20, Zeichen-Temp-Register 21 und Reservierter-Code-Register 22 bezeichnet werden. Der Kompressor 10 schließt weiterhin einen Codezähler 23 ein, um sequentiell Codewerte zu erzeugen, die verwendet werden, um Lauf- und Nicht-Laufzeichen in Übereinstimmung mit der vorliegenden Erfindung auf eine zu beschreibende Weise zu verarbeiten.
  • Der Kompressor 10 schließt weiterhin eine Vorausschau-Vergleichslogik 24 ein, die die Vergleiche zwischen einem Zeichen im Aktuelles-Zeichen-Register 13 und Zeichen im Vorausschau-Puffer 16 durchführt, um zu bestimmen, ob ein Lauf dabei ist, auf die, weiterhin zu beschreibende Weise zu beginnen. Der Kompressor 10 schließt weiterhin eine Zählwertsenkungstabelle 26 für die Verwendung in der Laufverarbeitung in Übereinstimmung mit der vorliegenden Erfindung ein. Die Zählwertsenkungstabelle 25 sorgt auf eine zu erläuternde Weise für einen Grenzwert 26. Die Details der Zählwertsenkungstabelle 25 und des Grenzwerts 26 werden unten mit Bezug auf die 2 beschrieben.
  • Der Kompressor 10 schließt weiterhin eine Zählwertsenkungslogik 27 ein, um den Zählwert im Register 17 gemäß der Zählwertsenkungstabelle 25 auf eine in Übereinstimmung mit der vorliegenden Erfindung zu beschreibende Weise zu senken. Im Kompressor 10 ist weiterhin eine Steuerung 30 eingeschlossen, um die Betriebe des Kompressors 10 in Übereinstimmung mit den Betriebsablaufdiagrammen der 3 und 4 auf zu beschreibende Weise zu steuern.
  • Es ist auch ein Wörterbuch 35 eingeschlossen, um die Strings in Zusammenarbeit mit dem Kompressor 10 auf eine zu beschreibende Weise zu speichern. Daten werden mithilfe eines bi-direktionalen Datenbus 36 unter Steuerung eines Steuerbus 37 zwischen dem Kompressor 10 und dem Wörterbuch 35 übertragen.
  • Weiterhin ist ein Eingabe-Zeichen-Puffer 40 eingeschlossen, der den an der Eingabe 11 empfangenen Eingabe-Datenzeichen-Strom puffert. Die einzelnen Eingabe-Datenzeichen werden in Übereinstimmung mit zu beschreibenden Betrieben mithilfe eines Bus 41 vom Eingabe-Zeichen-Puffer 40 am Aktuelles-Zeichen-Register 13, Aktuelle-Übereinstimmung-Register 14 und Vorausschau-Puffer 16 angelegt. Der Kompressor 10 steuert den Erwerb der Eingabe-Datenzeichen vom Eingabe-Zeichen-Puffer 40 über einen Steuerbus 42.
  • Kurz zusammengefasst ist der Betrieb des Kompressors 10 wie folgt. Eingabe-Datenzeichen werden vom Eingabe-Zeichen-Puffer 40 abgerufen und daran eine herkömmliche LZW-Datenkomprimierung durchgeführt, die für einen komprimierten Datenstrom an der Ausgabe 12 sorgt. Auf gut bekannte Weise wird der Code-Zähler 23 progressiv inkrementiert, um erweiterten Strings, die im Wörterbuch 35 gespeichert sind, Codewerte zuzuordnen. Der Kompressor 10 wird hierin in Form eines Codes veränderlicher Länge beschrieben, wie im Stand der Technik verständlich. Wenn der Zählwert im Codezähler 23 einen Höchstzählwert erreicht, wie er im Maxcode-Register 20 gespeichert ist, wird die Codegröße im Register 15 inkrementiert. Der LZW-Kompressionsalgorithmus wird detailliert im Patent 4.558.302 beschrieben.
  • Mittels der Verwendung des Vorausschau-Puffers 16 und der Vorausschau-Vergleichslogik 24 werden aufeinander folgende Eingabe-Zeichen untersucht, und wenn n (z. B. n = 3) Vorausschau-Zeichen dieselben sind wie die Zeichen im Aktuelles-Zeichen-Register 13, schwenkt das LZW-Verfahren zur Lauflängencodierung, um den Zeichenlauf zu verarbeiten. Der Zählwert der Zeichen im Lauf wird mittels Verwendung des Aktuelles-Zeichen-Registers 13, Zählwert-Registers 17 und Zeichen-Temp-Registers 21 gezählt. Wenn der Laufzählwert im Zählwert-Register 17 gleich oder kleiner als die Differenz zwischen dem Maximum-Code im Maxcode-Register 20 und dem bestehenden Code im Codezähler 23 ist, wird die Summe des Laufzählwerts im Zählwert-Register 17 und dem bestehenden Code im Codezähler 23 ausgegeben. Wenn anderenfalls der Laufzählwert kleiner als der System-Maximum-Code ist, wird mittels Verwendung der System-Maximum-Codegröße ein erster reservierter Code, gefolgt von dem Laufzählwert, ausgegeben. Wenn der Laufzählwert größer oder gleich als der System-Maximum-Code ist, wird der Zählwert durch einen ausgewählten vorbestimmten Prozess reduziert, so dass der reduzierte Zählwert kleiner ist als der System-Maximum-Code. Ein weiterer reservierter Code, der dem ausgewählten vorbestimmten Prozess entspricht, wird, gefolgt von dem gesenkten Zählwert, ausgegeben.
  • Die hierin beschriebene Ausführungsform dient Erläuterungszwecken und wird in einer ASCII-Implementierung dargestellt. Die ASCII-Umgebung verwendet eine 8 Bit Zeichengröße, die ein Alphabet von 256 Zeichen unterstützt. In einer Codeimplementierung veränderlicher Länge kann die Codegröße bei 9 Bits anfangen und sequentiell auf 10, 11, 12, usw. jeweils an Codes 512, 1024, 2048, usw. wachsen. Für gewöhnlich wird in solchen Systemen eine Maximum-Codegröße von 12 mit einem Maximum-Systemcode von 4096 verwendet.
  • In einer solchen ASCII-Implementierung ist der Satz der reservierten Codes vorteilhafterweise größer als der größte Zählwert und beginnt, wie erläutert wird, günstigerweise beim reservierten Code 257. In der zu beschreibenden Ausführungsform werden fünf reservierte Codes verwendet, am reservierten Code 261 endend. In der ASCII-Implementierung beginnt solchermaßen der erste verfügbare Code aus dem Codezähler 23 zur Darstellung mehrerer Zeichen-Strings mit dem Code 262. Es wird gewürdigt sein, dass die Ausführungsformen ebenso auf einer Codeausgabe festgelegter Länge von beispielsweise 12 Bits basieren können, wie wohl bekannt ist.
  • Nimmt man auf 2 Bezug, werden Details der Zählwertsenkungstabelle 25 und des Grenzwerts 26 der 1 dargestellt. Die Zählwertsenkungstabelle 25 bestimmt eine Mehrzahl an auswählbaren vorbestimmten Prozessen, so dass ein Laufzählwert auf eine vorbestimmte Weise auf einen kleineren Wert als den System-Maximum-Code gesenkt werden kann. Die Zählwertsenkungstabelle 25 bestimmt auch reservierte Codes, die den jeweiligen Prozessen entsprechen. Jede der Zeilen 50–53 der Tabelle 25 bestimmt einen der Prozessoren. Zu Zwecken der Spezifizierung ist der System-Maximum-Code 212 oder 4096. Der Prozess 50 wird z. B. für Zählwerte ausgesucht, die gleich oder größer als 212, aber kleiner als 2 × 212 sind. Wie in der Spalte für den gesenkten Zählwert der Tabelle für den Prozess 50 zu sehen, werden die Laufzählwerte in diesem Bereich um 212 gesenkt. Der reservierte Code für den Prozess 50 ist 258. Aus Bequemlichkeit wird der Dezimalwert der oberen Grenze für jeden Zählwertbereich in der so bezeichneten Spalte der Tabelle angegeben. Für die verwendeten Parameter wird geschätzt sein, dass der größte vom System zu verarbeitende Lauf zählwert auf Läufe von weniger als 20480 Zeichen begrenzt ist. Es wird darüber hinaus gewürdigt werden, dass diese Grenze bloß durch das Hinzufügen weiterer Zeilen in der Tabelle erhöht wird.
  • Die Zählwertsenkungstabelle 25 wird für die Verwendung in einer ASCII-Umgebung festgelegt, worin die Zeichen in 8 Bits dargestellt sind und Zeichenwerte im Bereich von 0–255 haben. Die reservierten Codes werden als 257–261 gewählt. Der erste verfügbare Code zur Darstellung mehrerer Strings ist daher 262. Zu Zwecken der Spezifizierung ist die System-Maximum-Codegröße 12 Bits, einen System-Maximum-Code von 4096 bereitstellend. Laufzählwerte, die kleiner als der System-Maximum-Code sind, können auf eine später zu erläuternde Weise auf eine Art und Weise verarbeitet werden, die durch den Reservierter-Code-Wert von 257 dargestellt wird. Die erste Zeile der Tabelle 25 bezeichnet dieses Verhältnis.
  • Unter anhaltendem Bezug auf die 1 verwendet die herkömmliche LZW-Verarbeitung das Aktuelles-Zeichen-Register 13, das Aktuelle-Übereinstimmung-Register 14, das Codegrößen-Register 15, den Codezähler 23 und das Wörterbuch 35. Die Laufverarbeitung in Übereinstimmung mit der vorliegenden Erfindung verwendet auch den Codezähler 23 wie den Vorausschau-Puffer 16, das Zählwert-Register 17, Maxcode-Register 20, Zeichen-Temp-Register 21, reservierte Code-Register 22, die Vorausschau-Vergleichslogik 24, die Zählwertsenkungstabelle 25, den Grenzwert 26 und die Zählwertsenkungslogik 27. Die Steuerablaufdiagramme der 3 und 4 veranschaulichen die vom Kompressor 10 auszuführenden detaillierten Betriebe. Die Steuerung 30 wird als die richtige Schaltung wie beispielsweise Zustandsvorrichtungen enthaltend erwogen, um die Ausführung der Betriebe zu steuern.
  • Nimmt man auf 3 Bezug, und zwar mit anhaltendem Bezug auf 1, wird der Codezähler 23 am Block 60 am ersten verfügbaren Code initialisiert, der den reservierten Codes folgt, die in dem Satz für reservierten Codes der Zählwertsenkungstabelle 25 der 2 angezeigt werden. Solchermaßen wird der Codezähler 23 in der dargestellten Ausführungsform auf 262 gesetzt. An einem Block 61 wird das Codegrößen-Register 15 an der beginnenden Codegröße, z. B. 9 Bits in der ASCII-Ausführungsform, initialisiert. Zusätzlich wird das Maxcode-Register 20 auf den entsprechenden Maximum-Code für die Codegröße gesetzt. Wie anerkannt, ist der Maximum-Code in 9 Bits 511. Der im Block 60 angezeigte reservierte Code und der im Block 61 angezeigte Maxcode werden in Übereinstimmung mit der vorliegenden Erfindung auf eine zu beschreibende Weise in der Laufverarbeitung verwendet.
  • An einem Block 62 wird das erste Eingabe-Zeichen in das Aktuelle-Übereinstimmung-Register 14 abgerufen, und an einem Block 63 wird das nächst folgende Zeichen in das Aktuelles-Zeichen-Register 13 abgerufen. Der Wert im Aktuelle-Übereinstimmung-Register 14 zusammen mit dem nächsten Zeichen im Aktuelles-Zeichen-Register 13 umfasst einen zwei Zeichen-Strings, wie im Stand der Technik (z. B. s. Patent 4.558.302) sehr gewürdigt.
  • Die Verarbeitung fährt an einem Block 64 fort, worin das Wörterbuch 35 gesucht wird, um zu bestimmen, ob sich der String, der die vom aktuellen Zeichen verkettete aktuelle Übereinstimmung umfasst, im Wörterbuch befindet. Wörterbuch-Suchverfahren zur Durchführung der Funktion des Blocks 64 sind im Stand der Technik gut bekannt (s. z. B. Patent 4.558.302 und Patent 5.861.827).
  • Wenn am Block 64 der String im Wörterbuch 35 vorgefunden wird, wird der JA-Zweig vom Block 64 an einen Block 65 eingeschlagen. Am Block 65 werden die Inhalte des Aktuelle-Übereinstimmung-Registers 14 aktualisiert, um eine Anzeige des Strings zu enthalten, der gefunden wurde. Wie im Stand der Technik gut bekannt ist, hat ein String einen damit verknüpften Code, und allgemein wird der Stringcode des aktuell übereinstimmenden Strings in das Aktuelle-Übereinstimmung-Register 14 gesetzt. Details der spezifischen Implementierungen für die Funktion des Blocks 65 sind gut bekannt (s. z. B. Patent 4.558.302 und Patent 5.861.827). Nach der Aktualisierung des Aktuelle-Übereinstimmung-Registers 14 mit dem aktuell übereinstimmenden String kehrt die Steuerung zum Block 63 zurück, um das nächste Eingabe-Datenzeichen in das Aktuelles-Zeichen-Register 13 abzurufen. Auf diese Weise vergleicht die von den Blöcken 63–65 gebildete Schleife den Eingabe-Datenzeichen-Strom mit den im Wörterbuch 35 gespeicherten Strings, um die längste Übereinstimmung damit zu finden.
  • Im Block 64 wird der NEIN-Zweig vom Block 64 zu einem Block 66 eingeschlagen, wenn die Verkettung der gerade übereinstimmenden Strings mit dem nächsten am Block 63 abgerufenen Zeichen zu einem erweiterten String führt, der sich nicht im Wörterbuch 35 befindet. Am Block 66 wird dieser erweiterte String, der nicht im Wörterbuch 35 gefunden wurde, darin eingegeben, und der existierende Code des Codezählers 23 wird diesem gespeicherten erweiterten String zugeordnet. Details der spezifischen Implementierungen für die Funktion des Blocks 66 sind gut bekannt (s. z. B. Patent 4.558.302).
  • Die Verarbeitung fährt mit einem Block 67 weiter, worin der Code im Codezähler 23 geprüft wird, um zu bestimmen, ob eine Zunahme in der Codegröße erforderlich ist. Wenn dem so ist, macht die Verarbeitung an einem Block 68 weiter, wobei das Codegrößen-Register 15 um 1 inkrementiert wird. Wenn eine Erhöhung in der Codegröße benötigt wird, wird der Wert im Maxcode-Register 20 ebenfalls in Übereinstimmung mit der neuen Codegröße erhöht. Der Wert Maxcode wird auf den Maximum-Code erhöht, der von den Größenbits für den neuen Code unterstützt werden wird. Zum Beispiel hat eine Codegröße von 10 Bits einen Maxcode von (210 – 1) = 1023. Der Wert im Maxcode-Register 20 wird in der Laufverarbeitung der vorliegenden Erfindung auf eine mit Bezug auf die 4 zu erörternde Weise verwendet. Wenn eine Erhöhung in der Codegröße am Block 67 nicht erforderlich ist, wird der Block 68 umgangen, um die Verarbeitung an einem Block 69 fortzusetzen. Am Block 69 wird der Codezähler 23 um 1 inkrementiert.
  • Die Verarbeitung macht an einem Block 70 weiter, wobei der Code der aktuellen Übereinstimmung als Teil des an der Kompres sorausgabe 12 bereitgestellten komprimierten Codestroms ausgegeben wird. Der Code der aktuellen Übereinstimmung wird vom Aktuelle-Übereinstimmung-Register 14 bereitgestellt. Wenn die aktuelle Übereinstimmung ein String mehrerer Zeichen ist, liegt der Code des Strings im Aktuelle-Übereinstimmung-Register 14 und war die längste im Wörterbuch 35 gefundene Übereinstimmung, wie oben mit Bezug auf den Block 64 beschrieben. Es wird gewürdigt sein, dass die aktuelle Übereinstimmung, die am Block 70 ausgegeben wird, auch ein einziges Zeichen sein kann. Der Ausgabecode ist in diesem Fall der Wert des Zeichens. Implementierungsdetails der Funktion des Blocks 70 sind im Stand der Technik gut bekannt (s. z. B. Patent 4.558.302 und Patent 5.861.827).
  • Die Verarbeitung fährt an einem Block 74 fort, wobei das aktuelle Zeichen im Register 13 im Vergleich zu den nächsten n Vorausschau-Zeichen, die dem aktuellen Zeichen folgen, geprüft wird, um zu bestimmen, ob es dieselben sind. Dieser Prozess wird durch die Logik 24 durchgeführt, indem die geeigneten in den Vorausschau-Puffer 16 abgerufenen Zeichen verwendet werden. Als Beispiel kann n für die Bequemlichkeit auf 3 gesetzt werden.
  • Am Block 74 wird das aktuelle Zeichen mit den nächsten n Vorausschau-Zeichen verglichen, die dem aktuellen Zeichen folgen, um zu bestimmen, ob ein Lauf desselben Zeichens dabei ist zu beginnen. Wenn das aktuelle Zeichen dasselbe wie die nächsten n Vorausschau-Zeichen ist, wird der JA-Zweig des Blocks 74 zu einem Laufverarbeitungsblock 75 eingeschlagen. Die Details des Laufverarbeitungsblocks 75 werden in 4 dargestellt.
  • Wenn eines der n Vorausschau-Zeichen nicht mit dem aktuellen Zeichen übereinstimmt, wird der NEIN-Zweig des Blocks 74 eingeschlagen, um die gewöhnliche LZW-Datenkomprimierungsverarbeitung fortzusetzen.
  • Entsprechend macht die Verarbeitung an einem Block 76 weiter, wobei das Aktuelle-Übereinstimmung-Register 14 auf das Zeichen im Aktuelles-Zeichen-Register 13 gesetzt wird. Danach wird an einem Block 77 das nächste Eingabe-Datenzeichen, das dem gegenwärtigen aktuellen Zeichen folgt, in das Aktuelles-Zeichen-Register 13 abgerufen. Es wird geschätzt sein, dass das Aktuelle-Übereinstimmung-Register 14 am Block 76 auf das Eingabe- Datenzeichen gesetzt wird, das in der vorherigen Verarbeitung zu einer Nicht-Übereinstimmung führte. Die Implementierungsdetails für die Funktion der Blöcke 76 und 77 sind im Stand der Technik gut bekannt (s. z. B. Patent 4.558.302 und Patent 5.861.827). Die Steuerung kehrt dann zum Block 64 zurück, um einen neuen LZW-Datenkomprimierungszyklus mit dem aktuellen Übereinstimmungscode, der jetzt im Aktuelle-Übereinstimmung-Register 14 liegt, und dem aktuellen Zeichen zu starten, das jetzt im Aktuelles-Zeichen-Register 13 liegt.
  • Es wird gewürdigt werden, dass außer den Blöcken 74 und 75, der Bezug auf den Maxcode in den Blöcken 61 und 68 und der Bezug auf die reservierten Codes im Block 60, der Rest der 3 eine Standard-LZW-Datenkomprimierungsverarbeitung darstellt. Solchermaßen kann bei der Implementierung der LZW-Datenkomprimierungsaspekte der vorliegenden Erfindung jede bekannte Implementierung einer LZW-Datenkomprimierung verwendet werden.
  • Nimmt man auf 4 Bezug, und zwar mit anhaltendem Bezug auf die 1-3, werden die Details der Laufverarbeitung des Blocks 75 der 3 dargestellt. Die Laufverarbeitung beginnt an einem Block 80, wobei das Zeichen im Aktuelles-Zeichen-Register 13 an der Ausgabe 12 des Kompressors 10 bereitgestellt wird. An einem Block 81 wird der Zählwert im Zählwert-Register 17 auf 0 gesetzt. Die Verarbeitung macht mit einem Block 82 weiter, wobei das aktuelle Zeichen im Register 13 für das Zeichen-Temp-Register 21 gesichert wird. Danach wird an einem Block 83 das nächste Zeichen, das dem aktuellen Zeichen folgt, an das Aktuelles-Zeichen-Register 13 abgerufen.
  • An einem Block 84 wird das in das Aktuelles-Zeichen-Register 13 abgerufene Zeichen mit dem vorherigen Zeichen im Zeichen-Temp-Register 21 verglichen, um die Gleichheit dazwischen zu bestimmen. Wenn das aktuelle Zeichen gleich dem Zeichen Temp ist, fährt der Zeichenlauf fort, und der JA-Zweig vom Block 84 wird eingeschlagen. Wenn das aktuelle Zeichen jedoch nicht gleich dem Zeichen Temp ist, endete der Zeichenlauf mit dem im Aktuelles-Zeichen-Register 13 liegenden Nicht-Übereinstimmungszeichen. Wenn am Block 84 das Ende des Zeichenlaufs angezeigt wird, wird der NEIN-Zweig davon eingeschlagen.
  • Der JA-Zweig vom Block tritt in einen Block 85, worauf der Zählwert im Zählwert-Register 17 geprüft wird, um zu bestimmen, wann der Zählwert, wenn um 1 inkrementiert, kleiner als der Grenzwert 26 bliebe, der vom Zählwertsenkungsprozess festgelegt wird. Der Grenzwert wurde oben mit Bezug auf die 2 erörtert und ist in der beschriebenen Implementierung gleich 20480 Zeichen. Es wird gewürdigt, dass dieser Grenzwert spezifisch für die Implementierung ist und nur bedeutend größer sein kann, indem weitere Zeilen in die Zählwertsenkungstabelle 25 hinzugefügt werden, wie oben mit Bezug auf die 2 erörtert.
  • Wenn der Zählwert + 1 am Block 85 kleiner als der Grenzwert ist, fährt die Verarbeitung mit einem Block 86 fort, wobei der Zählwert im Zählwert-Register 17 um 1 inkrementiert wird. solchermaßen wird der Laufzählwert im Zählwert-Register 17 inkrementiert, um das gerade am Block 83 abgerufene Laufzeichen zu zählen, das mit dem Zeichen im Zeichen-Temp-Register 21 am Block 84 übereinstimmt. Die Verarbeitung macht eine Schleife zurück zum Block 82, um das Zählen der Zeichen des Laufs fortzusetzen.
  • Die Blöcke 81–86 stellen die Logik für das Zählen der Zeichen des Laufs bereit. Andere Logikanordnungen können bei der Durchführung dieser Funktion in demselben Sinne verwendet werden.
  • Wenn der Lauf am Block 84 endete oder wenn der nächste Zählwert größer sein wird als der Grenzwert am Block 85, rücken die jeweiligen NEIN-Zweige zu einem Block 90 vor. Am Block 90 wird ein Test gemacht, um zu bestimmen, ob der Zählwert im Zählwertregister 17 gleich oder kleiner als der Maxcode minus der Code im Codezähler 23 ist. Der Test des Blocks 90 wird durchgeführt, um zu bestimmen, ob genügend Zählwerte an der aktuellen Codegröße im Codezähler 23 bleiben, damit der Zählwert der von den Blöcken 81–86 festgelegten Laufzählwerte aufgenommen wird. Wenn dem so ist, kann der Zählwert der Laufzählwerte an den Dekompressor übertragen werden, ohne irgendeinen besonderen reservierten Code zu verwenden, um dem Dekompressor zu signalisieren, dass die Laufinformation dabei ist, empfangen zu werden.
  • Entsprechend wird der JA-Zweig vom Block 90 zu einem Block 91 eingeschlagen, wobei der Zählwert im Zählwert-Register 17 zum Code vom Codezähler 23 hinzugefügt wird, wobei der daraus hervorgehende Wert in das Zählwert-Register 17 gesetzt wird. Die Verarbeitung rückt dann zu einem Block 92 vor, worauf der Zählwert im Zählwert-Register 17 an der Ausgabe 12 des Kompressors 10 bereitgestellt wird.
  • Die Verarbeitung kehrt dann zum Block 76 der 3 zurück, um wieder in die LZW-Verarbeitungsschleife einzutreten.
  • Wenn am Block 90 der Zählwert größer als der Maxcode minus dem Code im Codezähler ist, wird der NEIN-Zweig vom Block 90 zu einem Block 93 eingeschlagen. Der Block 93 ist der Zutritt zur Verarbeitung, die verwendet wird, wenn der Zählwert der Laufzählwerte zu groß ist, um durch die Verarbeitung der Blöcke 91 und 92 aufgenommen zu werden. Die Verarbeitung, die dem Block 93 folgt, verwendet die in der Zählwertsenkungstabelle 25 skizzierten Verfahren, wie oben mit Bezug auf die 2 erörtert. In der vom Block 93 betretenen Verarbeitung signalisiert der Kompressor 10 das Auftreten eines Laufs, indem einer der in der Tabelle 25 aufgezeigten reservierten Codes ausgegeben wird.
  • Entsprechend wird am Block 93 der Zählwert geprüft, um zu bestimmen, ob sie kleiner als der System-Maximum-Code ist. Wenn dem so ist, rückt die Verarbeitung auf einen Block 94 vor, an dem das Reservierter-Code-Register 22 auf den ersten reservierten Codewert gesetzt wird. Wie oben in der ersten Zeile der Tabelle 25 der 2 beobachtet, ist der erste reservierte Code der dargestellten Ausführungsform 257.
  • An einem Block 95 wird der jetzt im Reservierter-Code-Register 22 befindliche erste reservierte Codewert an der Ausgabe 12 des Kompressors 10 bereitgestellt. Danach wird an einem Block 96 der Zählwert vom Zählwert-Register 17 an der Ausgabe 12 des Kompressors 10 bereitgestellt. Der Kompressor 10 gibt diesen Zählwert aus, indem die System-Maximum-Codegröße verwendet wird. Wie oben erörtert, ist die maximale Codegröße für die offenbarte Ausführungsform 12 Bits. Andere Bit- und Codegrößen können ebenfalls bei der praktischen Anwendung der Erfindung in diesem Sinne verwendet werden. Die Verarbeitung vom Block 96 kehrt zum Block 76 der 3 zurück, um wieder in die LZW-Verarbeitungsschleife zu treten.
  • Wenn am Block 93 der Zählwert nicht kleiner ist als der System-Maximum-Code, tritt die Verarbeitung in einen Block 97 gefolgt von einem Block 98. An den Blöcken 97 und 98 wird von den Prozessoren 50–53 in Übereinstimmung mit dem Wert des Zählwerts im Zählwert-Register 17 ein vorbestimmter Prozess ausgewählt, wie oben mit Bezug auf die 2 erörtert. Solchermaßen wird am Block 97 unter Bezugnahme auf die 2 der Zählwert im Zählwert-Register 17 durch den vorbestimmten Prozess, der so ausgewählt wird, dass der gesenkte Zählwert kleiner als der System-Maximum-Code ist, gesenkt. Dieser kleinere Zählwert wird dann in das Zählwert-Register 17 gesetzt. Wenn z. B. der Zählwert vor der Senkung gleich oder größer als 3 × 212 und kleiner als 4 × 212 ist, wird der Prozess 52 ausgesucht, worin der Zählwert im Zählwert-Register 17 um 3 × 212 reduziert wird.
  • Am Block 98 wird das Reservierter-Code-Register 22 auf einen Reservierter-Code-Wert gesetzt, der dem ausgesuchten vorbestimmten Prozess entspricht. Wenn der vorbestimmte Prozess 52 ausgesucht wird, wird solchermaßen das Reservierter-Code-Register auf 260 gesetzt.
  • Die Verarbeitung macht dann mit den Blöcken 95 und 96 weiter, wobei der reservierte Code vom Reservierter-Code-Register 22 und der Zählwert vom Zählwert-Register 17 ausgegeben werden, um das Auftreten des in den Blöcken 97 und 98 verarbeiteten Laufs zu signalisieren, um den Laufzählwert dafür zu übertragen. Die Verarbeitung kehrt dann zum Block 76 der 3 zurück, um die LZW-Datenverarbeitungsschleife neu einzugeben.
  • Es wird in Zusammenhang mit der Verarbeitung der Blöcke 93–98 gewürdigt sein, dass vom System der vorliegenden Erfindung sehr große Läufe verarbeitet werden können. Die spezifische dargestellte Ausführungsform kann mittels der Verwendung des vorbestimmten Prozesses 53 20479 Laufzeichen verarbeiten.
  • Nimmt man auf 5 Bezug, und zwar mit anhaltendem Bezug auf 1, wird ein Datendekompressor 110 dargestellt, der einen Strom von an einer Eingabe 111 angelegten komprimierten Codes in einen wiedergewonnenen Strom von Datenzeichen an einer Ausgabe 112 dekomprimiert. Es wird gewürdigt werden, dass der komprimierte Codestrom aus der Ausgabe 12 des Kompressors 10 (1), falls an der Eingabe 111 des Dekompressors 110 angelegt, zur Wiedergewinnung des an der Eingabe 11 des Kompressors 10 angelegten ursprünglichen Eingabe-Datenzeichen-Stroms an der Ausgabe 112 des Dekompressors 110 führt.
  • Der Dekompressor 110 schließt Arbeitsregister ein, die als Aktueller-Code-Register 113, Vorheriger-Code-Register 114, Codegrößen-Register 115 und Zählwert-Register 117 angezeigt sind. Der Dekompressor 110 schließt weiterhin einen Codezähler 123 ein, um sequentiell Codewerte zu erzeugen, die verwendet werden, um ankommende komprimierte Codes auf eine zu beschreibende Weise zu verarbeiten. Es wird geschätzt sein, dass der Codezähler 123 ein Lock-Step-verhältnis mit dem Codezähler 23 des Kompressors 10 der 1 aufrechterhalten wird, wie infolge der anschließenden Beschreibungen gewürdigt sein wird.
  • Der Dekompressor 110 schließt auch eine Zählwerterhöhungstabelle 125 ein, die bei der Verarbeitung ankommender komprimierter Codes verwendet wird, die die Datenzeichenläufe darstellen. Details der Zählwerterhöhungstabelle 125 werden mit Bezug auf die 6 beschrieben. Ebenfalls eingeschlossen ist eine Zählwerterhöhungslogik 127, die zusammen mit der Zählwerterhöhungstabelle 125 verwendet wird, um ankommende reduzierte Zählwerte auf passende Laufzählwerte wiederherzustellen. Die Zählwerterhöhungslogik 127 und die Zählwerterhöhungstabelle 125 kehrt die von der Zählwertsenkungslogik 27 und der Zählwertsenkungstabelle 25 des Kompressors 10 der 1 durchgeführte Zählwertsenkung um.
  • Weiterhin ist im Dekompressor 110 eine Steuerung 130 eingeschlossen, um auf zu beschreibende Weise die Betriebe des Dekompressors 110 in Übereinstimmung mit den Betriebsablaufdiagrammen der 7 und 8 zu steuern.
  • Ein Wörterbuch 135 ist für das Speichern der Datenzeichen-Strings eingeschlossen, die den empfangenen komprimierten Codeeingaben entsprechen. Im Betrieb des Dekompressors 110 werden die Inhalte des Wörterbuchs 135 identisch mit den Inhalten des Wörterbuchs 35 des Kompressors 10 der 1 erhalten. Das Wörterbuch 135 wird über einen bi-direktionalen Datenbus 136 und einen Steuerbus 137 mit dem Dekompressor 110 verbunden.
  • Mit dem Dekompressor 110 wird ein Eingabecodepuffer 140 eingeschlossen, der die an der Eingabe 111 empfangenen eingegebenen komprimierten Codes puffert. Die einzelnen Eingabecodes werden vom Eingabecodepuffer 140 über einen Bus 141 in Übereinstimmung mit zu beschreibenden Betrieben am Aktueller-Code-Register 113 angelegt. Der Dekompressor 110 steuert den Erwerb der vom Eingabecodepuffer 140 eingegebenen Codes über einen Steuerbus 142.
  • Kurz zusammengefasst, ist der Betrieb des Dekompressors 110 wie folgt. Ein an das Aktueller-Code-Register 113 abgerufener Code wird untersucht, um zu bestimmen, ob er größer ist als der existierende Code des Codezählers 123. Falls ja, stellt der Eingabecode einen Laufzählwert dar, der wiedergewonnen wird, indem der existierende Code im Codezähler 123 vom empfangenen Eingabecode subtrahiert wird. Wenn der eingegebene aktuelle Code gleich einem reservierten Code ist, wird der nächst folgende Code abgerufen, der ein Laufzählwert ist. Der empfangene Lauf- zählwert wird in Übereinstimmung mit dem Wert des besonderen reservierten Codes verarbeitet. In beiden Fällen, wo die eingegebenen Daten einen Zeichenlauf darstellen, wird das Zeichen vom Vorheriger-Code-Register 114 erhalten und der Laufzählwert auf eine weiter zu beschreibende Weise erhalten.
  • Wenn der eingegebene aktuelle Code gleich oder kleiner als der existierende Code des Codezählers 123 ist, wird die Standard-LZW-Datendekompression durchgeführt, um den Datenzeichen-String wieder zu gewinnen, der dem eingegebenen aktuellen Code entspricht. Erweiterte Strings werden auf eine im Stand der Technik der LZW-Datendekompression gut verstandene Weise im Wörterbuch 135 gespeichert.
  • Nimmt man auf die 6 Bezug, und zwar mit anhaltendem Bezug auf die 5, werden Details der Zählwerterhöhungstabelle 125 dargestellt. Wie in den Zeilen 150–153 angezeigt, wird der Laufzählwert von einem durch den Dekompressor 110 empfangenen Eingabecode wiedergewonnen, indem die dargestellten Werte in Übereinstimmung mit dem jeweiligen empfangenen reservierten Code wie dargestellt zum empfangenen Code addiert werden. Genauer erläutert, weisen die Zeilen 150–153 der Tabelle 125 darauf hin, dass jeweils auf die Reaktion des Empfangens der reservierten Codes 258–261 der Zählwert jeweils um 212, 2 × 212, 3 × 212 oder 4 × 212 erhöht wird. Als Reaktion auf den reservierten Code 257 wird der empfangene Zählwert direkt ohne Erhöhung verwendet, wie weiter erläutert sein wird. Die erste Zeile der Tabelle 125 stellt dieses Verhältnis dar.
  • Die Steuerablaufdiagramme der 7 und 8 veranschaulichen die vom Dekompressor 110 auszuführenden detaillierten Betriebe. Die Steuerung 130 wird als die richtige Schaltung wie beispielsweise die Zustandsvorrichtungen enthaltend angesehen, um die Ausführung der Betriebe zu steuern.
  • Nimmt man auf die 7 Bezug, und zwar mit anhaltendem Bezug auf die 5 und 6, wird an einem Block 160 der Codezähler 123 auf dieselbe Weise wie oben mit Bezug auf den Block 60 der 3 initialisiert. An einem Block 161 wird das Codegrößen-Register 115 auf der beginnenden Codegröße initialisiert, wie oben mit Bezug auf den Block 61 der 3 erläutert.
  • An einem Block 162 wird der erste oder der nächste eingegebene komprimierte Code an das Aktueller-Code-Register 113 abgerufen. Wenn die Steuerung vom Block 161 auf den Block 162 vorrückt, wird der Code, der abgerufen wird, der erste Code sein. Wenn die Steuerung über den dargestellten Rücksprungpfad von der Laufverarbeitung in den Block 162 tritt, wird der Code, der abgerufen wird, eher der nächste Code als der erste Code sein.
  • An einem Block 163 stellt der Dekompressor 110 an seiner Ausgabe 112 den String der Datenzeichen bereit, die dem in das Aktueller-Code-Register 113 abgerufenen komprimierten Code entsprechen. Die Datenzeichen-String-Wiedergewinnung von einem eingegebenen komprimierten Code mittels Verwendung des Wörterbuchs 135 ist im Stand der Technik der LZW-Datendekompression gut bekannt. Zahlreiche spezifische Implementierungen sind für die Funktion des Blocks 163 gut bekannt (s. z. B. Patent 4.558.302).
  • Es wird geschätzt sein, dass der an das Aktueller-Code-Register 113 abgerufene Code entweder einen Einzelzeichen-String oder einen Mehrfachzeichen-String darstellen kann. Wie gut bekannt, werden solche Strings durch den Wert des Codes von einander unterschieden. Im Allgemeinen werden Mehrfachzeichen-Strings durch Codes dargestellt, die gleich oder größer als der oben mit Bezug auf den Block 160 erörterte erste erhältliche Code sind. Die Codes für Einzel-Strings haben allgemein Werte, die wie ein einzelnes Zeichen sind bzw. es darstellen, und haben daher Werte, die kleiner sind als der erste erhältliche Code.
  • An einem Block 164 wird der Code im Aktueller-Code-Register 113 an das Vorheriger-Code-Register 114 überführt. An einem Block 165 wird der nächste eingegebene komprimierte Code an das Aktueller-Code-Register 113 abgerufen.
  • An einem Block 166 wird der Code im Aktueller-Code-Register 113 geprüft, um zu bestimmen, ob er gleich einem reservierten Code ist. In der dargestellten Ausführungsform sind die reservierten Codes 257–261, wie in der Zählwerterhöhungstabelle 125 der 6 angezeigt. Wenn der aktuelle Code nicht gleich einem reservierten Code ist, wird der NEIN-Zweig vom Block 166 zu einem Block 167 eingeschlagen. Am Block 167 wird der Code im Aktueller-Code-Register 113 geprüft, um zu bestimmen, ob er größer ist als der existierende Code im Codezähler 123. Wenn der aktuelle Code nicht größer ist als der Codezähler, wird der NEIN-Zweig vom Block 167 zu einem Block 169 eingeschlagen.
  • Wenn jedoch der aktuelle Code gleich einem reservierten Code ist, wird der JA-Zweig vom Block 166 an einen Laufverarbeitungsblock 168 eingeschlagen. Ähnlich wird, wenn der aktuelle Code größer ist als der Codezähler, der JA-Zweig vom Block 167 zum Laufverarbeitungsblock 168 eingeschlagen. Die Details der Dekompressions-Laufverarbeitung werden mit Bezug auf die 8 beschrieben, Nachdem der Code oder die Codes für einen Lauf verarbeitet wurden und der Lauf wiedergewonnen wurde, kehrt die Steuerung zum Block 162 zurück.
  • An einem Block 169 wird der Code im Aktueller-Code-Register 113 geprüft, um zu bestimmen, ob er gleich oder kleiner als der existierende Code des Codezählers 123 ist. (Nur die "kleiner als"-Prüfung wird aufgrund der vorherigen Prüfungen der Blöcke 166 und 167 verwendet). Wenn der aktuelle Code kleiner ist als der Codezähler, wird der JA-Zweig vom Block 169 zu einer Sequenz der Blöcke 180–185 eingeschlagen. Wenn der aktuelle Code gleich dem Codezähler ist, wird der NEIN-Zweig vom Block 169 zu einer Sequenz der Blöcke 190 und 191 eingeschlagen. Es wird gewürdigt sein, dass die Blöcke 180–185 eine gut bekannte herkömmliche LZW-Datendekompressionsverarbeitung darstellen, und dass die Blöcke 190 und 191 den gut bekannten Ausnahmefall der LZW-Datendekompressionsverarbeitung (s. z. B. Patent 4.558.302) darstellen.
  • Am Block 180 wird der Datenzeichen-String, der dem Code im Aktueller-Code-Register 113 entspricht, durch den Dekompressor 110 an seiner Ausgabe 112 bereitgestellt.
  • Am Block 181 wird das Wörterbuch 135 aktualisiert, indem ein erweiterter String gespeichert wird, der den String umfasst, der dem Code im Vorheriger-Code-Register 114 entspricht, der durch das erste Zeichen des Strings erweitert wird, das dem Code im Aktueller-Code-Register 123 entspricht. Dieser gespeicherte erweiterte String wird dem Zeichencodewert des existierenden Codes des Codezählers 123 zugeordnet. In den herkömmlichen LZW-Implementierungen wird der Code im Vorheriger-Code-Register 114 zusammen mit dem Erweiterungszeichen an einer Stelle im Wörterbuch 135 gespeichert, die durch den vom Codezähler 123 zugeordneten Code bestimmt wird.
  • An den Blöcken 182–184 wird der Codezähler 123 um 1 vorgerückt und, falls nötig, eine Codegrößen-Inkrementierung durchgeführt. Wenn keine Codegrößen-Inkrementierung benötigt wird, führt die Prüfung des Blocks 182 zur Umgehung des Codegrößen-Inkrementierungsblocks 183. Das Codegrößen-Register 115 wird in diesem Prozess verwendet. Die Inkrementierung des Codezählers 123 auf den nächsten Code wird am Block 184 durchgeführt.
  • Am Block 185 wird der Code im Aktueller-Code-Register 113 an das Vorheriger-Code-Register 114 überführt. In der herkömmlichen LZW-Datendekomprimierung wird der in das Vorheriger-Code-Register 114 am Block 185 gesetzte vorherige Code im anschließenden LZW-Datendekompressionszyklus in der Wörterbuch-Aktualisierungsfunktion des Blocks 181 verwendet. In der Laufverarbeitung der vorliegenden Erfindung wird dieser vorherige Code verwendet, um das Laufzeichen auf eine mit Bezug auf die 8 zu erläuternde Weise zu bestimmen. Die Steuerung vom Block 185 wird an den Block 165 zurückgeführt.
  • Wenn die LZW-Ausnahmefall-Verarbeitung benötigt wird, wird der NEIN-Zweig vom Block 169 zum Block 190 eingeschlagen, wobei der dem Code im Vorheriger-Code-Register 114 entsprechende String durch das erste Zeichen dieses Strings erweitert und an der Ausgabe 112 des Dekompressors 110 bereitgestellt wird. Am Block 191 wird dieser erweiterte String des Blocks 190 mit einem zugeordneten Code des Codes im Codezähler 123 im Wörterbuch 135 gespeichert. Die Steuerung fährt dann mit dem Block 182 fort, wie zuvor beschrieben.
  • Die Blöcke 160–165, 169, 180–185 und 190–191 der 7 umfassen die von einem herkömmlichen LZW-Datendekompressor durchgeführte Verarbeitung. Zahlreiche Implementierungen sind für die Durchführung der Funktionen dieser Blöcke bekannt (s. z. B. Patent 4.558.302).
  • Die Blöcke 166–168 umfassen die Dekompressionslaufverarbeitung in Übereinstimmung mit der vorliegenden Erfindung, die in einem herkömmlichen LZW-Dekompressor eingebettet ist.
  • In der 7 wird gewürdigt werden, dass die herkömmliche LZW-Verarbeitung der Blöcke 180–185 und 190–191 die Verarbeitung zum Block 165 zurückgeben, um den nächsten Code an das Aktueller-Code-Register 113 abzurufen. Im Unterschied dazu gibt die Laufverarbeitung des Blocks 168 die Verarbeitung an den Block 162 zurück. Dies geschieht, um auf wirkungsvolle Weise das Vorheriger-Code-Register 114 am Block 164 neu zu initialisieren, nachdem ein Lauf verarbeitet wurde, so dass der Dekompressor 110 fortfährt, mit der Ausgabe vom Kompressor 10 synchronisiert zu bleiben.
  • Nimmt man auf die 8 Bezug, und zwar mit anhaltendem Bezug auf die 57, werden Details des Laufverarbeitungsblocks 168 der 7 dargestellt. Falls, wie oben mit Bezug auf die Blöcke 166 und 167 der 7 erörtert, der Code im Aktueller-Code-Register 113 nicht gleich einem reservierten Code, aber größer als der existierende Code im Codezähler 123 ist, geht die Steuerung vom Block 167 der 7 über auf einen Block 200 der 8. Am Block 200 wird der im Codezähler 123 existierende Code vom Code im Aktueller-Code-Register 113 sub trahiert und das Ergebnis in den Zählwert-Register 117 gesetzt. An einem Block 201 stellt der Dekompressor 110 an seiner Ausgabe 112 wiederholt einige Male das im Vorheriger-Code-Register liegende Zeichen bereit, und zwar so oft wie der Zählwert im Zählwert-Register 117. Auf diese Weise gewinnt der Dekompressor 110 den Datenzeichenlauf zurück, der vom Kompressor 10 komprimiert wurde. Die Steuerung kehrt dann zum Block 162 der 7 zurück.
  • Wenn der Eingabecode im Aktueller-Code-Register 113 gleich einem in der Zählwerterhöhungstabelle 125 der 6 angezeigten reservierten Code ist, geht die Steuerung vom Block 166 der 7 auf einen Block 202 der 8 über. Am Block 202 wird der nächste Eingabecode mittels Verwendung der System-Maximum-Codegröße an das Zählwert-Register 117 abgerufen. An einem Block 203 wird eine Prüfung ausgeführt, um zu bestimmen, ob der aktuelle Code gleich dem ersten Reservierter-Code-Wert ist. Für die beschriebene Ausführungsform ist der erste reservierte Code, wie in der 6 angezeigt, 257. Wenn am Block 203 der aktuelle Code gleich dem ersten reservierten Code ist, geht die Steuerung auf den Block 201 über, und der dazugehörige Datenzeichenlauf wird wie zuvor beschrieben wiedergewonnen.
  • Wenn jedoch am Block 203 der aktuelle Code nicht gleich mit dem ersten reservierten Code ist, geht die Steuerung auf einen Block 204 über, wobei der Zählwert im Zählwert-Register 117 durch den ausgesuchten vorbestimmten Prozess, der dem Reservierter-Code-Wert im Aktueller-Code-Register 113 entspricht, erhöht wird. Wie zuvor beschrieben, veranschaulicht die Zählwerterhöhungstabelle 125, wie in der 6 detailliert dargelegt, die spezifischen vorbestimmten Prozesse 150–153, die jeweils den reservierten Codes 258–261 entsprechen. Abhängig vom reservierten Code, der empfangen wird, wird der Zählwert wie dargestellt erhöht. Danach fährt die Verarbeitung, wie zuvor beschrieben, mit dem Block 201 fort, um den dazugehörigen Datenzeichenlauf wieder zu gewinnen.
  • Es wird, wie zuvor beschrieben, gewürdigt sein, dass für die dargestellte Ausführungsform ein Lauf von 20479 Zeichen aufgenommen werden kann. Längere Läufe können auf einfache Weise vom Dekompressor 110 aufgenommen werden, indem weitere Zeilen in die Zählwerterhöhungstabelle 125 der 6 gefügt werden. Natürlich würden weitere Zeilen, wie zuvor erläutert, in die Zählwertsenkungstabelle 25 der 2 gefügt werden.
  • Es wird geschätzt sein, dass die Funktion der Blöcke 200, 203 und 204 der 8 durch die Zählwerterhöhungslogik 127 der 5 durchgeführt wird, indem das Zählwert–Register 117, der Codezähler 123 und die Zählwerterhöhungstabelle 125 der 5 verwendet werden.
  • In der gesamten oben beschriebenen Laufverarbeitung wird geschätzt sein, dass das Laufzeichen am Kompressorblock 80 der 4 übertragen wird und am Dekompressor als Ergebnis der Verarbeitung des Blocks 185 der 7 vorteilhafterweise im Vorheriger–Code–Register 114 liegt.
  • Unter anhaltender Bezugnahme auf die 2, 4, 6, 7 und 8 wird gewürdigt sein, dass, ganz gleich welche Laufverarbeitung durch den Kompressor angelegt wird (2 und 4), sie von der Dekompressor–Laufverarbeitung umgekehrt wird (6 und 8), so dass die ursprünglichen Laufeingabedaten wiedergewonnen werden.
  • Die Kompressorverarbeitung der Blöcke 90–92 der 4 wird durch die Blöcke 167, 200 und 201 der 7 und 8 umgekehrt. Unter diesem Aspekt der Erfindung wird der Zählwert des Laufs durch die Verarbeitung der Blöcke 91 und 92 übertragen. Die Summe des Laufzählwerts und des existierenden Codes des Kompressor-Codezählers wird am Block 92 ausgegeben, und am Block 200 der Dekompressorverarbeitung wird der existierende Wert des Dekompressor-Codezählers vom empfangenen Code subtrahiert, um den Laufzählwert wieder zu gewinnen. Der Dekompressor erkennt diese Zeichenlaufbedingung, indem er am Block 167 erfasst, dass der empfangene Code größer ist als der existierende Code des Dekompressor-Codezählers. Mittels Verwendung dieser Verarbeitung der vorliegenden Erfindung ist es nicht erforderlich, einen reservierten Code vom Kompressor an den Dekompressor zu übertragen, um das Vorliegen des Laufs zu signalisieren.
  • Die Kompressorverarbeitung der Blöcke 93–96 der 4 wird durch die Dekompressorblöcke 166 und 201–203 der 7 und 8 umgekehrt. In diesem Fall wird der reservierte Codewert verwendet, um dem Dekompressor die besondere Verarbeitung zu signalisieren. Der reservierte Codewert von 257 wird in der oben beschriebenen Ausführungsform verwendet. In dieser Verarbeitung wird der Laufzählwert durch den Kompressor im Anschluss an diesen ersten reservierten Code übertragen. Der Dekompressor verwendet den empfangenen Laufzählwert, nachdem er diesen ersten reservierten Code empfängt, um den Zeichenlauf wieder zu gewinnen.
  • Die Kompressor-Laufverarbeitung der Blöcke 93, 97, 98, 95 und 96 der 4 wird durch die Dekompressorverarbeitung der Blöcke 166 und 201–204 umgekehrt. In der Kompressorverarbeitung der Blöcke 97 und 98 wird der Laufzählwert durch einen ausgesuchten vorbestimmten Prozess gesenkt, so dass der Zählwert kleiner ist als der System-Maximum-Code, und ein reservierter Code wird verwendet, der dem ausgesuchten vorbestimmten Prozess entspricht. Die Dekompressorverarbeitung erkennt den reservierten Code und erhöht durch die Verwendung der Umkehr des ausgesuchten vorbestimmten Prozesses der empfangene Zählwert auf den ursprünglichen Laufzählwert, um das ursprüngliche Laufzeichen wieder zu gewinnen. Die Kompressor-vorbestimmten Prozesse 50–53 der 2 entsprechen jeweils den Dekompressor-vorbestimmten Prozessen 150–153 der 6. Es wird beobachtet, dass die Dekompressor-vorbestimmten Prozesse der 6 die Umkehrungen der Kompressor-vorbestimmten Prozesse der 2 sind.
  • Die oben beschriebenen Ausführungsformen der Erfindung werden in Form einer Länge von veränderlichen Codes dargestellt. Es wird geschätzt sein, dass die obigen Ausführungsformen mit einigen sofort ersichtlichen Modifikationen in einer Umgebung fester Codelänge verwendet werden können. Es kann z. B. eine Ausführungsform fester Codelänge eine feste Codegröße von 12 Bits verwenden. In dieser Konfiguration wäre der maximale Systemcode 4096.
  • In einer Ausführungsform fester Codelänge würden die Codegrößen-Register 15 und 115 der 1 und 5 nicht verwendet werden. Ähnlich würden die Codegrößeninitialisierung, die Prüfung und Inkrementierung der Blöcke 61, 67 und 68 der 3 sowie die entsprechenden Blöcke 161, 182 und 183 der 7 nicht benötigt werden. In einer solchen Ausführungsform wäre der Maxcode fest und gleich dem festen System-Maximum-Code, z. B. 4096. Die Logik der 3, 4, 7 und 8 würde dann dieselbe bleiben, wenn man davon absieht, dass der System-Maximum-Code und die System-Maximum-Codegröße wie erörtert feste Werte wären.
  • Nimmt man auf die 9 Bezug, und zwar mit anhaltendem Bezug auf die 14, wird ein Beispiel des Betriebs vom Kompressor 10 in Übereinstimmung mit den Flussdiagrammen der 3 und 4 dargestellt. Oben in der Figur wird ein Eingabe-Datenzeichen-Strom gezeigt, worin sequentielle Zeichen durch die Zeichensequenznummern gekennzeichnet sind. Dies wird getan, um das Nachvollziehen der Entwicklung der Zeichen in den Schritten des Beispiels zu erleichtern. Es wird geschätzt sein, dass die Sequenznummern zum Zwecke der Zeichenidentifizierung gezeigt werden und nicht im eigentlichen Datenzeichen-Strom erscheinen.
  • Das Beispiel ist weitestgehend selbsterläuternd, wobei die durchgeführten Aktionen in der linken Spalte skizziert sind und die Blöcke der 3 und 4, die an den Aktionen teilnehmen, in der rechten Spalte gekennzeichnet sind. Es wird angemerkt, dass der Lauf des Zeichens "a" 47 Zeichen lang ist und der Lauf des Zeichens "c" 15000 Zeichen lang ist.
  • In den Aktionen 1–8 wird die Standard-LZW-Datenkomprimierung mittels des Zeichens "a(5)" an den Eingabe-Datenzeichen durchgeführt. Mehrere LZW-Kompressionszyklen werden durchgeführt, und in jedem Zyklus wird der Block 74, wie in der rechten Spalte angemerkt, zur Prüfung eines Zeichenlaufs durchgelaufen. In Zusammenhang mit dem in der Verarbeitung positionierten Block 74, wie in der 3 dargestellt, werden alle Strings, die im Wörterbuch existieren, vor dem Abrufen der Laufverarbeitung am Block 74 im Block 64 in Übereinstimmung gebracht. Daher erhält die LZW-Verarbeitung die Priorität gegenüber der Laufverarbeitung.
  • In der Aktion 8 erkennt der Block 74 der 3, dass das aktuelle Zeichen "a(5)" dasselbe ist wie die nächsten n Vorausschau-Zeichen, wie im Eingabe-Datenzeichen-Strom oben in der Figur beobachtet. Die Steuerung rückt dann für die Laufverar beitung zum Block 75 vor. Es wird geschätzt sein, dass das Zeichen "a(4)" bei Aktion 6 in der LZW-Verarbeitung absorbiert wurde, selbst wenn der dargestellte Lauf des Zeichens "a" mit "a (4)" beginnt.
  • In der Aktion 9 wird das Zeichen "a(5)" gemäß Block 80 der 4 ausgegeben, und die Laufzählung beginnt mit dem Zeichen "(6)". Die sich aus den Blöcken 82–86 der 4 zusammensetzende Schleife zählt die Zeichen, und bei Aktion 12 wird das Nicht-Übereinstimmungszeichen "c(1)" abgerufen, wobei so der Zählwert bei 45 stoppt, wie dargestellt. In Aktion 12 bestimmt der Block der 4, dass der Zählwert 45 im Zählwert-Register 17 der 1 kleiner ist als die Differenz zwischen dem Maxcode und dem Code von 266 im Codezähler 23.
  • In der Aktion 13 addieren die Blöcke 91 und 92 der 4 den Codezählerwert von 266 mit dem Zählwert von 45, um einen Zählwert von 311 bereitzustellen, der ausgegeben wird. Die Steuerung kehrt dann zum Block 76 der 3 zurück, um die LZW-Verarbeitung wieder aufzunehmen, worin das nächste Zeichen "c (2)" abgerufen und das Wörterbuch, wie dargestellt, aktualisiert wird.
  • In den Aktionen 14–18 wird der 15000 Zeichenlauf des Datenzeichen-S "c" verarbeitet. In Aktion 18 leiten die Blöcke 90 und 93 der 4 die Verarbeitung an die Blöcke 97 und 98 davon. In Aktion 19 wird der Zählwert von 14998 auf einen Zählwert von 2710 reduziert, indem der Prozess 52 der 2 verwendet wird. Der entsprechende reservierte Code von 260 wird, wie dargestellt, in das Reservierter-Code-Register 22 der 1 gesetzt. Dieser Code wird dann am Block 95 der 4 ausgegeben, wie bei Aktion 19 gezeigt, gefolgt von dem gesenkten Zählwert 2710 bei Aktion 20. Der Block 96 der 4 stellt die Ausgabe der Zählwert dar.
  • In den Aktionen 20–22 kehrt die Verarbeitung zur LZW-Datenkomprimierung am Block 76 der 3 zurück.
  • Detailliertere Beschreibungen der Aktionen der 9 in Bezug auf die Blöcke der 3 und 4 sind ohne weiteres ersichtlich und werden um der Kürze willen nicht bereitgestellt.
  • Nimmt man auf 10 Bezug, und zwar mit anhaltendem Bezug auf die 5, 6, 7 und 8, wird ein Beispiel für den Betrieb des Dekompressors 110 in Übereinstimmung mit den Flussdiagrammen der 7 und 8 dargestellt. Das Format der 10 gleicht allgemein dem der 9, und die oben mit Bezug auf die 9 abgegebenen Beschreibungen sind anwendbar. Der eingegebene komprimierte Codestrom oben in der 10 ist die in der 9 dargestellte Kompressorausgabe. Es wird beobachtet, dass die Ausgabe der 10 der oben in der 9 dargestellte wiedergewonnene Datenzeichen-Strom ist.
  • In den Aktionen 1–5 wird die herkömmliche LZW-Dekompression durchgeführt, indem der ursprüngliche Datenzeichen-Strom durch Zeichen "a(5)" wiedergewonnen wird. Es wird angemerkt, dass die LZW-Ausnahmefall-Verarbeitung bei Aktion 4 durchgeführt wird, wo der empfangene aktuelle Code gleich dem Dekompressor-Codezähler ist (NEIN-Zweig des Block 169 der 7).
  • Bei der Aktion 6 wird der Lauf des Zeichens "a" als Reaktion auf das Empfangen des Codes 311 verarbeitet. In diesem Fall ist der empfangene komprimierte Code größer als der Wert 266 im Dekompressor-Codezähler. Der Block 167 der 7 führt die Verarbeitung an die Blöcke 200 und 201 der 8, um die Wiedergewinnung der Laufzeichen durchzuführen. In den Aktionen 7 und 8 kehrt die Steuerung zur LZW-Verarbeitung am Block 162 der 7 zurück, um den Beginn des Laufs des Zeichens "c" zu erfassen.
  • In den Aktionen 9 und 10 wird der Lauf des Zeichens "c" verarbeitet. In der Aktion 9 wird der reservierte Code 260, wie am Block 166 der 7 erfasst, empfangen, und die Laufverarbeitung der Blöcke 201–204 der 8 wird abgerufen. In Aktion 9 wird der Zählwert 2710 empfangen, und in Aktion 10 wird sie in den Laufzählwert von 14998 konvertiert. Die Konvertierung wird am Block 204 der 8 durchgeführt, indem der Prozess 152 der 6 verwendet wird.
  • In den Aktionen 11–13 decodiert die herkömmliche LZW-Dekompression den verbliebenen eingegebenen komprimierten Codestrom.
  • Detailliertere Beschreibungen der Aktionen der 10 in Bezug auf die Blöcke der 7 und 8 sind ohne weiters ersichtlich und werden um der Kürze willen nicht bereitgestellt.
  • Wie aus der 3 gewürdigt, wird die Lauferfassung des Blocks 74 und die Laufverarbeitung des Blocks 75 an dem Punkt im LZW-Zyklus in den LZW-Datenkomprimierungszyklus zwischengeschaltet, wo die längste Übereinstimmung ausgegeben wurde, das Wörterbuch mit dem erweiterten String aktualisiert wurde und das Zeichen, das die Nicht-Übereinstimmung bewirkte, abgerufen wurde und im Aktuelles-Zeichen-Register liegt. Auf diese Weise wird in Bezug auf den bereits im Wörterbuch gespeicherten String ein vollständiger Kompressions-Vorteil erzielt. Wenn das Nicht-Übereinstimmungszeichen einen Lauf beginnen sollte, wird dieses Zeichen am Block 80 der 4 ausgegeben, was dem Dekompressor-Wörterbuch erlaubt, denselben erweiterten String, wie im Kompressor-Wörterbuch gespeichert, zu speichern. Wenn die Laufverarbeitung der 4 abgeschlossen ist, befindet sich das dem Lauf folgende Nicht-Übereinstimmungszeichen im Aktuelles-Zeichen-Register und ist dann am Block der 3 erhältlich, um die LZW-Verarbeitung von diesem Punkt aus fortzusetzen. Solchermaßen empfängt das im LZW-Prozess verwendete Aktuelle-Übereinstimmung-Register am Block 76 der 3 das Nicht-Übereinstimmungszeichen aus der LZW-Verarbeitung der Blöcke 60–70 oder vom Laufverarbeitungsblock 75.
  • Es wird gewürdigt sein, dass die vorbestimmten Prozesse der 2 und 6 die Subtraktion und Addition verwenden, um der Zählwert jeweils zu senken oder zu erhöhen. Andere Verfahren können im Zusammenhang mit der vorliegenden Erfindung verwendet werden, um lange Läufe zu verarbeiten. Zum Beispiel können andere mathematische Verfahren mit größeren Zählwertsenkungs- und -erhöhungsfähigkeiten als die Subtraktion und Addition verwendet werden. Die Multiplikations-, Divisions-, Potenzierungs- und Hashing-Technik können benutzt werden, um diese Fähigkeit bereitzustellen.
  • Es ist klar, dass die im Kompressor 10 und Dekompressor 110 verwendeten Protokolle in Bezug aufeinander kompatibel sein sollten. Der Kompressor und der Dekompressor sollten mit derselben Alphabetgröße und denselben anfänglichen Bedingungen wie der Codegröße arbeiten. Die oben beschriebene Kompressor- und Dekompressorausführungsform kann ohne weiteres mit Wörterbüchern verwendet werden, die entweder nicht initialisiert oder mit allen Einzelzeichen-Strings initialisiert werden. Wie oben beschrieben, können einzelne Zeichen von den komprimierten Codes über die jeweiligen Codes davon unterschieden werden. Die einzelnen Zeichen können durch die Werte der Zeichen selbst oder durch irgendein anderes gut bekanntes Codierungsschema dargestellt werden. Das Einzelzeichen-Protokoll, das im Kompressor verwendet wird, sollte auch im Dekompressor verwendet werden.
  • Es wird geschätzt sein, dass die Eingabe an den Kompressor in einem Alphabet irgendeiner beliebigen Größe erfolgen kann, das irgendeine entsprechende Zeichenbitgröße hat. Zum Beispiel können die Datenzeichen textlich beispielsweise ASCII-Zeichen sein, und zwar in einem Alphabet wie beispielsweise dem 256 Zeichen ASCII-Alphabet von 8-Bit Zeichen. Die Eingabedaten können auch Binärzeichen im Zwei-Zeichen Binäralphabet 1 und 0 sein, das ein 1 Bit großes Zeichen hat. Es wird geschätzt sein, dass die Textdaten auch im Zwei-Zeichen-Alphabet der zugrunde liegenden Binärdaten komprimiert werden können.
  • Es wird geschätzt sein, dass die oben beschriebene Ausführungsform der Erfindung in Hardware, Firmware, Software oder einer Kombination davon implementiert sein kann. Diskrete Schaltkomponenten können ohne weiteres für die Durchführung der verschiedenen beschriebenen Funktionen implementiert werden. In einer Software-Ausführungsform können passende Module, die mit der von den oben beschriebenen Flussdiagrammen erzeugten Codierung ohne weiteres programmiert werden, verwendet werden.
  • Obwohl die Erfindung in ihren bevorzugten Ausführungsformen beschrieben wurde, sollte es klar sein, dass die Worte, die verwendet wurden, beschreibende Worte und nicht einschränkende Worte sind, und dass Änderungen innerhalb des Schutzbereichs der anliegenden Ansprüche vorgenommen werden können, ohne sich vom Schutzumfang, wie in den anliegenden Ansprüchen definiert, zu lösen.
  • Wenn technische Merkmale in den Ansprüchen mit Bezugszeichen versehen sind, so sind diese Bezugszeichen lediglich zum besseren Verständnis der Ansprüche vorhanden. Dementsprechend stellen solche Bezugszeichen keine Einschränkungen des Schutzumfangs solcher Elemente dar, die nur exemplarisch durch solche Bezugszeichen gekennzeichnet sind.

Claims (28)

  1. Ein Datenkomprimierungsverfahren zur Komprimierung eines Eingabestroms von Datenzeichen in einen Ausgabestrom von komprimierten Codes, wobei das Verfahren einen LZW-Datenkomprimierungsvorgang einschließt, wobei der LZW-Datenkomprimierungsvorgang das Speichern von Strings von Datenzeichen, das Zuweisen entsprechender Codes zu den gespeicherten Strings von einem Codezähler, und das Inkrementieren des Codezählers für jeden der gespeicherten Strings einschließt, wobei der Verfahren folgendes umfasst: das Detektieren, wenn ein Lauf von Datenzeichen in dem Eingabestrom stattfindet, durch das Detektieren, wenn eine vorbestimmte Anzahl von angrenzenden Datenzeichen des Eingabestroms in Bezug zueinander gleich sind, das Zählen von Datenzeichen in dem detektierten Lauf, um einen Laufzählwert bereitzustellen, das Bereitstellen eines modifizierten Codes durch Kombinierung des existierenden Codes in dem Codezähler mit dem Laufzählwert, die Nutzung des LZW-Datenkomprimierungsvorgangs zur Komprimierung des Eingabestroms, wenn darin kein Lauf stattfindet, durch den Vergleich des Eingabestroms mit den gespeicherten Strings, um die längsten Übereinstimmungen damit zu bestimmen, und die Bereitstellung der dazu zugewiesenen Codes, wodurch die LZW-komprimierten Codes bereitgestellt werden, und die Ausgabe des modifizierten Codes und der LZW-komprimierten Codes, so dass der Ausgabestrom bereitgestellt wird.
  2. Das Verfahren nach Anspruch 1, worin der Schritt der Bereitstellung die Bereitstellung des modifizierten Codes umfasst, so dass, wenn der modifizierte Code durch einen LZW-Datendekomprimierungsvorgang empfangen wird, der Laufzählwert wiedergewonnen werden kann durch die Kombinierung des empfangenen modifizierten Codes mit dem existierenden Code in dem Codezähler, der im LZW-Datendekomprimierungsvorgang verwendet wird, oder worin der Schritt der Ausgabe außerdem die Ausgabe des Datenzeichens des detektierten Laufs vor dem modifizierten Code umfasst.
  3. Das Verfahren nach Anspruch 1, worin die Schritte des Detektierens, wenn ein Lauf von Datenzeichen stattfindet, des Zählens von Datenzeichen in dem detektierten Lauf, des Bereitstellens eines modifizierten Codes und der Ausgabe des modifizierten Codes die Verarbeitung des Laufs umfassen, der Schritt der Speicherung des LZW-Datenkomprimierungsvorgangs die Speicherung von erweiterten Strings umfasst, von denen jeder eine längste Übereinstimmung umfasst, erweitert durch das nächste folgende Datenzeichen in dem Eingabestrom, wobei des Verfahren weiterhin folgendes einschließt: die Durchführung der Laufverarbeitung während des Schritts der Nutzung des LZW-Datenkomprimierungsvorgangs nach der Bestimmung einer längsten Übereinstimmung, die Speicherung des erweiterten Strings, der dazu entspricht, und die Bereitstellung des Codes, der der längsten Übereinstimmung zugewiesen wurde.
  4. Das Verfahren nach Anspruch 2, erste Alternative, worin der Schritt der Bereitstellung eines modifizierten Codes die Bereitstellung des modifizierten Codes durch Addieren des Laufzählwerts zum existierenden Code in dem Codezähler des LZW-Datenkomprimierungsvorgangs umfasst, worin vorzugsweise der Laufzählwert wiedergewonnen wird durch Subtraktion des existierenden Codes in dem Codezähler des LZW-Datendekomprimierungsvorgangs von dem empfangenen modifizierten Code.
  5. Das Verfahren nach Anspruch 1, das außerdem folgende Schritte umfasst: die Bereitstellung eines reduzierten Zählwerts durch Reduzierung des Laufzählwerts auf weniger als eine vorbestimmte Zahl durch Nutzung eines ausgewählten vorbestimmten Vorgangs, die Bereitstellung eines reservierten Codes, der dem ausgewählten vorbestimmten Vorgang entspricht, und die Ausgabe des reservierten Codes, des reduzierten Zählwerts und der LZW-komprimierten Codes zur Bereitstellung des Ausgabestroms.
  6. Das Verfahren nach Anspruch 5, worin die Schritte der Bereitstellung des reduzierten Zählwerts und des reservierten Codes die Bereitstellung des reservierten Codes und des reduzierten Zählwerts umfassen, so dass, wenn der reservierte Code und der reduzierte Zählwert von einem LZW-Datendekomprimierungsvorgang empfangen werden, der Laufzählwert durch das Erhöhen des empfangenen reduzierten Zählwerts durch Verwendung der Inversen des ausgewählten vorbestimmten Vorgangs wiedergewonnen werden kann; oder worin der Schritt der Ausgabe die Ausgabe des Datenzeichens des detektierten Laufs vor dem reservierten Code umfasst.
  7. Das Verfahren nach Anspruch 5, worin die Schritte des Detektierees, wenn ein Lauf von Datenzeichen stattfindet, des Zählens von Datenzeichen im detektierten Lauf, des Bereitstellens eines reduzierten Zählwerts, des Bereitstellens eines reservierten Codes und der Ausgabe des reservierten Codes und des reduzierten Zählwerts die Laufverarbeitung umfassen, der Speicherungsschritt des LZW-Datenkomprimierungsvorgangs die Speicherung von erweiterten Strings umfasst, von denen jeder eine längste Übereinstimmung umfasst, erweitert um das nächste folgende Datenzeichen in dem Eingabestrom, wobei des Verfahren weiterhin folgendes einschließt: die Durchführung der Laufverarbeitung während des Schrittes der Nutzung des LZW-Datenkomprimierungsvorgangs nach der Bestimmung einer längsten Übereinstimmung, die Speicherung des erweiterten Strings, der dazu entspricht, und die Bereitstellung des Codes, der der längsten Übereinstimmung zugewiesen wurde.
  8. Das Verfahren nach Anspruch 6, erste Alternative, worin der ausgewählte vorbestimmte Vorgang die Subtraktion einer vorbestimmten Konstante vom Laufzählwert umfasst, so dass der Laufzählwert auf weniger als die vorbestimmte Zahl reduziert wird, wobei der reservierte Code der vorbestimmten Konstante entspricht, worin vorzugsweise der Laufzählwert durch die Addition der vorbestimmten Konstante, die dem empfangenen reservierten Code entspricht, zum empfangenen reduzierten Zählwert wiedergewonnen wird.
  9. Das Verfahren der Ansprüche 3 oder 7, worin der LZW-Datenkomprimierungsvorgang die längste Übereinstimmung bestimmt, indem er das nächste folgende Datenzeichen im Eingabestrom abruft, was zu einer Nicht-Übereinstimmung mit den gespeicherten Strings führt, wobei das abgerufene Eingabe-Datenzeichen ein nichtübereinstimmendes Zeichen ist, wobei der Durchführungsschritt weiterhin die Durchführung der Laufverarbeitung umfasst, beginnend mit dem nichtübereinstimmenden Zeichen, und wobei der Bestimmungsschritt weiterhin das Detektieren umfasst, wenn der Lauf stattfindet, durch das Detektieren, wenn die vorbestimmte Anzahl von angrenzenden Datenzeichen gleich sind mit dem nichtübereinstimmenden Zeichen, worin vorzugsweise der Schritt der Ausgabe weiterhin die Ausgabe des Datenzeichens des detektierten Laufs vor dem modifizierten oder reservierten Code umfasst, wobei das Datenzeichen des detektierten Laufs das nichtübereinstimmende Zeichen umfasst.
  10. Ein Datendekomprimierungsverfahren zur Dekomprimierung eines Eingabestroms komprimierter Codes zur Wiedergewinnung eines Ausgabestroms von Datenzeichen, die dazu entsprechen, wobei des Verfahren einen LZW-Datendekomprimierungsvorgang einschließt, wobei der LZW-Datendekomprimierungsvorgang folgendes einschließt: das Speichern von Strings von Datenzeichen, die Zuweisung von jeweiligen Codes zu den gespeicherten Strings von einem Codezähler und das Inkrementieren des Codezählers für jeden der gespeicherten Strings, wobei des Verfahren folgendes umfasst: den Vergleich eines empfangenen Eingabe-komprimierten Codes mit dem existierenden Code im dem Codezähler, um zu Detektieren, ob der empfangene Eingabe-komprimierte Code einen Lauf zählwert darstellt, die Wiedergewinnung des Laufzählwerts durch die Kombinierung des empfangenen Eingabe-komprimierten Codes mit dem existierenden Code in dem Codezähler, die wiederholte Bereitstellung des Datenzeichens, das durch den komprimierten Code dargestellt wird, der vor dem empfangenen Eingabe-komprimierten Code empfangen wurde, wobei des Datenzeichen wiederholt eine Anzahl von Malen bereitgestellt wird, die dem wiedergewonnenen Laufzählwert entspricht, wodurch ein wiedergewonnener Lauf bereitgestellt wird, die Nutzung des LZW-Datendekomprimierungsvorgangs zur Bereitstellung der gespeicherten Strings, die den empfangenen komprimierten Codes entsprechen, wenn die empfangenen komprimierten Codes keine Laufzählwerte bezeichnen, wodurch LZW-wiedergewonnene Strings bereitgestellt werden, und die Ausgabe des wiedergewonnenen Laufs und der LZW-wiedergewonnenen Strings, um den Ausgabestrom bereitzustellen.
  11. Das Verfahren nach Anspruch 10, worin der Vergleichsschritt den Vergleich des empfangenen Eingabe-komprimierten Codes mit dem existierenden Code in dem Codezähler umfasst, zur Bestimmung, ob der empfangene Eingabe-komprimierte Code größer ist als der existierende Code in dem Codezähler, wodurch bestimmt wird, dass der empfangene Eingabe-komprimierte Code einen Laufzählwert darstellt; oder worin der Wiedergewinnungsschritt die Wiedergewinnung des Laufzählwerts durch Subtraktion des existierenden Codes in dem Codezähler vom empfangenen Eingabe-komprimierten Code umfasst, wodurch der wiedergewonnene Laufzählwert bereitgestellt wird; oder worin die Schritte des Vergleichens eines empfangenen Eingabekomprimierten Codes, der Wiedergewinnung des Laufzählwerts, der wiederholten Bereitstellung des Datenzeichens und der Ausgabe des wiedergewonnenen Laufs die Laufverarbeitung umfassen, wobei der LZW-Datendekomprimierungsvorgang einen anfänglichen Verarbeitungspunkt einschließt, an dem ein erster komprimierter Code abgerufen wird, wobei des Verfahren außerdem die Rückkehr zum anfänglichen Verarbeitungspunkt nach Durchführung der Laufverarbeitung einschließt.
  12. Das Verfahren nach Anspruch 10, das außerdem folgendes umfasst: das Bestimmen, ob ein empfangener Eingabe-komprimierter Code einem reservierten Code gleich ist, wobei der reservierte Code bezeichnet, dass ein Laufzählwert folgen wird, der durch einen ausgewählten vorbestimmten Vorgang reduziert wurde, der dem empfangenen reservierten Code entspricht, das Abrufen des reduzierten Laufzählwerts, die Wiedergewinnung des Laufzählwerts durch die Erhöhung des abgerufenen reduzierten Laufzählwerts durch Verwendung der Inversen des ausgewählten vorbestimmten Vorgangs entsprechend dem empfangenen reservierten Code, und die wiederholte Bereitstellung des Datenzeichens, das durch den komprimierten Code dargestellt wird, der vor dem empfangenen reservierten Code empfangen wurde, wobei das Datenzeichen wiederholt eine Anzahl von Malen bereitgestellt wird, die dem wiedergewonnenen Laufzählwert entspricht, wodurch ein wiedergewonnener Lauf bereitgestellt wird.
  13. Das Verfahren nach Anspruch 12, worin der ausgewählte vorbestimmte Vorgang die Subtraktion einer vorbestimmten Konstante umfasst, die dem reservierten Code von dem Laufzählwert entspricht, wodurch der reduzierte Laufzählwert bereitgestellt wird; und/oder worin der Wiedergewinnungsschritt die Wiedergewinnung des Laufzählwerts durch die Addition der vorbestimmten Konstante umfasst, die dem empfangenen reservierten Code entspricht, zum abgerufenen reduzierten Laufzählwert; oder worin die Schritte der Bestimmung, ob ein empfangener Eingabekomprimierter Code gleich einem reservierten Code ist, des Abrufens des reduzierten Laufzählwerts, der Wiedergewinnung des Laufzählwerts, des wiederholten Bereitstellens des Datenzeichens und der Ausgabe des wiedergewonnenen Laufs die Laufverarbeitung umfassen, wobei der LZW-Datendekomprimierungsvorgang einen anfänglichen Verarbeitungspunkt einschließt, an dem ein erster komprimierter Code abgerufen wird, wobei des Verfahren weiterhin die Rückkehr zum anfänglichen Verarbeitungspunkt nach Durchführung der Laufverarbeitung einschließt.
  14. Das Verfahren der Ansprüche 10 oder 12, worin der Speicherungsschritt des LZW-Datendekomprimierungsvorgangs die Speicherung der erweiterten Strings umfasst, wobei der Speicherungsschritt das Speichern eines erweiterten Strings einschließt, der durch das Datenzeichen erweitert wird, das durch den vorher empfangenen komprimierten Code dargestellt wird.
  15. Datenkomprimierungsgerät zur Komprimierung eines Eingabestroms von Datenzeichen in einen Ausgabestrom von komprimierten Codes, wobei das Gerät einen LZW-Datenkompressor einschließt, wobei der LZW-Datenkompressor ein Mittel einschließt zum Speichern von Strings von Datenzeichen, einen Codezähler zur Zuweisung von jeweiligen Codes an die gespeicherten Strings und ein Mittel zum Inkrementieren des Codezählers für jeden der gespeicherten Strings, wobei das Gerät folgendes umfasst: ein Mittel zur Detektierung, wenn ein Lauf von Datenzeichen in dem Eingabestrom auftritt, indem detektiert wird, wenn eine vorbestimmte Anzahl von angrenzenden Datenzeichen des Eingabestroms gleich im Bezug zueinander sind, ein Mittel zum Zählen der Datenzeichen in dem detektierten Lauf, um eine Laufzählung bereitzustellen, ein Mittel zur Bereitstellung eines modifizierten Codes, indem der existierende Code in dem Codezähler mit dem Laufzählwert kombiniert wird, worin der LZW-Datenkompressor wirksam ist, um den Eingabestrom zu komprimieren, wenn ein Lauf darin nicht auftritt, indem der Eingabestrom mit den gespeicherten Strings verglichen wird, um die längsten Übereinstimmungen damit zu bestimmen und um die dazu zugewiesenen Codes bereitzustellen, wodurch LZWkomprimierte Codes bereitgestellt werden, und ein Mittel zur Ausgabe des modifizierten Codes und der LZW-komprimierten Codes, um den Ausgabestrom bereitzustellen.
  16. Das Gerät nach Anspruch 15, worin das Mittel zur Bereitstellung eim Mittel umfasst, um den modifizierten Code bereitzustellen, so dass, wenn der modifizierte Code durch einen LZW-Datendekompressor empfangen wird der Laufzählwert wiedergewonnen werden kann, indem der empfangene modifizierte Code mit dem existierenden Code in dem Codezähler in dem LZW-Datendekompressor kombiniert wird; oder worin das Mittel zum Ausgeben weiterhin ein Mittel umfasst zum Ausgeben des Datenzeichens des detektierten Laufs vor dem modifizierten Code.
  17. Das Gerät nach Anspruch 15, worin das Mittel für die Detektierung, wenn ein Lauf von Datenzeichen auftritt, das Mittel zum Zählen von Datenzeichen in dem detektieren Lauf, das Mittel zur Bereitstellung eines modifizierten Codes und das Mittel zur Ausgabe des modifizierten Codes ein Mittel umfasst zur Durchführung der Laufverarbeitung, wobei das Mittel zur Speicherung, das in dem LZW-Datenkompressor eingeschlossen ist, ein Mittel umfasst zur Speicherung der erweiterten Strings, wobei jeder eine längste Übereinstimmung umfasst, die durch das nächste folgende Datenzeichen in dem Eingabestrom erweitert wird, wobei das Mittel zur Durchführung wirksam ist, um die Laufverarbeitung durchzuführen, nachdem der LZW-Datenkompressor eine längste Übereinstimmung bestimmt, den dazu entsprechenden erweiterten String speichert und den der längsten Übereinstimmung zugewiesenen Code bereitstellt.
  18. Das Gerät nach Anspruch 16, erste Alternative, worin das Mittel zur Bereitstellung eines modifizierten Codes ein Mittel umfasst zur Bereitstellung des modifizierten Codes, indem der Laufzählwert an den existierenden Code in dem Codezähler des LZW-Datenkompressors hinzuaddiert wird, worin vorzugsweise der Laufzählwert wiedergewonnen wird, indem der existierende Code in dem Codezähler des LZW-Datendekompressors von dem empfangenen modifizierten Code subtrahiert wird.
  19. Das Gerät nach Anspruch 15, das weiterhin folgendes umfasst: ein Mittel zur Bereitstellung eines reduziertem Zählwerts, indem der Lauf zählwert auf weniger als eine vorbestimmte Zahl reduziert wird, indem ein ausgewählter vorbestimmter Vorgang verwendet wird, ein Mittel zur Bereitstellung eines reservierten Codes, der dem ausgewählten vorbestimmten Vorgang entspricht, und ein Mittel zur Ausgabe des reservierten Codes, des reduzierten Zählwerts und des LZW-komprimierten Codes, so dass der Ausgabestrom bereitgestellt wird.
  20. Das Gerät nach Anspruch 19, worin das Mittel zur Bereitstellung ein Mittel zur Bereitstellung des reservierten Codes und des reduzierten Zählwerts umfasst, so dass, wenn der reservierte Code und der reduzierte Zählwert von einem LZW-Datendekompressor empfangen werden, der Lauf zählwert wiedergewonnen werden kann, indem der empfangene reduzierte Zählwert erhöht wird, indem das Inverse des ausgewählten vorbestimmten Vorgangs verwendet wird; oder worin das Mittel zur Ausgabe ein Mittel umfasst zur Ausgabe des Datenzeichens des detektierten Laufes vor dem reservierten Code.
  21. Das Gerät nach Anspruch 19, worin das Mittel zum Detektieren, wenn ein Lauf von Datenzeichen auftritt, das Mittel zum Zählen von Datenzeichen in dem detektierten Lauf, das Mittel zur Bereitstellung eines reduzierten Zählwerts, das Mittel zur Bereitstellung eines reservierten Codes und das Mittel zur Ausgabe des reservierten Codes und des reduzierten Zählwerts ein Mittel zur Durchführung der Laufverarbeitung umfasst, wobei das Mittel zur Speicherung, das in dem LZW-Datenkompressor eingeschlossen ist, ein Mittel umfasst zur Speicherung von erweiterten Strings, wobei jeder eine längste Übereinstimmung umfasst, die durch das nächste folgende Datenzeichen in dem Eingabestrom erweitert wird, wobei das Mittel zur Durchführung wirksam ist, um die Lauf verarbeitung durchzuführen, nachdem der LZW-Datenkompressor eine längste Übereinstimmung bestimmt, den dazu entsprechenden erweiterten String speichert, und den Code bereitstellt, der der längsten Übereinstimmung zugewiesen wird.
  22. Das Gerät nach Anspruch 20, erste Alternative, worin der ausgewählte vorbestimmte Vorgang folgendes umfasst: das Subtrahieren einer vorbestimmten Konstante von dem Laufzählwert, so dass der Laufzählwert auf weniger als die vorbestimmte Zahl reduziert wird, wobei der reservierte Code der vorbestimmten Konstante entspricht, worin vorzugsweise der Zählwert wiedergewonnen wird, indem die vorbestimmte Konstante, die dem empfangenen reservierten Code entspricht, dem empfangenen reduzierten Zählwert hinzuaddiert wird.
  23. Das Gerät nach Ansprüchen 17 oder 21, worin der LZW-Datenkompressor wirksam ist, um die längste Übereinstimmung zu bestimmen, indem das nächste folgende Datenzeichen in dem Eingabestrom abgerufen wird, was zu einer Nicht-Übereinstimmung mit den gespeicherten Strings führt, worin das abgerufene Eingabedatenzeichen ein nichtübereinstimmendes Zeichen ist, wobei das Mittel zum Durchführen weiterhin ein Mittel umfasst zum Durchführen der Laufverarbeitung anfangend mit dem nichtübereinstimmenden Zeichen, und worin das Mittel zur Detektierung weiterhin ein Mittel umfasst zum Detektieren, wenn der Lauf auftritt, indem detektiert wird, wenn die vorbestimmte Anzahl von angrenzenden Datenzeichen dieselben wie das nichtübereinstimmende Zeichen sind, worin vorzugsweise das Mittel zum Ausgeben weiterhin ein Mittel umfasst zum Ausgeben des Datenzeichens des detektierten Laufs, vor dem modifizierten oder reservierten Code, wobei das Datenzeichen des detektierten Laufs das nichtübereinstimmende Zeichen umfasst.
  24. Datendekomprimierungsgerät zur Dekomprimierung eines Eingabestroms von komprimierten Codes, um einen Ausgabestrom von Datenzeichen, die dazu entsprechen, wieder zu gewinnen, worin das Gerät einen LZW-Datendekompressor einschließt, wobei der LZW-Datendekompressor ein Mittel zum Speichern von Strings von Datenzeichen einschließt, einem Codezähler für die Zuweisung von jeweiligen Codes an die gespeicherten Strings und ein Mittel zum Inkrementieren des Codezählers für jeden der gespeicherten Strings, worin das Gerät folgendes umfasst: ein Mittel zum vergleichen eines empfangenen Eingabekomprimierten Code mit dem existierenden Code in dem Codezähler, um zu bestimmen, ob der empfangene Eingabe-komprimierte Code einen Laufzählwert darstellt, ein Mittel zur Wiedergewinnung des Laufzählwerts, indem der empfangene Eingabe-komprimierte Code mit dem existierenden Code in dem Codezähler kombiniert wird, ein Mittel zur wiederholten Bereitstellung des Datenzeichens, das durch den komprimierten Code dargestellt wird, der vor dem empfangenen Eingabe-komprimierter Code empfangen wird, wobei das Datenzeichen wiederholt eine Anzahl von Malen bereitgestellt wird, die dem wiedergewonnenen Laufzählwert entspricht, wodurch ein wiedergewonnener Lauf bereitgestellt wird, wobei der LZW-Datendekompressor wirksam ist, um die gespeicherten Strings bereitzustellen, die den empfangenen komprimierten Codes entsprechen, wenn die empfangenen komprimierten Codes keine Laufzählwerte bezeichnen, wodurch LZW-wiedergewonnene Strings bereitgestellt werden, ein Mittel zur Bereitstellung des wiedergewonnenen Laufs und der LZW-wiedergewonnenen Strings, um den Ausgabestrom bereitzustellen.
  25. Das Gerät nach Anspruch 24, worin das Mittel zum vergleichen ein Mittel umfasst zum vergleichen des empfangenen Eingabe-komprimierten Codes mit dem existierenden Code in dem Codezähler, um zu bestimmen, ob der empfangene Eingabekomprimierte Code größer als der existierende Code in dem Codezähler ist, wodurch bestimmt wird, dass der empfangene Eingabekomprimierte Code einen Laufzählwert darstellt; oder worin das Mittel zur Wiedergewinnung ein Mittel umfasst zur Wiedergewinnung des Laufzählwerts, indem der existierende Code in dem Codezähler von dem empfangenen Eingabe-komprimierten Code subtrahiert wird, wodurch der wiedergewonnene Laufzählwert bereitgestellt wird; oder worin das Mittel zum Vergleichen eines empfangenen Eingabekomprimierten Codes, das Mittel zur Wiedergewinnung des Laufzählwerts, das Mittel zur wiederholten Bereitstellung des Datenzeichens und das Mittel zum Ausgeben des wiedergewonnenen Laufs ein Mittel zur Durchführung der Laufverarbeitung umfasst, wobei der LZW-Datendekompressor wirksam ist, um einen anfänglichen Verarbeitungspunkt einzuschließen, an dem ein erster komprimierter Code abgerufen wird, worin das Gerät weiterhin ein Mittel einschließt für die Rückkehr zum anfänglichen Verarbeitungspunkt nach der Durchführung der Laufverarbeitung.
  26. Das Gerät nach Anspruch 24, das weiterhin folgendes umfasst: ein Mittel zur Bestimmung, ob ein empfangener Eingabekomprimierter Code gleich mit einem reservierten Code ist, wobei der reservierte Code bezeichnet, dass ein Laufzählwert folgen wird, der durch einen ausgewählten vorbestimmten Vorgang reduziert wurde, der dem empfangenen reservierten Code entspricht, ein Mittel zum Abrufen des reduzierten Laufzählwerts, ein Mittel zur Wiedergewinnung des Laufzählwerts, indem der abgerufene reduzierte Laufzählwert erhöht wird, indem die Inverse des ausgewählten vorbestimmten Vorganges verwendet wird, der dem empfangenen reservierten Code entspricht, und ein Mittel zur wiederholten Bereitstellung des Datenzeichens, das durch den komprimierten Code dargestellt wird, der vor dem empfangenen reservierten Code empfangen wird, wobei das Datenzeichen wiederholt eine Anzahl von Malen bereitgestellt wird, die dem wiedergewonnenen Laufzählwert entspricht, wodurch ein wiedergewonnener Lauf bereitgestellt wird.
  27. Das Gerät nach Anspruch 26, worin der ausgewählte vorbestimmte Vorgang die Subtaktion einer vorbestimmten Konstante umfasst, die dem reservierten Code von dem Laufzählwert entspricht, wodurch der reduzierte Laufzählwert bereitgestellt wird; oder worin das Mittel zur Wiedergewinnung ein Mittel umfasst zur Wiedergewinnung des Laufzählwerts, indem die vorbestimmte Konstante, die den empfangenen reservierten Code entspricht, dem abgerufenen reduzierten Laufzielwert hinzuaddiert wird; oder worin das Mittel zur Bestimmung, ob ein empfangener Eingabekomprimierter Code gleich mit einem reservierten Code ist, das Mittel zum Abrufen des reduzierten Laufzählwerts, das Mittel zur Wiedergewinnung des Laufzählwerts, das Mittel zur wiederholten Bereitstellung des Datenzeichens und das Mittel zur Ausgabe des wiedergewonnenen Laufes ein Mittel zur Durchführung der Laufverarbeitung umfasst, wobei der LZW-Datendekompressor wirksam ist, um einen anfänglichen Verarbeitungspunkt einzuschließen, an dem ein erster komprimierter Code abgerufen wird, wobei das Gerät weiterhin ein Mittel für die Rückkehr zum anfänglichen Verarbeitungspunkt nach der Durchführung der Laufverarbeitung einschließt.
  28. Das Gerät der Ansprüche 24 oder 26, worin das Mittel zum Speichern, das in dem LZW-Datendekompressor eingeschlossen ist, ein Mittel zur Speicherung von erweiterten Strings umfasst, wobei das Mittel zur Speicherung ein Mittel zur Speicherung eines erweiterten Strings umfasst, der durch das Datenzeichen erweitert wird, das durch den vorher empfangenen komprimierten Code dargestellt ist.
DE60009502T 1999-06-19 2000-06-15 Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung Expired - Lifetime DE60009502T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US336219 1999-06-19
US09/336,219 US6169499B1 (en) 1999-06-19 1999-06-19 LZW data compression/decompression apparatus and method with embedded run-length encoding/decoding
PCT/US2000/016509 WO2000079687A1 (en) 1999-06-19 2000-06-15 Lzw data compression/decompression apparatus and method with embedded run-length encoding/decoding

Publications (2)

Publication Number Publication Date
DE60009502D1 DE60009502D1 (de) 2004-05-06
DE60009502T2 true DE60009502T2 (de) 2005-04-14

Family

ID=23315088

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60009502T Expired - Lifetime DE60009502T2 (de) 1999-06-19 2000-06-15 Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung

Country Status (7)

Country Link
US (1) US6169499B1 (de)
EP (1) EP1195010B1 (de)
JP (1) JP2003502930A (de)
AU (1) AU5874900A (de)
CA (1) CA2374389C (de)
DE (1) DE60009502T2 (de)
WO (1) WO2000079687A1 (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6216175B1 (en) * 1998-06-08 2001-04-10 Microsoft Corporation Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6188333B1 (en) * 1999-08-12 2001-02-13 Unisys Corporation LZW data compression apparatus and method using look-ahead mathematical run processing
GB0001707D0 (en) * 2000-01-25 2000-03-15 Btg Int Ltd Data compression having more effective compression
US20010047473A1 (en) 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US6307488B1 (en) * 2000-05-04 2001-10-23 Unisys Corporation LZW data compression and decompression apparatus and method using grouped data characters to reduce dictionary accesses
US6968012B1 (en) 2000-10-02 2005-11-22 Firepad, Inc. Methods for encoding digital video for decoding on low performance devices
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6426711B1 (en) * 2001-05-14 2002-07-30 Unisys Corporation Character table implemented data compression method and apparatus
US20030088537A1 (en) * 2001-08-08 2003-05-08 Nec Eluminant Technologies, Inc. High speed data compression and decompression apparatus and method
US6466144B1 (en) * 2001-11-30 2002-10-15 Unisys Corporation Data decompressor for use with a data compressor implemented with limited length character tables and compact string codes
KR100532275B1 (ko) * 2002-12-11 2005-11-29 삼성전자주식회사 이미지 압축방법
US6756923B1 (en) * 2003-05-30 2004-06-29 Unisys Corporation Data compressor utilizing switched input coincidence elements arranged in virtual levels
CN106549672B (zh) * 2016-10-31 2019-07-12 合肥移顺信息技术有限公司 一种加速度传感器的三轴数据压缩方法
CN109857463B (zh) * 2019-01-30 2020-12-01 上海兆芯集成电路有限公司 加速压缩方法以及加速压缩装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558302A (en) 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
US4929946A (en) 1989-02-09 1990-05-29 Storage Technology Corporation Adaptive data compression apparatus including run length encoding for a tape drive system
US4971407A (en) 1989-08-09 1990-11-20 Unisys Corp. Two stage run and string data compressor providing doubly compressed output
US4988998A (en) 1989-09-05 1991-01-29 Storage Technology Corporation Data compression system for successively applying at least two data compression methods to an input data stream
US5247638A (en) 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
US5389922A (en) 1993-04-13 1995-02-14 Hewlett-Packard Company Compression using small dictionaries with applications to network packets
GB2301252A (en) * 1995-05-23 1996-11-27 Ibm Run length data compression
US5861827A (en) 1996-07-24 1999-01-19 Unisys Corporation Data compression and decompression system with immediate dictionary updating interleaved with string search

Also Published As

Publication number Publication date
WO2000079687A1 (en) 2000-12-28
JP2003502930A (ja) 2003-01-21
CA2374389C (en) 2005-09-20
DE60009502D1 (de) 2004-05-06
US6169499B1 (en) 2001-01-02
AU5874900A (en) 2001-01-09
EP1195010B1 (de) 2004-03-31
CA2374389A1 (en) 2000-12-28
EP1195010A1 (de) 2002-04-10

Similar Documents

Publication Publication Date Title
DE60009502T2 (de) Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung
DE69704362T2 (de) Datenkompressions-/dekompressionssystem anhand sofortiger zeichenfolgensucheverschachtelter wörterbuchaktualisierung
DE3606869C2 (de) Vorrichtung zur Datenkompression
DE69027606T2 (de) Vorrichtung zur datenkompression
DE68924138T2 (de) Daten-kompressions/dekompressionsanordnung.
DE69023329T2 (de) Vorrichtung zur adaptiven datenkompression für ein bandantriebssystem.
DE69706439T2 (de) Rechnersortiersystem zur datenkompression
DE69024629T2 (de) Vorrichtung zur kompression von datenlängen und datenfolgen
DE69508796T2 (de) Lzw datenkomprimierung mit einem assoziativspeicer
DE2264090C3 (de) Datenverdichtung
DE69905343T2 (de) Blockweiser adaptiver statistischer datenkompressor
DE69322023T2 (de) Verfahren zur anpassungsfähigen Datenkompression zur Speicherminimierung
DE60000912T2 (de) Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen unter Verwendung von paketweisen Hash Tabellen
DE3711200C2 (de)
DE3887627T2 (de) Effizienzabhängige Rücksetzung eines Datenkomprimierungswörterbuches.
DE69224782T2 (de) Erhöhung der Leistungsfähigkeit beim Rücksetzten von Wörterbüchern für Datenkompressionsanwendungen
DE2139731C2 (de) Anordnung zur Code-Umsetzung
DE69802520T2 (de) Verfahren und vorrichtung zur verlustfreien datenkompression
DE69424229T2 (de) Datenkomprimierungsvorrichtung
DE2614916A1 (de) Konverter zur codeumwandlung
DE60002218T2 (de) Lzw datenkomprimierungsgerät und -verfahren, mit anwendung von mathematischer vorhersage von lauflängenverarbeitung
DE3030255A1 (de) Verfahren zur uebermittlung von woertern und nachrichtenuebertragungssystem zu seiner durchfuehrung
DE69607529T2 (de) Kodierung von videofarbbildern
DE69432072T2 (de) Datenkompression
DE1964570B2 (de) Verfahren zum wiederauffinden gespeicherter informationen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition