DE69432072T2 - Datenkompression - Google Patents
DatenkompressionInfo
- Publication number
- DE69432072T2 DE69432072T2 DE69432072T DE69432072T DE69432072T2 DE 69432072 T2 DE69432072 T2 DE 69432072T2 DE 69432072 T DE69432072 T DE 69432072T DE 69432072 T DE69432072 T DE 69432072T DE 69432072 T2 DE69432072 T2 DE 69432072T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- sample
- value
- data sample
- stream
- 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
Links
- 238000013144 data compression Methods 0.000 title description 3
- 238000000034 method Methods 0.000 claims description 25
- 239000003550 marker Substances 0.000 claims description 23
- 238000007906 compression Methods 0.000 claims description 19
- 230000006835 compression Effects 0.000 claims description 19
- 230000006837 decompression Effects 0.000 claims description 19
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims description 4
- 238000011084 recovery Methods 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 2
- 230000005236 sound signal Effects 0.000 description 21
- 241001125929 Trisopterus luscus Species 0.000 description 13
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00007—Time or data compression or expansion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B14/00—Transmission systems not characterised by the medium used for transmission
- H04B14/02—Transmission systems not characterised by the medium used for transmission characterised by the use of pulse modulation
- H04B14/06—Transmission systems not characterised by the medium used for transmission characterised by the use of pulse modulation using differential modulation, e.g. delta modulation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B14/00—Transmission systems not characterised by the medium used for transmission
- H04B14/02—Transmission systems not characterised by the medium used for transmission characterised by the use of pulse modulation
- H04B14/06—Transmission systems not characterised by the medium used for transmission characterised by the use of pulse modulation using differential modulation, e.g. delta modulation
- H04B14/066—Transmission systems not characterised by the medium used for transmission characterised by the use of pulse modulation using differential modulation, e.g. delta modulation using differential modulation with several bits [NDPCM]
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
- Diese Erfindung betrifft allgemein die Verarbeitung von digitalisierten Signalen und insbesondere Rechnersysteme, die codierte digitale Daten wie zum Beispiel pulscodemodulierte (PCM-)Audiosignale komprimieren und dekomprimieren.
- Im letzten Jahrzehnt haben in der Datenverarbeitung bahnbrechende Entwicklungen stattgefunden. Durch das Aufkommen und die rasche Verbreitung von Personal Computern hat sich die ehemals stark zentralisierte und streng kontrollierte Datenverarbeitungsumgebung in eine weit verteilte und leicht zugängliche Umgebung gewandelt. Eine beträchtliche Erweiterung von Datenverarbeitungsanwendungen ist eine Begleitetscheinung dieser sich verändernden Datenverarbeitungsumgebung. In der Vergangenheit haben Rechner in erster Linie Rechen-, Datenreduktions- und Datenbankverwaltungsfunktionen bereitgestellt. Heute stellen sie zudem Sprachmeldungen, Spiele und Multimediaanwendungen wie zum Beispiel Geschäftspräsentationen bereit. Während den älteren Anwendungen Rechnung getragen werden konnte, indem nur Daten vom Typ Text verwendet wurden, benötigen die neueren Anwendungen auch grafische und Audiodaten.
- Grafische und - für diese Erfindung von größerer Relevanz - Audiosignale nehmen eine beträchtliche Menge an Speicherkapazität in Anspruch. Das Wort "Hand" beispielsweise würde 4 Byte in Anspruch nehmen, 1 Byte für jeden Buchstaben, um es als Text zu speichern. Andererseits beträgt die für Eine digitale Audioversion von "Hand" benötigte Speicherkapazität unter Annahme der Pulscodemodulation (PCM) mit 16 Bit pro Abtastwert und 20.000 Abtastwerten pro Sekunde und unter der Annahme, dass man 1 Sekunde braucht, um "Hand" auszusprechen, ungefähr 40.000 Byte. Obwohl die Kostenpro Bit bei Rechnerspeichern enorm gefallen sind, sind Rechneranwendungen, die digitalisierte Audiodaten verwenden, durch die begrenzte Speicherkapazität nach wie vor starken Einschränkungen unterworfen. Folglich ist es äußerst wünschenswert, digitalisierte Audiosignale zur Verwendung in Multimedia- Rechnerumgebungen zu komprimieren.
- Audiosignale werden gewöhnlich mit Hilfe von Pulscodemodulations-(PCM-)Verfahren digitalisiert. Die Pulscodemodulation wird angewendet, indem ein analoges Audiosignal mit einer festen Frequenz, beispielsweise 20 kHz, abgetastet wird, um einen Strom von Impulsabtastwerten zu erzeugen. Das Modulationsverfahren weist dann jedem Abtastwert einen digitalen Wert zu, der für seine Amplitude steht.
- Es wurde versucht, PCM-Audiosignale zu komprimieren, aber für diese Versuche mussten vorhandene Rechnereinrichtungen im Allgemeinen um ein spezielles Komprimierungs- /Dekomprimierungsgerät erweitert werden. Das Gerät empfängt typischerweise PCM-Audiosignale von einem Audiosystem, komprimiert die Signale und führt die komprimierten Signale in Form von Daten einem Rechner zu, der die Daten wiederum speichert. Damit die Signale wiederhergestellt werden können, muss jedes System, das die komprimierten Daten abruft, ebenfalls über ein spezielles Komprimierungs- /Dekomprimierungsgerät verfügen.
- Das zusätzliche spezielle Komprimierungs- /Dekomprimierungsgerät erhöht die Kosten und die Komplexität eines jeden Systems, das es einsetzt. Da das Komprimierungs- /Dekomprimierungsgerät das PCM-Audiosignal im Allgemeinen außerdem in einer ganz speziellen Weise komprimiert, können nur solche Systeme, die über ein spezielles, kompatibles Gerät verfügen, die komprimierten Signale verwenden.
- Manche Komprimierungs-/Dekomprimierungssysteme benötigen kein spezielles Komprimierungs-/Dekomprimierungsgerät. Diese Systeme ermöglichen jedoch keine verlustlose Komprimierung und Dekomprimierung von hochwertigen PCM-Audiosignalen in Echtzeit. Gegebenenfalls machen sie es erforderlich, dass PCM- Signale offline gespeichert und komprimiert werden; ein Audiosignal von der Dauer einer Sekunde würde mehr als eine Sekunde Verarbeitungszeit in Anspruch nehmen. Ebenso ist die Komprimierung möglicherweise mit Verlusten behaftet, um einen Echtzeitbetrieb zu erreichen. Eine verlustbehaftete Komprimierung bedeutet einfach, dass ein Teil der Daten des Signals verworfen wird, um die Anzahl der Stellen zu verringern, die zur Darstellung eines jeden Abtastwerts notwendig sind.
- Die US-Patentschrift 4 783 792 legt eine Vorrichtung zur Übertragung von Daten mit einer hohen Komprimierungsleistung offen, die eine Vergleichsvorrichtung umfasst, welche zur Bildung eines Differenzwerts zwischen ersten und zweiten Datenabtastwerten dient.
- Diese Erfindung ist auf die Bereitstellung eines verbesserten Komprimierungs-/Dekomprimierungsschemas für digitale Datenabtastwerte und insbesondere, aber nicht ausschließlich, digitale Audiosignale, gerichtet.
- Folglich stellt die Erfindung eine Vorrichtung zur Komprimierung eines Stroms von codierten digitalen Datenabtastwerten bereit, wobei die Komprimierungsvorrichtung eine Vergleichsvorrichtung umfasst, die auf einen ersten Datenabtastwert und einen zweiten darauffolgenden Datenabtastwert in dem Strom anspricht, um einen Differenzwert zwischen dem ersten Datenabtastwert und dem zweiten Datenabtastwert zu bilden. Die Vorrichtung ist durch eine Ausgabevorrichtung gekennzeichnet, die dazu dient, einen komprimierten Datenstrom zu bilden, wobei die Ausgabevorrichtung auf den Differenzwert und den zweiten Datenabtastwert anspricht, um anstelle des zweiten Datenabtastwerts den Differenzwert in den komprimierten Datenstrom einzufügen, wenn der Differenzwert weniger Speicherplatz als der zweite Datenabtastwert belegt.
- Ferner wird eine Vorrichtung zur Dekomprimierung eines Stroms von komprimierten codierten digitalen Datenabtastwerten bereitgestellt, wobei die Dekomprimierungsvorrichtung Folgendes umfasst: eine Erkennungsvorrichtung, die auf den komprimierten Datenstrom anspricht, um einen vorher festgelegten Markierungswert (flag value) zu erkennen; eine Wiederherstellungsvorrichtung, die mit der Erkennungsvorrichtung zusammenarbeitet, um aus komprimierten Datenabtastwerten einen unkomprimierten Datenabtastwert wiederherzustellen, wenn der Markierungswert nicht erkannt wird; und eine Ausgabevorrichtung, um einen dekomprimierten Datenstrom zu bilden, wobei die Ausgabevorrichtung auf einen erkannten Markierungswert anspricht, um den nächsten darauffolgenden Datenabtastwert in den dekomprimierten Datenstrom einzufügen, wobei die Ausgabevorrichtung den wiederhergestellten unkomprimierten Datenabtastwert in den dekomprimierten Datenstrom einfügt, wenn der Markierungswert nicht erkannt wird.
- Dadurch können digitalisierte Audiosignale zur Speicherung in Rechnersystemen in einer Weise komprimiert werden, die spezielle Komprimierungs-/Dekomprimierungsgeräte überflüssig macht und die gleichzeitig so leistungsfähig ist, dass sie eine verlustlose Komprimierung und Dekomprimierung von hochwertigen digitalisierten Audiosignalen in Echtzeit gestattet.
- Gemäß einer Ausführungsform der Erfindung werden digitalisierte Audiodaten komprimiert, indem ein erster Audioabtastwert von einem digitalisierten Audiosignal abgerufen und in seiner vollständigen unkomprimierten Form gespeichert wird. Anschließend wird der nächste Audioabtastwert abgerufen, und eine vorzeichenbehaftete Differenz zwischen dem ersten Audioabtastwert und dem nächsten Audioabtastwert wird berechnet. Wenn dieser Differenzwert in einer geringeren Anzahl von Datensegmenten dargestellt werden kann, als zur Darstellung des nächsten Audioabtastwerts nötig wäre, wird anstelle des nächsten Abtastwerts der Differenzwert gespeichert, andernfalls wird der nächste Abtastwert gespeichert. Dann wird der, nächste Audioabtastwert abgerufen, der vorzeichenbehaftete Differenzwert zwischen diesem und dem vorherigen Abtastwert wird berechnet, und der Differenzwert oder, wenn er weniger Speicherplatz belegt, der Abtastwert wird gespeichert, andernfalls wird der Abtastwert zusammen mit einer eindeutigen Markierung oder einem Schlüsselwert gespeichert, der anzeigt, dass der Abtastwert in unkomprimierter Form gespeichert wird. Dieser Prozess wird in dieser Weise fortgesetzt, bis das ganze PCM-Audiosignal komprimiert und gespeichert wurde.
- Da sequenzielle Audioabtastwerte wahrscheinlich eine ziemlich ähnliche Amplitude haben, ist davon auszugehen, dass der Amplitudenunterschied zwischen einem Abtastwert und dem nächsten Abtastwert weitaus weniger Speicherplatz in Anspruch nehmen wird als die digital codierte Amplitude des nächsten Abtastwerts. Daher wird ein großer Teil der komprimierten Daten als Differenzwerte gespeichert. Ein paar Abtastwerte werden generell jedoch immer als codierte Amplituden gespeichert. Dies geschieht, weil digitale Daten in Einheiten fester Größe gespeichert und abgerufen werden, und daher kann es vorkommen, dass die codierte Amplitude eines Abtastwerts gespeichert wird, selbst wenn die Amplitudendifferenz zwischen zwei sequenziellen Abtastwerten geringer als die codierte Amplitude ist. Zum Beispiel werden Audiosignale gewöhnlich als 16-Bit-Abtastwerte digitalisiert, aber digitale Werte werden gewöhnlich als 8-Bit-Bytes gespeichert. Wenn der Unterschied zwischen den Amplituden von zwei Abtastwerten größer ist, als in einem Byte dargestellt werden kann, wird folglich der Amplitudenwert des darauffolgenden Abtastwerts gespeichert, da der Differenzwert nicht weniger Speicherplatz in Anspruch nimmt. Ein Markierungszeichen wird ebenfalls gespeichert, um anzuzeigen, dass der gespeicherte Wert ein unkomprimierter Abtastwert ist. Wenn die Amplitudendifferenz alternativ dazu in einem Byte dargestellt werden kann, belegt sie weniger Speicherplatz als der codierte Amplitudenwert, und der für die Abtastung gespeicherte Wert belegt ein Byte.
- Wenn die Amplitude eines Abtastwerts als codierte Amplitude und nicht als Differenzwert gespeichert wird, wird in einer bevorzugten Ausführungsform folglich ein Markierungszeichen ("flag") in den komprimierten Datenstrom eingefügt, das anzeigt, dass der folgende Wert ein Amplitudenwert und kein Differenzwert ist. In dem Fall beispielsweise, in dem zwei Bytes zur Codierung eines Amplitudenwerts verwendet werden, zeigt das Markierungszeichen an, dass die folgenden beiden Bytes einen codierten Amplitudenwert darstellen (für den ersten Abtastwert wird jedoch kein Markierungszeichen verwendet).
- Der komprimierte Datenstrom wird dekomprimiert, um einen Ausgangsdatenstrom zu erzeugen, indem der erste gespeicherte Abtastwert beispielsweise aus einer Speichereinheit abgerufen wird. Der erste Abtastwert ist immer ein codierter Amplitudenabtastwert und wird direkt in den Ausgangsdatenstrom eingefügt. Der nächste Abtastwert wird abgerufen und geprüft, um festzustellen, ob er ein Differenzwert oder ein Markierungszeichen ist, das anzeigt, dass die folgenden Daten einen codierten Amplitudenwert darstellen. Wenn der Abtastwert ein Differenzwert ist, wird er zu dem vorherigen Wert digital hinzugefügt (unter Berücksichtigung des Vorzeichens), und die Summe wird in den Ausgangsdatenstrom eingefügt. Der Summenwert wird zurückbehalten, damit er zur Berechnung des nächsten Ausgabewerts verwendet werden kann, wenn der folgende Abtastwert ebenfalls ein Differenzwert ist. Wenn der Abtastwert ein Markierungswert ist, wird er alternativ dazu verworfen, und der nächste Abtastwert wird abgerufen und in den Ausgangsdatenstrom eingefügt. Der Betrieb wird auf diese Weise fortgesetzt, bis alle gespeicherten komprimierten Daten dekomprimiert wurden.
- Von einem anderen Aspekt aus betrachtet, stellt die Erfindung ein Verfahren zur Komprimierung eines Stroms von codierten digitalen Datenabtastwerten bereit, wobei das Verfahren die folgenden Schritte umfasst:
- A. Bilden eines Differenzwerts zwischen dem ersten Datenabtastwert und dem zweiten Datenabtastwert.
- Das Verfahren ist durch die folgenden Schritte gekennzeichnet:
- B. Vergleichen des Differenzwerts mit dem zweiten Datenabtastwert; und
- C. Bilden eines komprimierten Datenstroms, indem anstelle des zweiten Datenabtastwerts der Differenzwert in den komprimierten Datenstrom eingefügt wird, wenn der Differenzwert weniger Speicherplatz als der zweite Datenabtastwert belegt, und
- ein Verfahren zur Dekomprimierung eines Stroms von komprimierten codierten digitalen Datenabtastwerten, wobei das Verfahren die folgenden Schritte umfasst:
- A. Überwachen des komprimierten Datenstroms auf einen vorher festgelegten Markierungswert;
- B. Wiederherstellen eines unkomprimierten Datenabtastwerts aus komprimierten Datenabtastwerten, wenn der Markierungswert nicht erkannt wird; und
- C. Bilden eines dekomprimierten Datenstroms, indem der nächste darauffolgende Datenabtastwert in den dekomprimierten Datenstrom eingefügt wird, wenn der Markierungswert erkannt wird, und indem der wiederhergestellte unkomprimierte Datenabtastwert in den dekomprimierten Datenstrom eingefügt wird, wenn der Markierungswert nicht erkannt wird.
- Die vorstehenden und weitere Vorteile der Erfindung lassen sich durch Bezugnahme auf die folgende Beschreibung der Ausführungsform der Erfindung in Verbindung mit den beigefügten Zeichnungen besser verstehen, in denen:
- Fig. 1 ein der Veranschaulichung dienendes vernetztes Multimedia-Rechnersystem zeigt;
- Fig. 2A bis Fig. 2C zusammengenommen ein Flussdiagramm darstellen, das ein Verfahren zur Komprimierung von digitalisierten Audiodaten veranschaulicht;
- Fig. 3A bis Fig. 3C zusammengenommen ein Flussdiagramm darstellen, das ein Verfahren zur Dekomprimierung von Audiodaten veranschaulicht, die mit Hilfe des in den Fig. 2A bis 2C veranschaulichten Verfahrens komprimiert wurden.
- Bezug nehmend auf Fig. 1, kommuniziert ein Multimedia- Rechnersystem 10 über ein Netzwerk 12 mit einem Rechnersystem 14 und weiteren anderen Rechnern 16. Die genauen Eigenschaften des Netzwerks 12 sind für die Realisierung der vorliegenden Erfindung nicht wichtig. Das Netzwerk 12 kann beispielsweise mit Hilfe eines beliebigen einer Vielzahl von physischen Medien realisiert werden, eine beliebige einer Vielzahl von Topologien wie zum Beispiel eine stern- oder ringförmige Topologie aufweisen, und es kann ein lokales oder ein Weitverkehrsnetz sein. Die Rechnersysteme 10, 14, 16 tauschen untereinander durch das Netzwerk 12 Informationen in Form von digitalen Daten aus, die Textinformationen, Grafikinformationen oder digitalisierte Audioinformationen darstellen können.
- Das der Veranschaulichung dienende Multimedia-Rechnersystem 10 enthält eine herkömmliche Audioeingabeeinheit 18 (wie zum Beispiel ein Mikrofon), eine herkömmliche Audioausgabeeinheit 20 (wie zum Beispiel einen Lautsprecher) und das bekannte PCM- Audiocodiergerät 22. Das Gerät 22 kann eine eigenständige Einheit oder eine Steckkarte sein, die direkt mit einem internen Bus des Rechners 26 kommuniziert. Eine Speichereinheit 24 gehört ebenfalls zum Rechnersystem 10, die ein Bestandteil des Rechners 26 oder ein eigenständiges Speichersystem sein kann.
- Ebenso kann die Speichereinheit 28 ein Bestandteil des Rechners 13 oder eine eigenständige Einheit sein. Obwohl dies nicht gezeigt ist, kann das Rechnersystem 14 auch über ein PCM-Audiocodiergerät sowie Audioeingabe- und Audioausgabeeinheiten wie beispielsweise die Einheiten 18, 20 und 22 verfügen, die in Verbindung mit dem Rechnersystem 10 gezeigt sind. Alternativ dazu kann das Rechnersystem 14 die Funktion eines Servers haben, zum Beispiel, um Daten in der Speichereinheit 28 zu speichern oder aus ihr abzurufen, die über ausreichend Kapazität verfügen sollte, um mehreren an das Netzwerk 12 angeschlossenen Rechnern die Speicherung von Daten zu ermöglichen.
- Im Betrieb empfängt das herkömmliche PCM-Audiocodiergerät 22 ein analoges Audiosignal von der Eingabeeinheit 18. Das analoge Audiosignal wird mit einer festen Frequenz, beispielsweise 20 kHz, abgetastet, um einen Strom von Abtastwerten mit unterschiedlichen analogen Amplituden zu erzeugen. Die Amplitude eines jeden Impulses wir dann quantisiert, und der quantisierte Wert wird in einen Binärcode codiert. Der resultierende binäre PCM-Datenstrom wird über den Rechner 26 an die Speichereinheit 24 gesendet. Alternativ dazu kann der Rechner 10 die digitalen Daten über das Rechnernetzwerk 12 an den Rechner 14 zur Fernspeicherung in der Speichereinheit 28 oder an andere Rechner 16 zur Weiterverarbeitung senden.
- Das Datenkomprimierungsverfahren kann von Software ausgeführt werden, die auf dem Rechner 26 läuft, oder von eigens dafür vorgesehener Hardware, die sich im Rechnersystem 26 befindet. In beiden Fällen wird das von dem PCM-Audiocodiergerät 22 empfangene digitale PCM-Signal vom Rechnersystem 26 empfangen und vor der Speicherung in der Speichereinheit 24 oder der Übertragung über das Netzwerk 12 komprimiert. Umgekehrt arbeitet das Datendekomprimierungsverfahren in Verbindung mit dem Rechner 26, um in der Speichereinheit 24 gespeicherte oder aus dem Speicher 28 über das Netzwerk 12 übertragene Audiodaten zur Erzeugung eines digitalen PCM-Datenstroms abzurufen und zu dekomprimieren. Der Rechner 26 überträgt diesen digitalen PCM-Datenstrom an das PCM-Audiocodiergerät 22, das den digitalen Datenstrom in ein analoges Audiosignal umsetzt, das dann an die Ausgabeeinheit 20 übertragen wird. Es sei angemerkt, dass die digitalen PCM-Audiodaten im Gegensatz zu anderen PCM-Datenreduktionssystemen zur Übergabe an das PCM-Audiocodiergerät 22 oder das Netzwerk 12 erzeugt werden (natürlich können dem Netzwerk auch komprimierte Abtastwerte übergeben werden). Folglich benötigt man kein spezielles digitales Audiogerät zur Verwendung mit dem Multimedia- Rechnersystem 10 oder den anderen Rechnersystemen 14 oder 16.
- Die Fig. 2A bis 2C bilden ein Flussdiagramm, das die Funktionsweise des PCM-Audiokompressionsschemas zeigt. In dieser beispielhaften Ausführungsform wird davon ausgegangen, dass die digitalisierten Audioabtastwerte als 8-Bit-Bytes gespeichert werden und dass jeder Abtastwert eine Breite von 16 Bit oder 2 Byte hat. Der Ablauf beginnt im Schritt 200 und schaltet zum Schritt 210, in dem eine Ausgangsbyte- Zeigervariable pOut und eine Eingangsbyte-Zeigervariable pIn auf den Anfangswert Null gesetzt werden. Diese Zeiger zeigen auf Speicherplätze in einer Datenspeichervorrichtung, die die digitalisierten Audioabtastwerte während der Verarbeitung hält, oder auf einen Speicherplatz in einem Datenstrom- Pufferspeicher, der zum Transport der Daten verwendet wird. Der erste Eingangsabtastwert wird an eine Haltevariable (InSamp) übertragen, die den "nächsten" Eingangsabtastwert darstellt.
- Im Schritt 212 stellt die Routine dann fest, ob der nächste Eingangsabtastwert (der in InSamp gespeichert ist) der erste Eingangsabtastwert des digitalisierten Audiosignals ist. Wenn der nächste Abtastwert der erste Abtastwert des Signals ist, schaltet die Erfindung zum Schritt 214, in dem sie den in der nächsten Abtastwertvariablen gehaltenen Wert an einen Speicherplatz (SCur) kopiert, der für den "aktuellen" Abtastwert reserviert ist. Wie nachstehend erklärt wird, wird der aktuelle Abtastwert zur Ermittlung des Differenzwerts zwischen dem aktuellen Abtastwert und dem nächsten Abtastwert verwendet.
- Das Verfahren schaltet dann zum Schritt 216, in dem der Eingangszeiger (pIn) erhöht wird, um den Speicherplatz des nächsten Eingangsabtastwertes anzuzeigen. Wie im Schritt 216 angegeben ist, wird der Eingangszeiger um zwei erhöht, da jeder Abtastwert zwei Byte umfasst. Die Routine schaltet zum Schritt 218, in dem der Wert der nächsten Abtastwertvariablen an einem Speicherplatz gespeichert wird, der vom Ausgangszeiger (pOut) angegeben wird, welcher auf den Ausgangsdatenstrom zeigt. Im Schritt 220 wird der Ausgangszeiger nochmals um zwei erhöht, um anzuzeigen, dass zwei Byte in den Ausgangsdatenstrom übertragen wurden.
- Anschließend schaltet die Routine zum Schritt 222, in dem festgestellt wird, ob es noch einen Abtastwert in dem digitalisierten Audiosignal gibt. Wenn es keine weiteren Abtastwerte gibt, schaltet die Routine zum Schritt 224, um ihre Ausführung zu beenden.
- Kehren wir nochmals zum Schritt 222 zurück. Wenn es noch einen weiteren digitalisierten Audioeingangsabtastwert gibt, der verarbeitet werden muss, schaltet die Routine zum Schritt 226, in dem sie den nächsten Eingangsabtastwert abruft, indem sie den Inhalt des Speicherplatzes, der vom Eingangszeiger (pIn) angegeben wird, in die nächste Abtastwert-Haltevariable, InSamp, überträgt. Daraufhin schaltet die Routine zum Schritt 228, in dem der Eingangszeiger um zwei erhöht wird, so dass der Eingangszeiger auf den nächsten Abtastwert zeigt.
- Anschließend schaltet die Routine zurück zum Schritt 212, in dem sie feststellt, ob der in der nächsten Abtastwertvariablen InSamp gespeicherte Wert der erste Eingangsabtastwert ist. Wenn der nächste Abtastwert nicht der erste Eingangsabtastwert ist, schaltet die Routine zum Schritt 230, in dem die Differenz zwischen dem "nächsten" Abtastwert, der in der Variablen InSamp enthalten ist, und dem aktuellen Abtastwert, der in der Variablen SCur gespeichert ist, ermittelt wird. Der Wert dieser Differenz wird in einer Variablen SDiff gespeichert. Zu diesem Zeitpunkt wird der Inhalt eines Zeichenausgangspufferspeichers chOut gelöscht (auf Null gesetzt).
- Die Routine schaltet dann zum Schritt 232, in dem der aktuelle Abtastwert, der in der Variablen SCur gespeichert ist, aktualisiert wird, indem der Wert, der in der nächsten Abtastwertvariablen InSamp gespeichert ist, übertragen wird. Im Schritt 234 stellt das erfindungsgemäße Verfahren fest, ob die Differenz zwischen dem nächsten Abtastwert und dem aktuellen Abtastwert negativ ist. Wenn die Differenz negativ ist (was anzeigt, dass sich die Amplitude verringert hat), schaltet die Routine zum Schritt 236, in dem das höchstwertige Bit im Zeichenausgangspufferspeicher chOut auf Eins gesetzt wird (indem der Zeichenpufferspeicher mit 10000000, hex 80, geladen wird), um eine negative Differenz anzuzeigen.
- Wenn die berechnete Differenz SDiff im Schritt 234 andererseits gleich oder größer als Null ist, überspringt die Routine den Schritt 236 und schaltet vom Schritt 234 direkt zum Schritt 238. Das höchstwertige Bit bleibt somit auf Null (es wurde im Schritt 230 auf Null gesetzt). Im Schritt 238 speichert die Routine den absoluten Wert der Differenz SDiff am Speicherplatz SDiff (das Vorzeichen der Differenz wird jetzt vom höchstwertigen Bit von chOut angezeigt).
- Im Schritt 240 stellt die Routine fest, ob eine der folgenden beiden Bedingungen gültig ist: (a) Der absolute Wert der berechneten Differenz SDiff ist größer als der positive Höchstwert, der in einem einzigen vorzeichenbehafteten Byte gespeichert werden kann (01111111, hex 7F), oder (b) der absolute Wert der Differenz SDiff ist gleich einem reservierten Markierungswert (01111111, hex 7F, wobei das höchstwertige Byte des Zeichenpufferspeichers gesetzt ist; chOut = hex(80)).
- Wenn keine der beiden Bedingungen gültig ist, kann die Differenz SDiff zwischen dem nächsten Eingangsabtastwert und dem aktuellen Eingangsabtastwert in einem einzigen Byte gespeichert werden, und gemäß den Grundgedanken der vorliegenden Erfindung wird in dem Ausgangsdatenstrom anstelle des tatsächlichen Abtastwerts der Differenzwert gespeichert. Folglich schaltet die Routine zum Schritt 250, in dem der Differenzwert in den Zeichenpufferspeicher geladen wird, indem der Differenzwert SDiff durch logisches ODER mit dem Inhalt, des Zeichenpufferspeichers (in dem sich die höchstwertige Bitgruppe befinden kann) verknüpft wird.
- Im Schritt 252 wird der Inhalt des Zeichenpufferspeichers chOut an den Speicherplatz des Ausgangsdatenstroms übertragen, auf den der Ausgangszeiger pOut zeigt, und im Schritt 254 erhöht die Routine den Ausgangszeiger pOut um eins, um anzuzeigen, dass ein einziges Byte übertragen wurde.
- Kehren wir nochmals zum Schritt 240 zurück. Wenn der berechnete Differenzbetrag zwischen dem nächsten und dem aktuellen Datenabtastwert größer als der Höchstwert (hex 7F) oder gleich hex 7F war, während chOut gleich hex 80 war, kann die Differenz zwischen dem nächsten Abtastwert und dem aktuellen Abtastwert nicht in einem einzigen Byte gespeichert werden, und der tatsächliche Wert der nächsten Abtastung wird in dem Ausgangsdatenstrom gespeichert.
- Folglich schaltet die Routine zum Schritt 242, in dem ein Markierungswert (hex FF) an den Speicherplatz des Ausgangsdatenstroms geschrieben wird, der vom Ausgangszeiger pOut angegeben wird. Der Markierungswert hex FF zeigt an, dass die nächsten beiden Werte in dem Datenstrom einen unkomprimierten PCM-Audioabtastwert halten. Im Schritt 244 erhöht die Routine den Ausgangszeiger pOut um eins, um dem Markierungszeichen Rechnung zu tragen, und schaltet darin zum Schritt 246, in dem die zwei Bytes des nächsten Abtastwerts in der Variablen InSamp in den Ausgangsdatenstrom an einen Speicherplatz übertragen werden, auf den der Ausgangszeiger pOut zeigt. Dann schaltet die Routine zum Schritt 248, in dem der Ausgangszeiger pOut um zwei erhöht wird, um anzuzeigen, dass zwei Bytes übertragen wurden.
- Als Nächstes schaltet die Routine zum Schritt 222, in dem sie feststellt, ob noch ein weiterer Eingangsabtastwert verarbeitet werden muss. Wie zuvor beschrieben wurde, schaltet die Routine dann entweder zum Schritt 226, um weitere Abtastwerte zu verarbeiten, oder zum Schritt 224, um ihre Ausführung zu beenden.
- Die Fig. 3A bis 3C bilden ein Flussdiagramm, das die Schritte in einer der Veranschaulichung dienenden Dekomprimierungsroutine ausführlich zeigt. Genauer gesagt, die Routine beginnt den Dekomprimierungsprozess im Schritt 300, schaltet dann zum Schritt 310, in dem sie den Ausgangszeiger pOut und den Eingangszeiger pIn auf den Anfangswert Null setzt und den ersten Abtastwert der komprimierten Daten in die nächste Abtastwertvariable InSamp überträgt. Im Schritt 312 wird eine Prüfung durchgeführt, um festzustellen, ob der nächste Abtastwert der erste Abtastwert der komprimierten Daten ist. Wenn ja, schältet die Routine zum Schritt 314, in dem sie den in der Variablen InSamp enthaltenen Wert in die aktuelle Abtastwertvariable SCur kopiert. Im Schritt 315 wird der Eingangszeiger pIn um zwei erhöht, um den beiden Bytes des ersten Abtastwerts Rechnung zu tragen.
- Im Schritt 316 überträgt die Routine den am Speicherplatz "InSamp" enthaltenen Wert an den Speicherplatz des Ausgangsdatenstroms, auf den der Ausgangszeiger pOut zeigt. Im Schritt 318 wird der Ausgangszeiger pOut um zwei erhöht, um anzuzeigen, dass zwei Bytes ausgegeben wurden. Im Schritt 320 stellt die Routine dann fest, ob es noch weitere Eingangsabtastwerte gibt. Wenn es keine weiteren Eingangsabtastwerte gibt, schaltet die Routine zum Schritt 322, um ihre Ausführung zu beenden.
- Wenn es weitere Eingangsabtastwerte gibt, schaltet der Prozess zum Schritt 324, in dem das nächste komprimierte Abtastwertbyte, das an dem vom Eingangszeiger pIn angegebenen Speicherplatz gespeichert ist, in einen Eingangspufferspeicher "chKey" gelesen wird, so dass das Byte geprüft werden kann, um festzustellen, ob es ein Markierungswert ist. Im Schritt 326 wird der Eingangszeiger pIn um eins erhöht, um dem soeben gelesenen Byte Rechnung zu tragen.
- Nachdem sie festgestellt hat, dass dies nicht der erste Abtastwert ist, schaltet die Routine vom Schritt 312 zum Schritt 328, in dem sie den Inhalt des Zeichenausgangspufferspeichers "chOut" löscht, und anschließend schaltet sie zum Schritt 330. Im Schritt 330 stellt die Routine fest, ob der Inhalt des Eingangspufferspeichers "chKey" gleich dem Markierungswert FF (hex) ist. Wenn der Inhalt von chKey gleich FF (hex) ist, umfassen die nächsten beiden Bytes im Eingangsdatenstrom einen unkomprimierten PCM-Abtastwert. Folglich wird der nächste Eingangsabtastwert von dem Eingangsdatenstrom, auf den der Zeiger pIn zeigt, im Schritt 332 in die nächste Abtastwertvariable InSamp übertragen, und im Schritt 334 wird der Eingangszeiger pIn um zwei erhöht, um dem Abtastwert Rechnung zu tragen.
- Kehren wir nochmals zum Schritt 330 zurück. Wenn der Wert im Eingangspufferspeicher chKey kein Markierungswert ist, ist er ein Differenzwert, und die Routine schaltet zum Schritt 336. Im Schritt 336 wird das höchstwertige Bit des Differenzwertes geprüft, indem der Inhalt des Eingangspufferspeichers chKey mit 10000000 (80 hex) durch logisches UND verknüpft wird und indem festgestellt wird, ob das Ergebnis gleich Null ist. Wie zuvor beschrieben wurde, legt das höchstwertige Bit fest, ob der komprimierte Abtastwert zu dem vorherigen Abtastwert addiert oder von ihm subtrahiert werden soll.
- Wenn das Ergebnis der UND-Operation ungleich Null ist, was anzeigt, dass das höchstwertige Bit gesetzt und die Differenz negativ ist und von dem aktuellen Abtastwert in SCur subtrahiert werden soll, schaltet die Routine zum Schritt 338, in dem das höchstwertige Bit in "chKey" auf Null gesetzt wird, indem der Inhalt von chKey mit 01111111 (7F, hex) durch logisches UND verknüpft wird. Im Schritt 340 wird der Differenzwert in chKey vom aktuellen Eingangswert in SCur subtrahiert. Das Ergebnis wird in die nächste Abtastwertvariable InSamp übertragen.
- Wenn das Ergebnis im Schritt 336 gleich Null war, war das höchstwertige Bit auf Null gesetzt, was anzeigt, dass der Differenzwert positiv ist und zu dem aktuellen Wert hinzugefügt werden soll. Im Schritt 342 werden folglich der aktuelle Abtastwert in SCur zu dem Differenzwert in chKey addiert und die Summe in die nächste Abtastwertvariable InSamp übertragen.
- Nach einem der Schritte 340, 342 oder 334 schaltet die der Veranschaulichung dienende Routine zum Schritt 344, in dem sie den nächsten Abtastwert in der Variablen InSamp an den Speicherplatz kopiert, der vom Ausgangszeiger pOut angegeben wird, wodurch der dekomprimierte Abtastwert in den Ausgangsdatenstrom gestellt wird. Im Schritt 346 wird der Ausgangszeiger pOut um zwei Bytes erhöht, und im Schritt 348 wird der Wert in der Variablen InSamp in Vorbereitung auf die Verarbeitung des nächsten Abtastwerts in die aktuelle Abtastwertvariable SCur kopiert.
- Im Anschluss an den Schritt 348 schaltet die Routine zum Schritt 320, in dem, wie zuvor beschrieben wurde, festgestellt wird, ob es weitere Abtastwerte gibt. Auf der Grundlage dieser Feststellung werden entweder die weiteren Abtastwerte verarbeitet oder, wenn alle Abtastwerte verarbeitet wurden, wird die Routine beendet.
- Wie aus der vorstehenden Beschreibung hervorgeht, rufen die Komprimierungs- und Dekomprimierungsprozesse alle Informationen, die in dem ursprünglichen digitalisierten Signal enthalten sind, ab und speichern sie, obwohl weniger Stellen erforderlich sind, um das Signal in komprimierter Form darzustellen. Es werden keine Informationen verworfen; dies ist ein verlustfreier Komprimierungs-/Dekomprimierungsprozess.
- In der vorstehenden Beschreibung wurde eine ganz bestimmte Ausführungsform dieser Erfindung dargelegt. Es dürfte jedoch klar sein, dass an der Erfindung Ab- und Veränderungen vorgenommen werden können, während man dennoch einige oder alle ihrer Vorteile erzielt. Es ist daher die Aufgabe der beigefügten Ansprüche, all die Ab- und Veränderungen abzudecken, die unter den Umfang der Erfindung fallen.
- Ein Datenkomprimierungssystem zur Verwendung mit einem Strom von codierten digitalen Datenabtastwerten wurde beschrieben, von denen jeder eine erste vorher festgelegte Anzahl von Datenbytes hat, wobei das Komprimierungssystem Folgendes umfasst: eine Recheneinheit, die auf einen ersten Datenabtastwert und einen darauffolgenden zweiten Datenabtastwert anspricht, um einen vorzeichenbehafteten Differenzwert zwischen dem ersten Abtastwert und einem zweiten Abtastwert zu berechnen, wobei der Differenzwert eine zweite Anzahl von Bytes hat; und eine Ausgabeeinheit, um einen komprimierten Datenbytestrom zu erzeugen, wobei die Ausgabeeinheit auf den Differenzwert anspricht, um den Differenzwert in den komprimierten Datenbytestrom einzufügen, wenn die zweite Anzahl von Bytes geringer als die erste Anzahl von Bytes ist, und um den zweiten Datenabtastwert in den komprimierten Datenstrom einzufügen, wenn die zweite Anzahl von Bytes gleich der oder größer als die erste Anzahl von Bytes ist.
- Wie beschrieben wurde, kann das System ein Mittel umfassen, das dazu dient, einen vorher festgelegten Markierungswert in den komprimierten Datenstrom einzufügen, bevor der zweite Datenabtastwert in den komprimierten Datenstrom eingefügt wird, wenn die zweite Anzahl von Bytes gleich der oder größer als die erste Anzahl von Bytes ist, und einen Speichermechanismus, um jeden Datenabtastwert vorübergehend in dem digitalen Datenstrom zu speichern. Die Recheneinheit kann auf einen Datenabtastwert ansprechen, der in dem Speichermechanismus gespeichert ist, und auf einen darauffolgenden zweiten Datenabtastwert, um einen vorzeichenbehafteten Differenzwert zwischen dem gespeicherten Abtastwert und einem zweiten Abtastwert zu berechnen.
- Es wurde auch ein Datendekomprimierungssystem zur Dekomprimierung eines Stroms von komprimierten codierten digitalen Datenabtastwerten beschrieben, wobei das Dekomprimierungssystem Folgendes umfasst: ein Speichermittel, um jeden komprimierten Datenabtastwert zu speichern; eine Erkennungsvorrichtung, die auf den gespeicherten Datenabtastwert anspricht, um einen vorher festgelegten Markierungswert zu erkennen; eine Wiederherstellungsvorrichtung, die mit der Erkennungsvorrichtung zusammenarbeitet, um aus dem gespeicherten Datenabtastwert und einem darauffolgenden komprimierten Datenabtastwert einen unkomprimierten Datenabtastwert wiederherzustellen, wenn der Markierungswert nicht erkannt wird; und eine Ausgabevorrichtung zur Bildung eines dekomprimierten Datenstroms, wobei die Ausgabevorrichtung auf einen erkannten Markierungswert anspricht, um den nachfolgenden Datenabtastwert in den dekomprimierten Datenstrom einzufügen, wobei die Ausgabevorrichtung den wiederhergestellten unkomprimierten Datenabtastwert in den dekomprimierten Datenstrom einfügt, wenn der Markierungswert nicht erkannt wird.
- Die Wiederherstellungsvorrichtung, kann einen Mechanismus umfassen, der dazu dient, den gespeicherten Datenabtastwert zu einem darauffolgenden komprimierten Datenabtastwert digital zu addieren, um den unkomprimierten Datenabtastwert wiederherzustellen. Jeder komprimierte Datenabtastwert kann aus einer ersten Anzahl von Datenbytes bestehen, wobei der Differenzwert eine zweite Anzahl von Bytes umfasst und wobei der Speichermechanismus die erste Anzahl von Bytes vorübergehend speichert. Die Ausgabevorrichtung kann auf einen erkannten Markierungswert ansprechen, um die erste Anzahl von aufeinanderfolgenden Datenbytes in den dekomprimierten Datenstrom einzufügen, wobei die Ausgabevorrichtung einen vorzeichenbehafteten Summenwert aus der zweiten Anzahl der Datenbytes und der gespeicherten Datenbytes in den dekomprimierten Datenstrom einfügt, wenn der Markierungswert nicht erkannt wird.
Claims (11)
1. Vorrichtung (26) zur Komprimierung eines Stroms von
codierten digitalen Datenabtastwerten, wobei die
Komprimierungsvorrichtung eine Vergleichsvorrichtung
umfasst, die auf einen ersten Datenabtastwert und einen
zweiten darauffolgenden Datenabtastwert in dem Strom
anspricht, um einen Differenzwert (SDiff) zwischen dem
ersten Datenabtastwert (SCur) und dem zweiten
Datenabtastwert (InSamp) zu bilden (230);
dadurch gekennzeichnet, dass die Vorrichtung des Weiteren
eine Ausgabevorrichtung (26) umfasst, die dazu dient,
einen komprimierten Datenstrom zu bilden, wobei die
Ausgabevorrichtung auf den Differenzwert und den zweiten
Datenabtastwert anspricht, um anstelle des zweiten
Datenabtastwerts den Differenzwert in den komprimierten
Datenstrom einzufügen (250), wenn der Differenzwert
weniger Speicherplatz als der zweite Datenabtastwert
belegt.
2. Vorrichtung (26) nach Anspruch 1, die des Weiteren eine
Markierungsvorrichtung (26) umfasst, die auf den
Differenzwert (SDiff) und den zweiten Datenabtastwert
(SCur) anspricht, um einen vorher festgelegten
Markierungswert in den komprimierten Datenstrom
einzufügen, wenn der Differenzwert zur Darstellung des
zweiten Datenabtastwerts genauso viele Stellen verwendet,
wie der zweite Datenabtastwert belegt.
3. Vorrichtung (26) nach Anspruch 1 oder 2, wobei jeder
Datenabtastwert aus einer ersten Anzahl von Datenbytes
besteht und wobei die Vergleichsvorrichtung (26) eine
Vorrichtung umfasst, um einen digitalen Differenzwert
(SDiff) zwischen dem ersten Datenabtastwert und dem
zweiten Datenabtastwert zu bilden, wobei der digitale
Differenzwert eine zweite Anzahl von Datenbytes umfasst.
4. Vorrichtung (26) nach Anspruch 3, wobei die
Ausgabevorrichtung (26) eine Vorrichtung umfasst, die
anstelle des zweiten Datenabtastwerts (SCur) den
Differenzwert (SDiff) in den komprimierten Datenstrom
einfügt, wenn die zweite Anzahl von Bytes geringer als die
erste Anzahl von Bytes ist.
5. Vorrichtung (26) nach einem der vorhergehenden Ansprüche,
wobei der Differenzwert (SDiff) einen Vorzeichenwert
enthält, der anzeigt, ob der Differenzwert positiv oder
negativ ist.
6. Vorrichtung (13) zur Dekomprimierung eines Stroms von
komprimierten codierten digitalen Datenabtastwerten, wobei
die Dekomprimierungsvorrichtung Folgendes umfasst:
eine Erkennungsvorrichtung (13), die auf den komprimierten
Datenstrom anspricht, um einen vorher festgelegten
Markierungswert zu erkennen (330);
eine Wiederherstellungsvorrichtung (13), die mit der
Erkennungsvorrichtung zusammenarbeitet, um aus
komprimierten Datenabtastwerten einen unkomprimierten
Datenabtastwert wiederherzustellen (336, 338, 340, 3421,
wenn der Markierungswert nicht erkannt wird; und
eine Ausgabevorrichtung (13) zur Bildung eines
dekomprimierten Datenstroms, wobei die Ausgabevorrichtung
auf einen erkannten Markierungswert anspricht, um den
nächsten darauffolgenden Datenabtastwert in den
dekomprimierten Datenstrom einzufügen (332, 334, 344),
wobei die Ausgabevorrichtung den wiederhergestellten
unkomprimierten Datenabtastwert in den dekomprimierten
Datenstrom einfügt (344), wenn der Markierungswert nicht
erkannt wird.
7. Vorrichtung (13) nach Anspruch 6, die des Weiteren einen
Speichermechanismus (13) umfasst, um einen komprimierten
Datenabtastwert zu speichern, und wobei die
Ausgabevorrichtung einen Mechanismus (338, 340) umfasst,
um einen vorzeichenbehafteten Summenwert aus dem nächsten
darauffolgenden Datenabtastwert und dem gespeicherten
Datenabtastwert in den dekomprimierten Datenstrom
einzufügen, wenn der Markierungswert nicht erkannt wird.
8. Vorrichtung (13) nach Anspruch 6 oder 7, wobei jeder
komprimierte Datenabtastwert aus einer ersten Anzahl von
Datenbytes besteht, wobei der Differenzwert eine zweite
Anzahl von Bytes umfasst und wobei der Speichermechanismus
vorübergehend die erste Anzahl von Bytes speichert.
9. Vorrichtung (13) nach Anspruch 8, wobei die
Ausgabevorrichtung (13) auf einen erkannten
Markierungswert anspricht, um die erste Anzahl der
aufeinanderfolgenden Datenbytes in den dekomprimierten
Datenstrom einzufügen, wobei die Ausgabevorrichtung eine
Verknüpfung aus der zweiten Anzahl der Datenbytes und der
gespeicherten Datenbytes in den dekomprimierten Datenstrom
einfügt, wenn der Markierungswert nicht erkannt wird.
10. Verfahren zur Komprimierung eines Stroms von codierten
digitalen Datenabtastwerten, wobei das Verfahren die
folgenden Schritte umfasst:
A. Bilden (230) eines Differenzwerts zwischen dem ersten
Datenabtastwert und dem zweiten Datenabtastwert;
dadurch gekennzeichnet, dass das Verfahren des Weiteren
die folgenden Schritte umfasst:
B. Vergleichen des Differenzwerts (SDiff) mit dem
zweiten Datenabtastwert (SCur); und
C. Bilden eines komprimierten Datenstroms, indem
anstelle des zweiten Datenabtastwerts der
Differenzwert in den komprimierten Datenstrom
eingefügt (250) wird, wenn der Differenzwert weniger
Speicherplatz als der zweite Datenabtastwert belegt.
11. Verfahren zur Dekomprimierung eines Stroms von
komprimierten codierten digitalen Datenabtastwerten, wobei
das Verfahren die folgenden Schritte umfasst:
A. Überwachen (330) des komprimierten Datenstroms auf
einen vorher festgelegten Markierungswert;
B. Wiederherstellen (336, 338, 340, 342) eines
unkomprimierten Datenabtastwerts aus komprimierten
Datenabtastwerten, wenn der Markierungswert nicht
erkannt wird; und
C. Bilden eines dekomprimierten Datenstroms, indem der
nächste darauffolgende Datenabtastwert in den
dekomprimierten Datenstrom eingefügt (332, 334, 344)
wird, wenn der Markierungswert erkannt wird, und
indem der wiederhergestellte unkomprimierte
Datenabtastwert in den dekomprimierten Datenstrom
eingefügt (344) wird, wenn der Markierungswert nicht
erkannt wird.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/174,800 US5561688A (en) | 1993-12-29 | 1993-12-29 | Real-time digital audio compression/decompression system |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69432072D1 DE69432072D1 (de) | 2003-03-06 |
DE69432072T2 true DE69432072T2 (de) | 2003-09-25 |
Family
ID=22637578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69432072T Expired - Lifetime DE69432072T2 (de) | 1993-12-29 | 1994-11-23 | Datenkompression |
Country Status (5)
Country | Link |
---|---|
US (3) | US5561688A (de) |
EP (1) | EP0661819B1 (de) |
JP (1) | JP3014285B2 (de) |
CA (1) | CA2139095C (de) |
DE (1) | DE69432072T2 (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5819026A (en) * | 1995-06-06 | 1998-10-06 | Apple Computer, Inc | System and method for arbitrating accelerator requests |
KR100224815B1 (ko) * | 1995-06-23 | 1999-10-15 | 윤종용 | 데이타 압축 및 신장방법 |
BR9610415A (pt) * | 1995-09-01 | 1999-09-14 | Starguide Digital Networks Inc | Sistema de distribuição e produção de arquivos de áudio |
US6269338B1 (en) * | 1996-10-10 | 2001-07-31 | U.S. Philips Corporation | Data compression and expansion of an audio signal |
US5931904A (en) * | 1996-10-11 | 1999-08-03 | At&T Corp. | Method for reducing the delay between the time a data page is requested and the time the data page is displayed |
RU2237934C2 (ru) | 1998-10-08 | 2004-10-10 | Мацусита Электрик Индастриал Ко.,Лтд. | Устройство записи и воспроизведения данных |
US6496692B1 (en) | 1999-12-06 | 2002-12-17 | Michael E. Shanahan | Methods and apparatuses for programming user-defined information into electronic devices |
US8170538B2 (en) | 1999-12-06 | 2012-05-01 | Solocron Media, Llc | Methods and apparatuses for programming user-defined information into electronic devices |
US7149509B2 (en) | 1999-12-06 | 2006-12-12 | Twenty Year Innovations, Inc. | Methods and apparatuses for programming user-defined information into electronic devices |
WO2003003235A1 (en) | 2001-06-27 | 2003-01-09 | 4 Media, Inc. | Improved media delivery platform |
JP4039086B2 (ja) * | 2002-03-05 | 2008-01-30 | ソニー株式会社 | 情報処理装置および情報処理方法、情報処理システム、記録媒体、並びにプログラム |
US20040208169A1 (en) * | 2003-04-18 | 2004-10-21 | Reznik Yuriy A. | Digital audio signal compression method and apparatus |
US7742926B2 (en) | 2003-04-18 | 2010-06-22 | Realnetworks, Inc. | Digital audio signal compression method and apparatus |
CN1323345C (zh) * | 2004-03-22 | 2007-06-27 | 凌阳科技股份有限公司 | 资料压缩/解压缩装置及其应用系统 |
JP2006201969A (ja) * | 2005-01-19 | 2006-08-03 | Fujitsu Ltd | エラー情報圧縮装置、エラー情報圧縮方法およびエラー情報圧縮プログラム |
US10454483B2 (en) * | 2016-10-24 | 2019-10-22 | Analog Devices, Inc. | Open loop oscillator time-to-digital conversion |
US10768861B1 (en) | 2019-02-27 | 2020-09-08 | Microsoft Technology Licensing, Llc | In-place safe decompression |
GB2605965A (en) * | 2021-04-16 | 2022-10-26 | Canon Kk | Methods and devices for improving storage and transmission of uncompressed data while using a standard format |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1762804B2 (de) * | 1968-08-29 | 1972-01-20 | Standard Elektrik Lorenz Ag, 7000 Stuttgart | Schaltungsanordnung zur regelung der sende und empfangsbezugs daempfung einer teilnehmerstation einer fernsprechanlage |
US3582546A (en) * | 1969-06-13 | 1971-06-01 | Bell Telephone Labor Inc | Redundancy reduction system for use with a signal having frame intervals |
US3609244A (en) * | 1969-12-18 | 1971-09-28 | Bell Telephone Labor Inc | Conditional replenishment video system with variable length address code |
US3689840A (en) * | 1971-04-29 | 1972-09-05 | Bell Telephone Labor Inc | Coding of sign information in dpcm systems |
US3835385A (en) * | 1973-05-18 | 1974-09-10 | Gen Electric | Digital delta encoder and decoder |
US3882426A (en) * | 1973-05-18 | 1975-05-06 | Gen Electric | Increment varying means for incremental encoder and decoder |
DE2460147C2 (de) * | 1974-12-19 | 1983-05-05 | Ibm Deutschland Gmbh, 7000 Stuttgart | Anordnung zur Dekomprimierung komprimierter Information für aus schwarzen und weißen Bereichen zusammengesetze darzustellende Zeichen |
US4581757A (en) * | 1979-05-07 | 1986-04-08 | Texas Instruments Incorporated | Speech synthesizer for use with computer and computer system with speech capability formed thereby |
DE3403307C2 (de) * | 1984-01-31 | 1986-12-04 | Siemens AG, 1000 Berlin und 8000 München | Übertragungssystem |
DE3405184C2 (de) * | 1984-02-14 | 1986-04-10 | Siemens AG, 1000 Berlin und 8000 München | Übertragungssystem |
JPS60251733A (ja) * | 1984-05-28 | 1985-12-12 | Sony Corp | デイジタル信号伝送装置 |
JPS61126836A (ja) * | 1984-11-22 | 1986-06-14 | Sansui Electric Co | Pcm伝送方式およびその装置 |
US5113496A (en) * | 1987-08-04 | 1992-05-12 | Mccalley Karl W | Bus interconnection structure with redundancy linking plurality of groups of processors, with servers for each group mounted on chassis |
US4902881A (en) * | 1988-06-10 | 1990-02-20 | Faxplus Corporation | Parallel process communications terminal and network |
JPH02110658A (ja) * | 1988-10-19 | 1990-04-23 | Hitachi Ltd | 文書編集装置 |
US5119188A (en) * | 1988-10-25 | 1992-06-02 | Telaction Corporation | Digital audio-video presentation display system |
US5045360A (en) * | 1989-10-26 | 1991-09-03 | Dow Corning Corporation | Silicone primer compositions |
JPH0732413B2 (ja) * | 1990-02-05 | 1995-04-10 | 日本電気株式会社 | マルチメディア通信方式 |
US5056136A (en) * | 1990-03-09 | 1991-10-08 | The United States Of America As Represented By The United States Department Of Energy | Secure video communications system |
JPH0463081A (ja) * | 1990-06-29 | 1992-02-28 | Sanyo Electric Co Ltd | 予測符号化方式 |
CA2051939A1 (en) * | 1990-10-02 | 1992-04-03 | Gary A. Ransford | Digital data registration and differencing compression system |
US5132992A (en) * | 1991-01-07 | 1992-07-21 | Paul Yurt | Audio and video transmission and receiving system |
JP3015134B2 (ja) * | 1991-04-23 | 2000-03-06 | キヤノン株式会社 | 画像処理方法及び装置 |
US5192999A (en) * | 1991-04-25 | 1993-03-09 | Compuadd Corporation | Multipurpose computerized television |
-
1993
- 1993-12-29 US US08/174,800 patent/US5561688A/en not_active Expired - Lifetime
-
1994
- 1994-11-23 EP EP94308662A patent/EP0661819B1/de not_active Expired - Lifetime
- 1994-11-23 DE DE69432072T patent/DE69432072T2/de not_active Expired - Lifetime
- 1994-12-15 JP JP6311427A patent/JP3014285B2/ja not_active Expired - Fee Related
- 1994-12-23 CA CA002139095A patent/CA2139095C/en not_active Expired - Fee Related
-
1996
- 1996-06-26 US US08/670,482 patent/US5654990A/en not_active Expired - Lifetime
- 1996-06-26 US US08/670,483 patent/US5673206A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5654990A (en) | 1997-08-05 |
US5673206A (en) | 1997-09-30 |
JPH07212241A (ja) | 1995-08-11 |
CA2139095C (en) | 1999-09-28 |
EP0661819A2 (de) | 1995-07-05 |
CA2139095A1 (en) | 1995-06-30 |
JP3014285B2 (ja) | 2000-02-28 |
US5561688A (en) | 1996-10-01 |
EP0661819B1 (de) | 2003-01-29 |
DE69432072D1 (de) | 2003-03-06 |
EP0661819A3 (de) | 2000-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69432072T2 (de) | Datenkompression | |
DE3606869C2 (de) | Vorrichtung zur Datenkompression | |
DE3850035T2 (de) | Datenkomprimierungssystem mit Expandierungsschutz. | |
DE69119468T2 (de) | Kodier- und Dekodiervorrichtung für Daten variabler Länge | |
DE69024629T2 (de) | Vorrichtung zur kompression von datenlängen und datenfolgen | |
DE60310368T2 (de) | Verfahren zur verhinderung von startkode-emulation und stopfdaten | |
DE2653288C2 (de) | Verfahren und Anordnung zur Entfernung von vorgebbarer Hintergrundinformation aus einem Bild | |
DE69535569T2 (de) | Verfahren zur Synchronisationsrückgewinnung und Vorrichtung zur variablen Längendekodierung | |
DE2264090C3 (de) | Datenverdichtung | |
DE69318446T2 (de) | Verfahren und Vorrichtung zur Datenkompression und -dekompression für eine Übertragungsanordnung | |
DE69710388T2 (de) | Verlustfreies Datenkomprimierungsverfahren und eine Vorrichtung dafür mit zusätzlicher Vereinfachung der Signalanalyse | |
EP2068448B1 (de) | Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung mit Verwendung mehrerer Tabellen | |
DE69915725T2 (de) | Datenkompression unter Verwendung von Primzahlexponenten | |
DE3531584A1 (de) | Verfahren zum codieren von daten fuer die uebertragung von einer ersten zu einer zweiten datenverarbeitungseinheit und schnittstelle zur durchfuehrung dieses verfahrens | |
DE1296182B (de) | Verfahren zur UEbertragung binaerkodierter Informationssignale sowie Kodierer zur Abgabe solcher Signale und mit diesem betreibbarer Dekodierer | |
DE69530182T2 (de) | Datenkompressionsverfahren und Vorrichtung mit Expansionsschutz | |
DE69932524T2 (de) | Verfahren zum handhaben von datenobjekten in vom benutzer definierten datentypen | |
DE69725280T2 (de) | Kompressionsgerät mit arithmetischer Kodierung unter Verwendung eines kontextualen Models, das zu variablen Musterlängen in binären Bilddaten adaptiv ist | |
EP0980619B1 (de) | Verfahren und vorrichtungen zur codierung, übertragung und decodierung digitaler daten | |
DE2319650B2 (de) | Verfahren und Anordnung zum Umwandeln eines Nachrichtensignals aus einem digitalen Codeformat in ein anderes | |
DE60008871T2 (de) | Datenkomprimierungsverfahren und vorrichtung mit eingebetteter lauflängenkodierung unter benutzung von mathematischer laufverarbeitung | |
DE68927939T2 (de) | Monadische Kodierung vom Start-Schritt-Stop-Typ für die Datenkomprimierung | |
DE19956625C2 (de) | Echtzeit-Datensortierung und -reduktion | |
DE3113189A1 (de) | "verfahren und vorrichtung zur umwandlung von digitalen zeichencodes, die von einem datenverarbeitungssystem empfangen oder geliefert werden" | |
DE2127516A1 (de) | Verfahren zur Übertragung binärcodierter Signale von Bildvorlagen oder Schriftvorlagen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8320 | Willingness to grant licences declared (paragraph 23) | ||
8328 | Change in the person/name/address of the agent |
Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7 |