DE60317982T2 - Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus - Google Patents

Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus Download PDF

Info

Publication number
DE60317982T2
DE60317982T2 DE60317982T DE60317982T DE60317982T2 DE 60317982 T2 DE60317982 T2 DE 60317982T2 DE 60317982 T DE60317982 T DE 60317982T DE 60317982 T DE60317982 T DE 60317982T DE 60317982 T2 DE60317982 T2 DE 60317982T2
Authority
DE
Germany
Prior art keywords
coding
audio data
huffman
decoding
vector
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
DE60317982T
Other languages
English (en)
Other versions
DE60317982D1 (de
Inventor
Sanjeev c/o Microsoft Corporation Redmond Mehrotra
Wei-ge c/o Microsoft Corporation Redmond Chen
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
Priority claimed from US10/647,923 external-priority patent/US7433824B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of DE60317982D1 publication Critical patent/DE60317982D1/de
Application granted granted Critical
Publication of DE60317982T2 publication Critical patent/DE60317982T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • G10L19/032Quantisation or dequantisation of spectral components
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4093Variable length to variable length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind

Description

  • Gebiet der Erfindung
  • Die Erfindung betrifft das adaptive Entropiecodieren von Audiodaten. Ein Audiocodierer schaltet beispielweise zwischen dem Huffman-Codieren von direkten Pegeln von quantisierten Audiodaten und dem arithmetischen Codieren von Lauflängen und Laufpegeln von quantisierten Audiodaten um.
  • Angaben zu verwandten Anmeldungen
  • Die folgenden gleichzeitig eingereichten US-Patentanmeldungen sind mit der vorliegenden Anmeldung verwandt: (1) die vorläufige US-Patentanmeldung mit der Seriennummer 60/408,517 und dem Titel „Architecture and Techniques for Audio Encoding and Decoding", eingereicht am 4. September 2002; und (2) die vorläufige US-Patentanmeldung mit der Seriennummer 60/408,432 und dem Titel „Unified Lossy and Lossless Audio Compression", eingereicht am 4. September 2002.
  • Hintergrund der Erfindung
  • Mit der Einführung von Compact Discs, digitalen drahtlosen Telefonnetzwerken und der Verteilung von Audiodaten über das Intranet haben sich digitale Audiodaten stark verbreitet. Ingenieure bedienen sich einer Vielzahl von Techniken zur effizienten Verarbeitung von digitalen Audiodaten bei gleichzeitiger Aufrechterhaltung der Qualität dieser digitalen Audiodaten. Um diese Techniken zu verstehen, ist ein Verständnis dahingehend von Vorteil, wie Audioinformation in einem Computer dargestellt und verarbeitet wird.
  • I. Darstellung von Audioinformation in einem Computer
  • Ein Computer verarbeitet Audioinformation als Reihe von Zahlen, die die Audioinformation darstellen. So kann eine einzelne Zahl beispielsweise eine Audioabtastung (audio sample) darstellen, die ein Amplitudenwert (beispielsweise die Lautstärke) zu einer bestimmten Zeit ist. Bestimmte Faktoren nehmen auf die Qualität der Audioinformation Ein fluss, darunter die Abtasttiefe (sample depth), die Abtastrate (sampling rate) und der Kanalmodus.
  • Die Abtasttiefe (oder Abtastgenauigkeit) gibt den Bereich von Zahlen an, der zur Darstellung einer Abtastung verwendet wird. Je mehr Werte für die Abtastung möglich sind, desto höher ist die Qualität, da die Anzahl feiner Schwankungen der Amplitude besser erfasst werden kann. So weist beispielsweise eine 8 Bit umfassende Abtastung 256 mögliche Werte auf, wohingegen eine 16 Bit umfassende Abtastung 65.536 mögliche Werte aufweist.
  • Die Abtastrate (üblicherweise als Zahl der Abtastungen pro Sekunde gemessen) hat ebenfalls Einfluss auf die Qualität. Je höher die Abtastrate ist, desto höher ist die Qualität, da mehr Frequenzen des Tones dargestellt werden können. Gängige Abtastraten sind 8.000, 11.025, 22.050, 32.000, 44.100, 48.000 und 96.000 Abtastungen pro Sekunde (samples/second).
  • Tabelle 1 zeigt verschiedenen Audioformate mit verschiedenen Qualitätsniveaus zusammen mit dem entsprechenden Aufwand für die Rohbitrate.
    Qualität Abtasttiefe (Bit/Abtastungen) Abtastrate (Abtastungen/Sekunde) Modus Rohbitrate (Bit/Sekunde)
    Telefonieren via Internet 8 8.000 mono 64.000
    Telefon 8 11.025 mono 88.200
    CD Audio 16 44.100 stereo 1.411.200
    Qualitativ hochwertiges Audio 16 48.000 stereo 1.536.000
    Tabelle 1: Bitraten für Audioinformation verschiedener Qualität
  • Wie Tabelle 1 zeigt, geht Audioinformation hoher Qualität, so beispielsweise der Audioton auf einer CD, mit einer hohen Bitrate einher. Audioinformation hoher Qualität belegt große Mengen des Speicherplatzes und der Übertragungskapazität. Firmen und Verbraucher hängen indes in zunehmendem Maße von Computern ab, wenn sie Audioinhalt hoher Qualität erzeugen, verteilen und abspielen.
  • II. Audiokompression und -dekompression
  • Viele Computer und Computernetzwerke verfügen nicht über die Ressourcen, digitale Rohaudiodaten zu verarbeiten. Die Kompression (auch Codierung (encoding oder coding) genannt) senkt den Aufwand für das Speichern und Übertragen von Audioinformation durch Umwandeln der Information in eine Form mit niedrigerer Bitrate. Die Kompression kann verlustfrei (Hierbei wird die Qualität nicht beeinträchtigt) oder verlustbehaftet (Hierbei wird die Qualität beeinträchtigt, wobei die Verringerung der Bitrate durch verlustfreie Kompression dramatischer ist) sein. Die Dekompression (auch Decodierung (decoding) genannt) extrahiert eine rekonstruierte Fassung der Originalinformation aus der komprimierten Form.
  • Im Allgemeinen besteht das Ziel der Kompression von Audiodaten darin, Audiosignale digital darzustellen, um eine maximale Signalqualität mit möglichst niedriger Menge von Bits zu erreichen. Ein herkömmliches Audiocodier-/Decodiersystem (CODEC) verwendet die Subband-/Umwandlungscodierung, die Quantisierung, die Ratensteuerung und die Codierung mit variabler Länge, um diese Kompression zu erreichen. Die Quantisierung und andere verlustbehaftete Kompressionstechniken fügen den Audiosignalen ein unter Umständen hörbares Rauschen hinzu. Die Hörbarkeit des Rauschens hängt davon ab, wie viel Rauschen vorhanden ist und wie viel Rauschen der Hörer wahrnimmt. Der erste Faktor betrifft hauptsächlich die objektive Qualität, wohingegen der zweite Faktor von der Wahrnehmung des Tones durch einen Menschen abhängt. Ein herkömmlicher Audiocodierer komprimiert sodann die quantisierten Daten unter Verwendung einer Codierung mit variabler Länge verlustfrei, um die Bitrate weiter zu verringern.
  • A. Verlustbehaftete Kompression und Dekompression von Audiodaten
  • Üblicherweise bedient sich ein Audiocodierer einer Vielzahl von verschiedenen verlustbehafteten Kompressionstechniken. Diese verlustbehafteten Kompressionstechniken sind üblicherweise Frequenzumwandlungen, das Wahrnehmungsmodellieren/Gewichten und das Quantisieren. Die entsprechende Dekompression ist die inverse Quantisierung, das inverse Gewichten beziehungsweise inverse Frequenzumwandlungen.
  • Frequenzumwandlungstechniken wandeln Daten in eine Form um, die es einfacher macht, für die Wahrnehmung wichtige Information von für die Wahrnehmung unwichtiger Information zu trennen. Die weniger wichtige Information kann dann einer stärker ver lustbehafteten Kompressionen unterworfen werden, während die wichtigere Information erhalten bleibt, um auf diese Weise bei gegebener Bitrate die beste wahrnehmbare Qualität zu erhalten. Ein Frequenzumwandler empfängt üblicherweise die Audioabtastungen und wandelt sie in Daten im Frequenzbereich um, die bisweilen Frequenzkoeffizienten oder Spektralkoeffizienten genannt werden.
  • Ein Großteil der Energie bei natürlichen Lauten, so beispielsweise bei Sprache und Musik, ist im Niederfrequenzbereich konzentriert. Dies bedeutet, dass höhere Frequenzbereiche statistisch mehr Frequenzkoeffizienten aufweisen, die gleich 0 oder nahezu gleich 0 sind, was den Mangel an Energie in den höheren Frequenzbereichen wiederspiegelt.
  • Das Wahrnehmungsmodellieren beinhaltet das Verarbeiten von Audiodaten entsprechend einem Modell des menschlichen Gehörsystems, um die wahrgenommene Qualität des rekonstruierten Audiosignals für eine gegebene Bitrate zu verbessern. Ein Gehörmodell befasst sich üblicherweise mit dem Bereich des menschlichen Gehörs und kritischen Bändern. Unter Verwendung der Ergebnisse des Wahrnehmungsmodellierens formt ein Codierer ein Rauschen (beispielsweise ein Quantisierungsrauschen) in den Audiodaten, mit der Absicht, die Hörbarkeit des Rauschens für eine gegebene Bitrate zu minimieren. Obwohl der Codierer bisweilen ein Rauschen (beispielsweise ein Quantisierungsrauschen) zur Verringerung der Bitrate einfügen muss, ermöglicht das Gewichten, dass der Codierer mehr Rauschen in Bänder einfügt, in denen es weniger hörbar ist, und umgekehrt.
  • Das Quantisieren bildet Bereiche von Eingabewerten auf einzelne Werte ab, was mit einem irreversiblen Verlust von Information oder Quantisierungsrauschen einhergeht, einen Codierer jedoch in die Lage versetzt, die Qualität und Bitrate der Ausgabe zu regeln. Bisweilen nimmt der Codierer die Quantisierung in Verbindung mit einer Ratensteuerung vor, bei der die Quantisierung zur Regelung der Bitrate und/oder Qualität verstellt wird. Es gibt verschiedene Arten von Quantisierungen, darunter adaptiv und nichtadaptiv, skalar und vektoriell, gleichmäßig und ungleichmäßig. Das Wahrnehmungsgewichten kann als eine Form der ungleichmäßigen Quantisierung betrachtet werden.
  • Das inverse Quantisieren und das inverse Gewichten rekonstruieren die gewichteten, quantisierten Frequenzkoeffizientendaten mit einer Näherung der ursprünglichen Frequenzkoeffizientendaten. Der inverse Frequenzumwandler nimmt anschließend eine Umwandlung der rekonstruierten Frequenzkoeffizientendaten in rekonstruierte Audioabtastungen im Zeitbereich vor.
  • B. Verlustfreie Kompression und Dekompression von Audiodaten
  • Üblicherweise verwendet ein Audiocodierer eine oder mehrere Techniken aus einer Mehrzahl von verschiedenen verlustfreien Kompressionstechniken. Zu den verlustfreien Kompressionstechniken zählen im Allgemeinen das Lauflängencodieren, das Huffman-Codieren und das arithmetische Codieren. Zu den entsprechenden Dekompressionstechniken zählen das Lauflängendecodieren, das Huffman-Decodieren und das arithmetische Decodieren.
  • Das Lauflängencodieren ist eine einfache bekannte Kompressionstechnik, die beispielsweise bei Kameravideos, Text und anderen Arten von Inhalt Verwendung findet. Im Allgemeinen wird beim Lauflängencodieren eine Sequenz (das heißt ein Lauf (run)) von aufeinanderfolgenden Symbolen mit demselben Wert durch den Wert und die Länge der Sequenz ersetzt. Bei der Lauflängencodierung wird die Sequenz von aufeinanderfolgenden Symbolen aus dem Laufwert und der Lauflänge rekonstruiert. Es sind verschiedene Abwandlungen des Lauflängencodierens/Lauflängendecodierens entwickelt worden. Weitere Informationen über das Lauflängencodieren/Lauflängendecodieren und dessen Abwandlungen findet man beispielsweise in den folgenden Veröffentlichungen: „Text Compression" von Bell et al., veröffentlicht bei Prentice Hall PTR, Seiten 105 bis 107, 1990; „Digital Compression for Multimedia" von Gibson et al., veröffentlicht bei Morgan Kaufmann, Seiten 17 bis 62, 1998; US-Patent Nr. 6,304,928 von Mairs et al.; US-Patent Nr. 5,883,633 von Gill et al.; und US-Patent Nr. 6,233,017 von Chaddha.
  • Das Laufpegelcodieren ist zum Lauflängencodieren dahingehend ähnlich, dass Läufe von aufeinanderfolgenden Symbolen mit demselben Wert durch Lauflängen ersetzt werden. Der Wert für die Läufe ist der vorherrschende Wert (beispielsweise 0) in den Daten, und es werden Läufe durch einen oder mehrere Pegel mit anderen Werten (beispielsweise einem Nichtnullwert) getrennt.
  • Die Ergebnisse des Lauflängencodierens (beispielsweise die Laufwerte und die Lauflängen) oder des Laufpegelcodierens können einem Huffman-Codieren unterzogen werden, um die Bitrate weiter zu verringern. Ist dies der Fall, so werden die Huffman-codierten Daten vor dem Lauflängendecodieren einem Huffman-Decodieren unterzogen.
  • Die Huffman-Codierung ist eine andere bekannte Kompressionstechnik, die für Kameravideos, Text und andere Arten von Inhalt verwendet wird. Im Allgemeinen verknüpft eine Huffman-Code-Tabelle variable Länge aufweisende Huffman-Codes mit eindeutigen Symbolwerten (oder eindeutigen Kombinationen von Werten). Kürzere Codes werden wahrscheinlicheren Symbolwerten zugewiesen, während längere Codes weniger wahrscheinlichen Symbolwerten zugewiesen werden. Die Wahrscheinlichkeiten werden für typische Beispiele irgendeiner Art von Inhalt berechnet. Alternativ werden die Wahrscheinlichkeiten für Daten berechnet, die gerade codiert worden sind oder codiert werden sollen, wobei in diesem Fall die Huffman-Codes an die sich verändernden Wahrscheinlichkeiten für die eindeutigen Symbolwerte angepasst werden. Im Gegensatz zum statischen Huffman-Codieren verringert das adaptive Huffman-Codieren üblicherweise die Bitrate von komprimierten Daten durch Einbeziehen von genaueren Wahrscheinlichkeiten für die Daten, wobei jedoch auch zusätzliche Information, die die Huffman-Codes spezifiziert, übertragen werden muss.
  • Um Symbole zu codieren, ersetzt der Huffman-Codierer Symbolwerte durch die variable Länge aufweisenden Codes, die mit den Symbolwerten in der Huffman-Code-Tabelle verknüpft sind. Zur Decodierung ersetzt der Huffman-Decodierer die Huffman-Codes durch die Symbolwerte, die mit den Huffman-Codes verknüpft sind.
  • Bei der skalaren Huffman-Codierung verknüpft eine Huffman-Code-Tabelle einen einzelnen Huffman-Code mit einem Wert, so beispielsweise mit einem direkten Pegel eines quantisierten Datenwertes. Beim vektoriellen Huffman-Decodieren verknüpft eine Huffman-Code-Tabelle einen einzelnen Huffman-Code mit einer Kombination von Werten, so beispielsweise mit einer Gruppe von direkten Pegeln von quantisierten Datenwerten in einer bestimmten Reihenfolge. Das vektorielle Huffman-Codieren kann zu einer besseren Bitratenverringerung als das skalare Huffman-Codieren führen (beispielsweise dadurch, dass der Codierer in die Lage versetzt wird, Wahrscheinlichkeiten in binären Huffman-Codes mit Bruchzahlen zu nutzen). Demgegenüber kann das Codebuch (codebook) für vektorielles Huffman-Codieren äußerst groß sein, wenn einzelne Codes große Gruppen von Symbolen oder Symbole darstellen, die große Bereiche von möglichen Werten aufweisen (was von der großen Anzahl von möglichen Kombinationen herrührt). Ist die Alphabetgröße beispielsweise gleich 256 (für die Werte 0 bis 255 pro Symbol) und ist die Anzahl der Symbole pro Vektor gleich 4, so ist die Anzahl der möglichen Kombinationen gleich 2564 = 4.294.967.296. Dies verbraucht Speicher- und Verarbeitungsres sourcen bei der Berechnung des Codebuches und beim Auffinden der Huffman-Codes sowie Übertragungsressourcen beim Übermitteln des Codebuches.
  • Es sind verschiedene Abwandlungen des Huffman-Codierens und des Huffman-Decodierens entwickelt worden. Weitere Informationen über das Huffman-Codieren/Huffman-Decodieren und dessen Abwandlungen findet man in den folgenden Veröffentlichungen: „Text Compression" von Bell et al., veröffentlicht bei Prentice Hall PTR, Seiten 105 bis 107, 1990; „Digital Compression for Multimedia" von Gibson et al., veröffentlicht bei Morgan Kaufmann, Seiten 17 bis 62, 1998.
  • Das US-Patent Nr. 6,223,162 von Chen et al. beschreibt das Mehrfachpegel-Lauflängencodieren von Audiodaten. Eine Frequenzumwandlung erzeugt eine Reihe von Frequenzkoeffizientenwerten. Für Abschnitte eines Frequenzspektrums, in denen der vorherrschende Wert gleich Null ist, korreliert ein Mehrfachpegel-Lauflängencodierer Läufe von Nullwerten mit benachbarten Nichtnullwerten statistisch und weist variable Länge aufweisende Codeworte zu. Ein Codierer verwendet ein spezialisiertes Codebuch, das in Bezug auf die Wahrscheinlichkeit des Empfangens eines Eingabelaufes von nullwertigen Spektralkoeffizienten, gefolgt von Nichtnullkoeffizienten erzeugt wird. Ein entsprechender Decodierer verknüpft ein variable Länge aufweisendes Codewort mit einem Lauf von Nullwertkoeffizienten und benachbartem nichtnullwertigen Koeffizienten.
  • Das US-Patent 6,377,930 von Chen et al. beschreibt das Codieren mit variabler Länge von Audiodaten. Ein Codierer weist einen variable Länge aufweisenden Code einer variable Größe aufweisenden Gruppe von Frequenzkoeffizientenwerten zu.
  • Das US-Patent 6,300,888 von Chen et al. beschreibt das Entropiecodemodusumschalten für das Audiocodieren im Frequenzbereich. Ein Frequenzbereichsaudiocodierer trifft unter verschiedenen Entropiecodierungsmodi entsprechend den Eigenschaften eines Eingabestromes eine Wahl. Der Eingabestrom wird insbesondere entsprechend statistischen Kriterien in Frequenzbereiche partitioniert, wobei die Kriterien aus der statistischen Analyse von typischen oder tatsächlichen zu codierenden Eingaben hergeleitet werden. Jedem Bereich wird ein Entropiecodierer zugewiesen, der mit Blick auf das Codieren des Datentyps des Bereiches optimiert ist. Während des Codierens und des Decodierens wendet ein Modusauswähler das richtige Verfahren auf die verschiedenen Frequenzbereiche an. Partitionsgrenzen können vorab bestimmt werden, was den Decodierer in die Lage versetzt, implizit davon Kenntnis zu haben, welches Decodierverfah ren auf die codierten Daten anzuwenden ist. Alternativ können adaptive Anordnungen verwendet werden, bei denen Grenzen in dem Ausgabestrom mit Flags versehen werden, um einen Wechsel im Codiermodus für nachfolgende Daten anzugeben. Eine Partitionsgrenze trennt üblicherweise quantisierte primär nullwertige Frequenzkoeffizienten und quantisierte primär nichtnullwertige Koeffizienten und wendet anschließend Codes an, die für derartige Daten optimiert sind.
  • Weitere Einzelheiten über die Patente von Chen finden sich in den Patenten selbst.
  • Das arithmetische Codieren ist eine andere bekannte Kompressionstechnik, die bei Kameravideos und anderen Arten von Inhalt angewendet wird. Das arithmetische Codieren wird bisweilen bei Anwendungen verwendet, bei denen die optimale Anzahl von Bits zur Codierung eines gegebenen Eingabesymbols eine Bruchzahl von Bits ist, sowie in Fällen, in denen eine statistische Korrelation zwischen bestimmten einzelnen Eingabesymbolen vorhanden ist. Bei der arithmetischen Codierung wird üblicherweise eine Eingabesequenz als einzelne Zahl innerhalb eines gegebenen Bereiches dargestellt. Üblicherweise ist die Anzahl eine Bruchzahl zwischen 0 und 1. Symbole in der Eingabesequenz werden mit Bereichen verknüpft, die Abschnitte des Raumes zwischen 0 und 1 einnehmen. Die Bereiche werden auf Grundlage der Wahrscheinlichkeit des Auftretens eines bestimmten Symbols in der Eingabesequenz berechnet. Die Bruchzahl, die zur Darstellung der Eingabesequenz verwendet wird, wird unter Bezugnahme auf diese Bereiche konstruiert. Daher sind in arithmetischen Codierschemen die Wahrscheinlichkeitsverteilungen für Eingabesymbole wichtig.
  • Beim kontextbasierten arithmetischen Codieren werden unterschiedliche Wahrscheinlichkeitsverteilungen für die Eingabesymbole mit unterschiedlichen Kontexten verknüpft. Die Wahrscheinlichkeitsverteilung, die zur Codierung der Eingabesequenz verwendet wird, ändert sich mit einer Änderung des Kontextes. Der Kontext kann durch Messen verschiedener Faktoren berechnet werden, von denen erwartet wird, dass sie Auswirkungen auf die Wahrscheinlichkeit des Auftretens eines bestimmten Eingabesymbols in der Eingabesequenz haben. Weitere Informationen über das arithmetische Codieren beziehungsweise Decodieren und einige seiner Abwandlungen finden sich in „The Data Compression Book, Huffman One Retter: Arithmetic Coding" von Nelson, Kapitel 5, Seiten 123 bis 165 (1992).
  • Verschiedene CODEC-Systeme und -standards bedienen sich der verlustfreien Kompression und Dekompression, darunter Versionen des WMA-Codierers und WMA-Decodierers (Windows Media Audio) von Microsoft. Andere CODEC-Systeme werden von der Motion Picture Experts Group als Standard Audio Layer 3 („MP3"), von der Motion Picture Experts Group 2 als Standard Advanced Audio Coding („AAC") und Dolby AC3 bereitgestellt und spezifiziert. Weitere Informationen finden sich in den jeweiligen Standards oder technischen Veröffentlichungen.
  • Der Beitrag „ASPEC Coding" von K. Brandenburg, veröffentlicht bei AES 10th International Conference, Seiten 71 bis 80, beschreibt ein Umwandlungscodieren in Kombination mit einem Entropiecodieren.
  • Die dem Stand der Technik entstammenden Techniken und Systeme für verlustfreie Kompression von Audiodaten weisen zahlreiche Vorteile auf, nicht jedoch diejenigen, die die vorliegende Erfindung aufweist.
  • Zusammenfassung
  • Die Detailbeschreibung betrifft kurz gesprochen verschiedene Techniken und Werkzeuge für das adaptive Entropiecodieren und -decodieren von Audiodaten. Die verschiedenen Techniken und Werkzeuge können in Kombination oder unabhängig voneinander verwendet werden.
  • Der Schutzbereich der Erfindung ist in den unabhängigen Ansprüchen 1, 17, 19, 32, 34 und 41 niedergelegt.
  • Gemäß einem Aspekt codiert ein Codierer einen ersten Abschnitt einer Audiodatensequenz in einem Modus des direkten variabel-dimensionalen Vektor-Huffman-Codierens, schaltet an einem Umschaltpunkt auf einen Laufpegelcodiermodus um und codiert einen zweiten Abschnitt in dem Laufpegelcodiermodus (beispielsweise kontextbasiertes arithmetisches Codieren, Huffman-Codieren, vektorielles Huffman-Codieren). Der erste Abschnitt besteht beispielsweise primär aus quantisierten Nichtnullaudiokoeffizienten, während der zweite Abschnitt primär aus quantisierten nullwertigen Audiokoeffizienten besteht. Der Umschaltpunkt kann vorgegeben (beispielsweise durch Prüfen der Effizienz des Codierens der Sequenz unter Verwendung des Umschaltpunktes) oder adaptiv be stimmt werden. Der Codierer kann ein Flag senden, das den Umschaltpunkt in einem codierten Bitstrom angibt.
  • Gemäß einem weiteren Aspekt decodiert ein Decodierer einen ersten Abschnitt einer codierten Sequenz in einem Modus des direkten variabel-dimensionalen Vektor-Huffman-Decodierens, schaltet an einem Umschaltpunkt auf einen Modus des Laufpegelcodierens um und decodiert einen zweiten Abschnitt in dem Modus des Laufpegeldecodierens (beispielsweise kontextbasiertes arithmetisches Decodieren, Huffman-Decodieren, vektorielles Huffman-Decodieren). Vor dem Umschalten kann der Decodierer ein Flag empfangen, das den Umschaltpunkt angibt.
  • Gemäß einem weiteren Aspekt codiert ein Codierer beziehungsweise decodiert ein Decodierer einen ersten Abschnitt einer Sequenz in einem direkten kontextbasierten arithmetischen Modus, schaltet an einem Umschaltpunkt in einen Laufpegelmodus um und codiert beziehungsweise decodiert einen zweiten Abschnitt in dem Laufpegelmodus. Der Laufpegelmodus kann ein kontextbasierter arithmetischer Modus sein.
  • Gemäß einem weiteren Aspekt wählt ein Codierer eine erste Code-Tabelle aus einer Menge von mehreren Code-Tabellen auf Grundlage der Anzahl von Symbolen in einem ersten Vektor aus und stellt den ersten Vektor mit einem Code aus der ersten Code-Tabelle dar. Die erste Code-Tabelle kann Codes zur Darstellung von möglichen Vektoren, die jene Anzahl von Symbolen aufweisen, sowie einen Escape-Code für weniger wahrscheinliche Vektoren enthalten. Der Codierer codiert zudem einen zweiten Vektor mit einer anderen Anzahl von Symbolen. Der erste Vektor weist beispielsweise eine größere Anzahl von Symbolen als der zweite Vektor sowie eine höhere Wahrscheinlichkeit des Auftretens als der zweite Vektor auf. Zum Codieren des zweiten Vektors kann der Codierer eine zweite andere Code-Tabelle auf Grundlage der Anzahl der Symbole in dem zweiten Vektor auswählen. Weist der zweite Vektor ein Symbol auf, kann der Codierer den zweiten Vektor unter Verwendung einer tabellenfreien Codiertechnik darstellen.
  • Gemäß einem weiteren Aspekt decodiert ein Decodierer einen ersten Vektor durch Empfangen eines ersten Codes und Nachschlagen des ersten Codes in einer ersten Code-Tabelle. Ist der erste Code ein Escape-Code, so empfängt der Decodierer einen zweiten Code und decodiert diesen zweiten Code, der nicht in der ersten Tabelle vorhanden ist. Ist der erste Code kein Escape-Code, so schlägt der Decodierer Symbole für den ersten Vektor in der ersten Tabelle nach und baut diese in einen decodierten Datenstrom ein. Die Anzahl von Symbolen in dem ersten Vektor ist die Grundlage dafür, ob der erste Code ein Escape-Code ist. Der Decodierer kann den zweiten Code durch Nachschlagen desselben in einer zweiten Tabelle decodieren. Ist der zweite Code ein Escape-Code, so empfängt der Decodierer einen dritten Code, der den ersten Vektor darstellt, der nicht in der zweiten Tabelle vorhanden ist, und decodiert diesen. Ist der zweite Code kein Escape-Code, so schlägt der Decodierer Symbole für den ersten Vektor in der zweiten Tabelle nach und baut die Symbole in den decodierten Datenstrom ein.
  • Gemäß einem weiteren Aspekt codiert ein Codierer Audiodatenkoeffizienten unter Verwendung einer tabellenfreien Codiertechnik. Ist ein Koeffizient innerhalb eines ersten Wertebereiches, so codiert der Codierer den Koeffizient mit einem 1 Bit umfassenden Code, gefolgt von einem 8 Bit umfassenden codierten Wert. Für andere Wertebereiche codiert der Codierer den Koeffizienten mit einem 2 Bit umfassenden Code, gefolgt von einem 16 Bit umfassenden codierten Wert, einem 3 Bit umfassenden Code, gefolgt von einem 24 Bit umfassenden codierten Wert oder einem anderen 3 Bit umfassenden Code, gefolgt von einem 31 Bit umfassenden codierten Wert.
  • Gemäß einem weiteren Aspekt bestimmt bei einem vektoriellen Huffman-Codierschema ein Codierer einen Huffman-Code aus einer Gruppe von derartigen Codes zur Verwendung beim Codieren eines Vektors und codiert den Vektor unter Verwendung des Huffman-Codes. Das Bestimmen des Codes basiert auf einer Summe von Werten der Audiodatensymbole in dem Vektor. Ist der Huffman-Code ein Escape-Code, so wird angegeben, dass ein n-dimensionaler Vektor in Form von x n/x-dimensionalen Vektoren unter Verwendung wenigstens einer anderen Code-Tabelle codiert werden soll. Der Codierer kann die Summe mit einem Schwellenwert vergleichen, der von der Anzahl der Symbole in dem Vektor abhängt. Der Schwellenwert ist bei vier Symbolen gleich 6, bei zwei Symbolen gleich 16 oder bei einem Symbol gleich 100.
  • Gemäß einem weiteren Aspekt empfängt ein Codierer eine Sequenz von Audiodaten und codiert wenigstens einen Teil der Sequenz unter Verwendung einer kontextbasierten arithmetischen Codierung. Ein Decodierer empfängt eine codierte Sequenz von Audiodatenkoeffizienten und decodiert wenigstens einen Teil der codierten Sequenz unter Verwendung der kontextbasierten arithmetischen Decodierung.
  • Gemäß einem weiteren Aspekt codiert ein Codierer Audiodatenkoeffizienten unter Verwendung einer kontextbasierten arithmetischen Codierung. Ein oder mehrere Kontexte weisen verknüpfte Wahrscheinlichkeitsverteilungen auf, die Wahrscheinlichkeiten der Koeffizienten darstellen. Der Codierer bestimmt adaptiv einen Kontext aus einem aktuellen Koeffizienten auf Grundlage wenigstens teilweise eines Modus der Darstellung des aktuellen Koeffizienten und codiert den aktuellen Koeffizienten unter Verwendung des Kontextes. Ist beispielsweise der Modus der Darstellung direkt, so bestimmt der Codierer adaptiv den Kontext auf Grundlage wenigstens teilweise der direkten Pegel der vorhergehenden Koeffizienten (beispielsweise die beiden Koeffizienten, die dem aktuellen Koeffizienten unmittelbar vorausgehen). Ist der Modus der Darstellung der Laufpegelmodus, so bestimmt der Codierer adaptiv den Kontext auf Grundlage wenigstens teilweise des prozentualen Anteils der Nullwertkoeffizienten der vorhergehenden Lauflänge von Nullwertkoeffizienten in der Audioeingabesequenz. Ist der Modus der Darstellung der Laufpegelmodus, so bestimmt der Codierer adaptiv den Kontext auf Grundlage wenigstens teilweise der aktuellen Lauflänge der Nullwertkoeffizienten, der vorhergehenden Lauflänge der Nullwertkoeffizienten und der direkten Pegel der vorhergehenden Koeffizienten.
  • Gemäß einem weiteren Aspekt codiert ein Codierer beziehungsweise decodiert ein Decodierer einen ersten Abschnitt von Audiodaten unter Verwendung einer direkten Codierung oder Decodierung bei Halten eines Zählwertes von aufeinanderfolgenden Koeffizienten gleich einem vorherrschenden Wert (beispielsweise 0). Übersteigt der Zählwert einen Schwellenwert, so codiert der Codierer beziehungsweise decodiert der Decodierer einen zweiten Abschnitt von Audiodaten unter Verwendung der Laufpegelcodierung oder -decodierung. Der Schwellenwert kann statisch sein oder adaptiv bestimmt werden. Der Schwellenwert kann von der Größe des Blocks von Koeffizienten abhängen. Der Schwellenwert kann beispielsweise für einen Block von 256 Koeffizienten gleich 4 und für einen Block von 512 Koeffizienten gleich 8 sein.
  • Gemäß einem weiteren Aspekt codiert ein Codierer beziehungsweise decodiert ein Decodierer einen ersten Abschnitt einer Sequenz unter Verwendung einer ersten Code-Tabelle und einen zweiten Abschnitt der Sequenz unter Verwendung einer zweiten Code-Tabelle. Die erste Code-Tabelle wird verwendet, wenn längere Läufe von aufeinanderfolgenden Koeffizienten gleich einem vorherrschenden Wert (beispielsweise 0) mit größerer Wahrscheinlichkeit auftreten, während die zweite Tabelle verwendet wird, wenn kürzere Läufe von aufeinanderfolgenden Koeffizienten mit gleichem Wert wahrscheinlicher sind. Die verwendete Tabelle kann durch ein Signalbit angegeben werden.
  • Die Merkmale und Vorteile der Techniken des adaptiven Entropiecodierens und -decodierens erschließen sich besser aus der nachfolgenden Detailbeschreibung verschiedener Ausführungsbeispiele unter Bezugnahme auf die begleitende Zeichnung.
  • Kurzbeschreibung der Zeichnung
  • 1 ist ein Blockdiagramm einer geeigneten Computerumgebung, in der die beschriebenen Ausführungsbeispiele implementiert sein können.
  • 2 ist ein Blockdiagramm eines Audiocodierers, in dem die beschriebenen Ausführungsbeispiele implementiert sein können.
  • 3 ist ein Blockdiagramm eines Audiodecodierers, in dem die beschriebenen Ausführungsbeispiele implementiert sein können.
  • 4 ist ein Flussdiagramm, das eine verallgemeinerte Mehrfachmodiaudiocodiertechnik zeigt.
  • 5 ist ein Flussdiagramm, das eine Mehrfachmodiaudiocodiertechnik mit adaptiver Berechnung des Umschaltpunktes zeigt.
  • 6 ist ein Flussdiagramm, das eine verallgemeinerte Technik des Mehrfachmodiaudiodecodierens zeigt.
  • 7 ist ein Flussdiagramm, das eine verallgemeinerte an variabel-dimensionalen Vektoren vorgenommene Huffman-Codiertechnik zeigt.
  • 8 ist ein Flussdiagramm, das detailliert eine Technik zum Codieren von Audiodaten unter Verwendung eines variabel-dimensionalen Vektor-Huffman-Codierens zeigt.
  • 9 ist ein Flussdiagramm, das eine Technik des variabel-dimensionalen Vektor-Huffman-Codierens von direkten Signalpegeln zeigt, wobei der Codierer einen Um schaltpunkt zum Wechseln auf die Codierung von Lauflängen und Signalpegeln adaptiv bestimmt.
  • 10 ist ein Flussdiagramm, das eine verallgemeinerte Technik des variabel-dimensionalen Vektor-Huffman-Decodierens zeigt.
  • 11 ist ein Flussdiagramm, das detailliert eine Technik zum Decodieren von Vektoren zeigt, die unter Verwendung einer variabel-dimensionalen Vektor-Huffman-Codierung codiert worden sind.
  • 12 ist ein Flussdiagramm, das eine Technik des variabel-dimensionalen Vektor-Huffman-Decodierens von direkten Signalpegeln zeigt, wobei hier der Decodierer einen Umschaltpunkt zum Wechseln auf die Decodierung von Lauflängen und Signalpegeln adaptiv bestimmt.
  • 13A bis 13D sind Wahrscheinlichkeitsverteilungen für Nichtlauflängenpegel in einem kontextbasierten arithmetischen Codierschema.
  • 14A bis 14H sind Wahrscheinlichkeitsverteilungen für verschiedene Lauflängen in einem Schema des kontextbasierten arithmetischen Codierens.
  • 15A bis 15H sind Wahrscheinlichkeitsverteilungen von lauflängencodierten Pegeln in einem Schema des kontextbasierten arithmetischen Codierens.
  • 16 ist ein Flussdiagramm, das eine Technik des direkten kontextbasierten arithmetischen Codierens von Koeffizienten zeigt, wobei ein Umschaltpunkt zum Wechseln auf das Codieren von Lauflängen und -pegeln adaptiv von dem Codierer bestimmt wird.
  • 17 ist ein Flussdiagramm, das eine Technik des kontextbasierten arithmetischen Decodierens zeigt, wobei der Decodierer adaptiv einen Umschaltpunkt zum Wechseln auf das Decodieren von Lauflängen und Signalpegeln bestimmt.
  • Detailbeschreibung
  • Bei den beschriebenen Ausführungsbeispielen setzt ein Audiocodierer verschiedene Techniken des adaptiven Entropiecodierens ein. Die Techniken des adaptiven Entropie codierens verbessern die Leistung des Codierers, wobei die Bitrate verringert und/oder die Qualität verbessert wird. Ein Decodierer setzt entsprechende Techniken des Entropiedecodierens ein. Während die hier beschriebenen Techniken als Teil eines einzigen integrierten Systems beschrieben werden, können die Techniken getrennt und gegebenenfalls auch in Kombination mit anderen Techniken eingesetzt werden.
  • Der Audiocodierer und der Audiodecodierer nehmen eine Verarbeitung an diskreten Audiosignalen vor. Bei den beschriebenen Ausführungsbeispielen sind die Audiosignale quantisierte Koeffizienten aus frequenzgewandelten Audiosignalen. Alternativ verarbeiten der Codierer und der Decodierer andere Arten von diskreten Audiosignalen oder diskreten Signalen, die Videofilme oder andere Arten von Information darstellen.
  • Bei einigen Ausführungsbeispielen erfolgt durch den Audiocodierer ein adaptives Umschalten zwischen dem Codieren von direkten Signalpegeln und dem Codieren von Lauflängen und Signalpegeln. Der Codierer codiert die direkten Signalpegel unter Verwendung von skalaren Huffman-Codes, vektoriellen Huffman-Codes, arithmetischer Codierung oder einer anderen Technik. Bei der Lauflängen-/Pegelcodierung (die auch Laufpegelcodierung genannt wird) stellt jede Lauflänge einen Lauf von Null oder mehreren Nullen dar, wobei jeder Signalpegel einen Nichtnullwert darstellt. In dem Laufpegelereignisraum codiert der Codierer die Lauflängen und -pegel in dem Ereignisraum unter Verwendung von Huffman-Codes, arithmetischer Codierung oder einer anderen Technik. Ein Decodierer nimmt ein entsprechendes adaptives Umschalten während des Decodierens vor. Das adaptive Umschalten tritt auf, wenn eine Schwellenwertzahl von nullwertigen Pegeln erreicht wird. Alternativ schalten der Codierer und der Decodierer auf Grundlage von zusätzlichen oder anderen Kriterien um.
  • Bei einigen Ausführungsbeispielen setzt ein Audiocodierer eine variabel-dimensionale Vektor-Huffman-Codierung ein. Das variabel-dimensionale Vektor-Huffman-Codieren versetzt den Codierer in die Lage, Huffman-Codes zu verwenden, um stärker wahrscheinliche Kombinationen von Symbolen unter Verwendung von höher-dimensionalen Vektoren und weniger wahrscheinliche Kombinationen von Symbolen unter Verwendung von niedriger-dimensionalen Vektoren oder von Skalaren darzustellen. Ein Decodierer nimmt das entsprechende variabel-dimensionale Vektor-Huffman-Decodieren vor.
  • Bei einigen Ausführungsbeispielen verwendet ein Audiocodierer eine kontextbasierte arithmetische Codierung. Die von dem Codierer verwendeten Kontexte ermöglichen eine effiziente Kompression von verschiedenen Arten von Audiodaten. Ein Decodierer nimmt eine entsprechende kontextbasierte arithmetische Decodierung vor.
  • Bei den beschriebenen Ausführungsbeispielen setzen der Audiocodierer und der Audiodecodierer verschiedene Techniken ein. Obwohl die Ausführung dieser Techniken aus darstellerischen Gründen üblicherweise in einer bestimmten sequenziellen Reihenfolge erfolgt, sollte einsichtig sein, dass die vorliegende Beschreibung geringfügige Umordnungen bei der Reihenfolge der Ausführung einschließt. Aus Gründen der Einfachheit zeigen darüber hinaus Flussdiagramme üblicherweise nicht die verschiedenen Arten, auf die die verschiedenen Techniken in Verbindung mit anderen Techniken verwendet werden können.
  • I. Computerumgebung
  • 1 zeigt ein verallgemeinertes Beispiel für eine geeignete Computerumgebung 100, in der die beschriebenen Ausführungsbeispiele implementiert sein können. Die Computerumgebung 100 soll keine Beschränkungen bezüglich des Einsatzumfanges oder der Funktionalität der Erfindung beinhalten, da die vorliegende Erfindung in verschiedenen Allzweck- oder Sonderzweckcomputerumgebungen implementiert sein kann.
  • Wie in 1 gezeigt ist, umfasst die Computerumgebung 100 wenigstens eine Verarbeitungseinheit 110 und einen Speicher 120. In 1 ist die grundlegende Ausgestaltung 130 mit einer gestrichelten Linie eingeschlossen. Die Verarbeitungseinheit 110 führt computerausführbare Anweisungen aus und kann ein realer oder virtueller Prozessor sein. In einem Mehrfachverarbeitungssystem führen mehrere Verarbeitungseinheiten computerausführbare Anweisungen aus, um die Verarbeitungsleistung zu erhöhen. Der Speicher 120 kann ein flüchtiger Speicher sein (beispielsweise ein Register, ein Cache, ein RAM), ein nichtflüchtiger Speicher (beispielsweise ein ROM, ein EEPROM, ein Flash-Speicher und dergleichen) oder eine Kombination aus beidem. Der Speicher 120 speichert Software 180, die einen Audiocodierer-/Decodierer implementiert, der ein adaptives Entropiecodieren beziehungsweise Decodieren von Audiodaten vornimmt.
  • Eine Computerumgebung kann zusätzliche Merkmale aufweisen. So enthält die Computerumgebung 100 beispielsweise einen Speicher 140, eine oder mehrere Eingabevorrichtungen 150, eine oder mehrere Ausgabevorrichtungen 160 und einen oder mehrere Kommunikationsverbindungen 170. Ein Mechanismus zur wechselseitigen Verbindung (nicht gezeigt), so beispielsweise ein Bus, ein Kontroller oder ein Netzwerk, verbindet die Komponenten der Computerumgebung 100 untereinander. Üblicherweise stellt eine Betriebssystemsoftware (nicht gezeigt) eine Betriebsumgebung für eine andere Software bereit, die in der Computerumgebung 100 arbeitet, und koordiniert die Aktivitäten der Komponenten der Computerumgebung 100.
  • Der Speicher 140 kann ein herausnehmbarer Speicher oder ein nichtherausnehmbarer Speicher sein. Hierzu zählen magnetische Platten, magnetische Bänder oder Kassetten, CD-ROMs, CD-RWs, DVDs oder ein beliebiges anderes Medium, das zur Speicherung von Information verwendet werden kann und auf das innerhalb der Computerumgebung 100 zugegriffen werden kann. Der Speicher 100 speichert Anweisungen für die Software 180, die den Audiocodierer beziehungsweise Audiodecodierer implementiert, die eine adaptive Entropiecodierung beziehungsweise -decodierung der Audiodaten vornehmen.
  • Die Eingabevorrichtung beziehungsweise die Eingabevorrichtungen 150 können als berührungstechnische Eingabevorrichtungen ausgebildet sein, so beispielsweise als Tastatur, Maus, Stift, Trackball, als sprachbasierte Eingabevorrichtung, Abtastvorrichtung, Netzwerkadapter oder eine andere Vorrichtung, die eine Eingabe für die Computerumgebung 100 bereitstellt. Mit Blick auf den Audioton können eine Eingabevorrichtung beziehungsweise Eingabevorrichtungen 150 verwendet werden, die als Soundkarte oder ähnliche Vorrichtung ausgestaltet sind, die eine Audioeingabe in analoger oder digitaler Form annimmt, oder als CD-ROM-Lesegerät, das Audioabtastungen in der Computerumgebung vornimmt. Die Ausgabevorrichtung beziehungsweise Ausgabevorrichtungen 160 können als Anzeige, Drucker, Lautsprecher, CD/DVD-Schreiber, Netzwerkadapter oder andere Vorrichtung ausgebildet sein, die eine Ausgabe aus der Computerumgebung 100 bereitstellt.
  • Die Kommunikationsverbindung beziehungsweise Kommunikationsverbindungen 170 ermöglichen eine Kommunikation über ein Kommunikationsmedium mit einer anderen Computereinheit. Das Kommunikationsmedium liefert Information, so beispielsweise durch computerausführbare Anweisungen, komprimierte Audioinformation oder andere Daten in einem modulierten Datensignal. Ein moduliertes Datensignal ist ein Signal, das einen oder mehrere Parameter enthält, die derart eingestellt oder geändert sind, dass Information in dem Signal codiert ist. Zu den Kommunikationsmedien zählen beispielsweise und ohne beabsichtigte Einschränkung drahtlose oder drahtgebundene Techni ken, die mit einem elektrischen, optischen, funktechnischen, infraroten, akustischen oder anderen Träger implementiert sind.
  • Die Erfindung kann im allgemeinen Kontext von computerlesbaren Medien beschrieben werden. Computerlesbare Medien sind beliebige verfügbare Medien, auf die innerhalb einer Computerumgebung zugegriffen werden kann. Innerhalb der Computerumgebung 100 zählen zu den computerlesbaren Medien beispielsweise und ohne Einschränkung ein Speicher 120, ein Speicher 140, Kommunikationsmedien sowie Kombinationen hieraus.
  • Die Erfindung kann im allgemeinen Kontext von computerausführbaren Anweisungen beschrieben werden, so beispielsweise denjenigen, die in Programmmodulen enthalten sind, die in einer Computerumgebung in einem realen oder virtuellen Prozessor ausgeführt werden. Zu den Programmmodulen zählen im Allgemeinen Routinen, Programme, Bibliotheken, Objekte, Klassen, Komponenten, Datenstrukturen und dergleichen mehr, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Die Funktionalität der Programmmodule kann zwischen den Programmen kombiniert oder auch geteilt werden, was von dem jeweiligen Ausführungsbeispiel abhängt. Computerausführbare Anweisungen für Programmmodule können in einer örtlichen oder verteilten Computerumgebung ausgeführt werden.
  • Aus darstellerischen Gründen verwendet die Detailbeschreibung Begriffe wie „analysieren", „senden", „vergleichen" und „prüfen" zur Beschreibung von Computeroperationen in einer Computerumgebung. Diese Begriffe sind hochgradige Abstraktionen für Operationen, die von einem Computer vorgenommen werden, und sollten nicht mit Handlungen verwechselt werden, die ein menschliches Wesen ausführt. Die tatsächlichen Computeroperationen entsprechend diesen Begriffen variieren in Abhängigkeit von der Implementierung.
  • 11. Verallgemeinerte Audiocodierer und -decodierer
  • 2 ist ein Blockdiagramm eines verallgemeinerten Audiocodierers 200, bei dem die beschriebenen Ausführungsbeispiele implementiert sein können. Der Codierer 200 nimmt ein adaptives Entropiecodieren an Audiodaten vor. 3 ist ein Blockdiagramm eines verallgemeinerten Audiodecodierers 300, bei dem die beschriebenen Ausfüh rungsbeispiele implementiert sein können. Der Decodierer 300 decodiert codierte Audiodaten.
  • Die Beziehungen, die zwischen den Modulen innerhalb des Codierers und des Decodierers gezeigt sind, geben einen Informationsfluss in einem als Beispiel angegebenen Codierer und Decodierer an. Andere Beziehungen sind aus Gründen der Einfachheit nicht gezeigt. In Abhängigkeit von der Implementierung und der Art der gewünschten Kompression können Module des Codierers oder Decodierers hinzugefügt, weggelassen, in mehrere Module aufgeteilt, mit anderen Modulen kombiniert und/oder durch gleichartige Module ersetzt werden. Bei alternativen Ausführungsbeispielen nehmen Codierer oder Decodierer mit anderen Modulen und/oder anderen Ausgestaltungen eine adaptive Entropiecodierung und -decodierung an Audiodaten vor.
  • A. Verallgemeinerter Audiocodierer
  • Der verallgemeinerte Audiocodierer 200 umfasst einen Auswähler 208, einen Mehrfachkanalvorprozessor 210, einen Partitionierer/Paketkonfigurierer 220, einen Frequenzumwandler 230, einen Wahrnehmungsmodellierer 240, einen Gewichter 242, einen Mehrfachkanalumwandler 250, einen Quantisierer 260, einen Entropiecodierer 270, einen Kontroller bzw. eine Steuerung 280, einen gemischten/reinen verlustfreien Codierer 272 und einen zugehörigen Entropiecodierer 274 sowie einen Bitstrommuitiplexer (MUX) 290. Es schließt sich eine Beschreibung von einigen der Module des Codierers 200 an. Die Beschreibung von einigen anderen Modulen des Codierers 200 bei einigen Ausführungsbeispielen findet sich in dem Abschnitt „Daten verwandter Anmeldungen".
  • Der Codierer 200 empfängt eine zeitliche Folge von Eingabeaudioabtastungen 205 mit einer Abtasttiefe und einer Abtastrate in einem pulscodemodulierten Format (PCM-Format). Die Eingabeaudioabtastungen 205 können mehrfachkanalaudioartig (beispielsweise stereo, surround) oder mono sein. Der Codierer 200 komprimiert die Audioabtastungen 205 und multiplexiert die Information, die durch die verschiedenen Module der Codierer 200 erzeugt worden ist, um einen Bitstrom 295 in einem Format, so beispielsweise WMA (Windows Media Audio) oder ASF (Advanced Streaming Format), auszugeben. Alternativ arbeitet der Codierer 200 mit anderen Eingabe- und/oder Ausgabeformaten.
  • Zu Beginn wählt der Auswähler 208 zwischen mehreren Codiermodi für die Audioabtastungen, siehe 205, aus. Wie in 2 gezeigt ist, schaltet der Auswähler 208 zwischen zwei Modi um, nämlich einem gemischten/reinen verlustfreien Codiermodus und einem verlustbehafteten Codiermodus. Der verlustfreie Codiermodus enthält den gemischten/reinen verlustfreien Codierer 272 und wird üblicherweise für eine qualitativ hochwertige Kompression sowie eine Kompression mit hoher Bitrate verwendet. Der verlustbehaftete Codiermodus enthält Komponenten, so beispielsweise den Gewichter 242 und den Quantisierer 260, und wird üblicherweise für eine Kompression mit verstellbarer Qualität (und gesteuerter Bitrate) verwendet. Die Auswahlentscheidung an dem Auswähler 208 hängt von der Anwendereingabe (beispielsweise davon, ob ein Anwender die verlustfreie Codierung zur Erstellung qualitativ hochwertiger Audiokopien auswählt) oder von anderen Kriterien ab. Bei anderen Gegebenheiten (beispielsweise wenn die verlustbehaftete Kompression nicht in der Lage ist, eine adäquate Qualität zu liefern oder Bits überproduziert) kann der Codierer 200 von der verlustbehafteten Codierung zu der gemischten/reinen verlustfreien Codierung für ein Frame oder eine Menge von Frames umschalten.
  • Der Frequenzumwandler 230 empfängt die Audioabtastungen 205 und wandelt sie in Daten im Frequenzbereich um. Der Frequenzumwandler 230 gibt Blöcke von Frequenzkoeffizientendaten an den Gewichter 242 aus und gibt zudem Zusatzinformation, so beispielsweise Blockgrößen, an den MUX 290 aus. Der Frequenzumwandler 230 gibt sowohl die Frequenzkoeffizienten wie auch die Zusatzinformation an den Wahrnehmungsmodellierer 240 aus.
  • Der Wahrnehmungsmodellierer 240 modelliert die Eigenschaften des menschlichen Gehörsystems zur Verbesserung der wahrgenommenen Qualität des rekonstruierten Audiosignals bei gegebener Bitrate. Im Allgemeinen verarbeitet der Wahrnehmungsmodellierer 240 die Audiodaten entsprechend einem Gehörmodell, stellt anschließend Information für den Gewichter 242 bereit, die verwendet werden kann, um die Gewichtungsfaktoren für die Audiodaten zu erzeugen. Der Wahrnehmungsmodellierer 240 bedient sich verschiedener Gehörmodelle und gibt Erregungsmusterinformation oder eine andere Information an den Gewichter 242 aus.
  • Als Quantisierungsbandgewichter erzeugt der Gewichter 242 die Gewichtungsfaktoren für eine Quantisierungsmatrix auf Grundlage der Information aus dem Empfang von dem Wahrnehmungsmodellierer 240 und wendet die Gewichtungsfaktoren auf die von dem Frequenzumwandler 230 empfangenen Daten an. Der Gewichter 242 gibt Zusatzinformation, so beispielsweise die Menge von Gewichtungsfaktoren, an den MUX 290 aus. Als Kanalgewichter erzeugt der Gewichter 242 sodann kanalspezifische Gewichtungsfaktoren auf Grundlage der Information aus dem Empfang von dem Wahrnehmungsmodellierer 240 und der Qualität des örtlichen rekonstruierten Signals. Diese skalaren Gewichtungen ermöglichen, dass die rekonstruierten Kanäle annähernd gleiche Qualität aufweisen. Der Gewichter 242 gibt gewichtete Blöcke von Koeffizientendaten an den Mehrfachkanalumwandler 250 und zudem Zusatzinformation, so beispielsweise die Menge der Kanalgewichtungsfaktoren, an den MUX 290 aus. Alternativ verwendet der Codierer 200 andere Arten der Gewichtung oder verzichtet auf die Gewichtung.
  • Bei Mehrfachkanalaudiodaten besteht oftmals eine Korrelation der Mehrfachkanäle mit rauschgeformten Frequenzkoeffizientendaten, die von dem Gewichter 242 erzeugt werden. Um diese Korrelation auszunutzen, kann sich der Mehrfachkanalumwandler 250 einer Mehrfachkanalumwandlung der Audiodaten bedienen. Der Mehrfachkanalumwandler 250 erzeugt die Zusatzinformation für den MUX 290, so beispielsweise die verwendeten Mehrfachkanalumwandlungen und die mehrfachkanalumgewandelten Frames.
  • Der Quantisierer 260 quantisiert die Ausgabe des Mehrfachkanalumwandlers 250 und erzeugt dabei quantisierte Koeffizientendaten für den Entropiecodierer 270 sowie Zusatzinformation, darunter die Quantisierungsstufengrößen, für den MUX 290. Die Quantisierung führt einen irreversiblen Verlust in die Information ein, versetzt den Codierer 200 jedoch in die Lage, die Qualität und Bitrate des Ausgabebitstromes 295 im Zusammenspiel mit der Steuerung bzw. dem Kontroller 280 zu regeln. Bei einigen Ausführungsbeispielen ist der Quantisierer 260 ein adaptiver gleichmäßiger skalarer Quantisierer. Bei alternativen Ausführungsbeispielen ist der Quantisierer ein ungleichmäßiger Quantisierer, ein vektorieller Quantisierer und/oder ein nichtadaptiver Quantisierer oder bedient sich einer anderen Form von adaptiver gleichmäßiger oder skalarer Quantisierung.
  • Der Entropiecodierer 270 nimmt eine verlustfreie Komprimierung der quantisierten Koeffizientendaten vor, die von dem Quantisierer 260 empfangen werden. Bei einigen Ausführungsbeispielen verwendet der Entropiecodierer 270 die adaptive Entropiecodierung gemäß Beschreibung in den nachfolgenden Abschnitten. Der Entropiecodierer 270 kann die Anzahl der für die Codierung der Audioinformation verwendeten Bits berechnen und diese Information an die Raten-/Qualitätssteuerung 280 weiterleiten.
  • Die Steuerung 280 arbeitet mit dem Quantisierer 260 zusammen, um die Bitrate und/oder die Qualität der Ausgabe des Codierers 200 zu regeln. Die Steuerung 280 empfängt die Informationen von anderen Modulen des Codierers 200 und verarbeitet die empfangene Information zur Bestimmung der gewünschten Quantisierungsfaktoren bei gegebenen Bedingungen. Die Steuerung 280 gibt die Quantisierungsfaktoren an den Quantisierer 260 aus, mit der Absicht, die Qualitäts- und/oder Bitratenrandbedingungen zu erfüllen.
  • Der gemischte/reine verlustfreie Codierer 272 und der zugehörige Entropiecodierer 274 komprimieren die Audiodaten in dem gemischten/reinen verlustfreien Codiermodus. Der Codierer 200 verwendet den Modus des gemischten/reinen verlustfreien Codierens für eine ganze Sequenz oder schaltet zwischen Codiermodi frameweise oder auf einer anderen Grundlage um.
  • Der MUX 290 multiplexiert die von den anderen Modulen des Audiocodierers 200 empfangene Zusatzinformation 200 zusammen mit den von dem Entropiecodierer 270 empfangenen entropiecodierten Daten. Der MUX 290 gibt die Information im WMA-Format oder einem anderen Format aus, das ein Audiodecodierer erkennt. Der MUX 290 umfasst einen virtuellen Puffer, der den Bitstrom 295 speichert, der durch den Codierer 200 ausgegeben werden soll. Eine aktuelle Überbelegung des Puffers, die Änderungsrate bei der Belegung des Puffers und andere Eigenschaften des Puffers können von dem Kontroller 280 zur Regelung der Qualität und/oder Bitrate für verschiedene Anwendungen (beispielsweise bei konstanter Qualität und variabler Bitrate oder bei oder unter einer konstanten Bitrate und einer variablen Qualität) verwendet werden.
  • B. Verallgemeinerter Audiodecodierer
  • Wie in 3 gezeigt ist, umfasst der verallgemeinerte Audiodecodierer 300 einen Bitstromdemultiplexer (DEMUX) 310, einen oder mehrere Entropiedecodierer 320, einen gemischten/reinen verlustfreien Decodierer 322, einen Paketkonfigurierungsdecodierer 330, einen inversen Mehrfachkanalumwandler 340, einen inversen Quantisierer/Gewichter 350, einen inversen Frequenzumwandler 360, einen Überlapper/Addierer 370 sowie einen Mehrfachkanalnachprozessor 380. Der Decodierer 300 ist ein wenig einfacher als der Codierer 200 aufgebaut, da der Decodierer 300 nicht über die Module zur Raten-/Qualitätssteuerung oder zur Wahrnehmungsmodellierung verfügen muss.
  • Eine Beschreibung von einigen der Module des Codierers 300 schließt sich an. Eine Beschreibung von bestimmten anderen Modulen des Decodierers 300 bei bestimmten Ausführungsbeispielen findet sich in dem Abschnitt „Daten verwandter Anmeldungen".
  • Der Decodierer 300 empfängt einen Bitstrom 305 von komprimierter Audioinformation im WMA-Format oder einem anderen Format. Der Bitstrom 305 umfasst entropiecodierte Daten sowie Zusatzinformation, aus der der Decodierer 300 die Audioabtastungen 395 rekonstruiert.
  • Der DEMUX parst Information in dem Bitstrom 305 und sendet die Information an die Module des Decodierers 300. Der DEMUX 310 enthält einen oder mehrere Puffer zum Ausgleich von kurzzeitigen Schwankungen in der Bitrate aufgrund von Fluktuationen bei der Komplexität der Audiotöne, von Netzwerkzittern und/oder anderen Faktoren.
  • Der eine oder die mehreren Entropiecodierer 320 nehmen eine verlustfreie Dekompression der Entropiecodes vor, die er/sie von dem DEMUX 310 empfängt/empfangen. Aus Gründen einer einfacheren Darstellung ist in 3 nur eine Decodiermodul gezeigt, obwohl verschiedene Entropiedecodierer für verlustbehaftete und verlustfreie Codiermodi oder sogar innerhalb von Modi verwendet werden können. Aus Gründen der Einfachheit zeigt 3 nicht die Modusauswahllogik. Der Entropiedecodierer 320 wendet die jeweilige Umkehrung derjenigen Entropiecodiertechnik an, die in dem Codierer 200 verwendet worden ist. Bei der Decodierung von Daten, die im verlustbehafteten Codiermodus komprimiert worden sind, erzeugt der Entropiedecodierer 320 quantisierte Frequenzkoeffizientendaten.
  • Der gemischte/reine verlustfreie Decodierer 322 und der zugehörige Entropiedecodierer beziehungsweise die zugehörigen Entropiedecodierer 320 nehmen eine verlustfreie Dekompression von codierten Audiodaten für den gemischten/reinen verlustfreien Codiermodus vor. Der Decodierer 300 verwendet einen bestimmten Decodiermodus für eine gesamte Sequenz oder schaltet zwischen den Decodiermodi frameweise oder auf anderer Grundlage um.
  • Der inverse Mehrfachkanalumwandler 340 empfängt die entropiedecodierten quantisierten Frequenzkoeffizientendaten von dem Entropiedecodierer beziehungsweise den Entropiedecodierern 320 wie auch die Zusatzinformation von dem DEMUX 310, die bei spielsweise die verwendete Mehrfachkanalumwandlung und die umgewandelten Teile der Frames angibt.
  • Der inverse Quantisierer/Gewichter 350 empfängt Quantisierungsfaktoren wie auch Quantisierungsmatrizen von dem DEMUX 310 und empfängt quantisierte Frequenzkoeffizientendaten von dem inversen Mehrfachkanalumwandler 340. Der inverse Quantisierer/Gewichter 350 dekomprimiert die empfangenen Quantisierungsfaktoren und Matrixinformationen nach Bedarf und nimmt anschließend eine inverse Quantisierung und Gewichtung vor.
  • Der inverse Frequenzumwandler 360 empfängt die Frequenzkoeffizientendaten, die von dem inversen Quantisierer/Gewichter 350 ausgegeben werden, wie auch die Zusatzinformation aus dem DEMUX 310. Der inverse Frequenzumwandler 360 nimmt eine zu der in dem Codierer verwendeten Umwandlung inverse Frequenzumwandlung vor und gibt die Blöcke an den Überlapper/Addierer 370 aus.
  • Der Überlapper/Addierer 370 empfängt die decodierte Information aus dem inversen Frequenzumwandler 360 und/oder dem gemischten/reinen verlustfreien Decodierer 322. Der Überlapper/Addierer 370 überlappt und addiert die Audiodaten nach Bedarf und verschachtelt die Frames oder andere Sequenzen von Audiodaten, die in verschiedenen Modi codiert worden sind.
  • III. Adaptives Entropiecodier-/Decodiermodiumschalten
  • Verfahren des Laufpegelcodierens sind oftmals effektiver als das direkte Codieren von Pegeln, wenn in einer Eingabesequenz häufig ein einzelner Wert (beispielsweise 0) auftritt. Aufgrund der Tatsache, dass quantisierte Nichtnullumwandlungskoeffizienten in Audiodateneingabesequenzen insbesondere bei niedrigeren Frequenzen üblich sind, ist das Laufpegelcodieren jedoch im gesamten Frequenzbereich nicht derart effektiv. Darüber hinaus treten bei qualitativ höherwertigen Audiodaten quantisierte Nichtnullumwandlungskoeffizienten auch bei höheren Frequenzen gehäuft auf (Bei qualitativ höherwertigen Audiodaten sind die Quantisierungspegel üblicherweise kleiner). Bei einigen Ausführungsbeispielen setzt daher ein Codierer, so beispielsweise der Codierer 200 von 2, eine Technik des Mehrfachmodicodierens ein, die eine Laufpegelcodierung bei einem Abschnitt einer Audiodateneingabesequenz und eine Direktcodierung von Pegeln bei einem weiteren Abschnitt der Sequenz verwendet. Eine Decodierer, so beispielswei se der Decodierer 300 von 3, setzt eine entsprechende Mehrfachmodidecodiertechnik ein.
  • A. Adaptives Entropiecodiermodusumschalten
  • Wie in 4 gezeigt ist, codiert bei einer Technik 400 des Mehrfachmodicodierens der Codierer zunächst Signalpegel in einem Eingabestrom direkt, siehe 410. So nimmt der Codierer beispielsweise eine variabel-dimensionale Huffman-Codierung, eine kontextbasierte arithmetische Codierung oder eine andere Entropiecodiertechnik direkt an den Signalpegeln vor.
  • An einem Umschaltpunkt wechselt der Codierer während des Codierens das Codierscheme, siehe 420. Der Codierer kann das Codierschema an einem vorgegebenen Umschaltpunkt wechseln, oder der Codierer analysiert gegebenenfalls die Eingabedaten, um einen geeigneten Punkt zum Wechseln des Codierschemas zu bestimmen. So kann der Codierer beispielsweise eine Eingabesequenz analysieren, um den besten Punkt zum Umschalten auf die Laufpegelcodierung zu finden, und sendet den Umschaltpunkt an den Decodierer in dem Ausgabebitstrom. Alternativ kann der Codierer den Umschaltpunkt adaptiv durch Zählen von aufeinanderfolgenden Nullen (oder alternativ eines anderen vorherrschenden Wertes) in den Eingabedaten berechnen und auf die Laufpegelcodierung umschalten, wenn eine bestimmte Schwellenwertzahl von aufeinanderfolgenden Nullen gezählt ist. Der Decodierer kann den Umschaltpunkt auf dieselbe Weise berechnen, sodass der Schaltpunkt nicht in dem Bitstrom enthalten sein muss. Alternativ verwenden der Codierer und der Decodierer andere Kriterien zur Bestimmung des Umschaltpunktes.
  • Nach dem Umschaltpunkt codiert der Codierer die verbleibenden Signalpegel unter Verwendung einer Laufpegelcodierung, siehe 430. So nimmt der Codierer beispielsweise eine Huffman-Codierung, eine kontextbasierte arithmetische Codierung oder eine andere Technik des Entropiecodierens an den Lauflängen und Signalpegeln vor. Der Codierer kann dieselbe Technik (beispielsweise die kontextbasierte arithmetische Codierung) vor und nach dem Umschaltpunkt verwenden. Alternativ kann der Codierer auch andere Techniken verwenden.
  • Darüber hinaus können, obwohl in 4 und in einigen anderen Figuren der Beschreibung nur ein einziger Umschaltpunkt gezeigt ist, zusätzliche Umschaltpunkte verwendet werden, um die Eingabedaten in mehr als zwei Abschnitte zu teilen. So können zusätzliche adaptive Schaltpunkte beispielsweise bei höheren Schwellen von aufeinanderfolgenden Nullen gesetzt werden. Andere Codierschemen können dann bei diesen anderen Abschnitten angewendet werden. Alternativ kann der Codierer mit verschiedenen Segmentierungspunkten in der Sequenz experimentieren, wobei er die Codiereffizienzen für verschiedene Segmentierungskonfigurationen gemeinsam mit dem Aufwand für die Signalisierung der verschiedenen Konfigurationen für den Decodierer gewichtet.
  • 5 zeigt eine Technik des Mehrfachmodicodierens 500 mit einer Berechnung des adaptiven Umschaltpunktes entsprechend einer Implementierung. Der adaptive Umschaltpunkt hängt von einer Anzahl von aufeinanderfolgenden Nullwertkoeffizienten ab. Die Eingabedaten sind Signalpegel für quantisierte Umwandlungskoeffizienten, beginnend mit dem Koeffizienten mit der niedrigsten Frequenz hin zu dem Koeffizienten mit der höchsten Frequenz. In der Praxis hängt die Position des Umschaltpunktes von dem komprimierten Signal und der Bitrate/Qualität der Codierung ab. Alternativ sind die Eingabedaten in einer anderen Form und/oder Organisation der Audiodaten vorhanden.
  • Zu Beginn initialisiert der Codierer einige Variablen. Insbesondere setzt der Codierer eine Laufzählervariable auf 0, siehe 510, und eine Codierstatusvariable auf „direkt", siehe 512.
  • Der Codierer empfängt den nächsten Koeffizienten QC als Eingabe, siehe 520. Der Codierer prüft anschließend, siehe 530, ob der Koeffizient QC gleich 0 ist. Ist der Koeffizient QC nicht gleich 0, so setzt der Codierer den Laufzähler zurück, siehe 538. Andernfalls (das heißt wenn der Koeffizient QC gleich 0 ist) inkrementiert der Codierer die Laufzählervariable, siehe 532, und prüft, ob der aktuelle Laufzähler den Laufzählerschwellenwert übersteigt, siehe 534. Der Laufzählerschwellenwert kann statisch sein oder von einem Faktor abhängen, so beispielsweise von der Größe eines Blocks von Koeffizienten (so beispielsweise ein Laufzählerschwellenwert von 4 für eine Sequenz von 256 Koeffizienten, von 8 für eine Sequenz von 512 Koeffizienten etc.). Alternativ kann der Zähler auf andere Weise adaptiv sein. Übersteigt der Laufzähler den Schwellenwert, so ändert der Codierer den Codierstatus auf die Laufpegelcodierung („RLE” run length coding), siehe 536.
  • Der Codierer codiert den Koeffizienten QC anschließend geeignet, siehe 540 (In einigen Fällen werden Gruppen von Koeffizienten gemeinsam unter Verwendung einer Technik, so beispielsweise des vektoriellen Huffman-Codierens, codiert. In derartigen Fällen kann der Codierer das Codieren des Koeffizienten QC verschieben).
  • Der Codierer prüft anschließend, siehe 550, ob der Codierer zwischen den Codiermodi umschalten sollte. Insbesondere prüft der Codierer den Codierstatus. Ist der Codierstatus nicht mehr direkt (beispielsweise wenn der Codierer den Codierstatus als Ergebnis des Erreichens einer Schwellenwertzahl von Nullkoeffizienten auf RLE umschaltet), so beginnt der Codierer mit der Laufpegelcodierung der Koeffizienten, siehe 560 (In Fällen, in denen Gruppen von Koeffizienten gemeinsam codiert werden, kann der Codierer wieder die Umschaltentscheidung bis zum Erreichen eines geeigneten Kennpunktes für eine Gruppe von Koeffizienten verschieben).
  • Nimmt der Codierer kein Umschalten der Codiermodi vor, so prüft der Codierer, ob das Codieren der Koeffizienten beendet ist, siehe 570. Ist dies der Fall, so hört der Codierer auf. Andernfalls gibt der Codierer den nächsten Koeffizienten, siehe 520, ein, um den Codiervorgang fortzusetzen.
  • B. Adaptives Entropiedecodiermodiumschalten
  • Wie in 6 gezeigt ist, decodiert bei einer Technik 600 der Mehrfachmodidecodierung der Decodierer die codierten Signalpegel direkt, siehe 610. Der Decodierer nimmt beispielsweise ein variabel-dimensionales Huffman-Decodieren, ein kontextbasiertes arithmetisches Decodieren oder eine andere Technik des Entropiedecodierens an den direkt codierten Signalpegeln vor.
  • An einem Umschaltpunkt wechselt der Decodierer während des Decodierens das Decodierschema, siehe 620. Ist der Umschaltpunkt vorgegeben, so kann der Decodierer in Form eines Flags oder eines anderen Mitteilungsmechanismus Daten empfangen, die explizit angeben, wann der Decodierer die Decodierschemen wechseln soll. Alternativ kann der Decodierer adaptiv berechnen, wann die Decodierschemen zu wechseln sind, und zwar auf Grundlage der empfangenen Eingabedaten. Berechnet der Decodierer den Umschaltpunkt, so verwendet der Decodierer dieselbe Berechnungstechnik, die von dem Codierer verwendet worden ist. Hierdurch ist sichergestellt, dass das Decodierschema am richtigen Punkt gewechselt wird. Der Decodierer zählt beispielsweise aufeinanderfolgende Nullen (oder alternativ einen anderen vorherrschenden Wert), um den Umschaltpunkt adaptiv zu bestimmen. Bei einer Implementierung bedient sich der Decodierer ei ner Technik entsprechend der in 5 gezeigten Codierertechnik. Alternativ bedient sich der Decodierer anderer Kriterien zur Bestimmung des Umschaltpunktes.
  • Nach dem Umschaltpunkt decodiert der Decodierer die verbleibenden laufpegelcodierten Signalpegel, siehe 630. So setzt der Decodierer beispielsweise ein Huffman-Decodieren, ein kontextbasiertes arithmetisches Decodieren oder eine andere Technik des Entropiedecodierens an den codierten Lauflängen und Signalpegeln ein. Der Decodierer kann sich vor und nach dem Umschaltpunkt derselben Technik (beispielsweise kontextbasiertes arithmetisches Decodieren) bedienen. Alternativ kann der Decodierer auch verschiedene Techniken einsetzen.
  • IV. Variabel-dimensionales Huffman-Codieren und -decodieren
  • Während Symbole, so beispielsweise direkte Signalpegel, unter Verwendung einer skalaren Huffman-Codierung codiert werden können, weist ein derartiger Lösungsansatz dann Beschränkungen auf, wenn die optimale Anzahl von Bits zum Codieren eines Symbols eine Bruchzahl ist. Das skalare Huffman-Codieren ist zudem durch die Unfähigkeit der skalaren Huffman-Codes, die statistische Korrelation zwischen den Symbolen einzubeziehen, beschränkt. Das vektorielle Huffman-Codieren ergibt eine bessere Bitratenverringerung als das skalare Huffman-Codieren (beispielsweise dadurch, dass der Codierer in die Lage versetzt wird, die Wahrscheinlichkeiten in binären Huffman-Codes als Bruchzahlen zu nutzen). Im Allgemeinen ergeben höher-dimensionale Vektoren eine bessere Bitratenverringerung als niedriger-dimensionale Vektoren. Wird ein Code jeder möglichen Symbolkombination zugewiesen, so nimmt die Größe des Codebuches exponenziell zu, wenn die Dimension des Vektors zunimmt. Die Anzahl von möglichen Kombinationen für einen vierdimensionalen Vektor ist in einem 32-Bit-System beispielsweise gleich (232)4. Die Suchzeit zum Auffinden eines passenden Vektors und eines Huffman-Codes nimmt ebenfalls mit der Zunahme der Größe des Codebuches drastisch zu.
  • Bei einigen Ausführungsbeispielen verwendet ein Codierer, so beispielsweise der Codierer 200 von 2, zur Verringerung der Größe des Codebuches eine Technik des variabel-dimensionalen Vektor-Huffman-Codierens. Anstatt des Zuweisens eines Codebuchcodes an jede mögliche n-dimensionale Kombination werden einer begrenzten Anzahl der am meisten wahrscheinlichen n-dimensionalen Vektoren Codes zugewiesen. Wird einem bestimmten n-dimensionalen Vektor kein Code zugewiesen, so wird der n-dimensionale Vektor anstelle dessen in Form von niedriger-dimensionalen (beispielswei se von zwei n/2-dimensionalen Vektoren), in Form von Skalaren mit Huffman-Codes oder von Skalaren unter Verwendung einer tabellenfreien Technik zum Darstellen von diskreten Werten codiert. Ein Decodierer, so beispielsweise der Decodierer 300 von 3, rekonstruiert einen Vektor durch Auffinden des Codes beziehungsweise der Codes für den Vektor und der zugehörigen Werte.
  • Für den Fall von vierdimensionalen Vektoren mit 256 möglichen Werten pro Symbol codiert der Codierer beispielsweise die 500 am meisten wahrscheinlichen vierdimensionalen Vektoren mit Huffman-Codes und verwendet einen Escape-Code, um andere Vektoren anzugeben. Der Codierer teilt die anderen Vektoren in zweidimensionale Vektoren. Der Codierer codiert die 500 am meisten wahrscheinlichen zweidimensionalen Vektoren mit Huffman-Codes und verwendet einen Escape-Code zur Darstellung von anderen Vektoren, die geteilt und mit skalaren Huffman-Codes codiert werden. Damit verwendet der Codierer 501 + 501 + 256 Codes.
  • Im Zusammenhang mit dem Bestimmen, welche Vektoren oder Skalare mit den Huffman-Codes in einer Tabelle dargestellt werden, sowie im Zusammenhang mit dem Zuweisen der Huffman-Codes selbst für eine Tabelle kann der Aufbau des Codebuches statisch, adaptiv bezüglich der vorher codierten Daten oder adaptiv bezüglich der noch zu codierenden Daten sein.
  • A. Variabel-dimensionales Vektor-Huffman-Codieren
  • Wie in 7 gezeigt ist, verwendet ein Codierer eine Technik 700 des variabel-dimensionalen Vektor-Huffman-Codierens („VDVH encoding", variabel-dimension vector Huffman encoding). Der Codierer verwendet beispielsweise die Technik 700, um Signalpegel für Frequenzkoeffizienten von Audiodaten direkt zu codieren. Alternativ verwendet der Codierer die Technik 700 zum Codieren einer anderen Form von Audiodaten. Aus Gründen der einfacheren Darstellung zeigt 7 nicht den Aufbau des Codebuches. Der Aufbau des Codebuches kann statisch, adaptiv bezüglich der vorher codierten Daten oder adaptiv bezüglich der noch zu codierenden Daten sein.
  • Der Codierer empfängt den nächsten Vektor mit n Symbolen, siehe 710. Der Codierer empfängt beispielsweise die nächsten vier Symbole in der Sequenz.
  • Der Codierer prüft, siehe 720, ob das Codebuch einen Code für den Vektor enthält. Ist dies der Fall, so verwendet der Codierer, siehe 730, einen einzelnen Huffman-Code zum Codieren des Vektors. Um beispielsweise zu bestimmen, wie ein n-dimensionaler Vektor zu codieren ist, prüft der Codierer eine für n-dimensionale Vektoren bestimmte Code-Tabelle für einen mit dem Vektor verknüpften Code. Da höher-dimensionale Vektoren üblicherweise größere Bitrateneinsparungen mit sich bringen, verwendet der Codierer Huffman-Codes für die am meisten wahrscheinlichen n-dimensionalen Vektoren. Zur Beschränkung der Größe der Tabelle weisen jedoch nur einige der n-dimensionalen Vektoren zugehörige Codes auf.
  • Enthält das Codebuch keinen Code für den Vektor, so teilt der Codierer, siehe 740, den Vektor in kleinere Vektoren und/oder Skalare und codiert die kleineren Vektoren und/oder Skalare. Der Codierer teilt beispielsweise einen Vektor von n Symbolen in x n/x-Symbolvektoren. Für jeden n/x-Symbolvektor wiederholt der Codierer rekursiv die Codiertechnik und hört auf, wenn der n/x-Symbolvektor oder seine konstituierenden Vektoren/Skalare mit Huffman-Codes oder (für Skalare) unter Verwendung einer tabellenfreien Technik zum Darstellen von diskreten Werten codiert sind.
  • Der Codierer prüft anschließend, siehe 750, ob beliebige zusätzliche Vektoren vorhanden sind, die codiert werden müssen. Ist dies nicht der Fall, so hört der Codierer auf. Andernfalls empfängt der Codierer, siehe 710, den nächsten Vektor von n Symbolen.
  • 1. Beispielsimplementierung
  • 8 zeigt detailliert eine Technik 800 zum Codieren von Vektoren unter Verwendung der VDVH-Codierung entsprechend einer Implementierung. Bei der Technik 800 summiert der Codierer ganzzahlige Werte der Vektoren in einem Vektor von Symbolen, um zu bestimmen, ob der Vektor unter Verwendung eines einzelnen Huffman-Codes zu codieren ist oder ob der Vektor in kleinere Vektoren/Skalare zu teilen ist. Dies begrenzt effektiv die Größe des Codebuches und beschleunigt die Suche nach dem Code.
  • Die Codebuch-Tabelle für n-dimensionale Vektoren enthält Huffman-Codes für L1 n-dimensionale Vektoren. Die Codebuch-Tabelle enthält darüber hinaus einen Escape-Code. Die L1 Codes sind für jeden Vektor vorhanden, für den die Summe der Vektorkomponenten (die ganze Zahlen sind) unterhalb eines bestimmten Schwellenwertes T1 ist. Man gehe beispielsweise davon aus, dass n gleich 4 ist und der Schwellenwert T1 für vierdimensionale Vektoren gleich 6 ist. Die Codebuch-Tabelle für vierdimensionale Vektoren enthält den Escape-Code sowie 126 Codes, und zwar einen für jeden möglichen Vektor, dessen Komponenten (beispielsweise die Absolutwerte der Komponenten) sich zu weniger als 6 addieren – (0, 0, 0, 0), (0, 0, 0, 1) und so weiter. Das Begrenzen der Größe der Tabelle auf Grundlage der Summe der Komponenten der Vektoren ist effektiv, da im Allgemeinen die am meisten wahrscheinlichen Vektoren diejenigen mit den kleineren Komponentensummen sind.
  • Weist die Codebuch-Tabelle für n-dimensionale Vektoren keinen Huffman-Code für einen bestimmten n-dimensionalen Vektor auf, so addiert der Codierer einen Escape-Code zu dem Ausgabebitstrom und codiert den n-dimensionalen Vektor in Form von niedriger-dimensionalen Vektoren oder Skalaren, wobei die niedriger-dimensionalen Vektoren oder Skalare in anderen Codebuch-Tabellen nachgeschlagen werden. Die niedrigere Dimension ist beispielsweise n/2, es sei denn, n/2 = 1, wobei in diesem Fall der n-dimensionale Vektor in Skalare aufgespalten wird. Alternativ wird der n-dimensionale Vektor auf beliebige andere Weise aufgespalten.
  • Die Codebuch-Tabelle für niedriger-dimensionale Vektoren enthält Huffman-Codes für L2 niedriger-dimensionale Vektoren sowie einen Escape-Code. Die L2 Codes sind für jeden Vektor vorhanden, für den die Summe der Vektorkomponenten unterhalb eines bestimmten Schwellenwertes T2 für die niedriger-dimensionale Tabelle ist. Man gehe beispielsweise davon aus, dass die niedrigere Dimension gleich 2 und der Schwellenwert T2 für zweidimensionale Vektoren gleich 16 ist. Die Codebuch-Tabelle für zweidimensionale Vektoren enthält den Escape-Code sowie 136 Codes, und zwar einen für jeden möglichen Vektor, dessen Komponenten (beispielsweise die Absolutwerte von Komponenten) sich zu weniger als 16 addieren – (0, 0), (0, 1) etc.
  • Enthält die Codebuch-Tabelle für die niedriger-dimensionalen Vektoren keinen Huffman-Code für einen bestimmten niedriger-dimensionalen Vektor, so addiert der Codierer einen Escape-Code zu dem Ausgabebitstrom und codiert den Vektor in Form von noch niedriger-dimensionalen Vektoren oder Skalaren unter Verwendung anderer Codebuch-Tabellen. Der Vorgang wird bis hinab zur Ebene der Skalare wiederholt. Das Aufteilen erfolgt beispielsweise in Zweierpotenzen bis hinunter zur skalaren Ebene. Alternativ wird der Vektor auf beliebige andere Weise geteilt.
  • Auf der skalaren Ebene enthält die Codebuch-Tabelle Huffman-Codes für L3 Skalare sowie einen Escape-Code. Die L3 Codes sind für jeden Skalar unterhalb eines bestimmten Schwellenwertes T3 (wobei davon ausgegangen wird, dass kleinere Werte weniger wahrscheinlich sind). Man gehe beispielsweise davon aus, dass der Schwellenwert T3 für Skalare gleich 100 ist. Die Codebuch-Tabelle für Skalare enthält 100 Codes und einen Escape-Code. Weist ein Skalar keinen zugehörigen Code in der skalaren Code-Tabelle auf, so wird der Skalar mit dem Escape-Code und einem Wert (beispielsweise einem Buchstaben) entsprechend einer tabellenfreien Technik codiert. Unter Verwendung von allen numerischen Beispielen in diesem Abschnitt enthalten die Tabellen eine Gesamtzahl von 126 + 1 + 136 + 1 + 100 + 1 = 365 Codes.
  • Die Dimensionsgrößen für Tabellen, die Vektoraufspaltungsfaktoren und die Schwellenwerte für die Vektorkomponentensummen hängen von der Implementierung ab. Andere Implementierungen bedienen sich anderer Vektorgrößen, anderer Aufspaltungsfaktoren und/oder anderer Schwellenwerte. Alternativ bedient sich ein Codierer anderer Kriterien als der Vektorkomponentensummen, um Vektorgrößen/Codebuch-Tabellen beim VDVH-Codieren umzuschalten.
  • Wie in 8 gezeigt ist, empfängt der Codierer zunächst einen n-dimensionalen Vektor, siehe 810. Der n-dimensionale Vektor umfasst n Symbole, wobei jedes Symbol beispielsweise einen Wert aufweist, der den quantisierten Pegel für einen Frequenzkoeffizienten der Audiodaten darstellt.
  • Der Codierer summiert die Vektorkomponenten, siehe 812, und vergleicht die Summe mit einem Schwellenwert, siehe 820, für n-dimensionale Vektoren. Ist die Summe kleiner oder gleich dem Schwellenwert, so codiert der Codierer den n-dimensionalen Vektor mit einem Huffman-Code aus der Codetabelle, siehe 822, und fährt fort, bis das Codieren beendet ist, siehe 824. Ist die Summe größer oder gleich dem Schwellenwert, so sendet der Codierer einen Escape-Code, siehe 826, und teilt den n-dimensionalen Vektor in zwei kleinere Vektoren mit Dimensionen von jeweils n/2 auf, siehe 830.
  • Der Codierer erhält den nächsten n/2-dimensionalen Vektor, siehe 840, und summiert die Komponenten des n/2-dimensionalen Vektors, siehe 842. Der Codierer prüft die Summe gegen einen Schwellenwert in Verbindung mit n/2-dimensionalen Vektoren, siehe 850. Ist die Summe kleiner oder gleich dem Schwellenwert, so codiert der Codierer den n/2-dimensionalen Vektor mit einem Huffman-Code aus einer Code-Tabelle, siehe 852, für n/2-dimensionale Vektoren und empfängt den nächsten n/2-dimensionalen Vektor, siehe 840, wenn der Codierer das Codieren für n/2-dimensionale Vektoren nicht beendet hat, siehe 854. Ist die Summe größer als der Schwellenwert für n/2-dimensionale Vektoren, so sendet der Codierer einen weiteren Escape-Code, siehe 856.
  • Der Codierer folgt bei der Verarbeitung der Vektoren im Allgemeinen diesem Muster, indem entweder jeder Vektor codiert wird oder der Vektor in niedriger-dimensionale Vektoren geteilt wird. In Fällen, in denen der Codierer einen Vektor in zwei skalare (eindimensionale) Komponenten teilt, siehe 860, empfängt der Codierer den nächsten Skalar, siehe 870, und vergleicht den Wert des Skalars mit einem Schwellenwert in Verknüpfung mit skalaren Werten, siehe 880. Ist der skalare Wert kleiner oder gleich dem Schwellenwert, siehe 880, so codiert der Codierer den Skalar unter Verwendung eines Huffman-Codes aus einer Code-Tabelle, siehe 882, für Skalare. Ist der skalare Wert größer als der Schwellenwert, so codiert der Codierer den Skalar unter Verwendung einer tabellenfreien Technik, siehe 884. Der Codierer empfängt anschließend den nächsten Skalar, siehe 870, wenn die Verarbeitung der Skalare noch nicht abgeschlossen ist, siehe 886.
  • Alternativ verwendet der Codierer Tabellen mit verschiedenen Dimensionsgrößen, teilt Vektoren auf irgendeine andere Weise als mittels Zweierpotenzen und/oder verwendet Kriterien jenseits der Vektorkomponentensumme, um Vektorgrößen/Codebuch-Tabellen bei der VDVH-Codierung umzuschalten.
  • 2. Adaptives Umschalten
  • 9 zeigt eine Technik 900 zum VDVH-Codieren von Koeffizienten von direkten Signalpegeln, wobei hier der Codierer adaptiv einen Schaltpunkt zum Wechseln der Codierung von Lauflängen und Signalpegeln entsprechend einer Implementierung bestimmt. Der adaptive Umschaltpunkt hängt von einem Zähler von aufeinanderfolgenden Nullwertkoeffizienten ab. Die Eingabedaten sind Signalpegel für quantisierte Umwandlungskoeffizienten, beginnend beim Koeffizienten mit der niedrigsten Frequenz bis hin zu dem Koeffizienten mit der höchsten Frequenz. Alternativ liegen die Eingabedaten in anderer Form und/oder Organisation von Audiodaten vor.
  • Zu Beginn initialisiert der Codierer verschiedene Variablen. Insbesondere setzt der Codierer eine Laufzählervariable auf 0, siehe 910, eine aktuelle Vektorvariable auf leer, siehe 912, und eine Codierstatusvariable auf die direkte variabel-dimensionale Vektor- Huffman-Codierung („DVDVH” encoding, direct variable-dimension vector Huffman encoding), siehe 914.
  • Der Codierer empfängt den nächsten Koeffizienten QC als Eingabe, siehe 920. Der Codierer prüft anschließend, siehe 930, ob der Koeffizient gleich 0 ist. Ist der Koeffizient QC ungleich 0, so setzt der Codierer den Laufzähler, siehe 938, zurück und addiert den Koeffizienten QC zu dem aktuellen Vektor, siehe 940. Andernfalls (das heißt, wenn der Koeffizient QC gleich 0 ist) inkrementiert der Codierer die Laufzählervariable, siehe 932, und prüft, ob der aktuelle Laufzähler den Laufzählerschwellenwert, siehe 934, übersteigt. Der Laufzählerschwellenwert kann statisch sein oder von einem Faktor, so beispielsweise von der Größe eines Blocks von Koeffizienten, abhängen (beispielsweise vier Nullen in einer Eingabesequenz von 256 Koeffizienten), oder er kann auf andere Weise adaptiv sein. Diese Schwelle kann erhöht oder abgesenkt werden, und zwar unter Berücksichtigung oder auch Vernachlässigung der Anzahl der Koeffizienten in einer Eingabesequenz. Übersteigt der Laufzähler die Schwelle, so wechselt der Codierer den Codierstatus auf RLE (run level encoding RLE, Laufpegelcodierung), siehe 936, und der Koeffizient QC wird als Komponente zu dem aktuellen Vektor addiert, siehe 940.
  • Das Addieren des Koeffizienten QC zu dem aktuellen Vektor inkrementiert die Dimension des Vektors. Der Codierer bestimmt, siehe 950, ob der aktuelle Vektor zur Codierung bereit ist, indem die Anzahl der Komponenten in dem aktuellen Vektor mit der maximalen Dimension für den aktuellen Vektor verglichen wird. Ist dies der Fall, so codiert der Codierer den aktuellen Vektor unter Verwendung der DVDVH-Codierung, siehe 960. Ist der aktuelle Vektor kleiner als die maximale Dimension, der Koeffizient QC jedoch der letzte in einer Sequenz, so kann der Codierer den aktuellen Vektor auffüllen (pad) und unter Verwendung der DVDVH-Codierung codieren, siehe 960. Die maximale Dimension hängt von der Implementierung ab. Bei einer Implementierung ist diese gleich 8. Gleichwohl kann die maximale Dimension erhöht oder erniedrigt werden, was beispielsweise von der Anzahl der zum Erzeugen, Speichern und Übermitteln eines Codebuches verfügbaren Ressourcen abhängt.
  • Nach dem Codieren des Vektors prüft der Codierer den Codierstatus, siehe 970. Ist der Codierstatus nicht mehr gleich DVDVH (beispielsweise wenn der Codierer den Codierstatus als Ergebnis eines Überschreitens eines Schwellenwertes von Nullkoeffizienten gewechselt hat), so beginnt der Codierer mit dem Codieren der Koeffizienten als Lauflängen und -pegel, siehe 980. Das Laufpegelcodieren kann auf verschiedene Weisen ausgeführt werden, darunter beispielsweise unter Verwendung des Huffman-Codierens, des vektoriellen Huffman-Codierens oder des kontextbasierten arithmetischen Codierens. Bei einigen Ausführungsbeispielen wird das Laufpegel-Codieren unter Verwendung eines Huffman-Codierens mit zwei Huffman-Code-Tabellen vorgenommen, wobei eine Tabelle zum Codieren von Daten verwendet wird, bei denen kürzere Läufe wahrscheinlicher sind, und eine Tabelle zum Codieren von Daten verwendet wird, bei denen längere Läufe wahrscheinlicher sind. Der Codierer probiert jede Tabelle aus und wählt Codes aus einer der Tabellen aus, wobei ein Signalbit angibt, welche Tabelle der Codierer verwendet.
  • Hat der Codierstatus nicht gewechselt oder ist der aktuelle Vektor nicht zum Codieren bereit, so bestimmt der Codierer, siehe 990, ob weitere Koeffizienten zum Codieren vorhanden sind. Ist dies der Fall, so gibt der Codierer den nächsten Koeffizienten, siehe 920, ein und setzt den Codiervorgang fort.
  • B. Variabel-dimensionales Vektor-Huffman-Decodieren
  • 10 zeigt eine VDVH-Decodiertechnik 1000 entsprechend der VDVH-Codiertechnik 700 von 7. Ein Decodierer verwendet die Technik 1000 beispielsweise zum direkten Decodieren von codierten Signalpegeln für Frequenzkoeffizienten von Audiodaten. Alternativ verwendet der Decodierer die Technik zum Decodieren einer anderen Form von Audiodaten.
  • Der Decodierer empfängt, siehe 1010, den nächsten Huffman-Code für eine für n-dimensionale Vektoren bestimmte Huffman-Code-Tabelle. Der Decodierer empfängt beispielsweise den nächsten Huffman-Code für vier Symbole in der Sequenz.
  • Der Decodierer prüft, siehe 1020, ob der Huffman-Code der Escape-Code für die für n-dimensionale Vektoren bestimmte Huffman-Code-Tabelle ist. Ist dies nicht der Fall, so empfängt der Decodierer, siehe 1030, diejenigen n Symbole, die von dem Huffman-Code dargestellt werden. Der Decodierer empfängt beispielsweise die vier Symbole, die mit dem Huffman-Code in einem für vierdimensionale Vektoren bestimmten Huffman-Codebuch verknüpft sind.
  • Ist der Code der Escape-Code, so enthält das n-dimensionale Codebuch keinen Code für den Vektor, und der Decodierer empfängt, siehe 1040, Huffman-Codes für kleinere Vektoren und/oder Skalare. So empfängt der Decodierer beispielsweise Codes für x n/x-Symbolvektoren. Für jeden n/x-Symbolvektor wiederholt der Decodierer rekursiv die Decodiertechnik, wobei er aufhört, wenn der n/x-Symbolvektor oder dessen konstituierende Vektoren/Skalare decodiert sind.
  • Der Decodierer prüft anschließend, siehe 1050, ob zusätzliche Codes für die für n-dimensionale Vektoren bestimmte Huffman-Codiertabelle zum Decodieren vorhanden sind. Ist dies nicht der Fall, so hört der Decodierer auf. Andernfalls empfängt der Decodierer, siehe 1010, den nächsten derartigen Huffman-Code.
  • 1. Beispielsimplementierung
  • 11 zeigt detailliert eine Technik 1100 zum Decodieren von Vektoren, die unter Verwendung der VDVH-Codierung entsprechend einer Implementierung codiert worden sind. Die Decodiertechnik 1100 entspricht der Codiertechnik 800 von 8.
  • Wie in 11 gezeigt ist, empfängt der Decodierer den nächsten Code für die für n-dimensionale Vektoren bestimmte Huffman-Code-Tabelle, siehe 1110. Der Decodierer prüft, ob der Code der Escape-Code für die für n-dimensionale Vektoren bestimmte Huffman-Code-Tabelle ist, siehe 1120. Ist dies nicht der Fall, so empfängt der Decodierer die n Symbole, die von dem Code in der n-dimensionalen Vektortabelle, siehe 1122, dargestellt werden. Der Decodierer setzt dies fort, bis er die Verarbeitung der codierten Daten beendet hat, siehe 1124.
  • Ist der Code der Escape-Code für die für n-dimensionale Vektoren bestimmte Huffman-Code-Tabelle, so decodiert der Decodierer den n-dimensionalen Vektor in Form von n/2-dimensionalen Vektoren unter Verwendung einer für n/2-dimensionale Vektoren bestimmten Huffman-Code-Tabelle. Insbesondere empfängt der Decodierer den nächsten Code für die für n/2-dimensionale Vektoren bestimmte Huffman-Code-Tabelle, siehe 1130. Der Decodierer prüft, ob der Code der Escape-Code für die für n/2-dimensionale Vektoren bestimmte Huffman-Code-Tabelle ist, siehe 1140. Ist dies nicht der Fall, so empfängt der Decodierer n/2 Symbole aus der Darstellung durch den Code in der für n/2-dimensionale Vektoren bestimmten Huffman-Code-Tabelle, siehe 1142. Der Decodierer setzt die Verarbeitung der Codes für die für n/2-dimensionale Vektoren bestimmte Huffman-Code-Tabelle fort, bis die Verarbeitung der Codes beendet ist, siehe 1144.
  • Ist der Code der Escape-Code für die für n/2-dimensionale Vektoren bestimmte Huffman-Code-Tabelle, so decodiert der Decodierer den n/2-dimensionalen Vektor in Form von vier n/4-dimensionalen Vektoren, die Skalare sein können und fährt entsprechend fort.
  • Der Decodierer folgt im Allgemeinen dem Muster der Decodierung von höher-dimensionalen Vektoren in Form von zwei niedriger-dimensionalen Vektoren, wenn Escape-Codes erfasst werden, bis die zu decodierenden Vektoren Skalare (eindimensionale Vektoren) sind. An diesem Punkt empfängt der Decodierer den nächsten Code für eine skalare Huffman-Code-Tabelle, siehe 1150. Der Decodierer prüft, ob der Code der Esacpe-Code für die skalare Huffman-Code-Tabelle ist, siehe 1160. Ist dies nicht der Fall, so empfängt der Decodierer den Skalar aus der Darstellung durch den Code in der skalaren Huffman-Code-Tabelle, siehe 1162. Der Decodierer setzt die Verarbeitung der Codes für die Skalare fort, bis die Verarbeitung dieser Codes vollständig ist, siehe 1164. Ist der Code der Escape-Code für die skalare Huffman-Code-Tabelle, so wird der Skalar unter Verwendung einer tabellenfreien Technik codiert, und der Decodierer empfängt den Wert, siehe 1170.
  • Alternativ verwendet der Decodierer Tabellen mit anderen Dimensionsgrößen und/oder Tabellen, die Vektoren auf irgendeine andere Weise als mittels Zweierpotenzen beim VDVH-Decodieren teilen.
  • 2. Adaptives Umschalten
  • 12 zeigt eine Technik 1200 zum Decodieren von Vektoren, die unter Verwendung der VDVH-Codierung entsprechend einer Implementierung codiert worden sind, wobei hier der Decodierer adaptiv einen Umschaltpunkt zum Wechseln auf die Decodierung von Lauflängen und Signalpegeln bestimmt. Der adaptive Umschaltpunkt hängt von einem Zähler von aufeinanderfolgenden Nullwertkoeffizientendaten in den Daten ab, die Signalpegel für quantisierte Umwandlungskoeffizienten darstellen, beginnend bei dem Koeffizienten mit der niedrigsten Frequenz bis hin zu dem Koeffizienten mit der höchsten Frequenz. Alternativ liegen die Daten in anderer Form und/oder Organisierung der Audiodaten vor.
  • Zu Beginn initialisiert der Decodierer einige Variablen. Insbesondere setzt der Decodierer einen Laufzähler auf 0, siehe 1210, und den Decodierstatus auf DVDVH, siehe 1212.
  • Der Decodierer decodiert den nächsten Vektor durch Nachschlagen des Codes für jenen Vektor in einer Huffman-Codiertabelle, siehe 1220. Der Decodierer setzt beispielsweise die Decodiertechnik 1100, die in 11 gezeigt ist, ein. Der Decodierer aktualisiert anschließend den Laufzähler auf Grundlage des decodierten Vektors, siehe 1230 (insbesondere unter Verwendung der Anzahl von Nullwerten in dem decodierten Vektor zum Zurücksetzen, Inkrementieren oder auf andere Weise erfolgenden Einstellen des Laufzählers).
  • Der Decodierer prüft, ob der Laufzähler einen Schwellenwert übersteigt, siehe 1240. Der Laufzählerschwellenwert kann statisch sein oder von einem Faktor, so beispielsweise der Größe eines Blocks von Koeffizienten, abhängen (beispielsweise vier Nullen in einer Eingabesequenz von 256 Koeffizienten), oder er kann auf andere Weise adaptiv sein. Übersteigt der Laufzähler den Schwellenwert, so beginnt der Decodierer mit der Decodierung der codierten Koeffizienten unter Verwendung des Laufpegeldecodierens, siehe 1250. Das Laufpegeldecodieren kann auf verschiedene Weisen ausgeführt werden, darunter beispielsweise unter Verwendung des Huffman-Decodierens, des vektoriellen Huffman-Decodierens oder des kontextbasierten arithmetischen Decodierens.
  • Bei einigen Ausführungsbeispielen wird das Laufpegeldecodieren unter Verwendung des Huffman-Decodierens mit zwei möglichen Huffman-Code-Tabellen vorgenommen, wobei die eine Tabelle für decodierte Daten verwendet wird, bei denen kürzere Läufe wahrscheinlicher sind, während die andere Tabelle für decodierte Daten verwendet wird, in denen längere Läufe wahrscheinlicher sind. Empfängt der Decodierer einen Code, so gibt ein Signalbit in dem Code an, welche Tabelle der Codierer verwendet hat, und der Decodierer schlägt den Code in der richtigen Tabelle nach.
  • Übersteigt der Laufzähler nicht den Schwellenwert, so fährt der Decodierer mit dem Verarbeiten von Vektoren fort, bis die Decodierung vollständig ist, siehe 1260.
  • V. Kontextbasiertes arithmetisches Codieren und Decodieren
  • Bei einigen Ausführungsbeispielen verwendet ein Codierer, so beispielsweise der Codierer 200 von 2, die kontextbasierte arithmetische Codierung (CDA) zur Codierung von Codesequenzen von Audiodaten. Bei der CBA-Codierung werden verschiedene Wahrscheinlichkeitsverteilungen für die Eingabesymbole mit verschiedenen Kontexten verknüpft. Die Wahrscheinlichkeitsverteilung, die zur Codierung der Eingabesequenz verwendet wird, wechselt, wenn der Kontext wechselt. Der Kontext kann durch Messen verschiedener Faktoren berechnet werden, von denen man erwartet, dass sie Auswirkungen auf die Wahrscheinlichkeit eines bestimmten Eingabesymbols haben, das in einer Eingabesequenz auftritt. Ein Decodierer, so beispielsweise der Decodierer 300 von 3, nimmt eine entsprechende arithmetische Decodierung vor.
  • Beim direkten Codieren von Koeffizienten (das heißt als direkte Pegel) verwendet der Codierer Faktoren, darunter die Werte der vorhergehenden Koeffizienten in der Sequenz, zur Berechnung des Kontextes. Bei der Codierung von Koeffizienten unter Verwendung der Laufpegelcodierung verwendet der Codierer Faktoren, darunter die Längen des aktuellen Laufes und der vorhergehenden Läufe, zusätzlich zu den Werten der vorhergehenden Koeffizienten zur Berechnung des Kontextes. Der Codierer verwendet eine Wahrscheinlichkeitsverteilung, die mit dem berechneten Kontext verknüpft ist, um den geeigneten arithmetischen Code für die Daten zu bestimmen. Damit bestimmt der Codierer durch Verwendung der verschiedenen Faktoren bei der Berechnung der Kontexte Kontexte adaptiv bezüglich der Daten und des Modus (beispielsweise direkt, Laufpegel) zur Darstellung von Daten.
  • Bei alternativen Ausführungsbeispielen kann der Codierer zusätzliche Faktoren verwenden, einige Faktoren weglassen oder vorstehend erwähnte Faktoren in anderen Kombinationen einsetzen.
  • A. Beispielsimplementierung von Kontexten
  • Tabellen 2 bis 5 sowie 13A bis 13D, 14A bis 14H und 15A bis 15H zeigen Kontexte beziehungsweise Wahrscheinlichkeitsverteilungen, die bei der CBA-Codierung und -decodierung entsprechend einer Beispielsimplementierung verwendet werden. Alternativ verwenden die CBA-Codierung und -decodierung unterschiedliche Kontexte und/oder unterschiedliche Wahrscheinlichkeitsverteilungen.
  • Obwohl die nachfolgenden Erläuterungen auf eine Kontextberechnung bei dem Codierer der Beispielsimplementierung abstellen, nimmt der Decodierer eine entsprechende Kontextberechnung während des Decodierens unter Verwendung der vorher decodierten Audiodaten vor.
  • Wie vorstehend ausgeführt worden ist, kann der Codierer Koeffizienten unter Verwendung der CBA-Codierung codieren, wobei der Codierer entweder nur direkte Pegel oder Lauflängen und direkte Pegel codiert. Bei einer Implementierung variieren die Techniken zur Berechnung der Kontexte jedoch in Abhängigkeit davon, ob der Codierer nur direkte Pegel oder Lauflängen und direkte Pegel codiert. Darüber hinaus verwendet der Codierer bei der Codierung von Lauflängen und direkten Pegeln verschiedene Kontexte in Abhängigkeit davon, ob der Codierer eine Lauflänge oder einen direkten Pegel codiert.
  • Der Codierer verwendet ein Vierkontextsystem zum Berechnen von Kontexten während einer arithmetischen Codierung von direkten Pegeln unter Verwendung eines Kausalkontextes. Der Codierer berechnet den Kontext für einen aktuellen Pegel L[n] auf Grundlage des Wertes des vorhergehenden Pegels L[n – 1] und des Pegels genau vor dem vorhergehenden Pegel L[n – 2]. Die Kontextberechnung basiert auf den Annahmen, dass (1) bei niedrigen vorhergehenden Pegeln der aktuelle Pegel wahrscheinlich niedrig ist und (2) die beiden vorhergehenden Pegel mit größerer Wahrscheinlichkeit bessere Vorhersagegrößen für die aktuellen Pegel als andere Pegel sind. Tabelle 2 zeigt die Kontexte, die mit den Werten der beiden vorhergehenden Pegel in dem Vierkontextsystem verknüpft sind. 13A bis 13D zeigen die Wahrscheinlichkeitsverteilungen für aktuelle Pegel dieser Kontexte.
    L[n – 1] L[n – 2] Kontext
    = 0 = 0 0
    = 0 ≥ 1 1
    = 1 beliebig 2
    ≥ 2 beliebig 3
    Tabelle 2: Kontexte für CBA-Codierung/Decodierung von direkten Pegeln
  • Die Wahrscheinlichkeitsverteilungen von 13A und 13D gehen davon aus, dass für den Fall, dass die beiden vorhergehenden Pegel gleich 0 oder nahezu gleich 0 sind, die aktuellen Pegel mit größerer Wahrscheinlichkeit gleich 0 oder nahezu gleich 0 sind.
  • Der Codierer kann zudem eine CBA-Codierung bei der Durchführung einer Lauflängencodierung der Pegel einsetzen. Bei der Codierung einer Lauflänge zählen zu den Faktoren, die von dem Codierer zur Berechnung des Kontextes verwendet werden, der prozentuale Anteil von Nullen in der Eingabesequenz (ein laufender Gesamtwert über einen Teil der Sequenz oder die gesamte Sequenz) und die Länge des vorhergehenden Laufes von Nullen R[n – 1]. Der Codierer berechnet einen Nullprozentsatzindex auf Grundlage des prozentualen Anteils von Nullen in der Eingabesequenz, wie in Tabelle 3 gezeigt ist.
    Null % Null % Index
    ≥ 90 0
    ≥ 80 1
    ≥ 60 2
    < 60 3
    Tabelle 3: Nullprozentsatzindex für CBA-Codierung/Decodierung von Lauflängen
  • Der Codierer bedient sich des Nullprozentsatzindex und der Länge des vorhergehenden Laufes zur Berechnung des Kontextes zum Codieren der aktuellen Lauflänge, wie in 4 gezeigt ist. 14A bis 14H zeigen Wahrscheinlichkeitsverteilungen für unterschiedliche Lauflängenwerte im Zusammenhang mit diesen Kontexten.
    Null % Index R[n – 1] Kontext
    0 = 0 0
    0 > 0 4
    1 = 0 1
    1 > 0 5
    2 = 0 2
    2 > 0 6
    3 = 0 3
    3 > 0 7
    Tabelle 4: Kontexte für CBA-Codierung/Decodierung von Lauflängen
  • In einer Eingabesequenz, bei der beispielsweise 91% der Pegel gleich Null sind (was zu einem Nullprozentsatzindex von 0 führt) und bei der die Länge des vorhergehenden Laufes von Nullen gleich 15 ist, ist der Kontext gleich 4. Die Wahrscheinlichkeitsverteilungen von 14A und 14H zeigen, dass für den Fall, dass der prozentuale Anteil von Nullen in einer Eingabesequenz höher ist, längere Lauflängen wahrscheinlicher sind. Die Wahrscheinlichkeitsverteilungen gehen zudem davon aus, dass innerhalb eines gegebenen Nullprozentsatzindex Lauflängen im Gefolge einer Lauflänge von Null wahrscheinlich kürzer als Lauflängen im Gefolge einer Lauflänge größer als 0 sind.
  • Beim Codieren eines Pegels bei Laufpegeldaten zählen zu den Faktoren, die von dem Codierer zum Berechnen des Kontextes verwendet werden, die Länge des aktuellen Laufes R[n], die Länge des vorhergehenden Laufes R[n – 1] und die Werte der beiden vorhergehenden Pegel L[n – 1] und L[n – 2]. Die Kontextberechnung beruht auf der Beobachtung, dass der aktuelle Pegel von den vorhergehenden beiden Pegeln abhängt, solange der Abstand (das heißt die Lauflängen) zwischen den Pegeln nicht zu groß werden. Sind vorhergehende Pegel kleiner und sind vorhergehende Läufe kürzer, so ist der aktuelle Pegel wahrscheinlich niedrig. Sind vorhergehende Läufe länger, so haben vorhergehende Pegel eine geringeren Einfluss auf den aktuellen Pegel.
  • Die Kontexte im Zusammenhang mit den Werten der aktuellen Laufpegel, der vorhergehenden Lauflänge und der beiden vorhergehenden Pegel sind in Tabelle 5 gezeigt. 15A bis 15H zeigen Wahrscheinlichkeitsverteilungen für Pegel im Zusammenhang mit diesen Kontexten.
    R[n] R[n – 1] L[n – 1] L[n – 2] Kontext
    ≥ 2 beliebig beliebig beliebig 0
    < 2 ≥ 2 = 1 beliebig 1
    < 2 ≥ 2 = 2 beliebig 2
    < 2 ≥ 2 > 2 beliebig 3
    < 2 < 2 = 1 = 1 4
    < 2 < 2 = 1 > 1 5
    < 2 < 2 = 2 beliebig 6
    < 2 < 2 > 2 beliebig 7
    Tabelle 5: Kontexte für CBA-Codierung/Decodierung von Pegeln bei Laufpegelcodierung
  • In einer Eingabesequenz, in der die Länge des aktuellen Laufes von Nullen beispielsweise gleich 1, die Länge des vorhergehenden Laufes von Nullen gleich 2 und der vorhergehende Pegel gleich 1 ist, ist der Kontext gleich 1. Die Wahrscheinlichkeitsverteilungen von 15A bis 15H zeigen, dass für den Fall, dass die vorhergehenden Pegel nied riger und die aktuellen und vorhergehenden Lauflängen kürzer sind, der aktuelle Pegel mit größerer Wahrscheinlichkeit gleich 0 oder nahezu gleich 0 ist.
  • B. Adaptives Umschalten
  • 16 zeigt eine Technik 1600 für die CBA-Codierung von Koeffizienten von direkten Signalpegeln, wobei hier der Codierer adaptiv einen Umschaltpunkt zum Wechseln auf die Codierung der Lauflängen und Signalpegel entsprechend einer Implementierung bestimmt. Der adaptive Umschaltpunkt hängt von einem Zähler von aufeinanderfolgenden Nullwertkoeffizienten ab. Die Eingabedaten sind Signalpegel für quantisierte Umwandlungskoeffizienten, beginnend mit dem Koeffizienten der niedrigsten Frequenz bis hin zu dem Koeffizienten der höchsten Frequenz. Alternativ liegen die Eingabedaten in anderer Form und/oder Organisierung der Audiodaten vor.
  • Zu Beginn initialisiert der Codierer mehrere Variablen. Insbesondere setzt der Codierer eine Laufzählervariable auf 0, siehe 1610, und eine Codierstatusvariable auf direktes kontextbasiertes arithmetisches Codieren (DCBA), siehe 1612.
  • Der Codierer empfängt den nächsten Koeffizienten QC als Eingabe, siehe 1620. Der Codierer prüft anschließend, siehe 1630, ob der Koeffizient gleich 0 ist. Ist der Koeffizient QC ungleich 0, so setzt der Codierer den Laufzähler, siehe 1638, zurück und codiert den Koeffizienten unter Verwendung der DCBA-Codierung, siehe 1640.
  • Andernfalls (das heißt wenn der Koeffizient QC gleich 0 ist) inkrementiert der Codierer die Laufzählervariable, siehe 1632, und prüft, ob der aktuelle Laufzähler den Laufzählerschwellenwert übersteigt, siehe 1634. Der Laufzähler kann statisch sein oder von einem Faktor, so beispielsweise der Größe eines Blocks von Koeffizienten abhängen (beispielsweise vier Nullen in einer Eingabesequenz von 256 Koeffizienten), oder er kann auf andere Weise adaptiv sein. Der Schwellenwert kann beispielsweise erhöht oder gesenkt werden, und zwar unter Berücksichtigung oder Vernachlässigung der Anzahl der Koeffizienten in einer Eingabesequenz. Übersteigt der Laufzähler den Schwellenwert, so wechselt der Codierer den Codierstatus auf RLE (run-level coding RLE, Laufpegelcodierung), siehe 1636. Der Codierer codiert anschließend die Koeffizienten unter Verwendung der DCBA-Codierung, siehe 1640.
  • Nach dem Codieren des Koeffizienten prüft der Codierer den Codierstatus, siehe 1650. Ist der Codierstatus nicht mehr DCBA (das heißt, wenn der Codierer den Codierstatus als Ergebnis eines Überschreitens eines Schwellenwertes von Nullkoeffizienten auf RLE gewechselt hat) beginnt der Codierer mit dem Codieren der Koeffizienten als Lauflängen und Pegel, siehe 1660. Das Laufpegelcodieren kann auf verschiedene Weisen ausgeführt werden, darunter beispielsweise unter Verwendung des Huffman-Codierens, des vektoriellen Huffman-Codierens oder des CBA-Codierens (gegebenenfalls mit anderen Kontexten als beim vorherigen CBA-Codieren). Bei einigen Ausführungsbeispielen wird das Laufpegelcodieren unter Verwendung einer Huffman-Codierung mit Huffman-Code-Tabellen vorgenommen, wobei eine Tabelle zum Codieren von Daten verwendet wird, in denen kurze Läufe wahrscheinlicher sind, während die andere Tabelle zum Codieren von Daten verwendet wird, in denen längere Läufe wahrscheinlicher sind. Der Codierer probiert jede Tabelle aus und wählt Codes aus jeder der Tabellen aus, wobei ein Signalbit angibt, welche Tabelle der Codierer verwendet.
  • Hat der Codierstatus nicht gewechselt, so bestimmt der Codierer, siehe 1670, ob weitere Koeffizienten zum Codieren vorhanden sind. Ist dies der Fall, so gibt der Codierer den nächsten Koeffizienten, siehe 1620, ein und setzt den Codiervorgang fort.
  • C. Kontextbasiertes arithmetisches Decodieren
  • 17 zeigt eine Technik 1700 zum Decodieren von Koeffizienten, die unter Verwendung der CBA-Codierung entsprechend einer Implementierung codiert worden sind, wobei der Decodierer adaptiv einen Umschaltpunkt zum Wechseln auf das Decodieren von Lauflängen und Signalpegeln bestimmt. Der adaptive Umschaltpunkt hängt von einem Zähler von aufeinanderfolgenden Nullwertkoeffizienten in den Daten ab, die Signalpegel für quantisierte Umwandlungskoeffizienten sind, beginnend mit dem Koeffizienten der niedrigsten Frequenz bis hin zu dem Koeffizienten der höchsten Frequenz. Alternativ liegen die Daten in anderer Form und/oder Organisierung der Audiodaten vor.
  • Zu Beginn initialisiert der Decodierer mehrere Variablen. Insbesondere setzt der Decodierer einen Laufzähler auf 0, siehe 1710, und einen Decodierstatus auf direkte kontextbasierte arithmetische Decodierung (DCBA), siehe 1712.
  • Der Decodierer decodiert den nächsten quantisierten Koeffizienten unter Verwendung von DCBA, siehe 1720, durch Heranziehen der Zahl, die der Codierer zur Darstellung des Koeffizienten bei der arithmetischen Codierung verwendet hat, und durch Extrahieren des Wertes des Koeffizienten aus jener Zahl. Der Decodierer aktualisiert anschließend den Laufzähler auf Grundlage des decodierten Koeffizienten, siehe 1730 (insbesondere auf Grundlage davon, ob der decodierte Koeffizient gleich dem Nullwert ist, um den Laufzähler zurückzusetzen oder zu inkrementieren).
  • Der Decodierer prüft, ob der Laufzähler einen Schwellenwert übersteigt, siehe 1740. Der Laufzähler kann statisch sein oder von einem Faktor, so beispielsweise der Größe eines Blockes von Koeffizienten abhängen (beispielsweise vier Nullen in einer Eingabesequenz von 256 Koeffizienten), oder er kann auf andere Weise adaptiv sein. Übersteigt der Laufzähler den Schwellenwert, so beginnt der Decodierer mit dem Decodieren der codierten Koeffizienten unter Verwendung eines Laufpegeldecodierens, siehe 1750. Das Laufpegeldecodieren kann auf verschiedene Weisen ausgeführt werden, darunter beispielsweise unter Verwendung eines Huffman-Decodierens, eines vektoriellen Huffman-Decodierens oder eines CBA-Decodierens (gegebenenfalls mit anderen Kontexten als beim vorhergehenden CBA-Decodieren). Bei einigen Ausführungsbeispielen wird das Laufpegeldecodieren unter Verwendung eines Huffman-Decodierens mit zwei möglichen Huffman-Code-Tabellen vorgenommen, wobei die eine Tabelle zum Decodieren von Daten verwendet wird, in denen kürzere Läufe wahrscheinlicher sind, während die andere Tabelle zum Decodieren von Daten verwendet wird, in denen längere Läufe wahrscheinlicher sind. Empfängt der Decodierer einen Code, so gibt ein Signalbit in dem Code an, welche Tabelle der Decodierer verwendet hat, und der Decodierer schlägt den Code in der jeweiligen Tabelle nach.
  • Überschreitet der Laufzähler den Schwellenwert nicht, so fährt der Decodierer mit der Verarbeitung der Koeffizienten fort, bis das Decodieren vollständig ist, siehe 1760.
  • VI. Tabellenfreies Codieren
  • Bei einigen Ausführungsbeispielen, bei denen das Huffman-Codieren zum Einsatz kommt, verwendet ein Codierer, so beispielsweise der Codierer 200 von 2, einen Esacpe-Code für eine Huffman-Code-Tabelle, um anzugeben, dass ein bestimmtes Symbol (oder eine Kombination von Symbolen) keinen zugehörigen Code in der Tabelle aufweist. Bisweilen wird ein Escape-Code verwendet, um anzugeben, dass ein bestimmtes Symbol (beispielsweise ein skalarer Wert für einen Pegel, der nicht in einer skalaren Huffman-Code-Tabelle für Pegel dargestellt wird, eine Lauflänge, die nicht in einer skala ren Huffman-Code-Tabelle für Lauflängen dargestellt wird, etc.) codiert werden soll, ohne einen Code aus der Huffman-Code-Tabelle zu verwenden. Mit anderen Worten, das Symbol soll unter Verwendung einer „tabellenfreien" Codiertechnik codiert werden.
  • Bei einigen Ausführungsbeispielen, bei denen das arithmetische Codieren zum Einsatz kommt, wird bisweilen ein Escape-Code verwendet, um anzuzeigen, dass ein bestimmtes Symbol nicht arithmetisch codiert werden soll. Das Symbol kann unter Verwendung eines Codes aus einer Huffman-Tabelle codiert werden, oder es kann unter Verwendung einer „tabellenfreien" Codiertechnik codiert werden.
  • Einige tabellenfreie Codiertechniken verwenden Codes fester Länge zur Darstellung von Symbolen. Die Verwendung von Codes fester Länge kann jedoch zu unnötig langen Codes führen.
  • Bei einigen Ausführungsbeispielen werden daher Symbole, so beispielsweise quantisierte Umwandlungskoeffizienten als Codes variabler Länge in einer tabellenfreien Codiertechnik dargestellt, wenn die Symbole nicht der andere Weise codiert werden. Ein Decodierer, so beispielsweise der Decodierer 300 von 3, setzt eine entsprechende tabellenfreie Decodiertechnik ein.
  • Tabelle 6 zeigt ein Beispiel für Pseudocode bei einer Implementierung einer derartigen tabellenfreien Codiertechnik.
  • Figure 00460001
  • Figure 00470001
    Tabelle 6: Pseudocode für eine tabellenfreie Codiertechnik bei einer Implementierung
  • Die Anzahl der Bits, die der Codierer zur Codierung der Koeffizienten verwendet, hängt vom Wert des Koeffizienten ab. Der Codierer sendet einen 1, 2 oder 3 Bit umfassenden Wert, um die Anzahl von Bits anzuzeigen, die zum Codieren des Wertes verwendet worden sind, und sendet sodann den codierten Wert selbst unter Verwendung von 8, 16, 24 oder 31 Bit. Die Gesamtzahl von Bits, die der Codierer zur Codierung des Koeffizienten verwendet, liegt in einem Bereich von 9 Bit für einen Wert von weniger als 28 bis 34 Bit für einen Wert größer oder gleich 224, jedoch kleiner als 231.
  • Für eine Reihe von Koeffizienten sind die durchschnittlichen gesendeten Bits gleich dem nachfolgenden Ausdruck. P(0 ≤ C < 28) × 9 + P(28 ≤ C < 216) × 18 + P(216 ≤ C < 224) × 27 + P(224 ≤ C < 231) × 34
  • Hierbei ist P(m ≤ C < n) die Wahrscheinlichkeit des in einer Eingabesequenz erfolgenden Auftretens eines Koeffizienten C innerhalb des angegebenen Bereiches. Merkliche Ersparnisse von Bits sind daher möglich, wenn ein größerer prozentualer Anteil der Koeffizienten klein ist (beispielsweise kleiner als 216).
  • Als Alternativen wenden der Codierer und der Decodierer andere tabellenfreie Techniken des Codierens und Decodierens an.
  • Nach erfolgter Beschreibung und Darstellung der Prinzipien der vorliegenden Erfindung unter Bezugnahme auf zahlreiche beschriebene Ausführungsbeispiele ist einsichtig, dass die beschriebenen Ausführungsbeispiele mit Blick auf Anordnung und Einzelheiten abgewandelt werden können, ohne dass man von diesen Prinzipien abweichen würde. Es ist einsichtig, dass die Programme, Prozesse oder Verfahren gemäß vorstehender Beschreibung nicht mit nur einer bestimmten Art von Computerumgebung in Zusammenhang stehen oder hierauf beschränkt sind, es sei denn, es ist explizit anders angegeben. Verschiedene Arten von Allzweck- oder Sonderzweckcomputerumgebungen können zur Durchführung von Operationen entsprechend der hier offenbarten techni schen Lehre verwendet werden. Elemente der beschriebenen Ausführungsbeispiele, die als zur Software gehörig dargestellt sind, können auch als Hardware implementiert sein und umgekehrt.
  • Eingedenk der zahlreichen möglichen Ausführungsbeispiele, bei denen die Prinzipien der vorliegenden Erfindung Anwendung finden können, werden als Erfindung all diejenigen Ausführungsbeispiele beansprucht, die in den Schutzbereich der nachfolgenden Ansprüche fallen oder hierzu äquivalent sind.

Claims (48)

  1. Verfahren zum Codieren von Audiodaten in einem Computersystem, wobei das Verfahren umfasst: Codieren eines ersten Abschnitts einer Audio-Datensequenz in einem Modus direkten variabel-dimensionalen Vektor-Huffman-Codierens (960); Umschalten (980) auf einen Laufpegel-Codiermodus an einem Umschaltpunkt; und Codieren eines zweiten Abschnitts der Audio-Datensequenz in dem Laufpegel-Codiermodus.
  2. Verfahren nach Anspruch 1, das des Weiteren Senden eines Flags in einem codierten Bitstrom umfasst, wobei das Flag den Umschaltpunkt anzeigt.
  3. Verfahren nach Anspruch 1 oder 2, wobei der erste Abschnitt der Audio-Datensequenz primär aus quantisierten Nicht-Null-Audio-Koeffizienten besteht und der zweite Abschnitt der Audio-Datensequenz primär aus quantisierten Audio-Koeffizienten des Wertes Null besteht.
  4. Verfahren nach Anspruch 1, wobei der Umschaltpunkt ein vorgegebener Umschaltpunkt ist.
  5. Verfahren nach Anspruch 4, wobei der vorgegebene Umschaltpunkt experimentell durch Testen von Effizienz des Codierens der Audio-Datensequenz unter Verwendung des vorgegebenen Umschaltpunktes bestimmt wird.
  6. Verfahren nach Anspruch 1, wobei der Umschaltpunkt adaptiv bestimmt wird.
  7. Verfahren nach einem der Ansprüche 1 bis 6, das des Weiteren umfasst: Umschalten in einen dritten Codiermodus an einem zweiten Umschaltpunkt.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei der Laufpegel-Codiermodus kontext-basiertes arithmetisches Codieren von Lauflängen und -pegeln umfasst.
  9. Verfahren nach einem der Ansprüche 1 bis 7, wobei der Laufpegel-Codiermodus Huffman-Codieren von Lauflängen und -pegeln umfasst.
  10. Verfahren nach einem der Ansprüche 1 bis 7, wobei der Laufpegel-Codiermodus Huffman-Vektor-Codieren von Lauflängen und -pegeln umfasst.
  11. Verfahren nach einem der Ansprüche 1 bis 10, wobei das Codieren des ersten Abschnitts der Audio-Datensequenz in dem Modus direkten variabel-dimensionalen Vektor-Huffman-Codierens umfasst: Bestimmen eines Huffman-Codes zur Verwendung beim Codieren eines Vektors von Audio-Datensymbolen, wobei das Bestimmen auf den Audio-Datensymbolen und einer Summe von Werten der Audio-Datensymbole basiert; und Codieren des Vektors der Audio-Datensymbole unter Verwendung des Huffman-Codes.
  12. Verfahren nach Anspruch 11, wobei der Huffman-Code ein Escape-Code ist, der Vektor von Audio-Datensymbolen ein n-dimensionaler Vektor ist und der Escape-Code anzeigt, dass der n-dimensionale Vektor als x n/x-dimensionale Vektoren zu codieren ist.
  13. Verfahren nach einem der Ansprüche 1 bis 10, wobei das Codieren des ersten Abschnitts der Audio-Datensequenz in dem Modus direkten variabel-dimensionalen Vektor-Huffman-Codierens Wechseln von einer Huffman-Code-Tabelle eines Vektors höherer Dimension mehrerer Huffman-Code-Tabellen zu einer Huffman-Code-Tabelle eines Vektors niedrigerer Dimension der mehreren Huffman-Code-Tabellen umfasst, um einen Vektor von Werten aus dem ersten Abschnitt der Audio-Datensequenz zu codieren, wenn dem Vektor von Werten kein Huffman-Code der Huffman-Code-Tabelle des Vektors höherer Dimension zugewiesen wird.
  14. Verfahren nach einem der Ansprüche 1 bis 10, wobei das Codieren des ersten Abschnitts der Audio-Datensequenz in dem Modus direkten variabel-dimensionalen Vektor-Huffman-Codierens umfasst: Bestimmen, dass einem ersten n-dimensionalen Vektor von Werten aus dem ersten Abschnitt der Audio-Datensequenz ein Huffman-Code in einer n-dimensionalen Vektor-Huffman-Code-Tabelle mehrerer Huffman-Code-Tabellen zugewiesen wird, wobei n wenigstens 2 beträgt und die n-dimensionale Vektor-Huffman-Code-Tabelle Huffman-Codes für weniger als alle möglichen n-dimensionalen Vektoren von Werten enthält; Codieren des ersten n-dimensionalen Vektors unter Verwendung des zugewiesenen Huffman-Codes aus der n-dimensionalen Vektor-Huffman-Code-Tabelle; und in Reaktion auf Bestimmen, dass einem zweiten n-dimensionalen Vektor von Werten aus dem ersten Abschnitt der Audio-Datensequenz kein Huffman-Code in der n-dimensionalen Vektor-Huffman-Code-Tabelle zugewiesen wird: Hinzufügen eines Escape-Codes, der einen Wechsel zu einer n/2-dimensionalen Vektor-Huffman-Code-Tabelle der mehreren Huffman-Code-Tabellen anzeigt; Teilen des zweiten n-dimensionalen Vektors in zwei n/2-dimensionale Vektoren; Bestimmen, dass den zwei n/2-dimensionalen Vektoren Huffman-Codes in der n/2-dimensionalen Vektor-Huffman-Code-Tabelle zugewiesen werden, wobei die n/2-dimensionale Vektor-Huffman-Code-Tabelle Huffman-Codes für eine begrenzte Anzahl der wahrscheinlichsten n/2-dimensionalen Vektoren von Werten enthält; und Codieren der zwei n/2-dimensionalen Vektoren unter Verwendung der zugewiesenen Huffman-Codes aus der n/2-dimensionalen Vektor-Huffman-Code-Tabelle.
  15. Verfahren nach einem der Ansprüche 1 bis 10, wobei das Codieren des ersten Abschnitts der Audio-Datensequenz in dem Modus direkten variabel-dimensionalen Vektor-Huffman-Codierens Escape-Codes verwendet, um Wechsel zwischen mehreren Huffman-Code-Tabellen für verschiedene Dimensionen anzuzeigen.
  16. Verfahren nach einem der Ansprüche 1 bis 10, wobei Codieren des ersten Abschnitts der Audio-Datensequenz in dem Modus direkten variabel-dimensionalen Vektor-Huffman-Codierens Escape-Codes verwendet, um Wechsel zwischen Vektoren verschiedener Dimension anzuzeigen.
  17. Verfahren zum Codieren von Audio-Daten in einem Computersystem, wobei das Verfahren umfasst: Codieren eines ersten Abschnitts einer Audio-Datensequenz in einem Modus direkten kontext-basierten arithmetischen Codierens (1640); Umschalten (1680) auf einen Laufpegel-Codiermodus an einem Umschaltpunkt; und Codieren eines zweiten Abschnitts der Audio-Datensequenz in dem Laufpegel-Codiermodus.
  18. Verfahren nach Anspruch 17, wobei der Laufpegel-Codiermodus kontext-basiertes arithmetisches Codieren von Lauflängen und -pegeln umfasst.
  19. Verfahren zum Decodieren von Audiodaten in einem Computersystem, wobei das Verfahren umfasst: Decodieren eines ersten Abschnitts einer codierten Audio-Datensequenz in einem Modus direkten variabel-dimensionalen Vektor-Huffman-Decodierens (1220); Umschalten (1250) auf einen Laufpegel-Decodiermodus an einem Umschaltpunkt; und Decodieren eines zweiten Abschnitts der codierten Audio-Datensequenz in dem Laufpegel-Decodiermodus.
  20. Verfahren nach Anspruch 19, das des Weiteren umfasst: vor dem Umschalten Empfangen eines Flags, das den Umschaltpunkt anzeigt.
  21. Verfahren nach Anspruch 19 oder 20, wobei der erste Abschnitt der codierten Audio-Datensequenz primär aus quantisierten Nicht-Null-Audio-Koeffizienten besteht und der zweite Abschnitt der codierten Audiodaten-Sequenz primär aus quantisierten Audio-Koeffizienten des Wertes Null besteht.
  22. Verfahren nach Anspruch 19, wobei der Umschaltpunkt ein vorgegebener Umschaltpunkt ist.
  23. Verfahren nach Anspruch 19, wobei der Umschaltpunkt adaptiv bestimmt wird.
  24. Verfahren nach einem der Ansprüche 19 bis 23, das des Weiteren umfasst: Umschalten auf einen dritten Decodiermodus an einem zweiten Umschaltpunkt.
  25. Verfahren nach einem der Ansprüche 19 bis 24, wobei der Laufpegel-Decodiermodus kontext-basiertes arithmetisches Decodieren von Lauflängen und -pegeln umfasst.
  26. Verfahren nach einem der Ansprüche 19 bis 24, wobei der Laufpegel-Decodiermodus Huffman-Decodieren von Lauflängen und -pegeln umfasst.
  27. Verfahren nach einem der Ansprüche 19 bis 24, wobei der Laufpegel-Decodiermodus Huffman-Vektordecodieren von Lauflängen und -pegeln umfasst.
  28. Verfahren nach einem der Ansprüche 19 bis 24, wobei das Decodieren des ersten Abschnitts der codierten Audio-Datensequenz in dem Modus direkten variabel-dimensionalen Vektor-Huffman-Decodierens Wechseln von einer höher-dimensionalen Vektor-Huffman-Code-Tabelle mehrerer Huffman-Code-Tabellen zu einer niedriger-dimensionalen Vektor-Huffman-Code-Tabelle der mehreren Huffman-Code-Tabellen umfasst, wenn ein Escape-Code der Huffman-Code-Tabelle des Vektors höherer Dimension in der codierten Audio-Datensequenz auftritt.
  29. Verfahren nach einem der Ansprüche 19 bis 24, wobei das Decodieren des ersten Abschnitts der codierten Audio-Datensequenz in dem Modus direkten variabel-dimensionalen Vektor-Huffman-Decodierens umfasst: Bestimmen, dass ein erster Huffman-Code der codierten Audio-Datensequenz ein Escape-Code einer n-dimensionalen Vektor-Huffman-Code-Tabelle mehrerer Huffman-Code-Tabellen ist, wobei n wenigstens 2 beträgt, und die n-dimensionalen Vektor-Huffman-Code-Tabelle Huffman-Codes für weniger als alle möglichen n-dimensionalen Vektoren von Werten enthält; in Reaktion auf Bestimmen, dass der erste Huffman-Code der codierten Audio-Datensequenz der Escape-Code der n-dimensionalen Vektor-Huffman-Code-Tabelle ist, Decodieren eines zweiten Huffman-Codes der codierten Audio-Datensequenz unter Verwendung einer n/2-dimensionalen Vektor-Huffman-Code-Tabelle der mehreren Huffman-Code-Tabellen.
  30. Verfahren nach einem der Ansprüche 19 bis 24, wobei das Decodieren des ersten Abschnitts der codierten Audio-Datensequenz in dem Modus direkten variabel-dimensionalen Vektor-Huffman-Decodierens Escape-Codes verwendet, um Wech sel zwischen mehreren Huffman-Code-Tabellen für verschiedene Dimensionen anzuzeigen.
  31. Verfahren nach einem der Ansprüche 19 bis 24, wobei das Decodieren des ersten Abschnitts der codierten Audio-Datensequenz in dem Modus direkten Huffman-Decodierens des Vektors variabler Dimension Escape-Codes verwendet, um Wechsel zwischen Vektoren verschiedener Dimension anzuzeigen.
  32. Verfahren zum Decodieren von Audiodaten in einem Computersystem, wobei das Verfahren umfasst: Decodieren eines ersten Abschnitts einer codierten Audio-Datensequenz in einem Modus direkten kontext-basierten arithmetischen Decodierens (1720); Umschalten (1750) auf einen Laufpegel-Codiermodus an einem Umschaltpunkt; und Decodieren eines zweiten Abschnitts der Audio-Datensequenz in dem Laufpegel-Decodiermodus.
  33. Verfahren nach Anspruch 32, wobei der Laufpegel-Decodiermodus kontext-basiertes arithmetisches Decodieren von Lauflängen und -pegeln umfasst.
  34. Verfahren zum Codieren von Audiodaten in einem Computersystem unter Verwendung eines Entropie-Codierers, wobei das Verfahren umfasst: Entropie-Codieren eines ersten Abschnitts der Audiodaten, wobei das Codieren des ersten Abschnitts direktes Codieren (410) von Koeffizienten umfasst; Halten (530, 532, 538) eines Zählwertes aufeinanderfolgender Koeffizienten so, dass er einem vorherrschenden Wert gleich ist, wobei der Zählwert zunimmt, wenn der Wert eines aktuellen Koeffizienten dem vorherrschenden Wert gleich ist; und in Reaktion darauf, dass der Zählwert eine Schwelle übersteigt (534), Codieren eines zweiten Abschnitts der Audiodaten, wobei das Codieren des zweiten Abschnitts Laufpegel-Codieren (430) von Koeffizienten umfasst.
  35. Verfahren nach Anspruch 34, wobei der vorherrschende Wert Null ist.
  36. Verfahren nach Anspruch 34 oder 35, wobei der Schwellenwert statisch ist.
  37. Verfahren nach Anspruch 34 oder 35, wobei der Schwellenwert adaptiv bestimmt wird.
  38. Verfahren nach Anspruch 34 oder 35, wobei der erste Abschnitt einen Block von Koeffizienten umfasst, der Block eine Größe hat und der Schwellenwert von der Größe abhängt.
  39. Verfahren nach Anspruch 38, wobei die Größe 256 Koeffizienten beträgt und der Schwellenwert 4 beträgt.
  40. Verfahren nach Anspruch 38, wobei die Größe 512 Koeffizienten beträgt und der Schwellenwert 8 beträgt.
  41. Verfahren zum Decodieren von Audiodaten in einem Computersystem unter Verwendung eines Entropie-Decodierers, wobei das Verfahren umfasst: Entropie-Decodieren eines ersten Abschnitts der Audiodaten, wobei das Decodieren des ersten Abschnitts direktes Decodieren (610) von Koeffizienten umfasst; Halten eines Zählwertes aufeinanderfolgender Koeffizienten so, dass er einem vorherrschenden Wert gleich ist, wobei der Zählwert zunimmt, wenn der Wert eines aktuellen Koeffizienten dem vorherrschenden Wert gleich ist; und in Reaktion darauf, dass der Zählwert einen Schwellenwert übersteigt, Entropie-Decodieren eines zweiten Abschnitts der Audiodaten, wobei das Decodieren des zweiten Abschnitts Laufpegel-Decodieren (630) von Koeffizienten umfasst.
  42. Verfahren nach Anspruch 41, wobei der vorherrschende Wert Null ist.
  43. Verfahren nach Anspruch 41 oder 42, wobei der Schwellenwert statisch ist.
  44. Verfahren nach Anspruch 41 oder 43, wobei der Schwellenwert adaptiv bestimmt wird.
  45. Verfahren nach Anspruch 41 oder 44, wobei der erste Abschnitt einen Block von Koeffizienten umfasst, der Block eine Größe hat und der Schwellenwert von der Größe abhängt.
  46. Verfahren nach Anspruch 45, wobei die Größe 256 Koeffizienten beträgt und der Schwellenwert 4 beträgt.
  47. Verfahren nach Anspruch 45, wobei die Größe 512 Koeffizienten beträgt und der Schwellenwert 8 beträgt.
  48. Computerlesbares Medium, das durch Computer ausführbare Befehle speichert, die das Computersystem veranlassen, das Verfahren nach einem der vorangehenden Ansprüche durchzuführen.
DE60317982T 2002-09-04 2003-09-03 Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus Expired - Lifetime DE60317982T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US40853802P 2002-09-04 2002-09-04
US408538P 2002-09-04
US647923P 2003-08-25
US10/647,923 US7433824B2 (en) 2002-09-04 2003-08-25 Entropy coding by adapting coding between level and run-length/level modes

Publications (2)

Publication Number Publication Date
DE60317982D1 DE60317982D1 (de) 2008-01-24
DE60317982T2 true DE60317982T2 (de) 2008-04-10

Family

ID=34067862

Family Applications (3)

Application Number Title Priority Date Filing Date
DE20321883U Expired - Lifetime DE20321883U1 (de) 2002-09-04 2003-09-03 Computervorrichtung und -system zum Entropiedecodieren quantisierter Transformationskoeffizienten eines Blockes
DE60317982T Expired - Lifetime DE60317982T2 (de) 2002-09-04 2003-09-03 Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus
DE60330198T Expired - Lifetime DE60330198D1 (de) 2002-09-04 2003-09-03 Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE20321883U Expired - Lifetime DE20321883U1 (de) 2002-09-04 2003-09-03 Computervorrichtung und -system zum Entropiedecodieren quantisierter Transformationskoeffizienten eines Blockes

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE60330198T Expired - Lifetime DE60330198D1 (de) 2002-09-04 2003-09-03 Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus

Country Status (8)

Country Link
US (5) US7822601B2 (de)
EP (5) EP2282310B1 (de)
AT (4) ATE543178T1 (de)
DE (3) DE20321883U1 (de)
DK (2) DK2282310T3 (de)
ES (4) ES2334934T3 (de)
HK (2) HK1152790A1 (de)
PT (1) PT2282310E (de)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE543178T1 (de) 2002-09-04 2012-02-15 Microsoft Corp Entropische kodierung mittels anpassung des kodierungsmodus zwischen niveau- und lauflängenniveau-modus
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
EP2082494A1 (de) * 2006-11-13 2009-07-29 Agency for Science, Technology And Research Verfahren und system zum kodieren einer datenmatrix und verfahren und system zum dekodieren einer kodierten datenmatrix
US8184710B2 (en) 2007-02-21 2012-05-22 Microsoft Corporation Adaptive truncation of transform coefficient data in a transform-based digital media codec
KR101405972B1 (ko) * 2007-07-02 2014-06-12 엘지전자 주식회사 방송 수신기 및 방송신호 처리방법
JPWO2009022531A1 (ja) * 2007-08-13 2010-11-11 日本電気株式会社 データ圧縮伸張方法
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
KR101456641B1 (ko) * 2008-07-11 2014-11-04 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 오디오 인코더 및 오디오 디코더
CN102089816B (zh) * 2008-07-11 2013-01-30 弗朗霍夫应用科学研究促进协会 音频信号合成器及音频信号编码器
CN101626242B (zh) * 2008-07-11 2014-04-16 数维科技(北京)有限公司 改进的霍夫曼解码方法及装置
PL2346030T3 (pl) * 2008-07-11 2015-03-31 Fraunhofer Ges Forschung Koder audio, sposób kodowania sygnału audio oraz program komputerowy
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
US8462023B2 (en) 2008-09-16 2013-06-11 Sk Telecom Co., Ltd. Encoding method and encoding apparatus for B-transform, and encoded data for same
JP5236005B2 (ja) * 2008-10-10 2013-07-17 日本電信電話株式会社 符号化方法、符号化装置、復号方法、復号装置、プログラム及び記録媒体
MX2011005749A (es) * 2008-12-03 2011-06-20 Nokia Corp Conmutacion entre modos de codificacion de coeficientes dct.
CA2778323C (en) 2009-10-20 2016-09-20 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio encoder, audio decoder, method for encoding an audio information, method for decoding an audio information and computer program using a detection of a group of previously-decoded spectral values
TWI466104B (zh) 2010-01-12 2014-12-21 Fraunhofer Ges Forschung 音訊編碼器、音訊解碼器、用以將音訊資訊編碼的方法、用以將音訊資訊解碼的方法、以及使用數值先前脈絡值之數字表示型態的修改型態之電腦程式
PT3410716T (pt) 2010-04-13 2020-04-21 Ge Video Compression Llc Codificação de mapas de significância e blocos de coeficientes de transformada
US9318115B2 (en) * 2010-11-26 2016-04-19 Nokia Technologies Oy Efficient coding of binary strings for low bit rate entropy audio coding
US8446301B2 (en) 2011-04-15 2013-05-21 Research In Motion Limited Methods and devices for coding and decoding the position of the last significant coefficient
CN103415884B (zh) * 2011-04-20 2015-06-10 松下电器(美国)知识产权公司 用于执行霍夫曼编码的装置和方法
US20130003859A1 (en) * 2011-06-30 2013-01-03 Qualcomm Incorporated Transition between run and level coding modes
JP5936687B2 (ja) * 2011-07-18 2016-06-22 トムソン ライセンシングThomson Licensing ツリー構造の適応的エントロピー符号化方法
US20130099946A1 (en) 2011-10-21 2013-04-25 International Business Machines Corporation Data Compression Utilizing Variable and Limited Length Codes
US8891888B2 (en) * 2012-09-05 2014-11-18 Google Inc. Entropy coding for recompression of images
MX361866B (es) * 2012-11-13 2018-12-18 Samsung Electronics Co Ltd Método y aparato para determinar el modo de codificación, método y aparato para codificar señales de audio, y método y aparato para decodificar señales de audio.
US10003792B2 (en) 2013-05-27 2018-06-19 Microsoft Technology Licensing, Llc Video encoder for images
US20140358565A1 (en) 2013-05-29 2014-12-04 Qualcomm Incorporated Compression of decomposed representations of a sound field
US9978065B2 (en) * 2013-06-25 2018-05-22 Visa International Service Association Voice filter system
CN104253993B (zh) * 2013-06-28 2018-01-12 炬芯(珠海)科技有限公司 一种多媒体数据处理方法、电路及装置
EP2830061A1 (de) 2013-07-22 2015-01-28 Fraunhofer Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zur Codierung und Decodierung eines codierten Audiosignals unter Verwendung von zeitlicher Rausch-/Patch-Formung
US9344218B1 (en) 2013-08-19 2016-05-17 Zoom Video Communications, Inc. Error resilience for interactive real-time multimedia applications
RU2638734C2 (ru) * 2013-10-18 2017-12-15 Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. Кодирование спектральных коэффициентов спектра аудиосигнала
US9922656B2 (en) 2014-01-30 2018-03-20 Qualcomm Incorporated Transitioning of ambient higher-order ambisonic coefficients
US9502045B2 (en) 2014-01-30 2016-11-22 Qualcomm Incorporated Coding independent frames of ambient higher-order ambisonic coefficients
ES2702455T3 (es) 2014-02-24 2019-03-01 Samsung Electronics Co Ltd Procedimiento y dispositivo de clasificación de señales, y procedimiento y dispositivo de codificación de audio que usan los mismos
US10136140B2 (en) 2014-03-17 2018-11-20 Microsoft Technology Licensing, Llc Encoder-side decisions for screen content encoding
US9852737B2 (en) 2014-05-16 2017-12-26 Qualcomm Incorporated Coding vectors decomposed from higher-order ambisonics audio signals
US9620137B2 (en) * 2014-05-16 2017-04-11 Qualcomm Incorporated Determining between scalar and vector quantization in higher order ambisonic coefficients
US10770087B2 (en) 2014-05-16 2020-09-08 Qualcomm Incorporated Selecting codebooks for coding vectors decomposed from higher-order ambisonic audio signals
US9747910B2 (en) 2014-09-26 2017-08-29 Qualcomm Incorporated Switching between predictive and non-predictive quantization techniques in a higher order ambisonics (HOA) framework
US10924743B2 (en) 2015-02-06 2021-02-16 Microsoft Technology Licensing, Llc Skipping evaluation stages during media encoding
GB2538218B (en) * 2015-02-11 2021-06-30 Leo Greenfield Daniel System and method for compressing data using asymmetric numeral systems with probability distributions
US10038917B2 (en) 2015-06-12 2018-07-31 Microsoft Technology Licensing, Llc Search strategies for intra-picture prediction modes
US10171810B2 (en) 2015-06-22 2019-01-01 Cisco Technology, Inc. Transform coefficient coding using level-mode and run-mode
US10136132B2 (en) * 2015-07-21 2018-11-20 Microsoft Technology Licensing, Llc Adaptive skip or zero block detection combined with transform size decision
WO2017196833A1 (en) * 2016-05-10 2017-11-16 Immersion Services LLC Adaptive audio codec system, method, apparatus and medium
US10699725B2 (en) 2016-05-10 2020-06-30 Immersion Networks, Inc. Adaptive audio encoder system, method and article
US10770088B2 (en) 2016-05-10 2020-09-08 Immersion Networks, Inc. Adaptive audio decoder system, method and article
US10756755B2 (en) 2016-05-10 2020-08-25 Immersion Networks, Inc. Adaptive audio codec system, method and article
US10169362B2 (en) 2016-07-07 2019-01-01 Cross Commerce Media, Inc. High-density compression method and computing system
CN107945807B (zh) * 2016-10-12 2021-04-13 厦门雅迅网络股份有限公司 基于静音游程的语音识别方法及其系统
CN108269224B (zh) 2017-01-04 2022-04-01 意法半导体股份有限公司 可重新配置的互连
US10417364B2 (en) 2017-01-04 2019-09-17 Stmicroelectronics International N.V. Tool to create a reconfigurable interconnect framework
US10361712B2 (en) * 2017-03-14 2019-07-23 International Business Machines Corporation Non-binary context mixing compressor/decompressor
US10613797B2 (en) * 2017-06-13 2020-04-07 ScaleFlux, Inc. Storage infrastructure that employs a low complexity encoder
CN107677472B (zh) * 2017-08-25 2019-07-09 中国矿业大学 面向网络变量筛选与特征熵融合的轴承状态噪声诊断算法
EP3738074A4 (de) 2018-01-08 2021-10-13 Immersion Networks, Inc. Verfahren und vorrichtungen zur erzeugung von glatten darstellungen von eingangsbewegung in zeit und raum
US10735025B2 (en) * 2018-03-02 2020-08-04 Microsoft Technology Licensing, Llc Use of data prefixes to increase compression ratios
US11159153B2 (en) 2018-03-29 2021-10-26 Nvidia Corp. Data bus inversion (DBI) on pulse amplitude modulation (PAM) and reducing coupling and power noise on PAM-4 I/O
US10657094B2 (en) 2018-03-29 2020-05-19 Nvidia Corp. Relaxed 433 encoding to reduce coupling and power noise on PAM-4 data buses
US10599606B2 (en) 2018-03-29 2020-03-24 Nvidia Corp. 424 encoding schemes to reduce coupling and power noise on PAM-4 data buses
WO2019244666A1 (ja) * 2018-06-21 2019-12-26 ソニー株式会社 符号化装置および方法、復号装置および方法、並びにプログラム
US11019346B2 (en) * 2018-07-02 2021-05-25 Qualcomm Incorporated Coefficient coding with grouped bypass remaining levels for dependent quantization
US10623200B2 (en) 2018-07-20 2020-04-14 Nvidia Corp. Bus-invert coding with restricted hamming distance for multi-byte interfaces
US10666289B1 (en) 2019-01-16 2020-05-26 International Business Machines Corporation Data compression using dictionary encoding
CN113632473B (zh) * 2019-05-28 2022-11-15 杜比实验室特许公司 用信号发送量化参数
WO2021022087A1 (en) * 2019-08-01 2021-02-04 Dolby Laboratories Licensing Corporation Encoding and decoding ivas bitstreams
CN112399181B (zh) * 2019-08-19 2022-08-26 华为技术有限公司 图像编解码的方法、装置和存储介质
US11380343B2 (en) 2019-09-12 2022-07-05 Immersion Networks, Inc. Systems and methods for processing high frequency audio signal
US11593609B2 (en) 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US11227614B2 (en) * 2020-06-11 2022-01-18 Silicon Laboratories Inc. End node spectrogram compression for machine learning speech recognition
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
WO2024012666A1 (en) * 2022-07-12 2024-01-18 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for encoding or decoding ar/vr metadata with generic codebooks

Family Cites Families (234)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4420771A (en) 1981-02-09 1983-12-13 Bell Telephone Laboratories, Incorporated Technique for encoding multi-level signals
US4558302A (en) 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
DE3629434C2 (de) 1986-08-29 1994-07-28 Karlheinz Dipl Ing Brandenburg Digitales Codierverfahren
EP0260748B1 (de) 1986-09-13 1994-07-13 Philips Patentverwaltung GmbH Verfahren und Schaltungsanordung zur Bitratenreduktion
US4730348A (en) * 1986-09-19 1988-03-08 Adaptive Computer Technologies Adaptive data compression system
US4698672A (en) 1986-10-27 1987-10-06 Compression Labs, Inc. Coding system for reducing redundancy
US4862167A (en) 1987-02-24 1989-08-29 Hayes Microcomputer Products, Inc. Adaptive data compression method and apparatus
US4968135A (en) 1987-08-17 1990-11-06 Digital Equipment Corporation System for producing pixel image data from CCITT encoded pixel data
US4792981A (en) 1987-09-21 1988-12-20 Am International, Inc. Manipulation of run-length encoded images
JPH0191587A (ja) 1987-10-02 1989-04-11 Kokusai Denshin Denwa Co Ltd <Kdd> 予測符号ベクトル量子化方式
US4813056A (en) 1987-12-08 1989-03-14 General Electric Company Modified statistical coding of digital signals
JPH0621830Y2 (ja) 1988-03-11 1994-06-08 本田技研工業株式会社 自動車のサイドシル構造
EP0339589A3 (de) 1988-04-28 1992-01-02 Sharp Kabushiki Kaisha Orthogonales Transformationskodierungssystem für Bilddaten
US5043919A (en) 1988-12-19 1991-08-27 International Business Machines Corporation Method of and system for updating a display unit
DE3943881B4 (de) 1989-04-17 2008-07-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Digitales Codierverfahren
FR2646978B1 (fr) 1989-05-11 1991-08-23 France Etat Procede et installation a codage de signaux sonores
US5128758A (en) 1989-06-02 1992-07-07 North American Philips Corporation Method and apparatus for digitally processing a high definition television augmentation signal
US5179442A (en) 1989-06-02 1993-01-12 North American Philips Corporation Method and apparatus for digitally processing a high definition television augmentation signal
JPH03108824U (de) 1990-02-22 1991-11-08
US5270832A (en) * 1990-03-14 1993-12-14 C-Cube Microsystems System for compression and decompression of video data using discrete cosine transform and coding techniques
EP0519995B1 (de) 1990-03-15 1997-06-11 THOMSON multimedia Digitale bildverarbeitung mit filterung der blockkanten
JPH0787331B2 (ja) 1990-05-07 1995-09-20 松下電器産業株式会社 圧電振動子及びその周波数調整方法
US5146324A (en) 1990-07-31 1992-09-08 Ampex Corporation Data compression using a feedforward quantization estimator
JPH04199981A (ja) 1990-11-29 1992-07-21 Nec Corp 即時処理型1次元符号器
US5253053A (en) * 1990-12-31 1993-10-12 Apple Computer, Inc. Variable length decoding using lookup tables
US5266941A (en) 1991-02-15 1993-11-30 Silicon Graphics, Inc. Apparatus and method for controlling storage of display information in a computer system
US5373513A (en) * 1991-08-16 1994-12-13 Eastman Kodak Company Shift correction code system for correcting additive errors and synchronization slips
JP2670201B2 (ja) * 1991-08-30 1997-10-29 富士写真フイルム株式会社 画像データ圧縮符号化装置および方法
JP2586260B2 (ja) 1991-10-22 1997-02-26 三菱電機株式会社 適応的ブロッキング画像符号化装置
JP3134424B2 (ja) 1991-10-31 2001-02-13 ソニー株式会社 可変長符号化方法及び装置
US5227878A (en) 1991-11-15 1993-07-13 At&T Bell Laboratories Adaptive coding and decoding of frames and fields of video
JP2812446B2 (ja) 1991-11-21 1998-10-22 三洋電機株式会社 画像符号化方式
DE69228983T2 (de) 1991-12-18 1999-10-28 Koninkl Philips Electronics Nv System zum Übertragen und/oder Speichern von Signalen von texturierten Bildern
AU3247393A (en) 1991-12-23 1993-07-28 Intel Corporation Circuitry for decoding huffman codes
JPH05199422A (ja) 1992-01-20 1993-08-06 Fujitsu General Ltd 画像伝送装置
US6680975B1 (en) * 1992-02-29 2004-01-20 Samsung Electronics Co., Ltd. Signal encoding and decoding system and method
EP0559348A3 (de) * 1992-03-02 1993-11-03 AT&T Corp. Rateurregelschleifenprozessor für einen wahrnehmungsgebundenen Koder/Dekoder
CA2090052C (en) * 1992-03-02 1998-11-24 Anibal Joao De Sousa Ferreira Method and apparatus for the perceptual coding of audio signals
US5227788A (en) 1992-03-02 1993-07-13 At&T Bell Laboratories Method and apparatus for two-component signal compression
US5714950A (en) * 1992-07-23 1998-02-03 Samsung Electronics Co., Ltd. System for variable-length-coding and variable-length-decoding digitaldata
KR950010913B1 (ko) 1992-07-23 1995-09-25 삼성전자주식회사 가변장부호화 및 복호화시스템
JP3348310B2 (ja) 1992-09-28 2002-11-20 ソニー株式会社 動画像符号化方法および動画像符号化装置
CA2107727C (en) * 1992-10-07 1999-06-01 Hiroaki Ueda Synchronous compression and reconstruction system
US5982437A (en) 1992-10-26 1999-11-09 Sony Corporation Coding method and system, and decoding method and system
JP2959916B2 (ja) 1992-10-28 1999-10-06 松下電器産業株式会社 デジタル・ビデオ・コーダ用のバーサタイルなエスケープ・ラン・レベル・コーダ
KR0166722B1 (ko) 1992-11-30 1999-03-20 윤종용 부호화 및 복호화방법 및 그 장치
US5367629A (en) 1992-12-18 1994-11-22 Sharevision Technology, Inc. Digital video compression system utilizing vector adaptive transform
US5467134A (en) 1992-12-22 1995-11-14 Microsoft Corporation Method and system for compressing video data
US5535305A (en) 1992-12-31 1996-07-09 Apple Computer, Inc. Sub-partitioned vector quantization of probability density functions
US5400075A (en) 1993-01-13 1995-03-21 Thomson Consumer Electronics, Inc. Adaptive variable length encoder/decoder
JPH06217110A (ja) 1993-01-20 1994-08-05 Process Shizai Kk 画像変換方法
US5544286A (en) 1993-01-29 1996-08-06 Microsoft Corporation Digital video data compression technique
TW224553B (en) 1993-03-01 1994-06-01 Sony Co Ltd Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture
US5376968A (en) * 1993-03-11 1994-12-27 General Instrument Corporation Adaptive compression of digital video data using different modes such as PCM and DPCM
US5408234A (en) * 1993-04-30 1995-04-18 Apple Computer, Inc. Multi-codebook coding process
US5717821A (en) 1993-05-31 1998-02-10 Sony Corporation Method, apparatus and recording medium for coding of separated tone and noise characteristic spectral components of an acoustic sibnal
US5664057A (en) * 1993-07-07 1997-09-02 Picturetel Corporation Fixed bit rate speech encoder/decoder
KR0155784B1 (ko) * 1993-12-16 1998-12-15 김광호 영상데이타의 적응형 가변장 부호화/복호화방법
KR970009408B1 (ko) 1994-01-18 1997-06-13 대우전자 주식회사 인터/인트라 테이블 선택 회로
JP3277677B2 (ja) 1994-04-01 2002-04-22 ソニー株式会社 信号符号化方法及び装置、信号記録媒体、信号伝送方法、並びに信号復号化方法及び装置
US5504591A (en) 1994-04-25 1996-04-02 Microsoft Corporation System and method for compressing graphic images
US5457495A (en) 1994-05-25 1995-10-10 At&T Ipm Corp. Adaptive video coder with dynamic bit allocation
US5748786A (en) * 1994-09-21 1998-05-05 Ricoh Company, Ltd. Apparatus for compression using reversible embedded wavelets
US5881176A (en) * 1994-09-21 1999-03-09 Ricoh Corporation Compression and decompression with wavelet style and binary style including quantization by device-dependent parser
US6141446A (en) 1994-09-21 2000-10-31 Ricoh Company, Ltd. Compression and decompression system with reversible wavelets and lossy reconstruction
US6195465B1 (en) * 1994-09-21 2001-02-27 Ricoh Company, Ltd. Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US5568167A (en) 1994-09-23 1996-10-22 C-Cube Microsystems, Inc. System for providing antialiased video overlays
JP3474005B2 (ja) 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
JPH08116263A (ja) 1994-10-17 1996-05-07 Fujitsu Ltd データ処理装置及びデータ処理方法
US5802213A (en) * 1994-10-18 1998-09-01 Intel Corporation Encoding video signals using local quantization levels
WO1996014695A1 (en) 1994-11-04 1996-05-17 Philips Electronics N.V. Encoding and decoding of a wideband digital information signal
US5473376A (en) 1994-12-01 1995-12-05 Motorola, Inc. Method and apparatus for adaptive entropy encoding/decoding of quantized transform coefficients in a video compression system
JPH08167852A (ja) 1994-12-13 1996-06-25 Fujitsu Ltd データ圧縮方法及び装置
US5654702A (en) 1994-12-16 1997-08-05 National Semiconductor Corp. Syntax-based arithmetic coding for low bit rate videophone
JP3371590B2 (ja) 1994-12-28 2003-01-27 ソニー株式会社 高能率符号化方法及び高能率復号化方法
JP2951861B2 (ja) 1994-12-28 1999-09-20 シャープ株式会社 画像符号化装置及び画像復号装置
JPH08190764A (ja) 1995-01-05 1996-07-23 Sony Corp ディジタル信号処理方法、ディジタル信号処理装置及び記録媒体
JPH08205169A (ja) 1995-01-20 1996-08-09 Matsushita Electric Ind Co Ltd 動画像符号化装置及び復号装置
JP3238854B2 (ja) * 1995-02-21 2001-12-17 富士通株式会社 データ圧縮方法及びデータ圧縮装置、並びにデータ復元方法及びデータ復元装置
US5574449A (en) * 1995-02-24 1996-11-12 Intel Corporation Signal processing with hybrid variable-length and entropy encodidng
US5991451A (en) 1995-03-23 1999-11-23 Intel Corporation Variable-length encoding using code swapping
US5884269A (en) 1995-04-17 1999-03-16 Merging Technologies Lossless compression/decompression of digital audio data
US5864711A (en) 1995-07-05 1999-01-26 Microsoft Corporation System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate
US5825830A (en) 1995-08-17 1998-10-20 Kopf; David A. Method and apparatus for the compression of audio, video or other data
US5970173A (en) 1995-10-05 1999-10-19 Microsoft Corporation Image compression and affine transformation for image motion compensation
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
US5889891A (en) 1995-11-21 1999-03-30 Regents Of The University Of California Universal codebook vector quantization with constrained storage
JP3283413B2 (ja) * 1995-11-30 2002-05-20 株式会社日立製作所 符号化復号方法、符号化装置および復号装置
US5956674A (en) * 1995-12-01 1999-09-21 Digital Theater Systems, Inc. Multi-channel predictive subband audio coder using psychoacoustic adaptive bit allocation in frequency, time and over the multiple channels
JPH09162748A (ja) * 1995-12-01 1997-06-20 Fujitsu Ltd データ符号化方法、データ復号方法、データ圧縮装置、データ復元装置、及びデータ圧縮・復元システム
US5831559A (en) * 1996-01-24 1998-11-03 Intel Corporation Encoding/decoding video signals using multiple run-val mapping tables
US6957350B1 (en) 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5675332A (en) * 1996-02-01 1997-10-07 Samsung Electronics Co., Ltd. Plural-step chunk-at-a-time decoder for variable-length codes of Huffman type
US5682152A (en) 1996-03-19 1997-10-28 Johnson-Grace Company Data compression using adaptive bit allocation and hybrid lossless entropy encoding
US5812971A (en) 1996-03-22 1998-09-22 Lucent Technologies Inc. Enhanced joint stereo coding method using temporal envelope shaping
US6215910B1 (en) 1996-03-28 2001-04-10 Microsoft Corporation Table-based compression with embedded coding
US5850482A (en) * 1996-04-17 1998-12-15 Mcdonnell Douglas Corporation Error resilient method and apparatus for entropy coding
EP1835760B1 (de) 1996-05-28 2012-01-04 Panasonic Corporation Vorrichtung und Verfahren zur intraprädiktiven Bilddekodierung
WO1998000924A1 (en) * 1996-06-28 1998-01-08 Philips Electronics N.V. High performance variable length decoder with two-word bit stream segmentation and related method
CN1097957C (zh) 1996-07-03 2003-01-01 摩托罗拉公司 用于基于边界的自适应熵编码/解码的方法和装置
DE19628292B4 (de) 1996-07-12 2007-08-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Verfahren zum Codieren und Decodieren von Stereoaudiospektralwerten
DE19628293C1 (de) 1996-07-12 1997-12-11 Fraunhofer Ges Forschung Codieren und Decodieren von Audiosignalen unter Verwendung von Intensity-Stereo und Prädiktion
US5828426A (en) 1996-08-20 1998-10-27 Samsung Electronics Co., Ltd. Apparatus for decoding variable length coded data of both MPEG-1 and MPEG-2 standards
JP3318825B2 (ja) * 1996-08-20 2002-08-26 ソニー株式会社 デジタル信号符号化処理方法、デジタル信号符号化処理装置、デジタル信号記録方法、デジタル信号記録装置、記録媒体、デジタル信号伝送方法及びデジタル信号伝送装置
US5734340A (en) * 1996-08-27 1998-03-31 Symantech Corporation Method and apparatus for storing run-intensive information in compact form
US6233017B1 (en) 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US5748789A (en) 1996-10-31 1998-05-05 Microsoft Corporation Transparent block skipping in object-based video coding systems
SG102016A1 (en) 1996-11-06 2004-02-27 Matsushita Electric Ind Co Ltd Image coding and decoding methods
DE69738056T2 (de) * 1996-11-07 2008-05-15 Koninklijke Philips Electronics N.V. Übertragung eines Bitstromsignals
DE69723959T2 (de) * 1996-11-11 2004-06-17 Koninklijke Philips Electronics N.V. Datenkompression und -dekompression durch rice-kodierer/-dekodierer
US5903231A (en) * 1996-12-16 1999-05-11 Vidicast Ltd. System for encoding base N data using a multi-level coding scheme
JP3484310B2 (ja) 1997-01-17 2004-01-06 松下電器産業株式会社 可変長符号器
NL1005084C2 (nl) 1997-01-24 1998-07-27 Oce Tech Bv Werkwijze voor het uitvoeren van een beeldbewerkingsoperatie op looplengte gecodeerde bitmaps.
JP3534577B2 (ja) 1997-07-23 2004-06-07 日本電信電話株式会社 情報多重化方法、情報抽出方法及びそれらの装置
US6038536A (en) * 1997-01-31 2000-03-14 Texas Instruments Incorporated Data compression using bit change statistics
US6272175B1 (en) 1997-02-13 2001-08-07 Conexant Systems, Inc. Video signal coding systems and processes using adaptive quantization
JPH10229340A (ja) 1997-02-14 1998-08-25 Nec Corp サブバンド信号およびウエーブレット変換係数の符号化復号方式
US6005980A (en) 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5974184A (en) 1997-03-07 1999-10-26 General Instrument Corporation Intra-macroblock DC and AC coefficient prediction for interlaced digital video
FI114248B (fi) 1997-03-14 2004-09-15 Nokia Corp Menetelmä ja laite audiokoodaukseen ja audiodekoodaukseen
US6728775B1 (en) 1997-03-17 2004-04-27 Microsoft Corporation Multiple multicasting of multimedia streams
US6009387A (en) * 1997-03-20 1999-12-28 International Business Machines Corporation System and method of compression/decompressing a speech signal by using split vector quantization and scalar quantization
US6404813B1 (en) * 1997-03-27 2002-06-11 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
US5883633A (en) 1997-04-15 1999-03-16 Microsoft Corporation Method and system of variable run length image encoding using sub-palette
US6259810B1 (en) 1997-04-15 2001-07-10 Microsoft Corporation Method and system of decoding compressed image data
JP3410629B2 (ja) * 1997-05-21 2003-05-26 シャープ株式会社 可変長符号化回路及び可変長符号化方法
US6580834B2 (en) * 1997-05-30 2003-06-17 Competitive Technologies Of Pa, Inc. Method and apparatus for encoding and decoding signals
DE69826971T2 (de) * 1997-07-11 2005-11-17 Koninklijke Philips Electronics N.V. Übertragungssystem mit kodierer variabler länge
DE19730129C2 (de) 1997-07-14 2002-03-07 Fraunhofer Ges Forschung Verfahren zum Signalisieren einer Rauschsubstitution beim Codieren eines Audiosignals
DE19730130C2 (de) * 1997-07-14 2002-02-28 Fraunhofer Ges Forschung Verfahren zum Codieren eines Audiosignals
US6421738B1 (en) 1997-07-15 2002-07-16 Microsoft Corporation Method and system for capturing and encoding full-screen video graphics
JP3884172B2 (ja) * 1997-10-02 2007-02-21 株式会社東芝 可変長復号化装置および復号化方法
US6493385B1 (en) 1997-10-23 2002-12-10 Mitsubishi Denki Kabushiki Kaisha Image encoding method, image encoder, image decoding method, and image decoder
EP1565002B1 (de) 1997-10-23 2007-12-12 Mitsubishi Denki Kabushiki Kaisha Vorrichtung zur Erzeugung eines Bitstroms
JPH11161782A (ja) 1997-11-27 1999-06-18 Seiko Epson Corp カラー画像の符号化方法およびその符号化装置ならびにカラー画像の復号化方法およびその復号化装置
US6111914A (en) 1997-12-01 2000-08-29 Conexant Systems, Inc. Adaptive entropy coding in adaptive quantization framework for video signal coding systems and processes
US5946043A (en) 1997-12-31 1999-08-31 Microsoft Corporation Video coding using adaptive coding of block parameters for coded/uncoded blocks
US6226407B1 (en) 1998-03-18 2001-05-01 Microsoft Corporation Method and apparatus for analyzing computer screens
US6054943A (en) 1998-03-25 2000-04-25 Lawrence; John Clifton Multilevel digital information compression based on lawrence algorithm
US7263127B1 (en) * 1998-04-02 2007-08-28 Intel Corporation Method and apparatus for simplifying frame-based motion estimation
JP2002518916A (ja) * 1998-06-19 2002-06-25 イクエーター テクノロジーズ インコーポレイテッド 第1の解像度を有する符号化された形式の画像を第2の解像度を有するデコードされた形式の画像に直接にデコードする回路及び方法
JP3413720B2 (ja) 1998-06-26 2003-06-09 ソニー株式会社 画像符号化方法及び装置、並びに画像復号方法及び装置
US6253165B1 (en) * 1998-06-30 2001-06-26 Microsoft Corporation System and method for modeling probability distribution functions of transform coefficients of encoded signal
DE19840835C2 (de) 1998-09-07 2003-01-09 Fraunhofer Ges Forschung Vorrichtung und Verfahren zum Entropiecodieren von Informationswörtern und Vorrichtung und Verfahren zum Decodieren von Entropie-codierten Informationswörtern
JP3711762B2 (ja) 1998-09-16 2005-11-02 富士ゼロックス株式会社 画像符号化装置および方法
US6420980B1 (en) 1998-10-06 2002-07-16 Matsushita Electric Industrial Co., Ltd. Lossless compression encoding method and device, and lossless compression decoding method and device
US6233359B1 (en) * 1998-10-29 2001-05-15 Seiko Epson Corporation File size bounded JPEG transcoder (FSBJT)
US6300888B1 (en) 1998-12-14 2001-10-09 Microsoft Corporation Entrophy code mode switching for frequency-domain audio coding
US6404931B1 (en) 1998-12-14 2002-06-11 Microsoft Corporation Code book construction for variable to variable length entropy encoding
US6377930B1 (en) 1998-12-14 2002-04-23 Microsoft Corporation Variable to variable length entropy encoding
US6223162B1 (en) 1998-12-14 2001-04-24 Microsoft Corporation Multi-level run length coding for frequency-domain audio coding
US6100825A (en) 1998-12-31 2000-08-08 Microsoft Corporation Cluster-based data compression system and method
JP3434260B2 (ja) 1999-03-23 2003-08-04 日本電信電話株式会社 オーディオ信号符号化方法及び復号化方法、これらの装置及びプログラム記録媒体
US6477280B1 (en) 1999-03-26 2002-11-05 Microsoft Corporation Lossless adaptive encoding of finite alphabet data
WO2000059116A1 (en) 1999-03-26 2000-10-05 Microsoft Corporation Lossless adaptive encoding of finite alphabet data
US6678419B1 (en) 1999-03-26 2004-01-13 Microsoft Corporation Reordering wavelet coefficients for improved encoding
US7050503B2 (en) 1999-04-17 2006-05-23 Pts Corporation Segment-based encoding system using residue coding by basis function coefficients
JP3323175B2 (ja) 1999-04-20 2002-09-09 松下電器産業株式会社 符号化装置
US6573915B1 (en) 1999-12-08 2003-06-03 International Business Machines Corporation Efficient capture of computer screens
JP3419371B2 (ja) 1999-12-28 2003-06-23 松下電器産業株式会社 符号長計算装置、及び符号化装置
US6771824B1 (en) 1999-12-28 2004-08-03 Lucent Technologies Inc. Adaptive variable length decoding method
US6567781B1 (en) * 1999-12-30 2003-05-20 Quikcat.Com, Inc. Method and apparatus for compressing audio data using a dynamical system having a multi-state dynamical rule set and associated transform basis function
JP3603000B2 (ja) 2000-02-01 2004-12-15 カネボウ株式会社 ハフマン符号化装置、ハフマン符号化方法およびハフマン符号化処理プログラムを記録した記録媒体
US6552673B2 (en) 2000-02-25 2003-04-22 Texas Instruments Incorporated Efficient table access for reversible variable length code decoding using a hash function
US6771828B1 (en) * 2000-03-03 2004-08-03 Microsoft Corporation System and method for progessively transform coding digital data
EP1294197A4 (de) * 2000-05-23 2004-11-24 Matsushita Electric Ind Co Ltd Verfahren und vorrichtung zur kodierung mit variabler länge
US6542863B1 (en) 2000-06-14 2003-04-01 Intervideo, Inc. Fast codebook search method for MPEG audio encoding
US6373411B1 (en) 2000-08-31 2002-04-16 Agere Systems Guardian Corp. Method and apparatus for performing variable-size vector entropy coding
JP4508490B2 (ja) 2000-09-11 2010-07-21 パナソニック株式会社 符号化装置および復号化装置
US6961685B2 (en) * 2000-09-19 2005-11-01 Sy Bon K Probability model selection using information-theoretic optimization criterion
WO2002035849A1 (en) * 2000-10-24 2002-05-02 Eyeball Networks Inc. Three-dimensional wavelet-based scalable video compression
US6735339B1 (en) * 2000-10-27 2004-05-11 Dolby Laboratories Licensing Corporation Multi-stage encoding of signal components that are classified according to component value
US6373412B1 (en) 2000-12-15 2002-04-16 International Business Machines Corporation Fast JPEG huffman encoding and decoding
JP3580251B2 (ja) 2000-12-27 2004-10-20 日本電気株式会社 データ圧縮装置及び圧縮方法並びにその制御プログラムを記録した記録媒体
US7274671B2 (en) 2001-02-09 2007-09-25 Boly Media Communications, Inc. Bitwise adaptive encoding using prefix prediction
CN100456640C (zh) * 2001-06-07 2009-01-28 日本胜利株式会社 调制和解调方法与装置、信息传输方法和装置
US6650784B2 (en) 2001-07-02 2003-11-18 Qualcomm, Incorporated Lossless intraframe encoding using Golomb-Rice
US6587057B2 (en) * 2001-07-25 2003-07-01 Quicksilver Technology, Inc. High performance memory efficient variable-length coding decoder
US20030033143A1 (en) * 2001-08-13 2003-02-13 Hagai Aronowitz Decreasing noise sensitivity in speech processing under adverse conditions
US6856701B2 (en) 2001-09-14 2005-02-15 Nokia Corporation Method and system for context-based adaptive binary arithmetic coding
US6959116B2 (en) 2001-09-18 2005-10-25 Emc Corporation Largest magnitude indices selection for (run, level) encoding of a block coded picture
WO2003045065A2 (en) 2001-11-22 2003-05-30 Matsushita Electric Industrial Co., Ltd. Variable length coding method and variable length decoding method
US6825847B1 (en) 2001-11-30 2004-11-30 Nvidia Corporation System and method for real-time compression of pixel colors
US7165028B2 (en) * 2001-12-12 2007-01-16 Texas Instruments Incorporated Method of speech recognition resistant to convolutive distortion and additive distortion
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
US7027982B2 (en) * 2001-12-14 2006-04-11 Microsoft Corporation Quality and rate control strategy for digital audio
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
KR100468844B1 (ko) 2002-01-07 2005-01-29 삼성전자주식회사 정지영상 및 동영상을 부호화/복호화하기 위한변환계수들의 최적주사방법
US7155065B1 (en) 2002-03-27 2006-12-26 Microsoft Corporation System and method for progressively transforming and coding digital data
US7139703B2 (en) * 2002-04-05 2006-11-21 Microsoft Corporation Method of iterative noise estimation in a recursive framework
US6653955B1 (en) * 2002-05-09 2003-11-25 Lsi Logic Corporation Multi-symbol variable length code decoder
GB2388502A (en) 2002-05-10 2003-11-12 Chris Dunn Compression of frequency domain audio signals
US7016547B1 (en) 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
KR100846778B1 (ko) * 2002-07-16 2008-07-16 삼성전자주식회사 복수개의 주사 패턴을 이용한 부호화 방법, 복호화 방법,및 그 장치
DE10236694A1 (de) * 2002-08-09 2004-02-26 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum skalierbaren Codieren und Vorrichtung und Verfahren zum skalierbaren Decodieren
US7424434B2 (en) * 2002-09-04 2008-09-09 Microsoft Corporation Unified lossy and lossless audio compression
US7328150B2 (en) * 2002-09-04 2008-02-05 Microsoft Corporation Innovations in pure lossless audio compression
US7502743B2 (en) * 2002-09-04 2009-03-10 Microsoft Corporation Multi-channel audio encoding and decoding with multi-channel transform selection
ATE543178T1 (de) * 2002-09-04 2012-02-15 Microsoft Corp Entropische kodierung mittels anpassung des kodierungsmodus zwischen niveau- und lauflängenniveau-modus
US7536305B2 (en) * 2002-09-04 2009-05-19 Microsoft Corporation Mixed lossless audio compression
US7299190B2 (en) * 2002-09-04 2007-11-20 Microsoft Corporation Quantization and inverse quantization for audio
US7433824B2 (en) * 2002-09-04 2008-10-07 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
US6795584B2 (en) 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
US20040136457A1 (en) 2002-10-23 2004-07-15 John Funnell Method and system for supercompression of compressed digital video
US6646578B1 (en) 2002-11-22 2003-11-11 Ub Video Inc. Context adaptive variable length decoding system and method
US7403561B2 (en) 2003-04-04 2008-07-22 Avid Technology, Inc. Fixed bit rate, intraframe compression and decompression of video
US7324927B2 (en) * 2003-07-03 2008-01-29 Robert Bosch Gmbh Fast feature selection method and system for maximum entropy modeling
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
CN1214649C (zh) * 2003-09-18 2005-08-10 中国科学院计算技术研究所 用于视频预测残差系数编码的熵编码方法
US7460990B2 (en) * 2004-01-23 2008-12-02 Microsoft Corporation Efficient coding of digital media spectral data using wide-sense perceptual similarity
US7454076B2 (en) * 2004-06-15 2008-11-18 Cisco Technology, Inc. Hybrid variable length coding method for low bit rate video coding
US7852916B2 (en) 2004-06-27 2010-12-14 Apple Inc. Efficient use of storage in encoding and decoding video data streams
KR100668302B1 (ko) 2004-07-28 2007-01-12 삼성전자주식회사 비디오 디코더/엔코더에서의 메모리 맵핑 장치 및 그 방법
KR100664932B1 (ko) * 2004-10-21 2007-01-04 삼성전자주식회사 비디오 코딩 방법 및 장치
US7809064B2 (en) 2004-11-15 2010-10-05 Industrial Technology Research Institute Systems and methods of flexible power management applicable to digital broadcasting
US20060176959A1 (en) 2005-02-07 2006-08-10 Paul Lu Method and system for encoding variable length code (VLC) in a microprocessor
US8422546B2 (en) 2005-05-25 2013-04-16 Microsoft Corporation Adaptive video encoding using a perceptual model
US7265691B2 (en) 2005-06-23 2007-09-04 1Stworks Corporation Modeling for enumerative encoding
US7684981B2 (en) * 2005-07-15 2010-03-23 Microsoft Corporation Prediction of spectral coefficients in waveform coding and decoding
US7546240B2 (en) * 2005-07-15 2009-06-09 Microsoft Corporation Coding with improved time resolution for selected segments via adaptive block transformation of a group of samples from a subband decomposition
US7599840B2 (en) * 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
US7630882B2 (en) * 2005-07-15 2009-12-08 Microsoft Corporation Frequency segmentation to obtain bands for efficient coding of digital media
US7693709B2 (en) * 2005-07-15 2010-04-06 Microsoft Corporation Reordering coefficients for waveform coding or decoding
US7562021B2 (en) * 2005-07-15 2009-07-14 Microsoft Corporation Modification of codewords in dictionary used for efficient coding of digital media spectral data
US7372378B2 (en) 2005-12-01 2008-05-13 Nvidia Corporation Efficient decoding of n-tuple variable bit length symbols
JP2007300389A (ja) 2006-04-28 2007-11-15 Victor Co Of Japan Ltd 画像符号化装置および画像符号化プログラム
US9070178B2 (en) * 2006-08-11 2015-06-30 Siemens Product Lifecycle Management Software Inc. Method and system for organizing topology elements for better compression
US7756350B2 (en) 2006-11-13 2010-07-13 Global Ip Solutions, Inc. Lossless encoding and decoding of digital data
US7761290B2 (en) * 2007-06-15 2010-07-20 Microsoft Corporation Flexible frequency and time partitioning in perceptual transform coding of audio
US20080317364A1 (en) 2007-06-25 2008-12-25 Augusta Technology, Inc. Methods for determining neighboring locations for partitions of a video stream
US7885819B2 (en) * 2007-06-29 2011-02-08 Microsoft Corporation Bitstream syntax for multi-process audio decoding
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
DE102010036672B4 (de) 2010-07-28 2022-12-08 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Cabriolet-Fahrzeug
US8278779B2 (en) 2011-02-07 2012-10-02 General Electric Company System and method for providing redundant power to a device

Also Published As

Publication number Publication date
EP2267698B1 (de) 2012-01-25
US7822601B2 (en) 2010-10-26
EP1734511A2 (de) 2006-12-20
DE20321883U1 (de) 2012-01-20
EP1734511B1 (de) 2009-11-18
ATE543178T1 (de) 2012-02-15
HK1152790A1 (en) 2012-03-09
HK1154302A1 (en) 2012-04-13
EP2006840A1 (de) 2008-12-24
US20080262855A1 (en) 2008-10-23
EP2282310A1 (de) 2011-02-09
US20140229186A1 (en) 2014-08-14
EP2006840B1 (de) 2012-07-04
US20110035225A1 (en) 2011-02-10
DE60317982D1 (de) 2008-01-24
US9390720B2 (en) 2016-07-12
EP1734511A3 (de) 2007-06-20
EP2282310B1 (de) 2012-01-25
US8712783B2 (en) 2014-04-29
US8090574B2 (en) 2012-01-03
ES2378462T3 (es) 2012-04-12
DK2282310T3 (da) 2012-02-20
EP1400954B1 (de) 2007-12-12
DE60330198D1 (de) 2009-12-31
EP1400954A3 (de) 2005-02-02
ES2334934T3 (es) 2010-03-17
EP1400954A2 (de) 2004-03-24
US20080228476A1 (en) 2008-09-18
ATE381090T1 (de) 2007-12-15
PT2282310E (pt) 2012-04-13
ES2297083T3 (es) 2008-05-01
ATE543179T1 (de) 2012-02-15
EP2267698A1 (de) 2010-12-29
US20120069899A1 (en) 2012-03-22
DK1400954T3 (da) 2008-03-31
ES2388942T3 (es) 2012-10-19
ATE449405T1 (de) 2009-12-15
US7840403B2 (en) 2010-11-23

Similar Documents

Publication Publication Date Title
DE60317982T2 (de) Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus
US7433824B2 (en) Entropy coding by adapting coding between level and run-length/level modes
DE69935811T3 (de) Frequenzbereichsaudiodekodierung mit Entropie-code Moduswechsel
DE69629369T2 (de) Verfahren zum kodieren wellenförmiger daten
DE69924431T2 (de) Vorrichtung und Verfahren zur dynamischen Bitverteilung für Audiokodierung
US5299239A (en) Signal encoding apparatus
US6223162B1 (en) Multi-level run length coding for frequency-domain audio coding
JP5688861B2 (ja) レベル・モードとラン・レングス/レベル・モードの間での符号化を適応させるエントロピー符号化
DE20321886U1 (de) Inverse Quantisierung für Audio
DE69938016T2 (de) Verfahren und Vorrichtung zur Maskierung des Quantisierungsrauschens von Audiosignalen
US20020049586A1 (en) Audio encoder, audio decoder, and broadcasting system
WO1999004505A1 (de) Verfahren zum signalisieren einer rauschsubstitution beim codieren eines audiosignals
JPH05347709A (ja) 高能率符号化装置
US20010053973A1 (en) Bit allocation apparatus and method
JPH0787330A (ja) 画像符号化方法
JP2002091498A (ja) オーディオ信号符号化装置
DE112021005067T5 (de) Codec mit hierarchischer räumlicher auflösung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition