DE69918172T2 - Entropiekodierung von variabler zu variabler länge - Google Patents

Entropiekodierung von variabler zu variabler länge Download PDF

Info

Publication number
DE69918172T2
DE69918172T2 DE69918172T DE69918172T DE69918172T2 DE 69918172 T2 DE69918172 T2 DE 69918172T2 DE 69918172 T DE69918172 T DE 69918172T DE 69918172 T DE69918172 T DE 69918172T DE 69918172 T2 DE69918172 T2 DE 69918172T2
Authority
DE
Germany
Prior art keywords
symbols
variable
codebook
entropy
grouping
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
DE69918172T
Other languages
English (en)
Other versions
DE69918172D1 (de
Inventor
Wei-Ge Chen
Ming-Chieh Lee
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE69918172D1 publication Critical patent/DE69918172D1/de
Publication of DE69918172T2 publication Critical patent/DE69918172T2/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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory

Landscapes

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

Description

  • Die Erfindung betrifft Datenkompression im Allgemeinen und eine Form von Entropiecodierung im Besonderen.
  • In einer typischen Audio-Codierungsumgebung werden Daten als eine lange Folge von Symbolen dargestellt, die in einen Coder eingegeben werden. Die eingegebenen Daten werden durch einen Coder codiert, über einen Kommunikationskanal übertragen (oder einfach gespeichert) und durch einen Decoder decodiert. Während des Codierens wird die Eingabe vorverarbeitet, abgetastet, umgewandelt, komprimiert oder anderweitig in eine Form zur Übertragung oder Speicherung verarbeitet. Nach der Übertragung oder Speicherung versucht der Decoder, die ursprüngliche Eingabe zu rekonstruieren.
  • Audio-Codierverfahren können gewöhnlich in zwei Klassen eingeteilt werden, nämlich Zeitbereichsverfahren und Frequenzbereichsverfahren. Zeitbereichsverfahren, z. B. ADPCM, LPC, arbeiten direkt im Zeitbereich, während Frequenzbereichsverfahren die Audiosignale in den Frequenzbereich transformieren, wo die eigentliche Kompression stattfindet. Die Frequenzbereichs-Codecs können weiter in entweder Unterband- oder Transformations-Coder getrennt werden, obwohl die Unterscheidung zwischen den beiden nicht immer klar ist. Die Verarbeitung eines Audiosignals im Frequenzbereich wird sowohl durch klassische Signalverarbeitungstheorien als auch menschliche Wahrnehmungsmodelle (z. B. Psychoakustik) begründet. Das Innenohr, speziell die Basilarmembran, verhält sich wie ein Spektralanalysator und transformiert das Audiosignal in Spektraldaten, bevor die wertere neurale Verarbeitung vonstatten geht.
  • Die Frequenzbereichs-Audiocodecs machen oft Gebrauch von vielen Arten von Gehörmaskierung, die mit dem menschlichen Hörsystem einhergehen, um das ursprüngliche Signal zu modifizieren und sehr viele Einzelheiten/Redundanzen zu beseitigen. Da die menschlichen Ohren nicht imstande sind, diese Modifikationen wahrzunehmen, wird eine effizienze Kompression erreicht. Maskierung wird gewöhnlich in Verbindung mit Quantisierung durchgeführt, sodass Quantisierungsrauschen bequem ”verschleiert” werden kann. Bei modernen Audio-Codierverfahren werden quantisierte Spektraldaten gewöhnlich durch Anwenden von Entropiecodierung, z. B. Huffman-Codierung, weiter komprimiert.
  • Kompression ist erforderlich, weil es eine grundsätzliche Begrenzung des Kommunikationsmodells ist, dass Übertragungskanäle in der Regel eine begrenzte Kapazität oder Bandbreite besitzen. Folglich ist es häufig erforderlich, den Informationsgehalt der Eingangsdaten zu verringern, um ihnen zu erlauben, zuverlässig, wenn überhaupt, über den Kommunikationskanal übertragen zu werden. Im Laufe der Zeit ist sehr viel Mühe bei der Entwicklung verlustloser und verlustbehafteter Kompressionsverfahren aufgewandt worden, um die Größe von Daten zum Übertragen oder Speichern zu reduzieren. Ein beliebtes verlustloses Verfahren ist Huffman-Codierung, die eine besondere Form von Entropiecodierung ist.
  • Entropiecodierung weist Codewörter verschiedenen Eingangssquenzen zu und speichert alle Eingangssequenzen in einem Codebuch. Die Komplexität von Entropiecodierung hängt von der Zahl m von möglichen Werten ab, die eine Eingangssequenz X annehmen kann. Für ein kleines m gibt es wenig mögliche Eingangskombinationen, und das Codebuch für die Nachrichten kann sehr klein sein (z. B. sind nur ein paar Bits nötig, um alle möglichen Eingangssequenzen eindeutig darzustellen). Für digitale Anwendungen ist das Codealphabet höchstwahrscheinlich eine Serie von binären Ziffern (0, 1), und Codewortlängen werden in Bits gemessen.
  • Wenn bekannt ist, dass eine Eingabe aus Symbolen mit gleicher Wahrscheinlichkeit des Vorkommens besteht, ist es eine optimale Codierung, gleich lange Codewörter zu verwenden. Aber es ist nicht typisch, dass ein Eingangsstrom gleiche Wahrscheinlichkeit des Empfangens irgendeiner bestimmten Nachricht aufweist. In der Praxis sind gewisse Nachrichten wahrscheinlicher als andere, und Entropiecoder machen davon Gebrauch, um die mittlere Länge von Codewörtern unter erwarteten Eingaben zu minimieren. Herkömmlich werden jedoch Eingangssequenzen fester Länge Codes variabler Länge zugewiesen (oder umgekehrt, Sequenzen variabler Länge werden Codes fester Länge zugewiesen).
  • Internationale Veröffentlichung WO 98/40969 beschreibt ein System zum Komprimieren einer ASCII- oder ähnlich codierten Textdatei. Pipelining von bestimmten Datenkompressionsalgorithmen wird in Bailey und Mukkamala, ”Pipelining Data Compression Algorithms”, The Computer Journal, Vol. 33 Nr. 4 (August 1990) beschrieben. Ein adaptiver Algorithmus für verlustlose Kompression von digitalem Audio wird in Shamoon und Heegard, ”A Rapidly Adaptive Lossless Compression Algorithm für High Fidelity Audio Coding”, Proc. IEEE Data Compression Conf., 430–39 (1994) beschrieben. Ein Vergleich der H.261- und MPEG1-Videokompressionsstandards wird in von Roden, ”H.261 und MPEG1 – A Comparison”, Proc. IEEE 15. Ann. Int'l Conf. On Computers and Comm., 65–71 (1996) beschrieben.
  • Die Erfindung wird durch die Gegenstände der unabhängigen Ansprüche definiert.
  • Bevorzugte Ausführungen werden in den abhängigen Ansprüchen definiert.
  • Die Erfindung betrifft die Verwendung eines variabel zu variabel Entropiecoders, um einen beliebigen Eingabestrom zu codieren. Ein variabel zu variabel Entropiecoder codiert Eingabesequenzen variabler Länge mit Codes variabler Länge. Um die Codebuchgröße zu begrenzen, können Entropietyp-Codes nur wahrscheinlichen Eingaben zugewiesen werden, und alternative Codes werden benutzt, um weniger wahrscheinliche Sequenzen zu identifizieren.
  • Um das Absuchen des Codebuches zu optimieren, kann es in Abschnitten organisiert werden, die getrennt abgesucht werden. Eine Anordnung ist z. B., alle gespeicherten Eingabesequenzen in dem Codebuch entsprechend dem ersten Symbol in der Eingangssequenz zu gruppieren. Eine Hash-Codierfunktion, Sammlung von Zeigern oder ein anderes Verfahren können benutzt werden, um sofort zu einem gegebenen Abschnitt des Codebuches zu springen. Jeder Abschnitt kann des Werteren entsprechend der mit dem Eintrag verbundenen Wahrscheinlichkeit sortiert werden. Zum Beispiel kann jeder Abschnitt so sortiert sein, dass höchstwahrscheinliche Eingaben in dem Abschnitt zuerst stehen, um so die Wahrscheinlichkeit zu erhöhen, dass eine Übereinstimmung schnell gefunden wird.
  • Das Abgleichen von Codebucheinträgen hängt von der internen Darstellung des Buches ab. In einer Baumstruktur können z. B. Knoten jedes Zeichen der Eingabe darstellen, sodass das Erreichen eines Blattes das Ende und die Identifikation einer bestimmten Gruppierung von Eingabesymbolen bedeutet. In einer Tabellenstruktur kann ein Musterabgleichalgorithmus auf jeden Tabelleneintrag in dem geeigneten Abschnitt angewandt werden. Abhängig von der Implememtierung der Tabelle und der Abgleichalgorithmen kann das Suchen durch die Erkenntnis erleichtert werden, dass nur so viele Eingabesymbole wie die längste Gruppierung in dem Codebuchabschnitt in Betracht gezogen werden müssen. Nach Finden einer Codebuchübereinstimmung kann der entsprechende Entropietyp-Code ausgegeben und das Suchen mit dem nächsten Symbol, das der abgeglichenen Eingabe folgt, wiederholt werden.
  • Die veranschaulichten Ausführungen konzentrieren sich auf das Codieren von Audiodaten, und von dem Eingangsstrom wird erwartet, dass er irgendein Datenstrom ist, z. B. Zahlen, Zeichen oder Binärdaten, die Audio codieren. Zur Einfachheit wird der Eingangsstrom hierin als eine Serie von Symbolen bezeichnet, wo sich jedes ”Symbol” auf die geeignete Maßeinheit für die einzelne Eingabe bezieht. Der Eingangsstrom kann von einem lokalen Speicher, von Intranetzen, dem Internet oder von Streaming-Daten herrühren (z. B. Microsoft's ”NET-SHOW”TM Client/Server-Streaming-Architektur).
  • 1 ist ein Blockschaltbild eines Computersystems, das benutzt werden kann, variabel zu variabel Entropiecodierung zu implementieren.
  • 2 zeigt ein Grundkommunikationsmodell zum Übertragen von Streaming- und Nicht-Streaming-Daten.
  • 3 ist ein Flussdiagramm, das das Erzeugen eines Codebuches mit variabel langen Einträgen für variabel lange Symbolgruppierungen zeigt.
  • 410 veranschaulichen das Erzeugen eines Codebuches nach 3 für ein Alphabet (A, B, C).
  • 11 zeigt das Codieren von Audiodaten.
  • 12 veranschaulicht einen Entropiecoder.
  • Die Erfindung ist in einem audiovisuellen Codec (Kompressor/Dekompressor) implementiert worden. Dies ist nur ein Beispiel wie die Erfindung implementiert werden kann. Die Erfindung ist gedacht, immer dort verwendet zu werden, wo Entropiecodierung benutzt werden kann, und ist auf das Komprimieren jeder Art von Daten anwendbar. Kurz beschrieben, optimale Entropiecodierung erfordert übermäßige Ressourcen, und die veranschaulichten Ausführungen liefern eine fast optimale Codierungslösung, die weit weniger Ressourcen erfordert.
  • Exemplarische Betriebsumgebung
  • 1 und die folgende Erörterung sind gedacht, eine kurze, allgemeine Beschreibung einer geeigneten Rechenumgebung zu geben, in der die Erfindung implementiert werden kann. Während die Erfindung in dem allgemeinen Kontext von computerausführbaren Anweisungen eines Computerprogramms, das auf einem Personal Computer läuft, beschrieben wird, werden die Fachleute in der Technik anerkennen, dass die Erfindung auch in Kombination mit anderen Programmmodulen implementiert werden kann. Programmmodule umfassen im Allgemeinen Routinen, Programme, Komponenten, Datenstrukturen usw., die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren. Weiterhin werden die Fachleute in der Technik anerkennen, dass die Erfindung mit anderen Computersystemkonfigurationen praktiziert werden kann, die handgehaltene Geräte, Multiprozessorsysteme, Mikroprozessor-basierte oder programmierbare Verbraucherelektronik, Minicomputer, Mainframe-Computer und dergleichen einschließen. Die veranschaulichte Ausführung der Erfindung kann auch in verteilten Rechenumgebungen praktiziert werden, wo Tasks durch entfernte Verarbeitungseinrichtungen, die durch ein Kommunikationsnetz verbunden sind, durchgeführt werden. Aber einige Ausführungen der Erfindung können auf allein stehenden Computern praktiziert werden. In einer verteilten Rechenumgebung können sich Programmmodule sowohl in lokalen als auch in entfernten Speichereinrichtungen befinden.
  • Mit Veweis auf 1 umfasst ein exemplarisches System zur Implementierung der Erfindung einen Computer 20, einschließlich einer Verarbeitungseinheit 21, eines Systemspeichers 22 und eines Systembusses 23, der verschiedene Systemkomponenten, einschließlich des Systemspeichers, mit der Verarbeitungseinheit 21 verbindet. Die Verarbeitungseinheit 21 kann jeder von verschiedenen käuflichen Prozessoren sein, einschließlich Intel x86, Pentium und kompatiblen Mikroprozessoren von Intel und anderen, des Alpha-Prozessors von Digital und des PowerPC von IBM und Motorola. Zweifach-Mikroprozessoren und andere Multiprozessorarchitekturen können auch als die Verarbeitungseinheit 21 verwendet werden.
  • Der Systembus kann jeder von verschiedenen Typen von Busstrukturen sein, einschließlich eines Speicherbusses oder Speicherkontrollers, eines Peripheriebusses und eines Lokalbusses, der eine einer Vielfalt von herkömmlichen Busarchitekturen wie PCI, AGP, VESA, Microchannel, ISA und EISA, um nur ein paar zu nennen, verwendet. Der Systemspeicher enthält einen Nurlesespeicher (ROM) 24 und einen Direktzugriffsspeicher (RAM) 25. Im ROM 24 ist ein Basis-Eingabe/Ausgabesystem (BIOS) 26 gespeichert, das die Basisroutinen enthält, die helfen, Information zwischen Elementen in dem Personal Computer 20 zu übertragen, z. B. während des Hochlaufens.
  • Der Personal Computer 20 enthält weiter ein Festplattenlaufwerk 27, ein Magnetplattenlaufwerk 28, z. B. zum Lesen und Beschreiben einer wechselbaren Platte 29, und ein optisches Plattenlaufwerk 30, z. B. zum Lesen einer CD-ROM Platte 31, oder zum Lesen oder Beschreiben von anderen optischen Medien. Das Festplattenlaufwerk 27, das Magnetplattenlaufwerk 28 und das optische Plattenlaufwerk 30 sind mit dem Systembus 23 über eine Festplattenschnittstelle 32, eine Magnetplattenschnittstelle 33 und eine optische Plattenschnittstelle 34 verbunden. Die Laufwerke und ihre zugehörigen computerlesbaren Medien liefern nicht flüchtige Speicherung von Daten, Datenstrukturen, computerausführbaren Anweisungen usw. für den Computer 20. Obwohl die Beschreibung von computerlesbaren Medien oben sich auf eine Festplatte, eine wechselbare Magnetplatte und eine CD bezieht, werden die Fachleute erkennen, dass andere Arten von computerlesbaren Medien, z. B. Magnetkassetten, Flash-Speicherkarten, digitale Videoplatten, Bernoulli-Kassetten und Mag netkassetten, Flash-Speicherkarten, digitale Videoplatten, Bernoulli-Kassetten und dergleichen, ebenfalls in der exemplarischen Betriebsumgebung verwendet werden können.
  • Eine Anzahl von Programmmodulen kann in den Laufwerken und dem RAM 25 gespeichert werden, einschließlich eines Betriebssystems 35, einem oder mehr Anwendungsprogrammen (z. B. Internet-Browser-Software) 36, anderen Programmmodulen 37 und Programmdaten 38.
  • Ein Benutzer kann Befehle und Information über eine Tastatur 40 und eine Zeigegerät, z. B. eine Maus 42, in den Computer 20 eingeben. Andere Eingabeeinrichtungen (nicht gezeigt) können ein Mikrofon, einen Joystick, ein Gamepad, eine Satellitenschüssel einen Scanner oder dergleichen einschließen. Diese und andere Eingabeeinrichtungen werden oft mit der Verarbeitungseinheit 21 durch eine Serialport-Schnittstelle 46 verbunden, die mit dem Systembus verbunden ist, können aber durch andere Schnittstellen, z. B. einen Parallelport, einen Gameport oder einen Universal-Serienbus (USB) verbunden werden. Ein Monitor 47 oder eine andere Art von Anzeigeeinrichtung sind ebenfalls mit dem Systembus 23 über eine Schnittstelle, z. B. einen Videoadapter 48, verbunden. Zusätzlich zu dem Monitor umfassen Personal Computer typischerweise andere periphere Ausgabeeinrichtungen (nicht gezeigt), z. B. Lautsprecher und Drucker.
  • Der Computer 20 soll unter Verwendung von logischen Verbindungen zu einem oder mehr entfernten Computern, z. B. ein entfernter Computer 49, in einer vernetzten Umgebung arbeiten. Obwohl in 1 nur eine Speichereinrichtung 50 gezeigt wurde, kann der entfernte Computer 49 ein Web-Server, Router, eine Peer-Einrichtung oder ein anderer gemeinsamer Netzwerkknoten sein und typischerweise viele oder alle bezüglich des Computers 20 beschriebenen Elemente enthalten. Der Computer 20 kann den entfernten Computer 49 über eine durch eine Gateway 55 (z. B. ein Router, eine überlassene Leitung oder andere Netzwerkverbindung) hergestellte Internet-Verbindung, eine Modem- 54 Verbindung oder durch ein lokales bürointernes Netzwerk (LAN) 51 oder ein Weitbereichs-Netzwerk (WAN) 52 kontaktieren. Es ist einzusehen, dass die gezeigten Netzwerkverbindungen exemplarisch sind und andere Mittel zum Herstellen einer Kommunikationsverbindung zwischen Computern benutzt werden können.
  • Entsprechend den Gepflogenheiten von in der Technik der Computerprogrammierung erfahrenen Personen wird die vorliegende Erfindung, sofern nicht anders angegeben, unten mit Verweis auf Akte und symbolische Darstellungen von Operationen, die durch den Computer 20 durchgeführt werden, beschrieben. Solche Akte und Operationen werden manchmal als computerausgeführt bezeichnet. Man wird einsehen, das die Akte und symbolisch dargestellten Operationen die Manipulation durch die Verarbeitungseinheit 21 von elektrischen Signalen, die Datenbits darstellen, was eine resultierende Transformation oder Reduktion der elektrischen Signaldarstellung bewirkt, und die Unterhaltung von Datenbits in Speicherstellen des Speichersystems (einschließlich des Systemspeichers 22, der Festplatte 27, den Floppydisks 29 und der CD-ROM 31), um dadurch den Betrieb des Computersystems zu rekonfigurieren oder anderweitig zu ändern, sowie andere Verarbeitung von Signalen umfassen. Die Speicherstellen, wo Datenbits unterhalten werden, sind physikalische Stellen, die entsprechend den Datenbits bestimmte elektrische, magnetische oder optische Eigenschaften aufweisen.
  • 2 zeigt ein Grundkommunikationsmodell. In einem Grundkommunikationsmodell gibt es eine Datenquelle oder Sender 200, einen Kommunikationskanal 204 und einen Datenempfänger 208. Die Quelle kann jemand sein, der auf einem Telefon über Telefonleitungen mit einer anderen Person spricht. Oder die Quelle kann eine durch drahtlose Verfahren an Fernsehgeräte oder Radioempfänger gesendete Fernseh- oder Radioübertragung sein. Oder die Quelle kann eine digitale Codierung von Audiodaten sein, die über eine verdrahtete oder drahtlose Strecke (z. B. ein LAN oder das Internet) an einen entsprechenden Decoder für die Information gesendet werden.
  • Um das Senden und Empfangen der Daten zu ermöglichen, wird ein Coder 202 benutzt, um die Datenquelle auf das Senden über den Kommunikationskanal 204 vorzubereiten. Der Coder ist zuständig für das Umwandeln der Quellendaten in ein für den Kanal 204 geeignetes Format. Zum Beispiel wird im Kontext eines gewöhnlichen Telefonanrufs jemandens Stimme durch den Telefonhörer von Stimmklängen in Analogimpulse umgewandelt, die als analoge Daten an lokale Telefonempfangsanlagen gesendet werden. Dieses Analogsignal wird dann in digitale Form umgesetzt, mit zahlreichen anderen ähnlich codierten Unterhaltungen gemultiplext und über eine gemeinsame Leitung an den Empfänger übertragen. In 2 entspricht der Kanal 204 zum großen Teil einem gemeinsamen Pfad, den sich vielfache Sender und Empfänger teilen. Für Netzwerkanwendungen ist der Kanal 204 gewöhnlich ein Intranet oder das Internet. Am empfangenden Ende 208 wird ein Decoder 206 benötigt, um den Codierprozess umzukehren, um so dem Empfänger sensible Daten zu präsentieren.
  • Dieses einfache Modell berücksichtigt jedoch nicht die wirklichen Forderungen von Anwendungsprogrammen. Ein Client (z. B. ein Anwendungsprogramm) möchte empfangene Daten in Echtzeit verarbeiten, anzeigen oder abspielen, sobald sie über eine Netzwerkstrecke rückgewonnen sind. Zu diesem Zweck wird ein Streaming-Liefersystem benötigt, d. h., ein adap tives Datenübertragungssystem, das eine Anwendungsstufen-Bandbreitenreservierung für einen Datenstrom erlaubt. Streaming-Umgebungen stehen im Gegensatz zu herkömmlichen Netzwerk-Programmen, z. B. bestimmten Versionen von Internet-Browsern, die den Inhalt von Web-Seiten auf einer nicht bevorrechtigten Basis herunterladen und es erlauben, die Dateninhaltslieferung über die Netzwerkverbindung 204 für bestimmte Rückgewinnungsbedürfnisse (z. B. eine Verbindung mit langsamer Einwahl) zu instrumentieren (und zu optimieren).
  • Ein exemplarisches Streaming-Format (SF) ist das Microsoft 'Active Streaming Format'. Im Allgemeinen definiert SF die Struktur von komplexen, synchronisierten Objektdatenströmen. Jedes Objekt kann in einen SF-Datenstrom gelegt werden, einschließlich Audio- und Videodatenobjekten, Skripts, ActiveX-Steuerungen und HTML-Dokumenten. SF-Daten können in einer Datei gespeichert oder in Echtzeit unter Verwendung von Audio- und Video-Erfassungshardware erzeugt werden. Eine Anwendungsprogrammierungsschnittstelle (API), die einer Implementierung des SF entspricht, kann eine Anwendung mit Unterstützung zum Liefern und Empfangen von Streaming-Inhalt bereitstellen. Eine solche API ist der Microsoft Audio Compression Manager (ACM), der Funktionen zur Verarbeitung (Komprimieren und Liefern) von Audiodaten bereitstellt. Andere Netzwerk-APIs, die benutzt werden können, um das SF zu unterstützen, schließen die Microsoft Win32 Internet Extensions (WinInet), Win-Sock und TCP/IP APIs ein. (Zu weiterer Information siehe die 1998 Visual Studio 6.0 MSDN Library). Man beachte, dass beabsichtigt ist, dass verarbeitete Daten zur späteren Rückgewinnung durch einen Client gespeichert werden können, und dass solches Rückgewinnen in einem Nicht-Streaming-Format (z. B. durch ein kleines Abspielgerät) durchgeführt werden kann.
  • Um Streaming- oder Nicht-Streaming-Daten zu übertragen, wandeln Netze wie das Internet die Quellendaten in eine für das Netz geeignete Paketform um. Pakete enthalten gewöhnlich Routing-Information sowie die tatsächlichen Daten. SF-Datenströme bestehen vorzugsweise aus Datenpaketen, die über jedes digitale Netz übertragen werden können, indem sie eines zu einer Zeit in das Datenfeld von Netzwerkpaketen eingefügt werden. Jedes SF-Paket kann einen priorisierten Mix aus Daten von verschiedenen Objekten innerhalb des Stromes enthalten, sodass die Bandbreite auf höher priorisierte Objekte konzentriert (oder organisiert, um Durchsatz zu optimieren) werden kann. Diese Daten können in Echtzeit erfasst, im nicht flüchtigen Speicher gespeichert, von bestehenden Audio- oder Videoformaten umgewandelt, durch Kombinieren von Audio mit Bildern und Skripts erzeugt oder über das Netzwerk an ein Client Programm oder einen Betrachter geliefert werden. Der Client-Empfänger 208 der Streaming-Daten kann eine herkömmliche ”Helfer”-Anwendung (für Kompatibität mit der al ten Web-Veröffentlichungslösung) oder eine modernere in einer Webseite eingebettete Webseitensteuerung (z. B. ein ActiveX-Objekt) sein.
  • SF Datenströme werden von dem herkömmlichen Netzwerkinhalt in Echtzeit unterschieden, wenn ein Client sie empfängt. Das Abspielen des geströmten Inhalts wird leider anfällig für Übertragungsverzögerungen. Wenn Daten nicht zuverlässig eintreffen, oder wenn die Übertragungsgeschwindigkeit unter ein annehmbares Minimum fällt, kann das Abspielen des Inhalts nicht mit einer annehmbaren Rate weitergehen. Glatt strömendes Abspielen bei einem Client verlangt, dass die Übertragung eine Bandbreite kleiner als die verfügbare Bandbreite des Client benötigt (z. B. die Geschwindigkeit der Strecke 204 minus Netzarbeits-Overhead). Eine Wählverbindung zu dem Internet stellt typisch eine Bandbreite von 28–34 kpps bereit. Audiovisuelle Quellendaten (die bandbreitenintensiv sind) müssen folglich erheblich komprimiert werden, um ihre Übertragung über Verbindungen mit niedriger Bitrate zu erlauben. Der Grad an Kompression beeinflusst notwendigerweise die Qualität des wiedergegebenen Signals. Ein Server stellt vorzugsweise mehrfache für verschiedene Netzwerk-Geschwindigkeiten optimierte Quellen bereit oder benutzt ein adaptives Rückkopplungssystem, um eine Echtzeit-Analyse des tatsächlichen Durchsatzes des Client durchzuführen.
  • Sobald SF-Datenpakete codiert 202 und in Netzwerkpakete gelegt und über das Netzwerk 204 gesendet sind, sorgt die Routing-Technologie des Netzwerks für des Liefern der Netzwerkpakete an den Empfänger 208. Von dem Rundfunksender 200 werden vorzugsweise eine Vielfalt von Netzwerk- und Anwendungsprotokollen, z. B. UDP, TCP, RTP, IP, Multicast, IPX und HRRP, unterstützt.
  • Wie oben erörtert ist die Bandbreite begrenzt, und der Coder 202 muss gewöhnlich Daten vor dem Übertragen komprimieren. Ein besonders wirkungsvolles Verfahren zur Codierung von Quellendaten-Frequenzkoeffizienten, um zuverlässige Übertragung über einen Kommunikationskanal sicherzustellen, ist Entropiecodierung. Entropiecodierung zieht Nutzen aus Datenkohärenz und ist wirkungsvoll, wenn Symbole eine ungleichmäßige Wahrscheinlichkeitsverteilung aufweisen.
  • 3 ist ein Flussdiagramm, das ein bevorzugtes Verfahren zum Erzeugen des Codebuches eines Entropiecoders zeigt. Im Gegensatz zu Verfahren des Standes der Technik veranschaulicht 3 insbesondere, wie ein Codebuch mit variabel langen Codezuweisungen für variabel lange Symbolgruppierungen zu erzeugen ist. Wie oben erörtert benötigen Verfahren des Standes der Technik entweder Codes fester Länge oder feste Blöcke von Eingabe. Bevorzugte Implementierungen überwinden die Ressourcen-Anforderungen von Großdi mensions-Vektorcodierung und die Nichtanwendbarkeit von Codierung auf Wörter gleicher Längen, indem ein Entropie-basierter variabel zu variabel Code bereitgestellt wird, wo Codewörter variabler Länge benutzt werden, um X-Sequenzen variabler Länge zu codieren.
  • Es sei angenommen, dass yi jede Quellensymbolgruppe {xj}, für 1 <= j <= Ni mit der Wahrscheinlicht Pi des Vorkommens innerhalb des Eingangsstromes (2 Kanal 204) darstellt, und dass jeder Gruppe ein entsprechendes Codewort mit Li Bits zugewiesen wird. Es wird davon ausgegangen, dass xi aus einen festen Alphabet vorbestimmter Größe genommen wird. Die Aufgabe ist, die Gleichung L = Σi(Li·Pi)/Nizu minimieren.
  • Anstatt eine allgemeine Lösung für das Problem zu finden, wird das Problem in zwei verschiedene Aufgaben geteilt. Die erste Aufgabe ist das Indentifizieren einer (sub-optimalen) Gruppierung eines Satzes von Eingangssymbolen {xi} durch eine unten beschriebene Weise. Die zweite Aufgabe ist das Zuweisen eines Entropiecodes für die gruppierten Symbole {yi}. Man beachte, dass bekannt ist, dass, wenn die Quelle nicht kohärent ist (d. h. der Eingang unabhängig oder ohne Gedächtnis ist), jede Gruppierung, die die gleiche Konfiguration von {Nj} hat, die gleiche Codiereffizienz erzielen kann. Bei dieser Situation wird die erste Aufgabe belanglos.
  • Um die erste Aufgabe durchzuführen, wird eine anfängliche triviale Symbolgruppierung 300, z. B. {yi} = {xi} vorbereitet. Diese anfängliche Konfiguration nimmt an, dass ein exemplarischer Eingangsstrom benutzt wird, um das Erzeugen des Codebuches zu üben. Es versteht sich, dass ein Computer mit Software-Konstruktionen, z. B. Datenstrukturen, programmiert werden kann, um den Empfang jedes Symbols von einer Eingabe zu verfolgen. Solche Datenstrukturen können als eine Binärtyp-Baumstruktur, Hash-Tabelle oder eine Kombination der zwei implementiert werden. Andere gleichwertige Strukturen können ebenfalls verwendet werden.
  • Nach Bestimmen der trivialen Gruppierung wird die Wahrscheinlichkeit des Vorkommens jedes yi in 302 berechnet. Eine solche Wahrscheinlichkeit wird in Bezug auf irgendeine exemplarische Eingabe bestimmt, die benutzt wird, um die Codebucherzeugung zu üben. Sowie weitere Symbole zu der Symboldatenstruktur hinzugefügt werden, werden die Wahrscheinlichkeiten dynamisch justiert.
  • Als Nächstes wird die meist wahrscheinliche Gruppierung yi (bezeichnet mit ymp) in 304 identifiziert. Wenn in 306 das Symbol mit der höchsten Wahrscheinlichkeit eine Gruppierung von früheren Symbolen mit niedrigerer Wahrscheinlichkeit ist, wird in 308 die Gruppierung in ihre Bestandteilsymbole zerlegt, und die Verarbeitung wird von Schritt 302 neu begonnen. (Obwohl Symbole kombiniert werden können, bewahrt die Gruppe die Erinnerung von allen Symbolen darin, sodass Symbole extrahiert werden können.)
  • Wenn das Symbol keine Gruppierung ist, geht die Verarbeitung bei Schritt 310 weiter, wo die meist wahrscheinliche Gruppierung dann vorläufig mit einzelnen Symbolerweiterungen xi's erweitert 310 wird. Vorzugsweise wird ymp mit jedem Symbol aus dem verwendeten X-Alphabet erweitert. Jedoch kann ein Prädiktor verwendet werden, um nur einen Erweiterungssatz zu erzeugen, der nur wahrscheinliche Erweiterungen enthält, wenn das Alphabet sehr groß ist, und bekannt ist, dass viele Erweiterungen unwahrscheinlich sind. Zum Beispiel kann ein Prädiktor auf semantischer oder zusammenhanglicher Bedeutung basiert sein, sodass sehr unwahrscheinliche Erweiterungen von vorherein ignoriert werden können.
  • Die Wahrscheinlichkeit für jede vorläufige Erweiterung von ymp wird dann berechnet 312, und nur die meist wahrscheinliche Erweiterung wird bewahrt 314. Der Rest der weniger wahrscheinlichen Erweiterungen werden als eine kombinierte Gruppierung zusammenfallen gelassen 316 und im Codebuch mit einem speziellen Symbol gespeichert, um eine kombinierte Gruppierung anzuzeigen. Dieses Wild-Card-Symbol stellt jede beliebige Symbolgruppierung mit ymp als ein Präfix dar, aber mit einer Erweiterung (Suffix), die sich von der meist wahrscheinlichen Erweiterung unterscheidet. Das heißt, wenn ymp + xmp die meist wahrscheinliche Wurzel und Erweitung ist, werden die anderen weniger wahrscheinlichen Erweiterungen als ymp*,* <> xmp dargestellt. (Man beachte, dass diese Erörterung zur Klarheit von serieller Verarbeitung von Einsymbol-Erweiterungen ausgeht; jedoch wird parallele Verarbeitung von Mehrsymbol-Erweiterungen erwogen.)
  • Eine in der Technik erfahrene Person wird verstehen, dass das Anwenden von Einsymbol-Erweiterungen und das Bewahren nur der meist wahrscheinlichen Gruppierung zur Klarheit der Erörterung auferlegte Einschränkungen sind. Weiter ist zu verstehen, dass, obwohl sich die Erörterung auf serielle Verarbeitung konzentriert, die Codebuch-Konstruktion parallel durchgeführt werden kann.
  • Doe Codebuch-Konstruktion wird vollendet, indem die Schritte 302326 wiederholt 318 werden, bis alle Erweiterungen gemacht sind oder die Zahl der Codebucheinträge eine vorbestimmte Grenze erreicht. Das heißt, das Wiederholen der Berechnung von Wahrscheinlich keiten für jedes laufende yi 302, wo der Codebuchsatz {Y} nun ymp + xmp enthält, und jeweils Wählen 304 und Gruppieren von meist und geringst wahrscheinlichen Erweiterungen. Die Wirkung des wiederholten Anwendens der obigen Operationen ist, automatisch Symbolgruppierungen mit hoher Korrelation zu sammeln, sodass Zwischengruppen-Korrelation minimiert wird. Dies minimiert den Zähler von L, während gleichzeitig die Länge des meist wahrscheinlichen yi maximiert wird, sodass der Nenner von L maximiert wird.
  • 410 veranschaulichen ein Codebuch gemäß 3 für ein Alphabet (A, B, C). Für diese Erörterung wird das Codebuch in Bezug auf einen exemplarischen Eingangsstrom ”A A A B B A A C A B A B B A B” definiert. Wie oben erörtert hönnen ein oder mehr exemplarische Eingänge benutzt werden, um ein Codebuch zu erzeugen, das dann von Codern und Decodern verwendet wird, um beliebige Eingänge zu verarbeiten. Zur Klarheit, das Buch wird als eine Baumstruktur präsentiert, obwohl es tatsächlich als eine lineare Tabelle, Hash-Tabelle, Datenbank usw. implementiert werden kann. Wie gezeigt ist der Baum von links nach rechts orientiert, wo die linke Spalte (z. B. ”A” und ”X0”) die oberste Reihe einer Baumtyp-Struktur darstellt, und nacheinander gezahnte Reihen die ”Kinder” des Knotens der vorangehenden Reihe darstellen (z. B. in einem Oben-Unten-Baum für 5 ist ”A” ein Elternknoten der ersten Reihe für einen Mittelkindknoten der zweiten Reihe ”B”).
  • Bei der Herstellung des Codebuches ist die allgemeine Regel, den meist wahrscheinlichen Blattknoten auszusuchen, ihn zu erweitern, Wahrscheinlichkeiten neu zu berechnen, um den meist wahscheinlichen Blattknoten zu bestimmen, und dann die übrigen Geschwisterknoten in einen einzigen Xn-Knoten (n = 0 .. N, verfolgen jedes Mal, wenn Knoten kombiniert wurden) zu verdichten. Wenn sich ergibt, dass der meist wahrscheinliche Knoten ein Gruppenknoten ist, werden die Gruppe geteilt, Wahrscheinlichkeiten neu berechnet und der meist wahrscheinliche Mitgliedsknoten bewahrt (d. h., die restlichen Gruppenmitglieder werden neu gruppiert). Die Verarbeitung wiederholt sich, bis ein Stopp-Zustand erreicht ist, z. B. ein Codebuch mit vorbestimmter Größe.
  • 4 zeigt eine anfängliche Gruppierung für den Eingangsstrom ”A A A B B A A C A B A B B A B”. Ein anfängliches Zerlegen des Eingangs zeigt Wahrscheinlichkeiten des Vorkommens von A = 8/15, B = 6/15 und C = 1/15. Diese anfängliche triviale Gruppierung kann auf der Basis verschiedener Kriterien erzeugt werden, wobei das einfachste ist, einen Knoten erster Stufe für jedes Zeichen in dem Alphabet zu haben. Wenn jedoch das eingegebene Alphabet groß ist, kann die triviale Gruppe auf eine Untermenge von Symbolen mit höchster Wahrscheinlichkeit begrenzt werden, wo die restlichen Symbole in eine X-Gruppierung kombiniert werden. 4 veranschaulicht diese Verfahren durch Beginnen mit nur zwei Anfangs gruppen, Gruppe A 400 mit Wahrscheinlichkeit 8/15 und Gruppe X0 402 mit Wahrscheinlichkeit 7/15, wo X0 alle verbleibenden Symbole niedriger Wahrscheinlichkeit in dem Alphabet, z. B. B und C, darstellt.
  • Nach Herstellen einer anfänglichen trivialen Gruppierung wird der Blattknoten mit höchster Wahrscheinlichkeit zur Erweiterung ausgewählt (siehe auch 3 Erörterung bezüglich Verarbeitungsfolge). Wie in 5 gezeigt wird daher Gruppe A 400 vorläufig durch jedes Zeichen im Alphabet erweitert (oder man kann die Erweiterung auf eine Untermenge davon begrenzen, wie für das Erzeugen der Anfangsgruppierung beschrieben). Wahrscheinlichkeiten werden dann in Bezug auf den Eingangsstrom ”A A A B B A A C A B A B B A B” neu berechnet, um Werte für die vorläufigen Erweiterungen A 406, B 408 und C 410 zu bestimmen. Das Ergebnis sind neun Teilungsgruppen, wo ”A A” 2/9 erscheint, ”A B” 4/9 erscheint und ”A C” 0/9 erscheint. Die meist wahrscheinliche Erweiterung ”A B” wird daher beibehalten, und die anderen Erweiterungen werden in X1 = A, C zusammenfallen gelassen. Man beachte, dass, obwohl diese Erörterung wiederholt alle Wahrscheinlichkeiten neu berechnet, es ein effizienterer Weg ist, Wahrscheinlichkeiten und Verbindungen für jeden Knoten innerhalb des Knotens zu bewahren, und nur Information, wenn nötig, zu berechnen.
  • 6 zeigt das Zusammenfallen in X1 für 5. Die Verarbeitung wiederholt sich mit dem Identifizieren des Knotens mit höchster Wahrscheinlichkeit, z. B. Knoten B 408 mit Wahrscheinlichkeit 4/9.
  • Wie in 7 gezeigt wird dieser Knoten 408 vorläufig mit Symbolen A 414, B 416, C 418 erweitert, und, wie oben erörtert, wird die vorläufige Gruppierung mit höchster Wahrscheinlichkeit bewahrt. Nach Neuberechnen der Wahrscheinlichkeiten sind das Ergebnis acht Teilungsgruppen, in denen die Symbolfolge ”A B A” 414 einmal erscheint, ”A B B” 416 einmal erscheint und ”A B C” 418 überhaupt nicht erscheint. Da die vorläufigen Erweiterungen A 414 und B 416 die gleiche Wahrscheinlichkeit des Vorkommens haben, muss eine Regel definiert werden, um zu wählen, welches Symbol zu bewahren ist. Für diese Erörterung wird, wann immer es gleiche Wahrscheinlichkeiten gibt, der Knoten der höchsten Reihe (z. B. der Kindknoten ganz links in einem Oben-Unten-Baum) bewahrt. Desgleichen wird, wenn es einen Konflikt zwischen Baumreihen gibt, der Knoten der Reihe ganz links (z. B. der Knoten nächst der Wurzel eines Oben-Unten-Baumes) bewahrt.
  • Man beachte, dass das oben beschriebene Zerlegen des exemplarischen Eingangs für die nachlaufenden zwei Symbole ”A B” des Eingangs nicht einsteht. Wie in 7 gezeigt, gibt es kein Blatt, das ”A B” entspricht, da diese Konfiguration in ”A B A”, ”A B B” und ”A B C” erweitert wurde. Zum Ausgleich können Codebucheinträge erzeugt werden, um für ein solches Ende von Eingangssquenzen einzustehen, oder dem Eingang, der keinen Eintrag hat, kann mit einem Sonderzeichen entkommen werden, das in den codierten Ausgangsstrom eingefügt wird. Zum Beispiel kann ein Sondersymbol benutzt werden, um das Ende der Eingabe anzuzeigen, un dadurch zu verstehen zu geben, wie nachlaufende Zeichen beim Decodieren zu handhaben sind.
  • Deshalb wird, wie in 8 gezeigt, der Knoten A 414 bewahrt, und die Knoten B 416 und C 418 werden in einen Knoten X2 = B, C 420 mit kombinierter Wahrscheinlichkeit von 1/8 + 0/8 kombiniert. Der nächste Schritt ist nun, den Knoten mit der gegenwärtig höchsten Wahrscheinlichkeit in Bezug auf den Eingangsstrom zu erweitern. Wie gezeigt haben Knoten X1 = A, C 412 und X0 = B,C 402 die gleiche Wahrscheinlichkeit des Vorkommens (3/8). Wie oben erörtert wird der höchste Knoten in dem Baum (X0 402) erweitert. (Obwohl es nur erforderlich ist, konsistent zu sein, ist es vorzuziehen, Knoten höherer Stufe zu erweitern, da dies die Effizienz der Codierung durch Erhöhen der Zahl von langen Codewörtern erhöhen kann.)
  • X0 402 ist jedoch ein kombinierter Knoten, sodass er zerlegt antstatt erweitert werden muss. 9 zeigt das Ergbenis des Zerlegens von Knoten X = in seine Bestandssymbole B 422 und C 424. Neuberechnen der Wahrscheinlichkeiten zeigt, dass die Symbolfolge ”A B C” 1/8 erscheint, ”A B X2” 1/8 erscheint, ”A X1” 3/8 erscheint, ”B” 422 2/8 erscheint und ”C” 1/8 erscheint. Da dies eine geteilte Operation ist, wird der geteilte Knoten mit höchster Wahrscheinlichkeit, z. B. B 422, bewahrt, und die übrigen Knoten werden wieder in X0 = C 424 rekombiniert.
  • 10 zeigt das Ergebnis des Bewahrens des Hochwahrscheinlichkeits-Knotens B 422. Man beachte, dass die Gruppierung X0 jetzt nur ein einziges Symbol ”C” darstellt. Nach Revidieren der Wahrscheinlichkeiten muss der Knoten mit höchster Wahrscheinlichkeit identifiziert und geteilt oder erweitert werden. Wie gezeigt erscheint die Symbolfolge ”A B A” 1/8, ”A B X2” erscheint 1/8, ”A X1” erscheint 3/8, ”B” erscheint 2/8 und ”X0” erscheint 1/8. Deshalb muss Knoten X1 412, als ein kombinierter Knoten, geteilt werden.
  • Das Teilen geht wie oben erörtert weiter, und die Verarbeitung des Codebuches wiederholt sich, wie in 3 gezeigt, wobei Knoten höchster Wahrscheinlichkeit erweitert oder geteilt werden, bis ein Stopp-Zustand erreicht wird (z. B. das Codebuch erreicht eine Maximalgröße). Sobald das Codebuch einen Stopp-Zustand erreicht hat, steht es zur Codierung von Daten zum Senden über einen Kommunikationskanal zur Verfügung. Man beachte, dass für die Konfiguration in 10 die mittlere Zahl von Bits pro Eingangssymbol, gebrochene Bits un ter ”idealer” Skalar-Huffman-Codierung angenommen, etwa 0.8 Bits/Symbol beträgt (variiert abhängig davon, wie der nachlaufende Eingang ”A B” behandelt wird). Dies stellt eine wesentliche Einsparung (etwa 10%) gegenüber früheren verlustlosen Kompressionsverfahren dar.
  • 11 zeigt ein Übertragungsmodell zum Übertragen von Audiodaten über einen Kanal 460. Es wird angenommen, dass der Kanal 460 eine begrenzte Bandbreite hat, und deshalb einige Kompression von Quellendaten 450 erforderlich ist, bevor die Daten zuverlässig gesendet werden können. Man beachte, dass, obwohl diese Erörterung auf das Übertragen von Audiodaten gerichtet ist, die Erfindung auch für das Übertragen anderer Daten gilt, z. B. audiovisuelle Information mit eingebetteten Audiodaten (z. B. gemultiplext in einem MPEG-Datenstrom) oder andere Datenquellen mit kompressiblen Datenmustern (z. B. kohärente Daten).
  • Wie gezeigt werden Quellendaten 450 in einen Zeit/Frequenz-Transformationscoder 452, z. B. eine Filterbank oder diskrete Kosinustransformation, eingegeben. Der Transformationscoder 452 ist bestimmt, einen kontinuierlichen oder abgetasteten Zeitbereichseingang, z. B. eine Audiodatenquelle, in mehrfache Frequenzbänder von vorbestimmter (obwohl vielleicht unterschiedlicher) Bandbreite umzuwandeln. Diese Bänder können dann bezüglich eines menschlichen Hörwahrnehmungsmodells 454 (z. B. ein psychoakustisches Modell) analysiert werden, um Komponenten des Signals zu bestimmen, die ohne hörbare Auswirkung sicher reduziert werden können. Zum Beispiel ist bekannt, dass bestimmte Frequenzen unhörbar sind, wenn bestimmte andere Töne oder Frequenzen in dem Eingangssignal vorhanden sind (gleichzeitige Maskierung). Folglich können solche unhörbaren Signale sicher aus dem Eingangssignal entfernt werden. Der Gebrauch von menschlichen Hörmodellen ist wohl bekannt, z. B. die MPEG 1, 2 und 4 Standards. (Man beachte, dass solche Modelle mit einer Quantisierungsoperation 456 verbunden werden können).
  • Nach Durchführen der Zeit/Frequenz-Transformation werden Frequenzkoeffizienten innerhalb jedes Bereiches quantisiert 456, um jeden Koeffizienten (Amplitudenpegel) in einen aus einem endlichen Satz von möglichen Werten genommenen Wert umzuwandeln, wobei jeder Wert eine Größe hat, der auf den zum Darstellen des Frequenzbereiches zugeteilten Bits basiert. Der Quantisierer kann ein herkömmlicher gleichförmiger oder ungeichförmiger Quantisierer, z. B. ein 'Midriser'- oder 'Midtreader'-Quantisierer, mit (oder ohne) Speicher sein. Das grundsätzliche Quantisierungsziel ist das Identifizieren einer optimalen Bitzuteilung zum Darstellen der Eingangssignaldaten, d. h. den Gebrauch von verfügbaren Codierbits zu verteilen, um das Codieren der (akustisch) signifikanten Teile der Quellendaten sicherzustellen. Verschiedene Quantisierungsverfahren, z. B. Quantisierungsschrittgröße-Vorhersage, um eine gewünschte Bitrate (konstante Bitrate angenommen) zu erfüllen, können verwendet werden. Nachdem die Quelle 450 quantisiert 456 ist, werden die entstandenen Daten entsprechend dem Codebuch von 3 entropiecodiert 458.
  • 12 zeigt ein Verfahren zur Implementierung des Entropiecoders 458 von 11 durch Anwenden des Codebuches von 3 auf die quantisierten Daten. Das Codebuch für variabel zu variabel Codierung kann benutzt werden, um andere Typen von Daten zu codieren. Wie gezeigt werden die quantisierten Daten als Eingabe in den Entropiecoder 458 von 11 empfangen 480. Es versteht sich, dass die Eingabe in irgendeiner Form von diskreten Signalen oder Paketdaten ist, und dass zur Einfachheit der Erörterung alle Eingaben als eine lange Serie von diskreten Symbolen angommen werden. Die empfangene Eingabe 480 wird abgetastet 482, um einen entsprechenden Codebuchschlüssel in dem Codebuch von 3 aufzufinden. Ein solches Abtasten entspricht einem Daten-Nachsehen, und abhängig von der zur Implementierung des Codebuches benutzten Datenstruktur wird das genaue Verfahren des Nachsehens variieren.
  • Es stehen verschiedene Verfahren zur Speicherung und Bearbeitung des Codebuches zur Verfügung. Eine Struktur für ein Codebuch ist transversal und Speicherung eines N-rangigen (binär, tertiär usw.) Baumes, wo Symbolgruppierungen eine Querung der Baumstruktur bestimmen. Der Pfad eines Blattknotens des Baumes stellt das Ende einer erkannten Symbolsequenz dar, wobei ein Entropiecode mit der Sequenz verbunden ist. (Man beachte, dass das Codebuch als eine Tabelle implementiert werden kann, wo ein Tabelleneintrag die ganze Eingabesequenz enthält, z. B. der Pfad zu dem Knoten.) Knoten können in Software als eine Struktur, Klassendefinition oder andere Struktur codiert werden, die die Speicherung eines oder mehr mit dem Knoten verbundener Symbole und Verbinden eines entsprechenden Entropiecodes erlaubt.
  • Alternativ kann das Codebuch als eine Tabelle strukturiert sein, wobei jede Folge von Eingabesymbolen nach der Wahrscheinlichkeit des Vorkommens sortiert ist und eine hoch wahrscheinliche Eingabe an der Spitze der Tabelle steht. Für große Tabellen kann die Tabelle nach dem ersten Symbol sortiert sein, d. h. alle Symbolserien beginnend mit ”A” sind in einer Gruppe zusammengefasst, gefolgt von Serien beginnend mit ”B” usw. Bei dieser Anordnung sind alle Einträge in der Gruppierung nach der Wahrscheinlichkeit ihres Vorkommens sortiert. Die Position des Beginns jedes Abschnitts wird markiert/verfolgt, sodass eine Hash-Funktion (z. B. ein Nachsehen basierend auf dem ersten Symbol) benutzt werden kann, um den richtigen Teil der Codebuchtabelle ausfindig zu machen. Bei dieser Nachseh-Tabellenlösung zum Speichern des Codebuches, wird, sobald das erste Symbol gefunden ist, der entsprechende Tabellenabschnitt ausgiebig durchsucht, bis ein übereinstimmender Eintrag ausfindig gemacht ist. Der mit dem übereinstimmenden Eintrag verbundene Code 484 wird dann als der codierte Ersatz ausgegeben 486.
  • Mit 11 fortfahrend wird, sobald der Ausgang 486 bekannt ist, dieser Ausgang über den Kommunikationskanal 460 übertragen. Das empfangende Ende 470 implemeniert einen Umkehr-Codierprozess, d. h. eine Serie von Schritten, um die Codierung der Quellendaten 450 rückgängig zu machen. Das heißt, die codierten Daten 486 werden als Eingabe für einen Entropiedecoder 462 empfangen, der ein umgekehrtes Codebuch-Nachsehen durchführt, um den codierten Ausgang 486 wieder in die ursprüngliche Eingangssymbolserie 480 (12) umzuwandeln. Die rückgewonnenen Eingangsdaten 480 werden dann durch einen Dequantisierer 464 und einen Zeit/Frequenz-Tansformationsdecoder 466 verarbeitet, um die ursprünglichen Codieroperation umzukehren, was rekonstruierte Daten 468 ergibt, die den ursprünglichen Quellendaten 450 gleichen. Man sollte beachten, dass die rekonstruierten Daten 468 sich den ursprünglichen Quellendaten nur annähern, wenn, wie hierin angenommen, ein verlustbehaftetes System eingesetzt wird.
  • Nachdem die Prinzipien der Erfindung mit Bezug auf eine veranschaulichte Ausführung beschrieben und veranschaulicht wurden, wird man anerkennen, dass die veranschaulichte Ausführung in Aufbau und Detail modifiziert werden kann, ohne von diesen Prinzipien abzuweichen.

Claims (20)

  1. Verfahren zur Codierung einer Folge von digitalen Audiodatensymbolen (450) zum Übertragen über einen Kommunikationskanal (460), wobei das Verfahren das Identifizieren einer ersten Gruppierung variabler Größe von Audiodatensymbolen in der Folge von digitalen Audiodatensymbolen umfasst, wobei das Verfahren gekennzeichnet ist durch: Codieren (486) der ersten Gruppierung variabler Größe von Symbolen mit einer Codieranordnung, die als Ausgang ein Entropie-Codewort erzeugt, das der ersten Gruppierung von Symbolen entspricht, wobei das Codieren ein vorher konstruiertes Codebuch verwendet, das Gruppierungen variabler Größe von Audiodatensymbolen mit entsprechenden Entropie-Codewörtern zur variabel-zu-variabel-Kompression verbindet, und wiederholt Identifizieren und Codieren (486) von nachfolgenden Gruppierungen variabler Größe von Symbolen, sodass wenigstens zwei identifizierte Gruppierungen von Symbolen in der Folge von digitalen Audiodatensymbolen unterschiedliche Großen aufweisen.
  2. Verfahren nach Anspruch 1, wobei das Codebuch entsprechend einem ersten Symbol jeder Gruppierung in dem Codebuch in Abschnitte gegliedert ist, wobei jeder Abschnitt weiter nach der Wahrscheinlichkeit des Vorkommens jedes Eintrags innerhalb jedes Abschnitts sortiert ist, und wobei das Identifizieren einer Gruppierung variabler Größe umfasst: Identifizieren eines Abschnitts durch ein erstes Symbol der Gruppierung variabler Größe, und Abgleichen der Gruppierung variabler Größe gegen jeden Abschnittseintrag, bis ein Gegenstück gefunden ist.
  3. Verfahren nach Anspruch 2, wobei das Gegenstück eine Größe hat, wobei eine solche Größe eine neue Position in der Folge von digitalen Audiodatensymbolen zum Identifizieren einer zweiten Gruppierung variabler Größe von Symbolen angibt.
  4. Verfahren nach Anspruch 3, wobei die erste und die zweite Gruppierung variabler Größe unterschiedliche Größen aufweisen.
  5. Verfahren nach Anspruch 1, wobei das Codebuch als eine Tabelle mit Abschnitten aufgebaut ist, wobei solche Abschnitte durch ein erstes Symbol jeder Gruppierung variabler Größe von Symbolen definiert sind, und wobei Tabelleneinträge innerhalb eines Abschnitts entsprechend der Wahrscheinlichkeit des Vorkommens jeder Gruppierung variabler Größe von Symbolen in dem Abschnitt sortiert sind.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei ein Eingangskanal mit einem Plattenspeicher in Verbindung steht, wobei das Verfahren des Weiteren den Schritt des Lesens der Folge von digitalen Datensymbolen aus dem Plattenspeicher umfasst, um die Identifikation und Codierung der Gruppierungen variabler Größe zu gestatten.
  7. Verfahren nach einem der Ansprüche 1 bis 5, das weiter umfasst: Empfangen der Folge von digitalen Audiodatensymbolen von einem Eingangskanal, und nach dem Codieren (486) einer Gruppierung variabler Größe von Symbolen, Übertragen des der Gruppierung von Symbolen entsprechenden Entropie-Codewortes über den Kommunikationskanal (460).
  8. Verfahren nach Anspruch 7, wobei die Folge von digitalen Audiodatensymbolen in Echtzeit empfangen wird, und das Übertragen in Echtzeit durchgeführt wird.
  9. Verfahren nach Anspruch 7, das weiter das Empfangen einer Verbindungsanforderung von einem Client über eine Client-Netzwerkverbindung umfasst, wobei das Übertragen über die Client-Netzwerkverbindung durchgeführt wird.
  10. Verfahren nach Anspruch 9, wobei die Folge von digitalen Audiodatensymbolen empfangen und in einem nicht flüchtigen Speicher gespeichert wird, und das Übertragen bis zum Empfang der Verbindungsanforderung von dem Client aufgeschoben wird.
  11. Verfahren zur Decodierung eines komprimierten Audiodatenstromes von einem Kommunikationskanal (460), das umfasst: Empfangen eines Entropie-Codewortes; Nachsehen des Entropie-Codewortes in einem vorher konstruierten Codebuch, das eine Ent sprechung zwischen Entropie-Codewörtern und Serien variabler Größe von Symbolen zur variabel-zu-variabel-Dekompression enthält, und Ausgeben einer dem Codewort in dem Codebuch entsprechenden Serie variabler Größe von Audiodatensymbolen.
  12. Verfahren nach Anspruch 11, wobei der Schritt des Nachsehens des Entropie-Codewortes ”Hashing” des Entropie-Codewortes einschließt, um einen Index zu einem Eintrag in einer Hash-Tabelle zu erlangen.
  13. Verfahren nach Anspruch 12, wobei das Codebuch entsprechend einem ersten Symbol jeder in dem Codebuch gespeicherten Serie variabler Größe von Symbolen in Abschnitte gegliedert ist.
  14. Computerlesbares Medium, in dem computerausführbare Anweisungen gespeichert sind, die einen Computer veranlassen, das Verfahren nach einem der Ansprüche 1 bis 13 durchzuführen.
  15. System zum Übertragen eines komprimierten audiovisuellen Datenstromes von einem Server-Netzwerkservice an einen Client-Netzwerkservice über eine Netzwerkverbindung (460), wobei ein solcher komprimierter audiovisueller Datenstrom durch Ersetzen einer Folge variabler Größe von audiovisuellen Dateneingangssymbolen durch einen Ausgabe-Entropiecode gebildet wird, wobei das System umfasst einen Eingangspuffer zur Speicherung einer zu komprimierenden und an den Client zu übertragenden Serie von unkomprimierten audiovisuellen Datensymbolen; einen Ausgangsspeicher zur Speicherung eines Entropie-Codewortes, das eine komprimierte Version der Serie von unkomprimierten Symbolen in dem Eingangspuffer darstellt, wobei das System gekennzeichnet ist durch: einen Codebuchspeicher zur Speicherung eines vorher vorhandenen Codebuches, das ein Entropie-Codewort für eine Serie variabler Größe von Symbolen enthält, wobei das Codebuch Serien variabler Größe von Symbolen mit entsprechenden Entropie-Codewörtern zur variabel-zu-variabel-Kompression verbindet; eine Suchanordnung zum Nachsehen eines Entropie-Codewortes für eine bestimmte Serie von Symbolen in dem Codebuch, und eine Codieranordnung mit einem Eingangskanal, der mit dem Eingangspuffer in Verbindung steht, und einem Ausgang, der mit dem Ausgangsspeicher in Verbindung steht, wobei die Codieranordnung die Suchanordnung anwendet, um das Entropie-Codewort für die Serie von umkomprimierten Symbolen zur Speicherung in dem Ausgangsspeicher nachzusehen.
  16. System nach Anspruch 15, das weiter eine Übertragungseinrichtung zum Übertragen des Inhalts des Ausgangsspeichers an den Client über die Netzwerkverbindung (460) umfasst.
  17. System nach Anspruch 16, wobei ein Streaming-Netzbetriebsprotokoll benutzt wird, um über die Netzwerkverbindung (460) zu kommunizieren.
  18. System zur Decodierung von komprimierten audiovisuellen Daten, die von einer Netzwerkverbindung (460) empfangen werden, wobei das System umfasst: einen Eingangsspeicher zur Speicherung eines Codewortes; einen Ausgangspuffer zur Speicherung einer dem Codewort in dem Eingangsspeicher entsprechenden Serie von unkomprimierten audiovisuellen Datensymbolen, wobei das System gekennzeichnet ist durch: einen Codebuchspeicher zur Speicherung eines vorher vorhandenen Codebuches, das eine Serie variabler Größe von Symbolen für ein Entropie-Codewort enthält, wobei das Codebuch Entropie-Codewörter mit entsprechenden Serien variabler Größe von Symbolen zur variabel-zu-variabel-Dekompression verbindet; eine Suchanordnung zum Nachsehen eines Entropie-Codewortes für eine bestimmte Serie von Symbolen in dem Codebuch, und eine Decodieranordnung mit einem Eingangskanal, der mit dem Eingangsspeicher in Verbindung steht, und einem Ausgang, der mit dem Ausgangspuffer in Verbindung steht, wobei die Decodieranordnung die Suchanordnung anwendet, um die dem Entropie-Codewort entsprechende Serie von umkomprimierten Symbolen nachzusehen und eine solche Serie in dem Ausgangspuffer zu speichern.
  19. System nach Anspruch 18, wobei ein Streaming-Netzbetriebsprotokoll benutzt wird, um über die Netzwerkverbindung (460) zu kommunizieren.
  20. System nach Anspruch 18, in dem die Decodieranordnung durch ein Anwendungsprogramm implementiert ist, das auch das ”Hyper-Text Markup Language”-Protokoll implementiert.
DE69918172T 1998-12-14 1999-12-07 Entropiekodierung von variabler zu variabler länge Expired - Lifetime DE69918172T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/211,294 US6377930B1 (en) 1998-12-14 1998-12-14 Variable to variable length entropy encoding
US211294 1998-12-14
PCT/US1999/029108 WO2000036752A1 (en) 1998-12-14 1999-12-07 Variable to variable length entropy encoding

Publications (2)

Publication Number Publication Date
DE69918172D1 DE69918172D1 (de) 2004-07-22
DE69918172T2 true DE69918172T2 (de) 2009-10-01

Family

ID=22786310

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69918172T Expired - Lifetime DE69918172T2 (de) 1998-12-14 1999-12-07 Entropiekodierung von variabler zu variabler länge

Country Status (6)

Country Link
US (1) US6377930B1 (de)
EP (1) EP1142129B1 (de)
JP (1) JP4559632B2 (de)
AT (1) ATE269605T1 (de)
DE (1) DE69918172T2 (de)
WO (1) WO2000036752A1 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7440993B1 (en) 1998-09-11 2008-10-21 Lv Partners, L.P. Method and apparatus for launching a web browser in response to scanning of product information
US7191247B1 (en) 1998-09-11 2007-03-13 Lv Partners, Lp Method for connecting a wireless device to a remote location on a network
US7386600B1 (en) 1998-09-11 2008-06-10 Lv Partners, L.P. Launching a web site using a personal device
US7379901B1 (en) 1998-09-11 2008-05-27 Lv Partners, L.P. Accessing a vendor web site using personal account information retrieved from a credit card company web site
US6745234B1 (en) 1998-09-11 2004-06-01 Digital:Convergence Corporation Method and apparatus for accessing a remote location by scanning an optical code
US6823388B1 (en) 1998-09-11 2004-11-23 L.V. Parners, L.P. Method and apparatus for accessing a remote location with an optical reader having a programmable memory system
US6868433B1 (en) 1998-09-11 2005-03-15 L.V. Partners, L.P. Input device having positional and scanning capabilities
US6704864B1 (en) * 1999-08-19 2004-03-09 L.V. Partners, L.P. Automatic configuration of equipment software
US6636896B1 (en) 1998-09-11 2003-10-21 Lv Partners, L.P. Method and apparatus for utilizing an audibly coded signal to conduct commerce over the internet
US7392945B1 (en) 1998-09-11 2008-07-01 Lv Partners, L.P. Portable scanner for enabling automatic commerce transactions
DE19907729C2 (de) * 1999-02-23 2001-02-22 Fraunhofer Ges Forschung Verfahren und Vorrichtung zum Erzeugen eines Datenstroms aus Codeworten variabler Länge und Verfahren und Vorrichtung zum Lesen eines Datenstroms aus Codeworten variabler Länge
DE19907964C1 (de) * 1999-02-24 2000-08-10 Fraunhofer Ges Forschung Vorrichtung und Verfahren zum Erzeugen eines verschlüsselten Datenstroms und Vorrichtung und Verfahren zum Erzeugen eines entschlüsselten Audio- und/oder Videosignals
US6687663B1 (en) * 1999-06-25 2004-02-03 Lake Technology Limited Audio processing method and apparatus
US8464302B1 (en) 1999-08-03 2013-06-11 Videoshare, Llc Method and system for sharing video with advertisements over a network
US20020056123A1 (en) 2000-03-09 2002-05-09 Gad Liwerant Sharing a streaming video
US6961011B2 (en) * 2001-08-27 2005-11-01 Freescale Semiconductor, Inc. Data compression system
US6934677B2 (en) * 2001-12-14 2005-08-23 Microsoft Corporation Quantization matrices based on critical band pattern information for digital audio wherein quantization bands differ from critical bands
US7016547B1 (en) 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
DK1400954T3 (da) 2002-09-04 2008-03-31 Microsoft Corp Entropi-kodning ved tilpasning af kodning mellem niveau- og runlængde/niveau-moduser
US7433824B2 (en) * 2002-09-04 2008-10-07 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
US7123774B2 (en) * 2002-11-27 2006-10-17 General Electric Company System and method for coding data
JP4165298B2 (ja) * 2003-05-29 2008-10-15 株式会社日立製作所 端末装置、及び通信網の切替え方法
US7313817B2 (en) * 2003-06-17 2007-12-25 Lockheed Martin Corporation Data transmission system utilizing efficient complexity estimation of the kolmogorov complexity for data transmission
US7782954B2 (en) * 2003-09-07 2010-08-24 Microsoft Corporation Scan patterns for progressive video content
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7688894B2 (en) * 2003-09-07 2010-03-30 Microsoft Corporation Scan patterns for interlaced video content
US7684981B2 (en) * 2005-07-15 2010-03-23 Microsoft Corporation Prediction of spectral coefficients in waveform coding and decoding
US7599840B2 (en) * 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
US7693709B2 (en) * 2005-07-15 2010-04-06 Microsoft Corporation Reordering coefficients for waveform coding or decoding
US7933337B2 (en) * 2005-08-12 2011-04-26 Microsoft Corporation Prediction of transform coefficients for image compression
US7565018B2 (en) * 2005-08-12 2009-07-21 Microsoft Corporation Adaptive coding and decoding of wide-range coefficients
US8599925B2 (en) * 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
US8184710B2 (en) * 2007-02-21 2012-05-22 Microsoft Corporation Adaptive truncation of transform coefficient data in a transform-based digital media codec
US7774205B2 (en) * 2007-06-15 2010-08-10 Microsoft Corporation Coding of sparse digital media spectral data
KR101449434B1 (ko) 2008-03-04 2014-10-13 삼성전자주식회사 복수의 가변장 부호 테이블을 이용한 멀티 채널 오디오를부호화/복호화하는 방법 및 장치
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
GB2466666B (en) * 2009-01-06 2013-01-23 Skype Speech coding
KR20110011357A (ko) * 2009-07-28 2011-02-08 삼성전자주식회사 비트의 순서를 변경한 데이터의 부호화, 복호화 방법 및 장치
US8572042B2 (en) * 2011-01-25 2013-10-29 Andrew LEPPARD Manipulating the actual or effective window size in a data-dependant variable-length sub-block parser
US8824598B2 (en) * 2012-12-18 2014-09-02 Telefonaktiebolaget L M Ericsson (Publ) System and method for communicating information in a wireless network
US10049140B2 (en) * 2015-08-28 2018-08-14 International Business Machines Corporation Encoding system, method, and recording medium for time grams
US10069519B1 (en) * 2018-01-23 2018-09-04 Mitsubishi Electric Research Laboratories, Inc. Partition based distribution matcher for probabilistic constellation shaping

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4122440A (en) * 1977-03-04 1978-10-24 International Business Machines Corporation Method and means for arithmetic string coding
US4464650A (en) 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4558302A (en) 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
JPS61107818A (ja) 1984-10-30 1986-05-26 Nec Corp エントロピ−符号化方式とその装置
JPH0821863B2 (ja) 1985-04-13 1996-03-04 キヤノン株式会社 データ処理方法
JPS62247626A (ja) 1986-04-19 1987-10-28 Fuji Photo Film Co Ltd 符号化方法
US4862167A (en) * 1987-02-24 1989-08-29 Hayes Microcomputer Products, Inc. Adaptive data compression method and apparatus
US5532694A (en) 1989-01-13 1996-07-02 Stac Electronics, Inc. Data compression apparatus and method using matching string searching and Huffman encoding
US5003307A (en) 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
US5479562A (en) 1989-01-27 1995-12-26 Dolby Laboratories Licensing Corporation Method and apparatus for encoding and decoding audio information
DE3943880B4 (de) 1989-04-17 2008-07-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Digitales Codierverfahren
US5254990A (en) 1990-02-26 1993-10-19 Fujitsu Limited Method and apparatus for compression and decompression of data
US5049881A (en) 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
US5530866A (en) * 1991-07-30 1996-06-25 Tera Computer Company Register allocation methods having upward pass for determining and propagating variable usage information and downward pass for binding; both passes utilizing interference graphs via coloring
US5227789A (en) 1991-09-30 1993-07-13 Eastman Kodak Company Modified huffman encode/decode system with simplified decoding for imaging systems
US5229768A (en) * 1992-01-29 1993-07-20 Traveling Software, Inc. Adaptive data compression system
US5227788A (en) * 1992-03-02 1993-07-13 At&T Bell Laboratories Method and apparatus for two-component signal compression
US5406279A (en) * 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
US5442350A (en) 1992-10-29 1995-08-15 International Business Machines Corporation Method and means providing static dictionary structures for compressing character data and expanding compressed data
JP2505980B2 (ja) 1993-04-16 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 静的辞書作成方法及びコンピュ―タ実行システム
JP3210996B2 (ja) 1993-07-30 2001-09-25 三菱電機株式会社 高能率符号化装置及び高能率復号化装置
US5550541A (en) 1994-04-01 1996-08-27 Dolby Laboratories Licensing Corporation Compact source coding tables for encoder/decoder system
JP3278297B2 (ja) 1994-07-20 2002-04-30 富士通株式会社 データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
US5623262A (en) * 1994-08-17 1997-04-22 Apple Computer, Inc. Multi-word variable length encoding and decoding
JPH08167852A (ja) * 1994-12-13 1996-06-25 Fujitsu Ltd データ圧縮方法及び装置
JPH08205169A (ja) * 1995-01-20 1996-08-09 Matsushita Electric Ind Co Ltd 動画像符号化装置及び復号装置
EP0731614B1 (de) 1995-03-10 2002-02-06 Kabushiki Kaisha Toshiba Bildkodierungs-/-dekodierungsvorrichtung
US5884269A (en) 1995-04-17 1999-03-16 Merging Technologies Lossless compression/decompression of digital audio data
JP3181809B2 (ja) 1995-05-31 2001-07-03 シャープ株式会社 データ圧縮のための圧縮コードの復元回路
US5825830A (en) 1995-08-17 1998-10-20 Kopf; David A. Method and apparatus for the compression of audio, video or other data
US5819215A (en) * 1995-10-13 1998-10-06 Dobson; Kurt Method and apparatus for wavelet based data compression having adaptive bit rate control for compression of digital audio or other sensory data
US5933104A (en) 1995-11-22 1999-08-03 Microsoft Corporation Method and system for compression and decompression using variable-sized offset and length fields
US5831559A (en) 1996-01-24 1998-11-03 Intel Corporation Encoding/decoding video signals using multiple run-val mapping tables
JP3566441B2 (ja) 1996-01-30 2004-09-15 シャープ株式会社 テキスト圧縮用辞書作成装置
JP3277792B2 (ja) 1996-01-31 2002-04-22 株式会社日立製作所 データ圧縮方法および装置
JP3267142B2 (ja) 1996-02-23 2002-03-18 ケイディーディーアイ株式会社 可変長符号生成装置
US5790706A (en) 1996-07-03 1998-08-04 Motorola, Inc. Method and apparatus for scanning of transform coefficients
US5959560A (en) 1997-02-07 1999-09-28 Said; Amir Data compression via alphabet partitioning and group partitioning
US5999949A (en) 1997-03-14 1999-12-07 Crandall; Gary E. Text file compression system utilizing word terminators
US6100824A (en) 1998-04-06 2000-08-08 National Dispatch Center, Inc. System and method for data compression
US6029126A (en) 1998-06-30 2000-02-22 Microsoft Corporation Scalable audio coder and decoder
US6223162B1 (en) * 1998-12-14 2001-04-24 Microsoft Corporation Multi-level run length coding for frequency-domain audio coding
US6300888B1 (en) * 1998-12-14 2001-10-09 Microsoft Corporation Entrophy code mode switching for frequency-domain audio coding

Also Published As

Publication number Publication date
EP1142129A1 (de) 2001-10-10
US6377930B1 (en) 2002-04-23
DE69918172D1 (de) 2004-07-22
EP1142129B1 (de) 2004-06-16
ATE269605T1 (de) 2004-07-15
WO2000036752A1 (en) 2000-06-22
JP2002533006A (ja) 2002-10-02
JP4559632B2 (ja) 2010-10-13

Similar Documents

Publication Publication Date Title
DE69918172T2 (de) Entropiekodierung von variabler zu variabler länge
DE69935811T3 (de) Frequenzbereichsaudiodekodierung mit Entropie-code Moduswechsel
DE69916661T2 (de) Codebuchkonstruktion für entropiekodierung von variabler zu variabler länge
DE60317982T2 (de) Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus
DE60109467T2 (de) Verfahren und vorrichtung zur übertragung von netzwerkinformationen durch sichere transkodierung
DE69726661T2 (de) Verfahren und vorrichtung zur kodierung eines digitalen informationssignales
DE60012860T2 (de) Verfahren zur Verarbeitung mehrerer digitaler Audiodatenströme
DE3912605B4 (de) Digitales Codierverfahren
DE69923555T2 (de) Verfahren und vorrichtung zur entropie-kodierung von quantisierten transformationskoeffizienten eines signals
US6223162B1 (en) Multi-level run length coding for frequency-domain audio coding
EP1487113A2 (de) Kodierung und Dekodierung von Transformationskoeffizienten in Bild- oder Videokodierern
DE3736193C2 (de)
DE60220307T2 (de) Verfahren zur übertragung breitbandiger tonsignale über einen übertragungskanal mit verminderter bandbreite
DE68926676T2 (de) Verfahren und gerät zur statistischen kodierung von digitalen daten
DE3485824T2 (de) Verfahren zur datenkompression.
DE102016012160B4 (de) Restentropiekompression für cloudbasierte Videoanwendungen bzw. Apps
DE60200377T2 (de) Datenkompression
DE3587710T2 (de) Teilbandkodierungsverfahren und Einrichtung.
CN114614829A (zh) 卫星数据帧的处理方法、装置、电子设备和可读存储介质
DE69126409T2 (de) Einrichtung zur Wiedergabe von Sprachsignalen
DE112020001299T5 (de) Verzögerungsarme Entschärfung und Wiederherstellung von Inhalten (CDR) eines Live-Streaming-Videos
DE19803845C2 (de) Verfahren und Einrichtung zur Übertragung einer durch digitale Daten repräsentierten Nachricht
DE69734613T2 (de) Kodiertes Informationssignal
WO1996008872A1 (de) Datenkompressionsverfahren und vorrichtung zum komprimieren von daten
EP0525349B1 (de) Einrichtung zur redunanzvermindernden Codierung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition