DE20321886U1 - Inverse Quantisierung für Audio - Google Patents

Inverse Quantisierung für Audio Download PDF

Info

Publication number
DE20321886U1
DE20321886U1 DE20321886U DE20321886U DE20321886U1 DE 20321886 U1 DE20321886 U1 DE 20321886U1 DE 20321886 U DE20321886 U DE 20321886U DE 20321886 U DE20321886 U DE 20321886U DE 20321886 U1 DE20321886 U1 DE 20321886U1
Authority
DE
Germany
Prior art keywords
encoder
channel
audio
weighting factor
weighting
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
DE20321886U
Other languages
English (en)
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/642,551 external-priority patent/US7299190B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of DE20321886U1 publication Critical patent/DE20321886U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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/008Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Mathematical Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Transmission Systems Not Characterized By The Medium Used For Transmission (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

Computervorrichtung, umfassend: eine Kommunikationsverbindung, die eingerichtet ist zum Empfangen codierter Audioinformationen in einem Bitstrom, wobei die codierten Audioinformationen enthalten: Informationen, die eine Gewichtungsfaktorauflösung angeben, die einer Quantisierschrittgröße für Gewichtungsfaktoren entspricht; und entropiecodierte Differenzen für mehrere Gewichtungsfaktoren, wobei jeder der mehreren Gewichtungsfaktoren einen Gewichtungswert für ein oder mehrere Frequenzbänder für ein Zeitfenster angibt; und einen Audiodecodierer, der eingerichtet ist zum Decodieren von Audio unter Verwendung der codierten Audioinformationen, wobei: der Audiodecodierer eingerichtet ist, um die Gewichtungsfaktorauflösung basierend auf den Informationen in dem Bitstrom zu erhalten; der Audiodecodierer eingerichtet ist zum Decodieren eines momentanen Gewichtungsfaktors der mehreren Gewichtungsfaktoren mithilfe zeitlicher Vorhersage, wobei der momentane Gewichtungsfaktor einen Gewichtungswert für ein oder mehrere momentane Frequenzbänder für ein momentanes Zeitfenster angibt und wobei der Audiodecodierer für die Decodierung des momentanen Gewichtungsfaktors eingerichtet ist zum: Bestimmen eines entsprechenden Gewichtungsfaktors für das eine oder die mehreren momentanen Frequenzbänder für ein...

Description

  • VERWEIS AUF VERWANDTE ANMELDUNGEN
  • Die folgenden vorläufigen US-Patentanmeldungen beziehen sich auf die vorliegenden Anmeldungen: 1) vorläufige US-Patentanmeldung mit der Seriennummer 60/408,432 mit dem Titel ”Unified Lossy and Lossless Audio Compression”, eingereicht am 4. September 2002, deren Offenbarung hier durch Bezugnahme enthalten ist; und 2) vorläufige US-Patentanmeldung mit der Sriennummer 60/408,538 mit dem Titel ”Entropy Coding by Adapting Coding Between Level and Run Length/Level Modes”, eingereicht am 4. September 2002, deren Offenbarung hier durch Bezugnahme enthalten ist.
  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung bezieht sich auf die Verarbeitung von Audioinformationen beim Decodieren. Insbesondere bezieht sich die vorliegende Erfindung auf die inverse Quantisierung bei der Audio-Decodierung.
  • HINTERGRUND
  • Mit der Einführung von Compactdiscs, digitaler Drahtlostelefonnetze und der Verbreitung von Audio über das Internet, ist digitales Audio alltäglich geworden. Ingenieure nutzen eine Vielfalt von Techniken, um digitales Audio effizient zu verarbeiten, während gleichzeitig die Qualität des digitalen Audio erhalten bleibt. Um diese Techniken zu verstehen, ist es hilfreich zu begreifen, wie Audioinformationen in einem Computer dargestellt und verarbeitet werden.
  • I. Darstellung von Audioinformationen in einem Computer
  • Ein Computer verarbeitet Audioinformationen als eine Abfolge von Zahlen, die die Audioinformationen darstellen. Beispielsweise kann eine einzelne Zahl eine Audioabtastung darstellen, die ein Amplitudenwert (d. h. die Lautstärke) zu einem bestimmten Zeitpunkt ist. Zahlreiche Faktoren, wie etwa Abtasttiefe, Abtastrate und Kanalmodus, beeinflussen die Qualität der Audioinformationen.
  • Die Abtasttiefe (oder -präzision) kennzeichnet den Bereich von Zahlen, die zur Darstellung einer Abtastung verwendet werden. Je größer die Zahl der Werte ist, die für die Abtastung möglich sind, desto besser ist die Qualität, da die Zahl eine größere Zahl feiner Änderungen der Amplitude erfassen kann. Ein 8-Bit-Abtastung hat beispielsweise 256 mögliche Werte, während eine 16-Bit-Abtastung 65.536 Werte hat. Eine 24-Bit-Abtastung kann normale Lautstärkeänderungen sehr fein erfassen und zudem eine ungewöhnlich hohe Lautstärke erfassen.
  • Die Abtastrate (normalerweise gemessen als die Anzahl der Abtastungen pro Sekunde) beeinfluss ebenfalls die Qualität. Je höher die Abtastrate ist, desto besser ist die Qualität, da eine größere Zahl von Tonfrequenzen dargestellt werden kann. Einige gängige Abtastraten liegen bei 8.000, 11.025, 32.000, 44.100, 48.000 und 96.000 Abtastungen/Sekunde.
  • Mono und Stereo sind zwei übliche Kanalmodi für das Audio. In dem Monomodus sind die Audioinformationen in einem Kanal vorhanden. Bei dem Stereomodus sind die Audioinformationen auf zwei Kanäle verteilt, die normalerweise mit linkem und rechtem Kanal gekennzeichnet sind. Es sind zudem weitere Modi mit einer größeren Zahl von Kanälen, wie etwa 5.1-Kanal-, 7.1-Kanal- oder 9.1-Kanal-Surround-Sound möglich (wobei ”1” einen Sub-Woofer oder einen Niederfrequenzeffektkanal kennzeichnet. Tabelle 1 stellt zahlreiche Audioformate mit unterschiedlichen Qualitätsniveaus zusammen mit entsprechendem Bitratenaufwand dar. Tabelle 1: Bitraten für Audioinformationen unterschiedlicher Qualität
    Qualität Abtasttiefe (Bits/Abtastung) Abtastrate (Abtastungen/Sekunde) Modus Roh-Bitrate (Bits/Sekunde)
    Internettelefonie 8 8.000 mono 64.000
    Telefon 8 11.025 mono 88.200
    CD-Audio 16 44.100 stereo 1.411.200
  • Surround-Sound-Audio verfügt normalerweise sogar über eine höhere Bitrate. Wie Tabelle 1 zeigt, besteht der Aufwand für qualitativ hochwertige Audioinformationen in einer hohen Bitrate. Qualitativ hochwertige Audioinformationen beanspruchen einen großen Umfang von Computerspeicherplatz und Übertragungskapazität. Unternehmen und Verbraucher sind jedoch in zunehmendem Maße von Computern abhängig, um qualitativ hochwertigen Mehrkanalaudioinhalt zu erzeugen, zu verbreiten und wiederzugeben.
  • II. Verarbeiten von Audioinformationen in einem Computer
  • Zahlreiche Computer und Computernetze verfügen nicht über ausreichende Ressourcen, um unkomprimiertes Digitalaudio zu verarbeiten. Kompression (auch Encodierung oder Codierung genannt) verringert den Aufwand für Speicherung und Übertragung von Audioinformationen, indem die Informationen in eine Form mit geringerer Bitrate umgewandelt werden. Die Codierung kann verlustfrei (worunter die Qualität nicht leidet) und verlustbehaftet sein (worunter die Qualität leidet, wobei jedoch die Bitratenverringerung im Vergleich zu einer anschließenden verlustfreien Kompression dramatischer ist). Die Dekompression (auch Decodierung genannt) extrahiert eine rekonstruierte Version der ursprünglichen Informationen aus der komprimierten Form.
  • A. Herkömmliche perzeptuelle Audio-Codierer und -Decodierer
  • Im allgemeinen besteht das Ziel der Audiokompression darin, Audiosignale digital darzustellen, um eine maximale Signalqualität mit der geringstmöglichen Anzahl von Bits zu erzeugen. Ein herkömmliches Audio-Codier-/Decodier-[”Codec”]-System wendet die Subband-/Transformations-Codierung, die Quantisierung, Ratensteuerung und Codierung mit variabler Länge an, um seine Kompression zu erreichen. Die Quantisierung sowie andere verlustbehaftete Kompressionstechniken leiten möglicherweise hörbares Rauschen in ein Audiosignal ein. Die Hörbarkeit des Rauschens hängt davon ab, wie viel Rauschen vorhanden ist, und wie groß der Anteil des Rauschens ist, das der Zuhörer wahrnimmt. Der erste Faktor bezieht sich hauptsächlich auf die objektive Qualität, während der zweite Faktor von der menschlichen Wahrnehmung von Ton abhängt.
  • 1 zeigt ein verallgemeinertes Diagramm eines transformationsbasierten, perzeptuellen Audiocodierers (100) gemäß dem Stand der Technik. 2 zeigt ein verallgemeinertes Diagramm eines entsprechenden Audiodecodierers (200) gemäß dem Stand der Technik. Wenngleich das in 1 und 2 dargestellte Codec-System verallgemeinert ist, weist es doch Eigenschaften auf, die man in zahlreichen tatsächlichen Codec-System findet, wie etwa die Versionen des Windows -Media-Audio-[”WMA”]-Codierers und -Decodierers. Andere Codec-Systeme sind durch Motion Picture Experts Group, den Standard Audio Layer 3 [”MP3”], Motion Picture Experts Group 2, den Standard Advanced Audio Coding [”AAC”] und Dolby AC3 bereitgestellt oder festgelegt. Für weiterführende Informationen bezüglich dieser Codec-Systeme, siehe die entsprechenden Standards oder technischen Veröffentlichungen.
  • 1. Perzeptueller Audio-Codierer
  • Im allgemeinen empfängt der Codierer (100) eine Zeitabfolge von Eingangsaudioabtastungen (105), komprimiert die Audioabtastungen (105) und multiplexiert Informationen, die von den unterschiedlichen Modulen des Codierers (100) erzeugt werden, um einen Bitstrom (195) auszugeben. Der Codierer (100) enthält einen Frequenzwandler (110), einen Mehrkanalwandler (120), einen Wahrnehmungsmodellierer (130), einen Gewichter (140), einen Quantisierer (150), einen Entropiecodierer (160), eine Steuereinheit (170) und einen Bitstrommultiplexer [”MUX”].
  • Der Frequenzwandler (110) empfängt die Audioabtastungen (105) und wandelt sie in Daten in der Frequenzdomäne um. Beispielsweise teilt der Frequenzwandler (110) die Audioabtastungen (105) in Blöcke, die eine unterschiedliche Größe haben können, um eine variable zeitliche Auflösung zu gestatten. Kleinere Blöcke gestatten einen besseren Erhalt des Zeitdetails bei kurzen, jedoch aktiven Übergangssegmenten in den eingegebenen Audioabtastungen (105), opfern jedoch einen Teil der Frequenzauflösung. Im Gegensatz dazu haben große Blöcke eine bessere Frequenzauflösung sowie eine schlechtere Zeitauflösung und gestatten normalerweise einen größeren Kompressionswirkungsgrad bei längeren und weniger aktiven Segmenten. Blöcke können überlappen, um wahrnehmbare Diskontinuitäten zwischen Blöcken zu verringern, die andernfalls durch eine spätere Quantisierung hervorgerufen werden könnten. Bei Mehrkanalaudio verwendet der Frequenzwandler (110) dasselbe Muster von Fenstern für jeden Kanal in einem einzelnen Frame an. Der Frequenzwandler (110) gibt Blöcke von Frequenzkoeffizientendaten an den Mehrkanalwandler (120) aus und gibt Nebeninformationen, wie etwa Blockgrößen, an den MUX (180) aus.
  • Bei Mehrkanalaudiodaten korrelieren oftmals die zahlreichen Kanäle von Frequenzkoeffizientendaten, die von dem Frequenzwandler (110) erzeugt werden. Um diese Korrelation zu nutzen, kann der Mehrkanalwandler (120) die zahlreichen ursprünglichen, unabhängig codierten Kanäle in gemeinsam codierte Kanäle umwandeln. Ist der Eingang beispielsweise der Stereomodus, kann der Mehrkanalwandler (120) den rechten und den linken Kanal in Summen- und Differenzkanäle umwandeln:
    Figure 00050001
  • Oder der Mehrkanalwandler (120) kann den linken und den rechten Kanal als unabhängig codierte Kanäle durchreichen. Die Entscheidung über die Verwendung unabhängig oder gemeinsam codierter Kanäle ist vorbestimmt oder wird adaptiv während der Codierung getroffen. Der Codierer (100) bestimmt beispielsweise, ob die Stereokanäle gemeinsam oder unabhängig codiert werden sollen, mit einer Auswahlentscheidung mit offener Schleife, die (a) die Energietrennung zwischen Codierkanälen mit und ohne der Mehrkanaltransformation und (b) die Ungleichheit in Anregungsmustern zwischen dem linken und dem rechten Eingangskanal berücksichtigt. Eine derartige Entscheidung kann auf Basis Fenster für Fenster erfolgen oder nur einmal je Frame getroffen werden, um die Entscheidung zu vereinfachen. Der Mehrkanalwandler (120) erzeugt Nebeninformationen für den MUX (180), die den verwendeten Kanalmodus kennzeichnen.
  • Der Codierer (100) kann eine Mehrkanal-Matrixneuanordnung auf einen Block von Audiodaten nach einer Mehrkanaltransformation anwenden. Bei Mehrkanalaudiodaten geringer Bitrate in gemeinsam codierten Kanälen unterdrückt der Codierer (100) selektiv Informationen in bestimmten Kanälen (z. B. dem Differenzkanal), um die Qualität des/der verbleibenden Kanals/Kanäle (wie etwa dem Summenkanal) zu verbessern. Beispielsweise skaliert der Codierer (100) den Differenzkanal mit einem Skalierfaktor ρ: xDiff[k] = ρ·XDiff[k] (3) wobei der Wert von ρ basiert auf: (a) momentanen Durchschnittspegeln eines Maßes für wahrnehmbare Audioqualität, wie etwa einem Rausch-Anregungs-Abstand [”NER”], (b) einem momentanen Füllstand eines virtuellen Puffers, (c) Bitraten- und Abtastrateneinstellungen des Codierers (100) und (d) der Kanaltrennung in dem linken und rechten Eingangskanal.
  • Der Wahrnehmungsmodellierer (130) verarbeitete die Audiodaten gemäß einem Model des menschlichen Gehörs, um die wahrgenommene Qualität des rekonstruierten Audiosignals für eine gegeben Bitrate zu verbessern. Ein Hörmodell berücksichtigt normalerweise beispielsweise den Bereich des menschlichen Gehörs und kritische Bänder. Das menschliche Nervensystem integriert Frequenzteilbereiche. Aus diesem Grund kann ein Hörmodell Audioinformationen durch kritische Bänder organisieren und verarbeiten. Unterschiedliche Hörmodelle verwenden eine unterschiedliche Zahl kritischer Bänder (z. B. 25, 32, 55 oder 109) und/oder unterschiedliche Grenzfrequenzen für die kritischen Bänder. Barkbänder sind ein hinreichend bekanntes Beispiel für kritische Bänder. Neben dem Bereich und den kritischen Bändern können Wechselwirkungen zwischen Audiosignalen die Wahrnehmung deutlich beeinflussen. Ein Audiosignal, das deutlich hörbar ist, wenn es alleine dargestellt wird, kann in Gegenwart eines weiteren Audiosignals, das Maskierer oder Maskiersignal genannt wird, vollständig unhörbar sein. Das menschliche Ohr ist relativ unempfindlich für eine Verzerrung oder einen anderen Verlust der Wiedergabetreue (d. h. Rauschen) in dem maskierten Signal, so dass das maskierte Signale mehr Rauschen enthalten kann, ohne die wahrgenommene Audioqualität zu beeinträchtigen. Darüber hinaus kann ein Hörmodell eine Vielfalt anderer Faktoren berücksichtigen, die sich auf physische oder neurale Aspekte der menschlichen Wahrnehmung von Ton beziehen.
  • Der Wahrnehmungsmodellierer (130) gibt Informationen aus, die der Gewichter (140) verwendet, um das Rauschen in den Audiodaten zu formen und so die Hörbarkeit des Rauschens zu verringern. Mit Hilfe beliebiger unterschiedlicher Techniken erzeugt der Gewichter (140) Gewichtungsfaktoren (die bisweilen Skalierfaktoren genannt werden) für Quantisiermatrizen (bisweilen Maskierungen genannt) auf der Basis der empfangenen Informationen. Die Gewichtungsfaktoren in einer Quantisiermatrix enthalten eine Gewichtung für jedes einer Vielzahl von Quantisierbändern in den Audiodaten, wobei die Quantisierbänder Frequenzbereiche von Frequenzkoeffizienten sind. Die Anzahl von Quantisierbändern kann kleiner oder gleich der Anzahl kritischer Bänder sein. Somit kennzeichnen die Gewichtungsfaktoren Anteile, an denen Rauschen über die Quantisierbänder gestreut ist, mit dem Ziel der Minimierung der Hörbarkeit des Rauschens durch Verlagern von mehr Rauschen in die Bänder, in denen es weniger hörbar ist, und umgekehrt. Die Gewichtungsfaktoren können hinsichtlich Amplitude und Zahl von Quantisierbändern von Block zu Block variieren. Anschließend wendet der Gewichter (140) die Gewichtungsfaktoren auf die Daten an, die von dem Mehrkanalwandler (120) empfangen werden.
  • Bei einer Anwendung erzeugt der Gewichter (140) einen Satz von Gewichtungsfaktoren für jedes Fenster jedes Kanals des Mehrkanalaudios, oder verteilt einen einzelnen Satz von Gewichtungsfaktoren auf parallele Fenster gemeinsam codierter Kanäle. Der Gewichter (140) gibt gewichtete Blöcke von Koeffizientendaten an den Quantisierer (150) aus und gibt Nebeninformationen, wie etwa die Sätze von Gewichtungsfaktoren an den MUX (180) aus.
  • Ein Satz von Gewichtungsfaktoren kann für eine effizientere Darstellung unter Verwendung der direkten Kompression komprimiert werden. Der Codierer codiert anschließend differentiell die quantisierten Elemente relativ zu vorausgehenden Elementen in der Matrix und führt eine Huffman-Codierung an den differentiell codierten Elementen aus. In einigen Fällen (wenn beispielsweise sämtliche Koeffizienten bestimmter Quantisierbänder quantisiert oder auf einen Wert von 0 gekürzt wurden) benötigt der Decodierer (200) keine Gewichtungsfaktoren für sämtliche Quantisierbänder. In derartigen Fällen vergibt der Codierer (100) Werte auf einen oder mehrere nicht benötigte Gewichtungsfaktoren, die mit dem Wert des nächsten benötigten Gewichtungsfaktor in einer Abfolge identisch sind, wodurch das differentielle Codieren von Elementen der Quantisiermatrix effizienter wird.
  • Oder der Codierer (100) kann für Anwendungen niedriger Bitrate eine Quantisiermatrix, um die Quantisiermatrix als einen Satz von Parametern darzustellen, beispielsweise unter Verwendung des Linear Predictive Coding [”LPC”] von Pseudo-Autokorrelations-Parametern, die aus der Quantisiermatrix berechnet, parametrisch komprimieren.
  • Der Quantisierer (150) quantisiert die Ausgabe des Gewichters (140), wodurch quantisierte Koeffizientendaten für den Entropiecodierer (160) und Nebeninformationen für den MUX (180) erzeugt werden, die die Quantisierschrittgröße beinhalten. Die Quantisierung ordnet Bereiche von Eingangswerten einzelnen Werten zu, wodurch ein irreversibler Verlust von Informationen hervorgerufen wird, es jedoch dem Codierer (100) auch gestattet ist, die Qualität und die Bitrate des Ausgangsbitstroms (195) in Verbindung mit der Steuereinheit (170) zu regulieren. In 1 ist der Quantisierer (150) ein adaptiver, einheitlicher Skalarquantisierer. Der Quantisierer (150) wendet dieselbe Quantisierschrittgröße auf jeden Frequenzkoeffizienten an, wobei sich jedoch die Quantisierschrittgröße an sich von einer Iteration einer Quantisierschleife bis zur nächsten ändern kann, um die Bitrate der Ausgabe des Entropiecodierers (160) zu beeinflussen. Andere Arten der Quantisierung sind die nicht einheitliche Vektorquantisierung und/oder die nicht adaptive Quantisierung.
  • Der Entropiecodierer (160) komprimiert verlustfrei quantisierte Koeffizientendaten, die von dem Quantisierer (150) empfangen werden. Der Entropiecodierer (160) kann die Anzahl von Bits, die zum Codieren von Audioinformationen verwendet werden berechnen, und reicht diese Informationen zu der Raten-/Qualitätssteuereinheit (170) weiter.
  • Die Steuereinheit (170) arbeitet mit dem Quantisierer (150), um die Bitrate und/oder Qualität der Ausgabe des Codierers (100) zu regulieren. Die Steuereinheit (170) empfängt Informationen von anderen Modulen des Codierers (100) und verarbeitet die empfangenen Informationen, um eine gewünschte Quantisierschrittgröße unter gegebenen Bedingungen zu bestimmen. Die Steuereinheit (170) gibt die Quantisierschrittgröße an den Quantisierer (150) mit dem Ziel aus, die Bitraten- und Qualitätsvorgaben zu erfüllen.
  • Der Codierer (100) kann eine Rauschsubstitution und/oder eine Bandkürzung auf einen Block von Audiodaten anwenden. Bei niedrigen und mittleren Bitraten kann der Audiocodierer (100) die Rauschsubstitution verwenden, um Informationen in bestimmten Bändern zu befördern. Bei der Bandkürzung, kann der Codierer (100), sofern die gemessen Qualität für einen Block eine geringe Qualität kennzeichnet, die Koeffizienten in bestimmten Bändern (normalerweise höherer Frequenz) vollständig eliminieren, um die Gesamtqualität in den verbleibenden Bändern zu verbessern.
  • Der MUX (180) multiplexiert die Nebeninformationen, die von den anderen Modulen des Audiocodierers (100) empfangen werden, zusammen mit den entropiecodierten Daten, die von dem Entropiecodierer (160) empfangen werden. Der MUX (180) gibt die Informationen in einem Format aus, das ein Audiodecodierer erkennt. Der MUX (180) enthält einen virtuellen Puffer, der den von dem Codierer (100) auszugebenden Bitstrom (195) speichert, um kurzzeitige Schwankungen der Bitrate infolge von Komplexitätsänderungen in dem Audio zu glätten.
  • 2. Perzeptueller Audiodecodierer
  • Im allgemeinen empfängt der Decodierer (200) einen Bitstrom (205) komprimierter Audioinformationen, die entropiecodierte Daten wie auch Nebeninformationen enthalten, aus denen der Decodierer (200) Audioabtastungen (295) rekonstruiert. Der Audiodecodierer (200) enthält einen Bitstrom-Demultiplexer [”DEMUX”], einen Entropiedecodierer (220), einen inversen Quantisierer (230), einen Rauschgenerator (240), einen inversen Gewichter (250), einen inversen Mehrkanalwandler (260) und einen inversen Frequenzwandler (270).
  • Der DEMUX (210) parst Informationen in dem Bitstrom (205) und sendet Informationen zu den Modulen des Decodierers (200). Der DEMUX (210) enthält wenigstens einen Puffer, um kurzzeitige Änderungen der Bitrate infolge von Schwankungen der Komplexität des Audios, Netzwerkjitter und/oder anderer Faktoren zu kompensieren.
  • Der Entropiedecodierer (220) dekomprimiert verlustfrei Entropiecodes, die von dem DEMUX (210) empfangen werden, wodurch quantisierte Frequenzkoeffizientendaten erzeugt werden. Der Entropiedecodierer (220) wendet normalerweise die Umkehrung der Entropiecodiertechnik an, die in dem Codierer verwendet wird.
  • Der inverse Quantisierer (230) empfängt eine Quantisierschrittgröße von dem DEMUX (210) und empfängt quantisierte Frequenzkoeffizientendaten von dem Entropiedecodierer (220). Der inverse Quantisierer (230) wendet die Quantisierschrittgröße auf die quantisierten Frequenzkoeffizientendaten an, um die Frequenzkoeffiziententendaten partiell zu rekonstruieren.
  • Von dem DEMUX (210) empfängt der Rauschgenerator (240) Informationen, die kennzeichnen, welche Bänder in einem Datenblock rauschsubstituiert sind, wie auch beliebige Parameter für die Gestalt des Rauschens. Der Rauschgenerator (240) erzeugt die Muster für die gekennzeichneten Bänder und reicht die Informationen an den inversen Gewichter (250) durch.
  • Der inverse Gewichter (250) empfängt die Gewichtungsfaktoren von dem DEMUX (210), Muster für beliebige rauschsubstituierte Bänder von dem Rauschgenerator (240) und die partiell rekonstruierten Frequenzkoeffizientendaten von dem inversen Quantisierer (230). Je nach Erfordernis dekomprimiert der inverse Gewichter (250) die Gewichtungsfaktoren, wobei er die Elemente der Quantisiermatrix entropiedecodiert, invers differentiell codiert und invers quantisiert. Der inverse Gewichter (250) wendet die Gewichtungsfaktoren auf die partiell rekonstruierten Frequenzkoeffizientendaten für Bänder an, die nicht rauschsubstituiert worden sind. Der inverse Gewichter (250) fügt anschließend die Rauschmuster hinzu, die von dem Rauschgenerator (240) für die rauschsubstituierten Bänder empfangen werden.
  • Der inverse Mehrkanalwandler (260) empfängt die rekonstruierten Frequenzkoeffizientendaten von dem inversen Gewichter (250) und Kanalmodusinformationen von dem DEMUX (210). Sofern sich Mehrkanalaudio in unabhängig codierten Kanälen befindet, reicht der inverse Mehrkanalwandler (260) die Kanäle durch. Befinden sich Mehrkanaldaten in gemeinsam codierten Kanälen, wandelt der inverse Mehrkanalwandler (260) die Daten in unabhängig codierte Kanäle um.
  • Der inverse Frequenzwandler (270) empfängt die Frequenzkoeffizientendaten, die von dem Mehrkanalwandler (260) ausgegeben werden, wie auch Nebeninformation, wie etwa Blockgrößen, von dem DEMUX (210). Der inverse Frequenzwandler (270) wendet die Umkehrung der Frequenztransformation an, die in dem Codierer verwendet wird, und gibt Blöcke rekonstruierter Audioabtastungen (295) aus.
  • B. Nachteile herkömmlicher perzeptueller Audio-Codierer und -Decodierer
  • Wenngleich die oben beschriebenen perzeptuellen Codierer und Decodierer ein gutes Gesamtleistungsvermögen für zahlreiche Anwendung aufweisen, haben sie zahlreiche Nachteile insbesondere hinsichtlich der Kompression und Dekompression von Mehrkanalaudio. Diese Nachteile schränken die Qualität des rekonstruierten Mehrkanalaudios in einigen Fällen ein, wie etwa wenn die verfügbare Bitrate im Vergleich zu der Zahl eingegebener Audiokanäle gering ist.
  • 1. Inflexibilität bei der Frame-Partitionierung für Mehrkanalaudio
  • In vielerlei Hinsicht ist die Frame-Partitionierung, die von dem Codierer (100) aus 1 durchgeführt wird, unflexibel.
  • Wie es zuvor erwähnt wurde, teilt der Frequenzwandler (110) einen Frame von Eingangsaudioabtastungen (105) in ein oder mehrere überlappende Fenster für die Frequenztransformation, wobei größere Fenster eine bessere Frequenzauflösung und das Entfernen von Redundanz bieten, und kleinere Fenster eine bessere Zeitauflösung bieten. Die bessere Zeitauflösung ist hilfreich bei der Kontrolle hörbarer Vorecho-Artefakte, die hervorgerufen werden, wenn das Signal von geringer Energie zu hoher Energie übergeht, wobei jedoch die Verwendung kleinerer Fenster die Kompressionsfähigkeit verringert, weshalb der Codierer diese Umstände abwägen muss, wenn er die Fenstergröße wählt. Bei Mehrkanalaudio partitioniert der Frequenzwandler (110) die Kanäle eines Frames identisch (d. h. identische Fensterkonfigurationen in den Kanälen, was in einigen Fällen ineffizient sein kann, wie es in 3a bis 3c gezeigt ist.
  • 3a zeigt die Wellenformen (300) eines beispielhaften Stereo-Audiosignals. Das Signal in Kanal 0 enthält Übergangsaktivität, wohingegen das Signal in Kanal 1 relativ unveränderlich ist. Der Codierer (100) erfasst den Signalübergang in Kanal 0 und unterteilt, um das Vorecho zu verringern, den Frame in kleinere, überlappende, modulierte Fenster (301), wie es in 3b gezeigt ist. Aus Gründen der Einfachheit zeigt 3c die überlappte Fensterkonfiguration (302) in Kästen, wobei Punktlinien die Framegrenzen markieren. Nachfolgende Zeichnungen folgen dieser Darstellung.
  • Ein Nachteil, sämtliche Kanäle dazu zu zwingen, eine identische Fensterkonfiguration anzunehmen, besteht darin, dass ein unveränderliches Signal in einem Kanal oder mehreren Kanälen (z. B. Kanal 1 in 3a bis 3c) in kleinere Fenster zerteilt werden kann, wodurch die Codiergewinne verringert werden. Alternativ dazu kann der Codierer (100) sämtliche Kanäle dazu zwingen, größere Fenster zu verwenden, wodurch ein Vorecho in einem Kanal oder mehreren Kanälen hervorgerufen werden kann, die Übergänge haben. Dieses Problem wird verschärft, wenn mehr als zwei Kanäle zu codieren sind.
  • AAV gestattet das paarweise Gruppieren von Kanälen für Mehrkanaltransformationen. Aus den Kanälen links, rechts, Mitte, hinten links und hinten rechts können beispielsweise die Kanäle links und rechts zur Stereocodierung gruppiert werden und können die Kanäle hinten links und hinten rechts zur Stereocodierung gruppiert werden. Unterschiedliche Gruppen können unterschiedliche Fensterkonfigurationen haben, wobei jedoch beide Kanäle einer einzelnen Gruppe dieselbe Fensterkonfiguration haben, sofern die Stereocodierung verwendet wird. Dadurch wird die Flexibilität der Partitionierung für Mehrkanaltransformationen in dem AAC-System beschränkt, wie dies auch die Verwendung lediglich paarweiser Gruppierungen tut.
  • 2. Inflexibilität bei Mehrkanaltransformationen
  • Der Codierer (100) aus 1 nutzt eine gewisse Zwischenkanalredundanz, ist jedoch in unterschiedlichen Aspekten hinsichtlich der Mehrkanaltransformationen unflexibel. Der Codierer gestattet zwei Arten von Transformationen: (a) eine Identitätstransformation (die zu einer nicht erfolgenden Transformation äquivalent ist) oder (b) eine Summen-Differenz-Codierung von Stereopaaren. Diese Beschränkungen begrenzen die Mehrkanalcodierung von mehr als zwei Kanälen. Selbst bei AAC, das mit mehr als zwei Kanälen arbeiten kann, ist eine Mehrkanaltransformation auf lediglich ein Paar von Kanälen zu einem Zeitpunkt beschränkt.
  • Zahlreiche Gruppen haben mit Mehrkanaltransformationen für Surround-Sound-Kanäle experimentiert. Siehe beispielsweise Yang et al., "An Inter-Channel Redundancy Removal Approach for High-Quality Multichannel Audio Compression", AES Tagung, Los Angeles, September 2000 ["Yang"] und Wang et al., "A Multichannel Audio Coding Algorithm for Inter-Channel Redundancy Removal," AES 110. Tagung, Amsterdam, Niederlande, Mai 2001 ["Wang"]. Das Yang-System verwendet eine Karhunen-Loeve-Transformation [”KLT”] über Kanäle, um die Kanäle für gute Kompressionsfaktoren zu dekorrelieren. Das Wang-System verwendet eine diskrete Ganzzahl-Zu-Ganzzahl-Transformation [”DCT”]. Beide Systeme liefern einige gute Ergebnisse, haben dennoch zahlreiche Beschränkungen.
  • Erstens kontrolliert die Verwendung einer KLT (ob nun über die Zeitdomäne oder die Frequenzdomäne, wie bei dem Yang-System) nicht die Verzerrung, die bei der Rekonstruktion hervorgerufen wird. Die KLT in dem Yang-System wird nicht erfolgreich für die perzeptuelle Audiocodierung von Mehrkanalaudio verwendet. Das Yang-System kontrolliert nicht den Verlustumfang von einem (beispielsweise stark quantisierten) Kanal hin zu zahlreichen rekonstruierten Kanälen bei der inversen Mehrkanaltransformation. Auf diese Unzulänglichkeit wird bei Kuo et al., "A Study of Why Cross Channel Prediction Is Not Applicable to Perceptual Audio Coding," IEEE Signal Proc. Letters, vol. 8, no 9, September 2001, hingewiesen. Mit anderen Worten kann die Quantisierung, die in einem codierten Kanal ”nicht hörbar” ist, hörbar werden, wenn sie in mehreren rekonstruierten Kanälen gestreut wird, da die inverse Gewichtung vor der inversen Mehrkanaltransformation ausgeführt wird. Das Wang-System behebt dieses Problem durch Anordnen der Mehrkanaltransformation nach der Gewichtung und Quantisierung in dem Codierer (und Anordnen der inversen Mehrkanaltransformation vor der inversen Quantisierung und der inversen Gewichtung in dem Decodierer). Das Wang-System hat jedoch zahlreiche andere Unzulänglichkeiten. Das Ausführen der Quantisierung vor der Mehrkanaltransformation bedeutet, dass die Mehrkanaltransformation ganzzahlig-zu-ganzzahlig sein muss, wodurch die Anzahl möglicher Transformationen begrenzt und das Entfernen von Redundanz über die Kanäle eingeschränkt wird.
  • Zweitens ist das Yang-System auf KLT-Transformationen beschränkt. Wenngleich sich KLT-Transformationen an die Audiodaten anpasst, die komprimiert werden, ist die Flexibilität des Yang-Systems, unterschiedliche Arten von Transformationen zu verwenden, eingeschränkt. In ähnlicher Weise benutzt das Wang-System die ganzzahlige-zu-ganzzahlige DCT für die Mehrkanaltransformationen, was hinsichtlich Energieverdichtung nicht so gut ist wie die herkömmliche DCT, wobei die Flexibilität des Wang-Systems, unterschiedliche Arten von Transformationen zu nutzen, beschränkt ist.
  • Drittens gibt es bei dem Yang- und dem Wang-System keine Möglichkeit der Steuerung, welche Kanäle zusammen transformiert werden, noch gibt es dort einen Mechanismus zur selektiven Gruppierung unterschiedlicher Kanäle zu unterschiedlichen Zeiten für die Mehrkanaltransformation. Eine derartige Steuerung ist hilfreich bei der Begrenzung des Inhaltsverlustes über vollständig inkompatible Kanäle. Darüber hinaus können selbst Kanäle, die insgesamt kompatibel sind, über bestimmte Perioden hinweg inkompatibel sein.
  • Viertens hat bei dem Yang-System der Mehrkanalwandler keine Kontrolle darüber, ob die Mehrkanaltransformation auf der Frequenzbandebene anzuwenden ist. Selbst unter Kanälen, die insgesamt kompatibel sind, könnten die Kanäle bei einigen Frequenzen oder in einigen Frequenzbändern nicht kompatibel sein. In ähnlicher Weise hat die Mehrkanaltransformation des Codierers (100) aus 1 keine Kontrolle auf der Teilkanalebene; sie steuert nicht, welche Bänder von Frequenzkoeffizientendaten mehrkanaltransformiert werden, wodurch die Ineffizienzen ignoriert werden, die entstehen können, wenn weniger als alle Frequenzbänder der Eingangskanäle korrelieren.
  • Fünftens, selbst wenn die Ursprungskanäle kompatibel sind, ist es in vielen Fällen notwendig, die Anzahl von Kanälen zu steuern, die zusammen transformiert werden, um so den Datenüberlauf zu begrenzen und Speicherzugriffe zu verringern, während die Transformation angewendet wird. Insbesondere ist die KLT des Yang-Systems hinsichtlicht des Berechungsaufwandes komplex. Andererseits verringert die Reduzierung der Transformationsgröße möglicherweise ebenfalls den Codiergewinn im Vergleich zu größeren Transformationen.
  • Sechstens kann das Senden von Informationen, die Mehrkanaltransformationen festlegen, zu Lasten der Bitrate gehen. Dies gilt insbesondere für die KLT des Yang-Systems zu, da die gesendeten Transformationskoeffizienten für die Kovarianzmatrix reelle Zahlen sind.
  • Siebtens ist für Mehrkanalaudio geringer Bitrate die Qualität der rekonstruierten Kanäle sehr begrenzt. Neben den Anforderungen des Codierens für geringe Bitraten, ist dies zum Teil auf die Unfähigkeit des Systems zurückzuführen, die Anzahl von Kanälen, für die Informationen tatsächlich codiert werden, wahlweise und elegant einzuschränken.
  • 3. Leistungsschwächen bei der Quantisierung und Gewichtung
  • Bei dem Codierer (100) von 1 formt der Gewichter (140) eine Verzerrung über Bänder in den Audiodaten, und der Quantisierer (150) stellt Quantisierschrittgrößen ein, um die Amplitude der Verzerrung für einen Frame zu ändern und dadurch die Qualität gegenüber der Bitrate auszugleichen. Wenngleich der Codierer (100) in den meisten Anwendungen einen guten Ausgleich zwischen Qualität und Bitrate erzielt, weist der Codierer (100) dennoch zahlreiche Nachteile auf.
  • Erstens hat der Codierer (100) keine direkte Kontrolle über die Qualität auf der Kanalebene. Die Gewichtungsfaktoren formen eine Gesamtverzerrung über die Quantisierbänder für einen einzelnen Kanal. Die einheitliche, skalare Quantisierschrittgröße beeinflusst die Amplitude der Verzerrung zwischen sämtlichen Frequenzbändern und Kanäle für einen Frame. Da er nicht in der Lage ist, eine sehr hohe oder sehr geringe Qualität auf sämtlichen Kanälen hervorzurufen, verfügt der Codierer (100) nicht über eine direkte Kontrolle über die Einstellung einer gleichen oder wenigstens vergleichbaren Qualität in dem rekonstruierten Ausgang für alle Kanäle.
  • Werden zweitens die Gewichtungsfaktoren verlustbehaftet komprimiert, hat der Codierer (100) keine Kontrolle über die Auflösung der Quantisierung der Gewichtungsfaktoren. Für eine direkte Kompression einer Quantisiermatrix, quantisiert der Codierer (100) einheitlich Elemente der Quantisiermatrix und verwendet anschließend eine Differentialcodierung und die Huffman-Codierung. Die einheitliche Quantisierung von Maskierelementen passt sich nicht an Änderungen in der verfügbaren Bitrate oder die Signalkomplexität an. Infolgedessen werden in einigen Fällen Quantisiermatrizen mit einer höheren Auflösung codiert, als dies bei der insgesamt geringen Qualität des rekonstruierten Audios erforderlich ist, und in anderen Fällen werden die Quantisiermatrizen mit einer geringeren Auflösung codiert, als dies bei der hohen Qualität des rekonstruierten Audios der Fall sein sollte.
  • Drittens nutzt die direkte Kompression der Quantisiermatrizen in dem Codierer (100) nicht die vorübergehenden Redundanzen in den Quantisiermatrizen. Die direkte Kompression entfernt die Redundanzen innerhalb einer einzelnen Quantisiermatrix, ignoriert jedoch die vorübergehende Redundanz in einer Abfolge von Quantisiermatrizen.
  • C. Abwärtsmischen von Audiokanälen
  • Neben der Mehrkanalaudio-Codierung und -Decodierung führen Dolby Pro-Logic und zahlreiche andere Systeme das Abwärtsmischen von Mehrkanalaudio durch, um die Kompatibilität mit Lautsprecherkonfigurationen mit unterschiedlichen Anzahlen von Lautsprechern zu vereinfachen. Bei dem Abwärtsmischen von Dolby Pro-Logic werden beispielsweise vier Kanäle auf zwei Kanäle herabgemischt, wobei jeder der beiden Kanäle eine bestimmte Kombination der Audiodaten in den ursprünglichen vier Kanälen hat. Die beiden Kanäle können auf Stereokanalgeräten ausgegeben werden, oder die vier Kanäle können aus den beiden Kanälen für die Ausgabe auf Vierkanalgeräten rekonstruiert werden.
  • Wenngleich das Abwärtsmischen dieser Art einige Kompatibilitätsprobleme löst, ist es auf bestimmte eingestellte Konfigurationen, wie etwa Abwärtsmischen von vier auf zwei Kanäle, beschränkt. Darüber hinaus sind die Mischformeln vorbestimmt und gestatten keine Änderungen im Zeitverlauf, um sich an das Signal anzupassen.
  • ÜBERSICHT ÜBER DIE ERFINDUNG
  • Erfindungsgemäß wird eine Computervorrichtung bereitgestellt, die eine Kommunikationsverbindung umfasst, die eingerichtet ist zum Empfangen codierter Audioinformationen in einem Bitstrom. Die codierten Audioinformationen enthalten Informationen, die eine Gewichtungsfaktorauflösung angeben, die einer Quantisierschrittgröße für Gewichtungsfaktoren entspricht, und entropiecodierte Differenzen für mehrere Gewichtungsfaktoren, wobei jeder der mehreren Gewichtungsfaktoren einen Gewichtungswert für ein oder mehrere Frequenzbänder für ein Zeitfenster angibt. Die Computervorrichtung umfasst ferner einen Audiodecodierer, der eingerichtet ist zum Decodieren von Audio unter Verwendung der codierten Audioinformationen. Der Audiodecodierer ist ferner eingerichtet, um die Gewichtungsfaktorauflösung basierend auf den Informationen in dem Bitstrom zu erhalten. Des Weiteren ist der Audiodecodierer eingerichtet zum Decodieren eines momentanen Gewichtungsfaktors der mehreren Gewichtungsfaktoren mithilfe zeitlicher Vorhersage, wobei der momentane Gewichtungsfaktor einen Gewichtungswert für ein oder mehrere momentane Frequenzbänder für ein momentanes Zeitfenster angibt und wobei der Audiodecodierer für die Decodierung des momentanen Gewichtungsfaktors eingerichtet ist zum Bestimmen eines entsprechenden Gewichtungsfaktors für das eine oder die mehreren momentanen Frequenzbänder für ein vorheriges Zeitfenster, Entropiedecodieren einer Differenz zwischen dem momentanen Gewichtungsfaktor und dem entsprechenden Gewichtungsfaktor, und Kombinieren des entsprechenden Gewichtungsfaktors mit der Differenz zwischen dem momentanen Gewichtungsfaktor und dem entsprechenden Gewichtungsfaktor. Ferner ist der Audiodecodierer eingerichtet zum inversen Quantisieren des momentanen Gewichtungsfaktors gemäß der Gewichtungsfaktorauflösung.
  • Ferner wird erfindungsgemäß eine Computervorrichtung bereitgestellt, die einen Audiodecodierer enthält, der eingerichtet ist zum Empfangen codierter Audioinformationen in einem Bitstrom, wobei die codierten Audioinformationen Informationen enthalten, die eine Gewichtungsfaktorauflösung angeben, die einer Quantisierschrittgröße für Gewichtungsfaktoren entspricht, und entropiecodierte Differenzen für mehrere Gewichtungsfaktoren, wobei jeder der mehreren Gewichtungsfaktoren einen Gewichtungswert für ein oder mehrere Frequenzbänder für ein Zeitfenster des Audio angibt, und wobei die mehreren Gewichtungsfaktoren einen ersten Satz von Gewichtungsfaktoren und einen zweiten Satz von Gewichtungsfaktoren enthalten. Der Audiodecodierer ist ferner eingerichtet zum Decodieren des ersten Satzes von Gewichtungsfaktoren ohne Verwendung zeitlicher Vorhersage, wobei der erste Satz von Gewichtungsfaktoren einem ersten Zeitfenster zugeordnet ist und wobei der Audiodecodierer für die Decodierung eines gegebenen Gewichtungsfaktors aus dem ersten Satz von Gewichtungsfaktoren eingerichtet ist zum Bestimmen eines vorherigen Gewichtungsfaktors aus dem ersten Satz von Gewichtungsfaktoren, Entropiedecodieren einer Differenz zwischen dem gegebenen Gewichtungsfaktor und dem vorherigen Gewichtungsfaktor, und Kombinieren des vorherigen Gewichtungsfaktors mit der Differenz zwischen dem gegebenen Gewichtungsfaktor und dem vorherigen Gewichtungsfaktor. Des Weiteren ist der Audiodecodierer eingerichtet zum Decodieren des zweiten Satzes von Gewichtungsfaktoren mithilfe zeitlicher Vorhersage, wobei der zweite Satz von Gewichtungsfaktoren einem zweiten Zeitfenster zugeordnet ist, das nach dem ersten Zeitfenster liegt, wobei für die Decodierung eines momentanen Gewichtungsfaktors aus dem zweiten Satz von Gewichtungsfaktoren, und wobei der momentane Gewichtungsfaktor einen Gewichtungswert für ein oder mehrere momentane Frequenzbänder für das zweite Zeitfenster angibt, der Audiodecodierer eingerichtet ist zum Bestimmen eines entsprechenden Gewichtungsfaktors für das eine oder die mehreren momentanen Frequenzbänder für das erste Zeitfenster, Entropiedecodieren einer Differenz zwischen dem momentanen Gewichtungsfaktor und dem entsprechenden Gewichtungsfaktor, und Kombinieren des entsprechenden Gewichtungsfaktors mit der Differenz zwischen dem momentanen Gewichtungsfaktor und dem entsprechenden Gewichtungsfaktor. Ferner ist der Audiodecodierer eingerichtet, um wenigstens teilweise basierend auf den Informationen in dem Bitstrom die Gewichtungsfaktorauflösung zu erhalten, sowie zum inversen Quantisieren der mehreren Gewichtungsfaktoren gemäß der Gewichtungsfaktorauflösung.
  • Darüber hinaus wird erfindungsgemäß eine Computervorrichtung bereitgestellt, die einen Audiodecodierer enthält, der eingerichtet ist zum Empfangen codierter Audioinformationen für Audio in einem Bitstrom, wobei die codierten Audioinformationen Informationen für mehrere Gewichtungsfaktoren enthalten, wobei jeder der mehreren Gewichtungsfaktoren einen Gewichtungswert für ein oder mehrere Frequenzbänder für ein Zeitfenster des Audio angibt und wobei die codierten Audioinformationen weiterhin Informationen enthalten, die eine Quantisierschrittgröße für Gewichtungsfaktoren angeben. Der Audiodecodierer ist ferner eingerichtet zum Decodieren der mehreren Gewichtungsfaktoren mithilfe zeitlicher Vorhersage für wenigstens einen der mehreren Gewichtungsfaktoren, wobei die mehreren Gewichtungsfaktoren eine Ankermatrix von Gewichtungsfaktoren für ein vorheriges Zeitfenster und eine momentane Matrix von Gewichtungsfaktoren für ein momentanes Zeitfenster enthalten, und wobei der Audiodecodierer für die Decodierung eines momentanen Gewichtungsfaktors in der momentanen Matrix eingerichtet ist zum Bestimmen einer Vorhersage mithilfe der Ankermatrix, Dekomprimieren eines Residuums zwischen dem momentanen Gewichtungsfaktor und der Vorhersage mithilfe der Ankermatrix, und Kombinieren der Vorhersage mithilfe der Ankermatrix mit dem Residuum. Ferner ist der Audiodecodierer eingerichtet zum inversen Quantisieren der mehreren Gewichtungsfaktoren gemäß der Quantisierschrittgröße für Gewichtungsfaktoren.
  • Weiterhin wird erfindungsgemäß eine Computervorrichtung bereitgestellt, die einen Audiodecodierer umfasst, der eingerichtet ist zum Empfangen von Audiodaten in einem Bitstrom, Erhalten einer Quantisierschrittgröße für eine oder mehrere Maskierungen, wobei jede Maskierung ein Gewicht für jede der mehreren Frequenzbänder in einem Zeitfenster enthält, Bestimmen, ob eine Ankermaskierung verfügbar ist, differenziellen Decodieren codierter Elemente einer Quantisiermaskierung, wenn keine Ankermaskierung verfügbar ist, wobei die Differenz für ein Element der Quantisiermaskierung relativ zu dem Element des vorherigen Bandes ist, Dekomprimieren der Quantisiermaskierung unter Verwendung zeitlicher Vorhersage, wenn eine Ankermaskierung verfügbar ist, indem eine Vorhersage für die Quantisiermaskierung auf Grundlage der Ankermaskierung berechnet wird, inversen Quantisieren der Quantisiermaskierung unter Verwendung der Quantisierschrittgröße, und inversen Gewichten der Audiodaten unter Verwendung der Quantisiermaskierung.
  • Bevorzugte Ausgestaltungen sind in den Unteransprüchen angegeben.
  • Insgesamt bezieht sich die detaillierte Beschreibung auf Strategien zur Quantisierung und inversen Quantisierung bei der Audio-Codierung und -Decodierung. Ein Audiocodierer verwendet beispielsweise eine oder mehrere Quantisier-(z. B. Gewichtungs-)Techniken, um die Qualität und/oder Bitrate von Audiodaten zu verbessern. Dies verbessert das gesamte Hörerlebnis und mach Computersysteme zu einer attraktiveren Plattform für die Erzeugung, Verteilung und Wiedergabe von qualitativ hochwertigem Audio. Die hier beschriebenen Strategien beinhalten unterschiedliche Techniken und Werkzeuge, die in Kombination oder unabhängig voneinander verwendet werden können.
  • Gemäß einem ersten Aspekt der hier beschriebenen Strategien quantisiert ein Audiocodierer Audiodaten in mehreren Kanälen, indem er mehrere kanalspezifische Quantisierfaktoren für die zahlreichen Kanäle anwendet. Die kanalspezifischen Quantisierfaktoren sind beispielsweise Quantisierschrittmodifikatoren, die dem Codierer eine umfassendere Kontrolle über den Ausgleich der Rekonstruktionsqualität zwischen den Kanälen verleihen.
  • Gemäß einem zweiten Aspekt der hier beschriebenen Strategien, quantisiert ein Audiocodierer Audiodaten, indem er zahlreiche Quantisiermatrizen anwendet. Der Codierer variiert die Auflösung der Quantisiermatrizen. Dies gestattet es dem Codierer beispielsweise, die Auflösung der Elemente der Quantisiermatrizen zu ändern, um eine höhere Auflösung zu verwenden, sofern die Gesamtqualität gut ist, und eine geringere Auflösung zu verwenden, wenn die Gesamtqualität gering ist.
  • Gemäß einem dritten Aspekt der hier beschriebenen Strategien, komprimiert ein Audiocodierer eine oder mehrere Quantisiermatrizen unter Verwendung zeitlicher Vorhersage. Der Codierer berechnet beispielsweise eine Vorhersage für eine momentane Matrix im Bezug auf eine weitere Matrix und berechnet anschließend ein Residuum aus der momentanen Matrix und der Vorhersage. Auf diese Weise verringert der Codierer die Bitrate, die den Quantisiermatrizen zugeordnet ist.
  • Für die oben hinsichtlich eines Audiocodierers beschriebenen Aspekte führt ein Audiodecodierer eine entsprechende inverse Verarbeitung und Decodierung aus.
  • Die unterschiedlichen Merkmale und Vorteile der Erfindung werden aus der folgenden detaillierten Beschreibung der Ausführungsformen unter Bezugnahme auf die beiliegenden Zeichnungen deutlich.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockschaltbild eines Audiocodierers gemäß dem Stand der Technik.
  • 2 ist ein Blockschaltbild eines Audiodecodierers gemäß dem Stand der Technik.
  • 3a3c sind Diagramme, die Fensterkonfigurationen für einen Frame von Stereo-Audiodaten gemäß dem Stand der Technik zeigen.
  • 4 ist ein Diagramm, das sechs Kanäle in einer 5.1.-Kanal-/Lautsprecherkonfiguration zeigt.
  • 5 ist ein Blockschaltbild einer geeigneten Berechnungsumgebung, in der beschriebene Ausführungsformen angewendet werden können.
  • 6 ist ein Blockschaltbild eines Audiocodierers, in dem beschriebene Ausführungsformen eingesetzt werden können.
  • 7 ist ein Blockschaltbild eines Audiodecodierers, in dem beschriebene Ausführungsformen eingesetzt werden können.
  • 8 ist ein Flussdiagramm, das eine verallgemeinerte Technik für die Mehrkanalvorverarbeitung zeigt.
  • 9a9e sind Diagramme, die beispielhafte Matrizen für die Mehrkanal-Vorverarbeitung zeigen.
  • 10 ist ein Flussdiagramm, das eine Technik für die Mehrkanal-Vorverarbeitung darstellt, bei der sich die Transformationsmatrix möglicherweise auf einer Basis Frame für Frame ändert.
  • 11a und 11b sind Diagramme, die beispielhafte Kachel-(„Tile”-)Konfigurationen für Mehrkanalaudio zeigen.
  • 12 ist ein Flussdiagramm, das eine verallgemeinerte Technik zum Konfigurieren von Kacheln von Mehrkanalaudio darstellt.
  • 13 ist ein Flussdiagramm, das eine Technik zum gleichzeitigen Konfigurieren von Kacheln und Senden von Kachel-Informationen für Mehrkanalaudio gemäß einer speziellen Bitstromsyntax zeigt.
  • 14 ist ein Flussdiagramm, das eine verallgemeinerte Technik zum Ausführen einer Mehrkanaltransformation nach dem perzeptuellen Gewichten darstellt.
  • 15 ist ein Flussdiagramm, das eine verallgemeinerte Technik zum Ausführen einer inversen Mehrkanaltransformation vor der inversen perzeptuellen Gewichtung zeigt.
  • 16 ist ein Flussdiagramm, das eine Technik zum Gruppieren von Kanälen in einer Kachel für die Mehrkanaltransformation bei einer Anwendung zeigt.
  • 17 ist ein Flussdiagramm, das eine Technik zum Abrufen von Kanalgruppeninformationen und Mehrkanaltransformationsinformationen für eine Kachel aus einem Bitstrom gemäß einer speziellen Bitstromsyntax zeigt.
  • 18 ist ein Flussdiagramm, das eine Technik zum wahlweisen Einschließen von Frequenzbändern einer Kanalgruppe in einer Mehrkanaltransformation bei einer Anwendung zeigt.
  • 19 ist ein Flussdiagramm, das eine Technik zum Abrufen von Band-Ein-/Aus-Informationen für eine Mehrkanaltransformation für eine Kanalgruppe einer Kachel aus einem Bitstrom gemäß einer speziellen Bitstromsyntax darstellt.
  • 20 ist ein Flussdiagramm, das eine verallgemeinerte Technik zum Emulieren einer Mehrkanaltransformation unter Verwendung einer Hierarchie einfacherer Mehrkanaltransformationen zeigt.
  • 21 ist ein Diagramm, das eine beispielhafte Hierarchie von Mehrkanaltransformationen zeigt.
  • 22 ist ein Flussdiagramm, das eine Technik zum Abrufen von Informationen für eine Hierarchie von Mehrkanaltransformationen für Kanalgruppen aus einem Bitstrom gemäß einer speziellen Bitstromsyntax zeigt.
  • 23 ist ein Flussdiagramm, das eine verallgemeinerte Technik zum Auswählen eines Typs einer Mehrkanaltransformation aus einer Vielzahl verfügbarer Typen zeigt.
  • 24 ist ein Flussdiagramm, das eine verallgemeinerte Technik zum Abrufen eines Typs einer Mehrkanaltransformation aus einer Vielzahl verfügbarer Typen und Ausführen einer inversen Mehrkanaltransformation zeigt.
  • 25 ist ein Flussdiagramm, das eine Technik zum Abrufen von Mehrkanaltransformationsinformationen für eine Kanalgruppe aus einem Bitstrom gemäß einer speziellen Bitstromsyntax zeigt.
  • 26 ist ein Diagramm, das die allgemeine Form einer Rotationsmatrix für Givens-Rotationen zum Darstellen einer Mehrkanaltransformationsmatrix darstellt.
  • 27a27c sind Diagramme, die beispielhafte Rotationsmatrizen für Givens-Rotationen zum Darstellen einer Mehrkanaltransformationsmatrix zeigen.
  • 28 ist ein Flussdiagramm, das eine verallgemeinerte Technik zum Darstellen einer Mehrkanaltransformationsmatrix unter Verwendung von quantisierten Givens-Faktorisierungsrotationen darstellt.
  • 29 ist ein Flussdiagramm, das eine Technik zum Abrufen von Informationen für eine generische, unitäre Transformation für eine Kanalgruppe aus einem Bitstrom gemäß einer speziellen Bitstromsyntax zeigt.
  • 30 ist ein Flussdiagramm, das eine Technik zum Abrufen eines Kachelgesamtquantisierfaktors für eine Kachel aus einem Bitstrom gemäß einer speziellen Bitstromsyntax zeigt.
  • 31 ist ein Flussdiagramm, das eine verallgemeinerte Technik zum Berechnen von Quantisierschrittmodifikatoren pro Kanal für Mehrkanalaudio darstellt.
  • 32 ist ein Flussdiagramm, das eine Technik zum Abrufen von Quantisierschrittmodifikatoren pro Kanal aus einem Bitstrom gemäß einer speziellen Bitstromsyntax zeigt.
  • 33 ist ein Flussdiagramm, das eine verallgemeinerte Technik zum adaptiven Einstellen einer Quantisierschrittgröße für Quantisiermatrixelemente darstellt.
  • 34 ist ein Flussdiagramm, das eine verallgemeinerte Technik zum Abrufen einer adaptiven Quantisierschrittgröße für Quantisiermatrixelemente zeigt.
  • 35 und 36 sind Flussdiagramme, die Techniken zum Komprimieren von Quantisiermatrizen mit Hilfe einer zeitlichen Vorhersage zeigen.
  • 37 ist ein Diagramm, das eine Zuweisung von Bändern für die Vorhersage von Quantisiermatrixelementen zeigt.
  • 38 ist ein Flussdiagramm, das eine Technik zum Abrufen und Decodieren von Quantisiermatrizen zeigt, die unter Verwendung einer zeitlichen Vorhersage gemäß einer speziellen Bitstromsyntax komprimiert wurden.
  • 39 ist ein Flussdiagramm, das eine verallgemeinerte Technik für die Mehrkanalnachbearbeitung zeigt.
  • 40 ist ein Diagramm, das eine beispielhafte Matrix für die Mehrkanal-Nachbearbeitung zeigt.
  • 41 ist ein Flussdiagramm, das eine Technik für die Mehrkanal-Nachbearbeitung zeigt, bei der sich die Transformationsmatrix möglicherweise auf einer Basis Frame für Frame ändert.
  • 42 ist ein Flussdiagramm, das eine Technik zum Identifizieren und Abrufen einer Transformationsmatrix für die Mehrkanal-Nachbearbeitung gemäß einer speziellen Bitstrommatrix zeigt.
  • DETAILLIERTE BESCHREIBUNG
  • Beschriebene Ausführungsformen der vorliegenden Erfindung beziehen sich auf Techniken und Werkzeuge zum Verarbeiten von Audioinformationen beim Codieren und Decodieren. Bei den beschriebenen Ausführungsformen verwendet ein Audiocodierer zahlreiche Techniken, um das Audio während der Codierung zu verarbeiten. Ein Audiodecodierer verwendet zahlreiche Techniken, um das Audio während des Decodierens zu verarbeiten. Wenngleich die Techniken hier an Stellen als Teil eines einzelnen, integrierten Systems beschrieben sind, können die Techniken separat, möglicherweise in Kombination mit anderen Techniken angewendet werden. Bei alternativen Ausführungsformen wendet ein anderes Audioverarbeitungswerkzeug als ein Codierer oder ein Decodierer wenigstens eine der Techniken an.
  • Bei einigen Ausführungsformen führt ein Codierer eine Mehrkanalvorverarbeitung aus. Bei einer Codierung mit geringer Bitrate führt der Codierer wahlweise eine Matrixneuordnung der Zeitdomänenaudioabtastungen durch, um die Zwischenkanalkorrelation künstlich zu verbessern. Dadurch wird die anschließende Kompression der betroffenen Kanäle wirkungsvoller, indem die Codierkomplexität verringert wird. Die Vorverarbeitung vermindert die Kanaltrennung, kann jedoch die Gesamtqualität verbessern.
  • Bei einigen Ausführungsformen arbeiten ein Codierer und ein Decodierer mit Mehrkanalaudio, das zu Kacheln von Fenstern konfiguriert ist. Der Codierer partitioniert beispielsweise Frames von Mehrkanalaudio auf einer Pro-Kanal-Basis, so dass jeder Kanal eine Fensterkonfiguration unabhängig von anderen Kanälen haben kann. Anschließend gruppiert der Codierer Fenster der partitionierten Kanäle zu Kacheln für die Mehrkanaltransformationen. Dies gestattet es dem Codierer, Übergänge zu isolieren, die in einem speziellen Kanal eines Frames mit sehr kleinen Fenstern auftreten (Verringerung der Vorechoartefakte), jedoch große Fenster für die Frequenzauflösung und Verminderung zeitlicher Redundanz in anderen Kanälen des Frames zu verwenden.
  • Bei einigen Ausführungsformen führt ein Codierer wenigstens eine flexible Mehrkanaltransformationstechnik aus. Ein Decodierer führt die entsprechenden inversen Mehrkanaltransformationstechniken aus. Bei ersten Techniken führt der Codierer eine Mehrkanaltransformation nach der perzeptuellen Gewichtung in dem Codierer aus, wodurch der Austreten von hörbarem Quantisierrauschen über Kanäle bei der Rekonstruktion reduziert wird. Bei zweiten Techniken gruppiert der Codierer flexibel Kanäle für die Mehrkanaltransformationen, um wahlweise Kanäle zu unterschiedlichen Zeitpunkten einzuschließen. Bei dritten Techniken schließt ein Codierer flexibel spezielle Frequenzbänder bei den Mehrkanaltransformationen ein oder aus diesen aus, um so kompatible Bänder wahlweise einzuschließen. Bei vierten Techniken verringert ein Codierer die Bitrate, die den Transformationsmatrizen zugeordnet ist, indem er wahlweise vorbestimmten Matrizen oder Givens-Rotationen verwendet, um angepasste Transformationsmatrizen zu parametrisieren. Bei fünften Techniken führt ein Codierer flexible hierarchische Mehrkanaltransformationen aus.
  • Bei einigen Ausführungsformen führt ein Codierer wenigstens eine verbesserte Quantisier- oder Gewichtungstechnik aus. Ein entsprechender Decodierer führt die entsprechenden inversen Quantisier- oder inversen Gewichtungstechniken aus. Bei ersten Techniken berechnet ein Codierer Quantisierschrittmodifikatoren und wendet diese an, wodurch der Codierer eine bessere Kontrolle über den Ausgleich der Rekonstruktionsqualität zwischen den Kanälen hat. Bei zweiten Techniken verwendet ein Codierer eine flexible Quantisierschrittgröße für Quantisiermatrixelemente, wodurch es dem Codierer gestattet ist, die Auflösung der Elemente der Quantisiermatrizen zu ändern. Bei dritten Techniken verwendet ein Codierer die zeitliche Vorhersage bei der Kompression von Quantisiermatrizen, um die Bitrate zu verringern.
  • Bei einigen Ausführungsformen führt ein Decodierer eine Mehrkanalnachbearbeitung aus. Beispielsweise führt der Decodierer wahlweise eine Neuordnung der Matrix der Zeitdomänenaudioabtastungen durch, um Phantomkanäle bei der Wiedergabe zu erzeugen, Spezialeffekte auszuführen, Kanäle für die Wiedergabe auf einer geringeren Zahl von Lautsprechern zusammenzulegen, oder zu beliebigen anderen Zwecken.
  • Bei den beschriebenen Ausführungsformen enthält das Mehrkanalaudio sechs Kanäle einer herkömmlichen 5.1-Kanal-/Lautsprecherkonfiguration, wie es in der Matrix (400) von 4 gezeigt ist. Die ”5” Kanäle sind die Kanäle links, rechts, Mitte, hinten links und hinten rechts und sind normalerweise für den Surround-Sound räumlich angeordnet. Der Kanal ”1” ist der Sub-Woofer- oder Niederfrequenzeffektkanal. Aus Gründen der Klarheit wird die Reihenfolge der Kanäle, die in der Matrix (400) gezeigt ist, auch für Matrizen und Gleichungen des übrigen Teils der Beschreibung verwendet. Alternative Ausführungsformen verwenden Mehrkanalaudio, das eine andere Reihenfolge, Anzahl (z. B. 7.1, 9.1, 2) und/oder Konfiguration von Kanälen hat.
  • Bei den beschriebenen Ausführungsformen wenden der Audio-Codierer und -Decodierer unterschiedliche Techniken an. Wenngleich die Vorgänge für diese Techniken in einer speziellen, sequentiellen Reihenfolge aus Darstellungsgründen beschrieben sind, versteht es sich, dass diese Art der Beschreibung geringfügige Neuanordnungen in der Vorgangsreihenfolge einschließt, solange nicht eine spezielle Reihenfolge verlangt ist. Vorgänge, die beispielsweise als aufeinander folgend beschrieben sind, können in einigen Fällen neu angeordnet oder gleichzeitig ausgeführt werden. Darüber hinaus zeigen aus Gründen der Einfachheit Flussdiagramme normalerweise nicht die unterschiedlichen Wege, auf denen spezielle Techniken in Verbindung mit anderen Techniken verwendet werden können.
  • I. Berechnungsumgebung
  • 5 zeigt ein verallgemeinertes Beispiel einer geeigneten Berechnungsumgebung (500), in der beschriebene Ausführungsformen eingesetzt werden können. Die Berechnungsumgebung (500) soll keine Einschränkung des Verwendungsumfangs oder der Funktionalität der Erfindung darstellen, da die vorliegende Erfindung in unterschiedlichen Berechnungsumgebungen für allgemeine Zwecke oder besondere Zwecke verwendet werden kann.
  • Unter Bezugnahme auf 5 enthält die Berechnungsumgebung (500) wenigstens eine Verarbeitungseinheit (510) und einen Speicher (520). In 5 ist diese Basiskonfiguration (530) mit einer Strichlinie umrandet. Die Verarbeitungseinheit (510) führt von einem Computer ausführbare Befehle aus und kann ein realer oder ein virtueller Prozessor sein. In einem Mehrprozessorsystem führen mehrere Verarbeitungseinheiten von einem Computer ausführbare Befehle aus, um die Verarbeitungsleistung zu erhöhen. Der Speicher (520) kann ein flüchtiger Speicher (wie etwa ein Register, ein Cache, ein RAM), ein Festspeicher (wie etwa ein ROM, EEPROM, Flash-Speicher, etc.) oder eine Kombination aus beiden sein. Der Speicher (520) speichert Software (580), die Audioverarbeitungstechniken gemäß wenigstens einer der beschriebenen Ausführungsformen einsetzt.
  • Eine Berechnungsumgebung kann zusätzliche Merkmale haben. Die Berechnungsumgebung (500) enthält beispielsweise Speichermedien (540), wenigstens eine Eingabevorrichtung (550), wenigstens eine Ausgabevorrichtung (560) und wenigstens eine Kommunikationsverbindung (570). Ein Zwischenverbindungsmechanismus (nicht gezeigt), wie etwa ein Bus, eine Steuereinheit oder Netzwerk, verbindet die Komponenten der Berechnungsumgebung (500). Normalerweise stellt eine Betriebssystemsoftware (nicht gezeigt) eine Betriebsumgebung für andere Software bereit, die in der Berechnungsumgebung (500) ausgeführt wird, und koordiniert Aktivitäten der Komponenten der Berechnungsumgebung (500).
  • Das Speichermedium (540) kann entnehmbar oder nicht entnehmbar sein und enthält Magnetdisketten, Magnetbänder oder Kassetten, CD-ROMs, CD-RWs, DVDs oder ein beliebiges anderes Medium, das verwendet werden kann, um Informationen zu speichern, und auf das innerhalb der Berechnungsumgebung (500) zugegriffen werden kann. Das Speichermedium (540) speichert die Befehle für die Software (580), die Audioverarbeitungstechniken gemäß wenigstens einer der beschriebenen Ausführungsformen einsetzt.
  • Die Eingabevorrichtung(en) (550) kann (können) eine Tasteingabevorrichtung, wie etwa eine Tastatur, eine Maus, ein Stift, oder ein Trackball, eine Spracheingabevorrichtung, eine Abtastvorrichtung, ein Netzwerkadapter oder eine andere Vorrichtung sein, die eine Eingabe für die Berechnungsumgebung (500) ermöglicht. Für Audio kann (können) die Eingabevorrichtungen) eine Soundkarte oder eine ähnliche Vorrichtung sein, die eine Audioeingabe in analoger oder digitaler Form akzeptiert, oder ein CD-ROM-/DVD-Lesegerät, das Audioabtastungen für die Berechnungsumgebung bereitstellt. Die Ausgabevorrichtung(en) (560) kann (können) eine Anzeigeeinrichtung, ein Drucker, ein Lautsprecher, ein CD-/DVD-Schreibgerät, ein Netzwerkadapter oder eine andere Vorrichtung sein, die eine Ausgabe aus der Berechnungsumgebung (500) ermöglicht.
  • Die Kommunikationsverbindung(en) (570) ermöglicht (ermöglichen) eine Kommunikation über ein Kommunikationsmedium zu einer weiteren Berechnungseinheit. Das Kommunikationsmedium befördert Informationen, wie etwa von einem Computer ausführbare Befehle, komprimierte Audioinformationen oder andere Daten in einem modulierten Datensignal. Ein moduliertes Datensignal ist ein Signal, bei dem wenigstens eine seiner Eigenschaften derart geändert wird, dass Informationen in dem Signal codiert werden. Als Beispiel und nicht als Einschränkung umfassen Kommunikationsmedien drahtgebundene und drahtlose Techniken, die mit einem elektrischen, optischen, hochfrequenten, infraroten, akustischen oder anderem Träger eingesetzt werden.
  • Die Erfindung kann in dem allgemeinen Zusammenhang von computerlesbaren Medien beschrieben werden. Computerlesbare Medien sind beliebige verfügbare Medien, auf die in einer Computerumgebung zugegriffen werden kann. Als Beispiel und nicht als Einschränkung umfassen mit der Berechnungsumgebung (500) computerlesbare Medien Speicher (520), Speichermedien (540), Kommunikationsmedien und Kombinationen aus den oben genannten.
  • Die Erfindung kann im allgemeinen Zusammenhang mit von einem Computer ausführbaren Befehlen beschrieben werden, wie etwa jenen, die in Programmmodulen enthalten sind und in einer Berechnungsumgebung auf einem betreffenden realen oder virtuellen Prozessor ausgeführt werden. Im allgemeinen enthalten Programmmodule Routinen, Programme, Bibliotheken, Klassen, Komponenten, Datenstrukturen und dergleichen, die spezielle Aufgaben ausführen oder spezielle abstrakte Datentypen einsetzen. Die Funktionalität der Programmmodule kann zwischen Programmmodulen je nach Wunsch in verschiedenen Ausführungsformen kombiniert oder aufgeteilt werden. Von einem Computer ausführbare Befehle für Programmmodule können innerhalb einer lokalen oder verteilten Berechungsumgebung ausgeführt werden.
  • Aus Gründen der Darstellung verwendet die detaillierte Beschreibung Begriffe wie ”bestimmen”, ”erzeugen”, ”einstellen” und ”anwenden”, um Computeroperationen in einer Berechungsumgebung zu erläutern. Diese Begriffe sind Abstraktionen höherer Ebene von Operationen, die von einem Computer ausgeführt werden, und sollten nicht mit Tätigkeiten verwechselt werden, die von einem Menschen ausgeführt werden. Die tatsächlichen Computeroperationen, die diesen Begriffen entsprechen, können in Abhängigkeit der Anwendung variieren.
  • II. Verallgemeinerter Audio-Codierer und -Decodierer
  • 6 ist ein Blockschaltbild eines verallgemeinerten Audiocodierers (600), in dem beschriebene Ausführungsformen eingesetzt werden können. 7 ist ein Blockschaltbild eines verallgemeinerten Audiodecodierers (700), indem beschriebene Ausführungsformen eingesetzt werden können.
  • Die dargestellten Beziehungen zwischen den Modulen in dem Coderier und dem Decodierer kennzeichnen Informationsflüsse in dem Codierer und dem Decodierer; andere Beziehungen sind aus Gründen der Einfachheit nicht dargestellt. In Abhängigkeit des Einsatzes und des Typs der gewünschten Kompression können Module des Codierers oder Decodierers, hinzugefügt werden, wegfallen, in mehrere Module zerlegt werden, mit anderen Modulen kombiniert werden und/oder durch ähnliche Module ersetzt werden. Bei alternativen Ausführungsformen verarbeiten Codierer oder Decodierer mit unterschiedlichen Modulen und/oder anderen Konfigurationen Audiodaten.
  • A. Verallgemeinerter Audiocodierer
  • Der verallgemeinerte Audiocodierer (600) enthält eine Wähleinrichtung (608), einen Mehrkanalvorprozessor (610), einen Partitionierer/Kachelkonfigurator (620), einen Frequenzwandler (630), einen Wahrnehmungsmodellierer (640), einen Quantisierbandgewichter (642), einen Kanalgewichter (644), einen Mehrkanalwandler (650), einen Quantisierer (660), einen Entropiecodierer (670), eine Steuereinheit (680), einen Gemischt-/Rein-Verlustfreicodierer (672) und zugehörigen Entropiecodierer (674) sowie einen Bitstrommultiplexer [MUX] (690).
  • Der Codierer (600) empfängt eine Zeitabfolge von Eingangsaudioabtastungen (605) mit einer bestimmten Abtasttiefe und -rate in einem impulscodemodulierten [”PCM”-]Format. Für die meisten beschriebenen Ausführungsformen sind die Eingangsaudioabtastungen (605) für Mehrkanalaudio (z. B. Stereo, Surround) bestimmt, aber die Eingangsaudioabtastungen (605) können anstelle dessen mono sein. Der Codierer (600) komprimiert die Audioabtastungen (605) und multiplexiert Informationen, die von den unterschiedlichen Modulen des Codierers (600) erzeugt werden, um einen Bitstrom (695) in einem Format, wie etwa Windows Media Audio [”WMA”] oder Advanced Streaming Format [”ASF”], auszugeben. Alternativ arbeitet der Codierer (600) mit anderen Eingangs und/oder Ausgangsformaten.
  • Die Wähleinrichtung (608) wählt zwischen unterschiedlichen Codierarten für die Audioabtastungen (605). In 6 schaltet die Wähleinrichtung (608) zwischen einer Gemischt-/Rein-Verlustfreicodierart und einer verlustbehafteten Codierart um. Die verlustfreie Codierart enthält den Gemischt-/Rein-Verlustfreicodierer (672) und wird normalerweise für eine Kompression hoher Qualität (und hoher Bitrate) verwendet. Die verlustbehaftete Codierart enthält Komponenten, wie etwa den Geeichter (642) und den Quantisierer (660), und wird normalerweise für eine Kompression mit einstellbarer Qualität (und gesteuerter Bitrate) verwendet. Die Auswahlentscheidung an der Wähleinrichtung (608) hängt von einer Benutzereingabe oder anderen Kriterien ab. Unter bestimmten Umständen (z. B. wenn es der verlustbehaftete Kompression nicht gelingt, eine adäquate Qualität bereitzustellen, oder Bits überproduziert) kann der Codierer (600) von der verlustbehafteten Codierung zu der Gemischt-/Rein-Verlustfreicodierung für einen Frame oder einen Satz von Frames umschalten.
  • Für die verlustbehaftete Codierung von Mehrkanalaudiodaten führt der Mehrkanalvorprozessor (610) wahlweise eine Neuordnung der Matrix der Zeitdomänenaudioabtastungen (605) durch. Bei einigen Ausführungsformen führt der Mehrkanalvorprozessor (610) wahlweise eine Neuordnung der Matrix der Audioabtastungen (605) aus, um wenigstens einen codierten Kanal fortfallen zu lassen oder die Zwischenkanalkorrelation in dem Codierer (600) zu erhöhen, aber dennoch die Rekonstruktion (in bestimmter Form) in dem Decodierer (700) zuzulassen. Dadurch erhält der Codierer zusätzliche Kontrolle über die Qualität auf der Kanalebene. Der Mehrkanalvorprozessor (610) kann Nebeninformationen, wie etwa Anweisungen für die Mehrkanalnachbearbeitung zu dem MUX (690) senden. Für zusätzliche Details bezüglich des Betriebs des Mehrkanalvorprozessors in einigen Ausführungsformen, siehe den Abschnitt ”Mehrkanalvorverarbeitung”. Alternativ führt der Codierer (600) eine weitere Art der Mehrkanalvorverarbeitung aus.
  • Der Partitionierer/Kachelkonfigurator (620) partitioniert einen Frame von Audioeingangsabtastungen (605) in Teil-Frame-Blöcke (d. h. Fenster) mit zeitvariierenden Größen- und Fensterformfunktionen. Die Größen und Fenster für die Teil-Frame-Blöcke hängen von der Erfassung von Übergangssignalen in dem Frame, der Codierart wie auch anderen Faktoren ab.
  • Wenn der Codierer (600) von der verlustbehafteten Codierung zu der Gemischt-/Rein-Verlustfreicodierung umschaltet, müssen Teil-Frame-Blöcke theoretisch nicht überlappen oder eine Fensterfunktion haben (d. h. überlappende, rechteckige Fensterblöcke), wobei jedoch Übergänge zwischen verlustbehaftet codierten Frames und anderen Frames eine spezielle Behandlung erfordern könnten. Der Partitionierer/Kachelkonfigurator (620) gibt Blöcke partitionierter Daten an den Gemsicht-/Rein-Verlustfreicodierer (672) und Nebeninformationen, wie etwa Blockgrößen, an den MUX (690) aus. Für zusätzliche Details hinsichtlich der Partitionierung und Fensterbildung gemischter oder rein verlustfrei codierter Frames, siehe die verwandte Anmeldung mit dem Titel ”Unified Lossy and Lossless Audio Compression”.
  • Wendet der Codierer (600) die verlustbehaftete Codierung an, gestatten Fenster variabler Größe eine variable zeitliche Auflösung. Kleine Blöcke gestatten einen größeren Erhalt des Zeitdetails bei kurzen jedoch aktiven Übergangssegmenten. Große Blöcke haben eine bessere Frequenzauflösung und eine schlechtere Zeitauflösung und gestatten normalerweise eine höhere Kompressionseffizienz bei längeren und weniger aktiven Segmenten, zum Teil deshalb, weil der Frame-Header und die Nebeninformationen in kleinen Blöcken proportional geringer ist, und zum Teil deshalb, weil es eine bessere Redundanzlöschung gestattet. Blöcke können überlappen, um die wahrnehmbaren Diskontinuitäten zwischen Blöcken zu reduzieren, die andernfalls durch eine spätere Quantisierung hervorgerufen werden könnten. Der Partitionierer/Kachelkonfigurator (620) gibt Blöcke partitionierter Daten an den Frequenzwandler (630) und Nebeninformationen, wie etwa Blockgrößen an den MUX (690) aus. Für zusätzliche Informationen hinsichtlich der Erfassung von Übergängen und Partitionierkriterien bei einigen Ausführungsformen, siehe das US-Patent mit der Sriennummer 10/016,918 mit dem Titel ”Adaptive Window-Size Selection in Transform Coding”, eingereicht am 14. Dezember 2001, die hiermit durch Bezugnahme enthalten ist. Alternativ verwendet der Partitionierer/Kachelkonfigurator (620) andere Partitionierkriterien oder Blockgrößen, wenn er einen Frame in Fenster partitioniert.
  • Bei einigen Ausführungsformen partitioniert der Partitionierer/Kachelkonfigurator (620) Frames von Mehrkanalaudio auf einer Pro-Kanal-Basis. Der Partitionierer/Kachelkonfigurator (620) partitioniert unabhängig jeden Kanal in dem Frame, sofern es die Qualität/Bitrate zulässt. Dies gestattet es dem Partitionierer/Kachelkonfigurator (620), beispielsweise Übergänge zu isolieren, die in einem speziellen Kanal mit kleineren Fenstern auftreten, jedoch größere Fenster für die Frequenzauflösung oder Kompressionseffizienz in anderen Kanälen zu verwenden. Dies kann die Kompressionseffizienz durch Isolieren von Übergängen auf einer Pro-Kanal-Basis verbessern, wobei jedoch zusätzliche Informationen, die die Partitionierungen in einzelnen Kanälen festlegen, in vielen Fällen benötigt werden. Fenster derselben Größe, die zeitlich identisch angeordnet sind, können eine weitere Verringerung der Redundanz durch Mehrkanaltransformation gestatten. Somit gruppiert der Partitionierer/Kachelkonfigurator (620) Fenster derselben Größe, die zeitlich identisch angeordnet sind, zu einer Kachel. Für zusätzliche Details bezüglich der Kachelbildung in einigen Ausführungsformen, siehe den Abschnitt mit dem Titel ”Kachelkonfiguration”.
  • Der Frequenzwandler (630) empfängt Audioabtastungen und wandelt sie in Daten in der Frequenzdomäne um. Der Frequenzwandler (630) gibt Blöcke von Frequenzkoeffizientendaten an den Gewichter (642) und Nebeninformationen, wie etwa Blockgrößen, an den MUX (690) aus. Der Frequenzwandler (630) gibt sowohl die Frequenzkoeffizienten als auch die Nebeninformationen an den Wahrnehmungsmodellierer (640) aus. Bei einigen Ausführungsformen wendet der Frequenzwandler (630) eine zeitvariierende modulierte überlappte Transformation [”MIT”] auf die Teil-Frame-Blöcke an, die wie eine DCT arbeitet, die durch die Sinusfensterfunktion(en) der Teil-Frame-Blöcke moduliert ist. Alternative Ausführungsformen verwenden andere Varianten der MIT oder eine DCT oder einen anderen Typ modulierter oder nicht modulierter, überlappter oder nicht überlappter Frequenztransformation oder verwenden eine Subband- oder Waveletcodierung.
  • Der Wahrnehmungsmodellierer (640) modelliert Eigenschaften des menschlichen Gehörs, um die wahrgenommene Qualität des rekonstruierten Audiosignals für eine gegebene Bitrate zu verbessern. Im allgemeinen verarbeitet der Wahrnehmungsmodellierer (640) die Audiodaten gemäß einem Hörmodell und stellt anschließend Informationen für den Gewichter (642) bereit, die dann verwendet werden können, um Gewichtungsfaktoren für die Audiodaten zu erzeugen. Der Wahrnehmungsmodellierer (640) verwendet ein beliebiges von unterschiedlichen Hörmodellen und reicht Anregungsmusterinformationen oder andere Informationen an den Gewichter (642) weiter.
  • Der Quantisierbandgewichter (642) erzeugt Gewichtungsfaktoren für Quantisiermatrizen auf der Basis der Informationen, der er von dem Wahrnehmungsmodellierer (640) empfängt, und wendet die Gewichtungsfaktoren auf die Daten an, die er von dem Frequenzwandler (630) empfängt. Die Gewichtungsfaktoren für eine Quantisiermatrix enthalten eine Gewichtung jedes einer Vielzahl von Quantisierbändern in den Audiodaten. Die Quantisierbänder können dieselbe oder eine andere Anzahl oder Position wie die kritischen Bänder haben, die an anderer Stelle in dem Codierer (600) verwendet werden, wobei die Gewichtungsfaktoren in Amplituden und Anzahl von Quantisierbändern von Block zu Block variieren können. Der Quantisierbandgewichter (642) gibt gewichtete Blöcke von Koeffizientendaten an den Kanalgewichter (644) und Nebeninformationen, wie etwa den Satz von Gewichtungsfaktoren, an den MUX (690) aus. Der Satz von Gewichtungsfaktoren kann zu Zwecken einer effizienteren Darstellung komprimiert werden. Sofern die Gewichtungsfaktoren verlustbehaftet komprimiert werden, werden die rekonstruierten Gewichtungsfaktoren dazu verwendet, die Blöcke von Koeffizientendaten zu gewichten. Für zusätzliche Details hinsichtlich der Berechnung und Kompression von Gewichtungsfaktoren, siehe den Abschnitt mit dem Titel ”Quantisierung und Gewichtung”. Alternativ verwendet der Codierer (600) eine weitere Form der Gewichtung oder lässt die Gewichtung aus.
  • Der Kanalgewichter (644) erzeugt kanalspezifische Gewichtungsfaktoren (die Skalare sind) für Kanäle auf der Basis von Informationen, die er von dem Wahrnehmungsmodellierer (640) empfängt, und der Qualität eines lokal rekonstruierten Signals. Die Skalargewichtungen (auch Quantisierschrittmodifikatoren genannt) gestatten es dem Codierer (600), den rekonstruierten Kanälen etwa gleiche Qualität zu verleihen. Die Kanalgewichtungsfaktoren können in den Amplituden von Kanal zu Kanal und Block zu Block oder auf einer anderen Ebene variieren. Der Kanalgewichter (644) gibt gewichtete Blöcke von Koeffizientendaten an den Mehrkanalwandler (650) und Nebeninformationen, wie etwa den Satz der Kanalgewichtungsfaktoren, an dem MUX (690) aus. Der Kanalgewichter (644) und der Quantisierbandgewichter (642) in dem Flussdiagramm können getauscht oder miteinander kombiniert werden. Für zusätzliche Details hinsichtlich der Berechnung und Kompression von Gewichtungsfaktoren in einigen Ausführungsformen, siehe den Abschnitt mit dem Titel ”Quantisierung und Gewichtung”. Alternativ verwendet der Codierer (600) eine weitere Art der Gewichtung oder lässt die Gewichtung aus.
  • Bei Mehrkanalaudiodaten korrelieren in vielen Fällen die zahlreichen Kanäle durch Rauschen geformter Frequenzkoeffizientendaten, die von dem Kanalgewichter (644) erzeugt werden, so dass der Mehrkanalwandler (650) eine Mehrkanaltransformation anwenden könnte. Beispielsweise wendet der Mehrkanalwandler (650) wahlweise und flexibel die Mehrkanaltransformation auf einige aber nicht sämtliche Kanäle und/oder Quantisierbänder in der Kachel an. Dadurch hat der Mehrkanalwandler (650) eine präzisere Kontrolle über die Anwendung der Transformation auf relativ korrelierende Teile der Kachel. Um die Berechungskomplexität zu reduzieren, kann der Mehrkanalwandler (650) eine hierarchische Transformation anstelle einer Transformation auf einer Ebene anwenden. Um die Bitrate zu verringern, die der Transformationsmatrix zugeordnet ist, verwendet der Mehrkanalwandler (650) wahlweise vordefinierte Matrizen (z. B. Identität/keine Transformation, Hadamard, DCT Typ 2) oder angepasste Matrizen und wendet eine effiziente Kompression auf die angepassten Matrizen an. Da schließlich die Mehrkanaltransformation stromabwärts von dem Gewichter (642) erfolgt, wird die Wahrnehmung von Rauschen (z. B. infolge der anschließenden Quantisierung), das zwischen Kanälen nach der Inversen Mehrkanaltransformation in dem Decodierer (700) austritt, durch die Inverse Gewichtung gesteuert. Für zusätzliche Details hinsichtlich Mehrkanaltransformationen bei einigen Ausführungsformen, siehe den Abschnitt mit dem Titel ”Flexible Mehrkanaltransformationen”. Alternativ verwendet der Codierer (600) andere Arten der Mehrkanaltransformation oder verzichtet auf die Transformationen. Der Mehrkanalwandler (650) erzeugt Nebeninformationen für den MUX (690), die beispielsweise die verwendete Mehrkanaltransformation und mehrkanaltransformierte Teile oder Kacheln kennzeichnen.
  • Der Quantisierer (660) quantisiert die Ausgabe des Mehrkanalwandlers (650), wobei er quantisierte Koeffizientendaten für den Entropiecodierer (670) und Nebeninformationen, die die Quantisierschrittgrößen beinhalten, für den MUX (690) erzeugt. In 6 ist der Quantisierer (660) eine adaptiver einheitlicher Skalarquantisierer, der einen Quantisierfaktor pro Kachel berechnet. Der Kachelquantisierfaktor kann von einer Iteration einer Quantisierschleife zur nächsten reichen, um die Bitrate der Ausgabe des Entropiecodierers (670) zu beeinflussen, und die Pro-Kanal-Quantisierschrittmodifikatoren können dazu verwendet werden, die Rekonstruktionsqualität zwischen den Kanälen auszugleichen. Für zusätzliche Details bezüglich der Quantisierung bei einigen Ausführungsformen, siehe den Abschnitt mit dem Titel ”Quantisierung und Gewichtung”. Bei alternativen Ausführungsformen ist der Quantisierer ein nicht einheitlicher Quantisierer, ein Vektorquantisierer und/oder ein nicht adaptiver Quantisierer oder verwendet eine andere Art adaptiver, einheitlicher, skalarer Quantisierung. Bei anderen alternativen Ausführungsformen, sind der Quantisierer (660), der Quantisierbandgewichter (642), der Kanalgewichter (644) und der Mehrkanalwandler (650) verschmolzen, wobei das verschmolzene Modul unterschiedliche Gewichtungen gleichzeitig bestimmt.
  • Der Entropiecodierer (670) komprimiert verlustfrei quantisierte Koeffizientendaten, die er von dem Quantisierer (660) empfängt. Bei einigen Ausführungsformen verwendet der Entropiecodierer (670) die adaptive Entropiecodierung, wie es in der verwandten Anmeldung mit dem Titel ”Entropy Coding by Adapting Coding Between Level and Run Lenght/Level Modes” beschrieben ist. Alternativ verwendet der Entropiecodierer (670) eine andere Art oder eine Kombination aus Mehrebenen-Lauflängencodierung, Codierung mit variabler zu variabler Länge, Lauflängencodierung, Huffmancodierung, Wörterbuchcodierung, arithmetischer Codierung, LZ-Codierung oder einer bestimmten anderen Entropiecodiertechnik. Der Entropiecodierer (670) kann die Anzahl von Bits berechnen, die zum Codieren von Audioinformationen verwendet werden, und leitet diese Informationen zu der Raten-/Qualitäts-Steuereinheit (680) weiter.
  • Die Steuereinheit (680) arbeitet mit dem Quantisierer (660), um die Bitrate und/oder Qualität des Ausgangs des Codierers (600) zu regulieren. Die Steuereinheit (680) empfängt Informationen von anderem Modulen des Codierers (600) und verarbeitet die empfangenen Informationen, um die gewünschten Quantisierfaktoren unter gegebenen Bedingungen zu bestimmen. Die Steuereinheit (670) gibt die Quantisierfaktoren an den Quantisierer (660) mit dem Ziel aus, Vorgaben hinsichtlich Qualität und/oder Bitrate zu erfüllen.
  • Der Gemischt-/Rein-Verlustfreicodierer (672) und der zugehörige Entropiecodierer (674) komprimieren die Audiodaten für die gemischte/reine verlustfreie Codierungsart. Der Codierer (600) verwendet die gemischte/reine verlustfreie Codierungsart für eine gesamte Sequenz oder schaltet zwischen Codierarten auf der Basis Frame für Frame, Block für Block, Kachel für Kachel, oder einer anderen Basis um. Für zusätzliche Details hinsichtlich der gemischten/reinen verlustfreien Codierart, siehe die verwandte Anmeldung mit dem Titel ”Unified Lossy and Lossless Audio Compression”. Alternativ verwendet der Codierer (600) andere Techniken für gemischtes und/oder reines verlustfreies Codieren.
  • Der MUX (690) multiplexiert die Nebeninformationen, die von den anderen Modulen des Audiocodierers (600) empfangen werden, zusammen mit den entropiecodierten Daten, die von den Entropiecodierern (670, 674) empfangen werden. Der MUX (690) gibt die Informationen in einem WMA-Format oder einem anderen Format aus, das ein Audiodecodierer erkennt. Der MUX (690) enthält einen virtuellen Puffer, der den Bitstrom (695) speichert, der von dem Codierer (600) ausgegeben werden soll. Anschließend gibt der virtuelle Puffer Daten mit einer relativ konstanten Bitrate aus, während sich die Qualität infolge von Komplexitätsänderungen in der Eingabe ändern kann. Der momentane Füllstand und andere Eigenschaften des Puffers können von der Steuereinheit (680) dazu verwendet werden, die Qualität und/oder die Bitrate zu regulieren. Alternativ kann sich die Ausgabebitrate über die Zeit ändern, wobei die Qualität relativ konstant gehalten wird. Oder die Ausgabebitrate ist lediglich derart vorgegeben, dass sie geringer ist als eine bestimmte Bitrate, die entweder konstant oder zeitvariabel ist.
  • B. Verallgemeinerter Audiodecodierer
  • Unter Bezugnahme auf 7 enthält der verallgemeinerte Audiodecodierer (700) einen Bitstromdemultiplexer [”DEMUX”] (710), wenigstens einen Entropiedecodierer (720), einen Gemischt/-Rein-Verlustfreidecodierer (722), einen Kachelkonfigurationsdecodierer (730), einen Inversen Mehrkanalwandler (740), einen Inversen Quantisierer/-Gewichter (750), einen inversen Frequenzwandler (760), einen Überlapper/Addierer (770) und einen Mehrkanal-Nachbearbeitungsprozessor (780). Der Decodierer (700) ist geringfügig einfacher als der Codierer (600), da der Decodierer (700) keine Module für die Raten-/Qualitätssteuerung oder die Wahrnehmungsmodellierung enthält.
  • Der Decodierer (700) empfängt einen Bitstrom (705) komprimierter Audioinformationen in einem WMA-Format oder einem anderen Format. Der Bitstrom (705) enthält entropiecodierte Daten wie auch Nebeninformationen, aus denen der Decodierer (700) Audioabtastungen (795) wiederherstellt.
  • Der DEMUX (710) parst Informationen in dem Bitstrom (705) und sendet Informationen zu den Modulen des Decodierers (700). Der DEMUX (710) enthält wenigstens einen Puffer um vorübergehende Änderungen der Bitrate infolge von Schwankungen in der Komplexität des Audio, Netzwerkjitter und/oder anderer Faktoren zu kompensieren.
  • Der wenigstens eine Entropiedecodierer (720) dekomprimiert verlustfrei Entropiecodes, die von dem DEMUX (710) empfangen werden. Der Entropiedecodierer (720) wendet normalerweise die Umkehrung der Entropiecodiertechnik an, die in dem Codierer (600) verwendet wird. Aus Gründen der Einfachheit ist ein Entropiedecodiermodul in 7 gezeigt, wenngleich unterschiedliche Entropiedecodierer für verlustbehaftete und verlustfreie Codierarten oder selbst innerhalb Codierarten verwendet werden können. Zudem zeigt aus Gründen der Einfachheit 7 nicht die Auswahllogik der Arten. Bei der Decodierung von Daten, die in der verlustbehafteten Codierart komprimiert wurden, erzeugt der Entropiedecodierer (720) quantisierte Frequenzkoeffizientendaten.
  • Der Gemischt/-Rein-Verlustfreidecodierer (722) und der (die) zugehörige(n) Entropiedecodierer (720) dekomprimiert (dekomprimieren) verlustfrei codierte Audiodaten für die gemischte/reine verlustfreie Codierart. Für zusätzliche Details hinsichtlich der Dekompression für die gemischte/reine verlustfreie Decodierart, siehe die verwandte Anmeldung mit dem Titel ”Unified Lossy and Lossless Audio Compression”. Alternativ verwendet der Decodierer (700) andere Techniken für die gemischte und/oder reine verlustfreie Decodierung.
  • Der Kachelkonfigurationsdecodierer (730) empfängt und, sofern notwendig, decodiert Informationen aus dem DEMUX (790), die die Muster von Kacheln oder Frames kennzeichnen. Die Kachelmusterinformationen können entropiecodiert oder anderweitig parametrisiert sein. Der Kachelkonfigurationsdecodierer (730) leitet anschließend Kachelmusterinformationen zu unterschiedlichen Modulen des Decodierers (700) weiter. Für zusätzliche Details hinsichtlich der Kachelkonfigurationsdecodierung bei einigen Ausführungsformen, siehe den Abschnitt mit dem Titel ”Kachelkonfiguration”. Alternativ verwendet der Decodierer (700) andere Techniken, um Fenstermuster in Frames zu parametrisieren.
  • Der inverse Mehrkanalwandler (740) empfängt die quantisierten Frequenzkoeffizientendaten aus dem Decodierer (720) wie auch Kachelmusterinformationen aus dem Kachelkonfigurationsdecodierer (730) sowie Nebeninformationen aus dem DEMUX (710), die beispielsweise die verwendete Mehrkanaltransformation und transformierte Teile von Kacheln kennzeichnen. Unter Verwendung dieser Informationen dekomprimiert der inverse Mehrkanalwandler (740) die Transformationsmatrix je nach Erfordernis und wendet selektiv und flexibel wenigstens eine inverse Mehrkanaltransformation auf die Audiodaten an. Die Anordnung des inversen Mehrkanalwandlers (740) im Bezug auf den inversen Quantisierer/-Gewichter (750) ist bei der Formung von Quantisierrauschen hilfreich, das über die Kanäle austreten kann. Für zusätzliche Details hinsichtlich der inversen Mehrkanaltransformation bei einigen Ausführungsformen, siehe den Abschnitt mit dem Titel ”Flexible Mehrkanaltransformationen”.
  • Der inverse Quantisierer/-Gewichter (750) empfängt Kachel- und Kanalquantisierfaktoren wie auch Quantisiermatrizen aus dem DEMUX (710) und quantisierte Frequenzkoeffizientendaten aus dem inversen Mehrkanalwandler (740). Der inverse Quantisierer/-Gewichter (750) dekomprimiert die empfangenen Quantisier-Faktor/-Matrix-Informationen nach Erfordernis und führt die inverse Quantisierung und Gewichtung aus. Für zusätzliche Details hinsichtlich der inversen Quantisierung und Gewichtung bei einigen Ausführungsformen, siehe den Abschnitt mit dem Titel ”Quantisierung und Gewichtung”. Bei alternativen Ausführungsformen wendet der inverse Quantisierer/-Gewichter die Umkehrung einiger anderer Quantisiertechniken an, die in dem Codierer verwendet werden.
  • Der inverse Frequenzwandler (760) empfängt die Frequenzkoeffizientendaten, die von dem inversen Quantisierer/-Gewichter (750) ausgegeben werden, wie auch Nebeninformationen aus dem DEMUX (710) sowie Kachelmusterinformationen aus dem Kachelkonfigurationsdecodierer (730). Der inverse Frequenzwandler (760) wendet die Umkehrung der Frequenztransformation an, die in dem Codierer verwendet wird, und gibt Blöcke an den Überlapper/Addierer (770) aus.
  • Zusätzlich zu dem Empfang von Kachelmusterinformationen aus dem Kachelkonfigurationsdecodierer (730) empfängt der Überlapper/Addierer (770) decodierte Informationen aus dem inversen Frequenzwandler (760) und/oder dem Gemischt/-Rein-Verlustfreidecodierer (722). Der Überlapper/Addierer (770) überlappt und addiert die Audiodaten nach Erfordernis und verschachtelt Frames oder andere Sequenzen von Audiodaten, die in unterschiedlicher Art codiert wurden. Für zusätzliche Details hinsichtlich Überlappen, Addieren und Verschachteln gemischt oder rein verlustfrei codierter Frames, siehe die verwandte Anmeldung mit dem Titel ”Unified Lossy and Lossless Audio Compression”. Alternativ verwendet der Decodierer (700) andere Techniken zum Überlappen, Addieren und Verschachteln von Frames.
  • Der Mehrkanal-Nachbearbeitungsprozessor (780) ordnet wahlweise die Matrix der Frequenzdomänenaudioabtastungen, die von dem Überlapper/Addierer (770) ausgegeben werden, neu an. Der Mehrkanal-Nachbearbeitungsprozessor ordnet selektiv die Matrix von Audiodaten neu an, um Phantomkanäle für die Wiedergabe zu erzeugen, Spezialeffekte, wie etwa die räumliche Drehung von Kanälen unter den Lautsprechern auszuführen, Kanäle für die Wiedergabe über eine geringere Zahl von Lautsprechern wiederzugeben, oder für beliebige andere Zwecke. Für die bitstromgesteuerte Nachbearbeitung ändern sich die Nachbearbeitungstransformationsmatrizen über die Zeit und werden signalisiert oder sind in dem Bitstrom (705) enthalten. Für Zusätzliche Details hinsichtlich der Tätigkeit des Mehrkanal-Nachbearbeitungsprozessors in einigen Ausführungsformen, siehe den Abschnitt mit dem Titel ”Mehrkanal-Nachbearbeitung”. Alternativ führt der Decodierer (700) eine andere Art von Mehrkanal-Nachbearbeitung aus.
  • III. Mehrkanalvorverarbeitung
  • Bei einigen Ausführungsformen führt ein Codierer, wie etwa der Codierer (600) von 6 eine Mehrkanalvorverarbeitung durch, um Audioabtastungen in der Zeitdomäne einzugeben.
  • Wenn es allgemein N Ursprungsaudiokanäle als Eingabe gibt, ist die Zahl der von dem Codierer codierten Kanäle ebenfalls N. Die codierten Kanäle können eins zu eins den Ursprungskanälen entsprechen, oder die codierten Kanäle können durch Mehrkanaltransformation codierte Kanäle sein. Wenn die Codierkomplexität des Ursprungs die Kompression erschwert oder wenn der Codiererpuffer voll ist, kann der Codierer jedoch wenigstens einen der ursprünglichen Eingangsaudiokanäle verändern oder wegfallen lassen (d. h. nicht codieren). Dies kann getan werden, um die Codierkomplexität zu verringern und die insgesamt wahrgenommene Qualität des Audios zu verbessern. Bei qualitätsgesteuerter Vorverarbeitung führt der Codierer die Mehrkanalvorverarbeitung in Erwiderung auf die gemessene Audioqualität aus, um so die gesamte Audioqualität und die Kanaltrennung sanft zu steuern.
  • Der Codierer kann beispielsweise das Mehrkanalaudiobild verändern, um wenigstens einen der Kanäle weniger kritisch zu gestalten, so dass die Kanäle an dem Codierer wegfallen, jedoch an dem Decodierer als ”Phantom”-Kanäle rekonstruiert werden. Die vollständige Löschung von Kanälen kann eine dramatische Auswirkung auf die Qualität haben, weshalb diese nur dann ausgeführt wird, wenn die Codierkomplexität sehr hoch ist oder der Puffer derart gefüllt ist, dass eine Wiedergabe guter Qualität mit anderen Mitteln nicht erreicht werden kann.
  • Der Codierer kann dem Decodierer anzeigen, was zu tun ist, wenn die Anzahl codierter Kanäle geringer ist als die Anzahl von Kanälen für die Ausgabe. Dann kann eine Mehrkanalnachbearbeitungstransformation in dem Decodierer angewendet werden, um Phantomkanäle zu erzeugen, wie es unten in dem Abschnitt mit dem Titel ”Mehrkanalnachbearbeitung” beschrieben ist. Oder der Codierer kann dem Decodierer signalisieren, eine Mehrkanalnachbearbeitung für andere Zwecke auszuführen.
  • 8 zeigt eine verallgemeinerte Technik (800) für die Mehrkanalvorverarbeitung. Der Codierer führt eine Mehrkanalvorverarbeitung (810) an Mehrkanalaudiodaten (805) der Zeitdomäne aus und erzeugt transformierte Audiodaten (815) in der Zeitdomäne. Die Vorverarbeitung umfasst beispielsweise im allgemeinen eine N-Zu-N-Transformation, wobei N die Zahl der Kanäle ist. Der Codierer multipliziert N Abtastungen mit einer Matrix A. ypre = Apre·xpre (4), wobei xpre und ypre die Eingabe des Kanals N in die Vorverarbeitung und die Ausgabe aus dieser sind und Apre eine allgemeine N×N-Transformationsmatrix mit reellen (d. h. kontinuierlichen) Werteelementen ist. Die Matrix Apre kann derart gewählt werden, dass sie die Zwischenkanalkorrelation in ypre im Vergleich zu xpre, künstlich ändert. Dadurch wird die Komplexität für den übrigen Teil des Codierers verringert, jedoch zu Lasten einer verlorenen Kanaltrennung.
  • Die Ausgabe ypre wird anschließend dem übrigen Teil des Codierers zugeführt, der die Daten mit Hilfe von Techniken, die in 6 gezeigt sind, oder anderen Kompressionstechniken codiert (820), wodurch er codierte Mehrkanalaudiodaten (825) erzeugt.
  • Die Syntax, die von dem Codierer und dem Decodierer verwendet wird, gestattet eine Beschreibung allgemeiner oder vordefinierter Nachtbearbeitungsmehrkanal-Transformationsmatrizen, die variieren oder auf einer Basis Frame für Frame ein-/ausgeschaltet werden können. Der Codierer verwendet die Flexibilität, um Stereo-/Surroundbild-Beeinträchtigungen zu begrenzen, wobei er die Kanaltrennung für eine bessere Gesamtqualität unter bestimmten Umständen dadurch opfert, dass er die Zwischenkanalkorrelation künstlich erhöht. Alternativ verwenden der Decodierer und der Codierer eine weitere Syntax für die Mehrkanalvor- und Nachverarbeitung, wie etwa eine Syntax, die Änderungen in den Transformationsmatrizen auf einer anderen Basis als Frame für Frame gestattet.
  • 9a bis 9e zeigen Mehrkanalvorverarbeitungs-Transformationsmatrizen (900904), die verwendet werden, um die Zwischenkanalkorrelation unter bestimmten Umständen in dem Codierer künstlich zu erhöhen. Der Codierer schaltet zwischen Vorverarbeitungsmatrizen um, um zu ändern, wie viel Zwischenkanalkorrelation zwischen den Kanälen links, rechts und Mitte und zwischen den Kanälen hinten links und hinten rechts in einer 5.1-Kanal-Wiedergabeumgebung künstlich erhöht wird.
  • Bei einer Anwendung bewertet der Codierer bei geringen Bitraten die Qualität des rekonstruierten Audios über eine gewisse Zeitperiode und wählt in Abhängigkeit des Ergebnisses eine der Vorverarbeitungsmatrizen. Das Qualitätsmaß, das von dem Codierer bewertet wird, ist der Rausch-Anregungsabstand [”NER”], der das Verhältnis der Energie in dem Rauschmuster für einen rekonstruierten Audioclip zu der Energie in dem ursprünglichen digitalen Audioclip ist. Geringe NER-Werte kennzeichnen gute Qualität und hohe NER-Werte kennzeichnen eine geringe Qualität. Der Codierer bewertet den NER für wenigstens einen zuvor codierten Frame. Für zusätzliche Informationen bezüglich NER und andere Qualitätsmaße, siehe die US-Patentanmeldung mit der Sriennummer 10/017,861 mit dem Titel ”Techniques for Measurement of Perceptual Audio Quality”, eingereicht am 14. Dezember 2001, die hiermit durch Bezugnahme enthalten ist. Alternativ verwendet der Codierer ein anderes Qualitätsmaß, den Füllstand des Puffers und/oder bestimmte andere Kriterien, um eine Vorverarbeitungstransformationsmatrix zu wählen, oder der Codierer bewertet eine andere Zeitperiode des Mehrkanalaudios.
  • Wendet man sich wieder den Beispielen aus 9a bis 9e zu, so ändert bei niedrigen Bitraten der Codierer langsam die Vorverarbeitungstransformationsmatrix auf der Basis NER n einer speziellen Spanne eines Audioclips. Der Codierer vergleicht die Werte n mit Schwellenwerten nlow und nhigh, die anwendungsabhängig sind. Bei einer Anwendung haben nlow und nhigh die vorbestimmten Werte nlow = 0,55 und nhigh = 0,1. Alternativ haben nlow und nhigh unterschiedliche Werte oder Werte, die sich im Lauf der Zeit in Reaktion auf die Bitrate oder andere Kriterien ändern, oder der Codierer schaltet zwischen einer unterschiedlichen Anzahl von Matrizen um.
  • Ein niedriger Wert von n (z. B. n ≤ nlow) kennzeichnet eine Codierung mit guter Qualität. Somit verwendet der Codierer die Identitätsmatrix Alow (900), die in 9a gezeigt ist, wobei er wirkungsvoll die Vorverarbeitung abschaltet.
  • Andererseits kennzeichnet ein hoher Wert von n (z. B. n ≥ nhigh) eine Codierung mit geringer Qualität. Somit verwendet der Codierer die Matrix Ahigh,1 (902), die in 9c gezeigt ist. Die Matrix Ahigh,1 (902) ruft eine starke Surroundbildverzerrung hervor, bietet jedoch gleichzeitig eine sehr hohe Korrelation zwischen den Kanälen links, rechts und Mitte, wodurch die anschließende Codiereffizienz durch Verringern der Komplexität verbessert wird. Der mehrkanaltransformierte Mittelkanal ist der Durchschnitt der Kanäle links, rechts und Mitte. Die Matrix Ahigh,1 (902) beeinträchtigt zudem die Kanaltrennung zwischen den hinteren Kanälen – die Eingangskanäle hinten links und hinten rechts werden gemittelt.
  • Ein Zwischenwert von n (z. B. nlow < n < nhigh) kennzeichnet eine Codierung mittlerer Qualität. Somit kann der Codierer die Zwischenmatrix Ainter,1 (901) verwenden, die in 9b gezeigt ist. In der Zwischenmatrix Ainter,1 (901) misst der Faktor a die Relativposition von n zwischen nlow und nhigh.
    Figure 00380001
  • Die Zwischenmatrix Ainter,1 (901) geht allmählich von der Identitätsmatrix Alow (900) zu der Matrix geringer Qualität Ahigh,1 (902) über.
  • Für die Matrizen Ainter,1 (901) und Ahigh1 (902), die in 9b und 9c gezeigt sind, nutzt der Codierer später die Redundanz zwischen den Kanälen aus, für die der Codierer die Zwischenkanalkorrelation künstlich erhöht hatte, wobei der Codierer den Decodierer nicht anweisen muss, eine beliebige Mehrkanalnachbearbeitung für diese Kanäle auszuführen.
  • Hat der Decodierer die Fähigkeit, die Mehrkanalnachbearbeitung auszuführen, kann der Codierer die Rekonstruktion des Mittelkanals an den Decodierer delegieren. Ist dies der Fall, verwendet der Codierer, sofern der NER-Wert n eine Codierung geringer Qualität kennzeichnet, die Matrix Ahigh,2 (904), die in 9e gezeigt ist, mit der der Eingangsmittelkanal in den rechten und linken Kanal austritt. Bei der Ausgabe ist der Mittelkanal Null, wodurch die Codierkomplexität verringert wird.
  • Figure 00390001
  • Verwendet der Codierer die Vorverarbeitungstransformationsmatrix Ahigh,2 (904), weist der Codierer (durch den Bitstrom) den Decodierer an, eine Phantommitte durch Mittelung der decodierten linken und rechten Kanäle zu erzeugen. Spätere Mehrkanaltransformationen in dem Codierer können die Redundanz zwischen den gemittelten Kanälen hinten links und hinten rechts (ohne Nachbearbeitung) nutzen, oder der Codierer kann den Decodierer anweisen, eine gewisse Mehrkanalnachbearbeitung für die hinteren linken und rechten Kanäle auszuführen.
  • Wenn der NER-Wert n eine Codierung mittlerer Qualität anzeigt, kann der Codierer die Zwischenmatrix Ainter,2 (903), die in 9d gezeigt ist, verwenden, um einen Übergang zwischen den Matrizen aus 9a und 9e zu schaffen.
  • 10 zeigt eine Technik (1000) für die Mehrkanalvorverarbeitung, bei der sich die Transformationsmatrix möglicherweise auf einer Basis Frame für Frame ändert. Eine Änderung der Transformationsmatrix kann zu hörbarem Rauschen (z. B. Knacken) in der fertigen Ausgabe führen, sofern sie nicht vorsichtig gehandhabt wird. Um das Einleiten von Knackgeräuschen zu vermeiden, geht der Codierer allmählich von einer Transformationsmatrix zu einer weiteren zwischen den Frames über.
  • Der Codierer stellt zunächst die Vorverarbeitungstransformationsmatrix ein (1010), wie es oben beschrieben ist. Anschließend bestimmt (1020) der Codierer, ob sich die Matrix für den momentanen Frame von der Matrix für den vorherigen Frame unterscheidet (sofern es einen vorherigen Frame gab). Ist die momentane Matrix dieselbe oder gibt es keine vorherige Matrix, wendet der Codierer die Matrix auf die Eingangsaudioabtastungen für den momentanen Frame an (1030). Andernfalls wendet der Codierer eine verschmolzene Transformationsmatrix auf die Eingangsaudioabtastungen für den momentanen Frame an (1040). Die Verschmelzungsfunktion hängt von der Anwendung ab. Bei einer Anwendung, bei der Abtastung i in dem momentanen Frame, verwendet der Codierer eine kurzfristige verschmolzene Matrix Apre,i an.
    Figure 00400001
    wobei Apre,prev und Apre,current die Vorverarbeitungsmatrizen für den vorherigen bzw. den momentanen Frame sind und NumSamples die Anzahl der Abtastungen in dem momentanen Frame ist. Alternativ verwendet der Codierer eine andere Verschmelzungsfunktion, um die Diskontinuitäten in den Vorverarbeitungstransformationsmatrizen zu glätten.
  • Anschließend codiert der Codierer (1050) die Mehrkanalaudiodaten für den Frame unter Verwendung von Techniken, die in 6 gezeigt sind, oder anderer Kompressionstechniken. Der Codierer wiederholt die Technik (1000) auf einer Basis Frame für Frame. Alternativ ändert der Codierer die Mehrkanalvorverarbeitung auf einer anderen Basis.
  • IV. Kachelkonfiguration
  • Bei einigen Ausführungsformen gruppiert der Codierer, wie etwa der Codierer (600) aus 6 Fenster von Mehrkanalaudio zu Kacheln für die anschließende Codierung. Dies verleiht dem Codierer die Flexibilität, unterschiedliche Fensterkonfigurationen für unterschiedliche Kanäle in einem Frame zu verwenden, während zudem Mehrkanaltransformationen an unterschiedlichen Kombinationen von Kanälen für den Frame zulässig sind. Ein Decodierer, wie etwa der Decodierer (700) aus 7, arbeitete mit Kacheln während der Codierung.
  • Jeder Kanal kann eine Fensterkonfiguration unabhängig von den anderen Kanälen haben. Fenster, die identische Anfangs- und Endzeiten haben, werden als Bestandteil einer Kachel betrachtet. Eine Kachel kann über einen oder mehrere Kanäle verfügen, wobei der Codierer Mehrkanaltransformationen für Kanäle in einer Kachel ausführt.
  • 11a zeigt ein Beispiel einer Kachelkonfiguration (1100) für einen Frame von Stereoaudio. In 11a enthält jede Kachel ein einzelnes Fenster. Kein Fenster in jedem Kanal des Stereoaudios beginnt und endet zum selben Zeitpunkt wie ein Fenster in dem anderen Kanal.
  • 11b zeigt ein Beispiel einer Kachelkonfiguration (1101) für einen Frame von 5.1-Kanalaudio. Die Kachelkonfiguration (1101) enthält sieben Kacheln, die mit 0 bis 6 numeriert sind. Die Kachel 0 enthält Abtastungen aus den Kanälen 0, 2, 3 und 4 und überspannt das erste Viertel des Frames. Die Kachel 1 enthält Abtastungen aus Kanal 1 und überspannt die erste Hälfte des Frames. Kachel 2 enthält Abtastungen aus Kanal 5 und überspannt den gesamten Frame. Kachel 3 gleicht Kachel 0, überspannt jedoch des zweite Viertel des Frames. Die Kacheln 4 und 6 enthalten Abtastungen in den Kanälen 0, 2 und 3 und überspannen das dritte bzw. vierte Viertel des Frames. Schließlich enthält Kachel 5 Abtastungen aus den Kanälen 1 und 4 und überspannt die letzte Hälfte des Frames. Wie es in 11b gezeigt ist, kann eine spezielle Kachel Fenster in nicht zusammenhängenden Kanälen enthalten.
  • 12 zeigt eine verallgemeinerte Technik (1200) für die Konfiguration von Kacheln eines Frames von Mehrkanalaudio. Der Codierer setzt (1210) die Fensterkonfigurationen für die Kanäle in dem Frame, wobei er jeden Kanal zu Fenstern variabler Größe partitioniert, um die Zeitauflösung und die Frequenzauflösung auszugleichen. Beispielsweise partitioniert ein Partitionierer/Kachelkonfigurator des Codierers jeden Kanal unabhängig von den anderen Kanälen in dem Frame.
  • Der Codierer gruppiert (1220) anschließend Fenster aus den unterschiedlichen Kanälen zu Kacheln für den Frame. Beispielsweise setzt der Codierer Fenster aus unterschiedlichen Kanälen in einer einzelnen Kachel, sofern die Fenster identische Ausgangspositionen und identischen Endpositionen haben. Alternativ verwendet der Codierer andere oder zusätzliche Kriterien zu den Ausgangs-/Endpositionen um zu bestimmen, welche Abschnitte unterschiedlicher Kanäle zu einer Kachel zu gruppieren sind.
  • Bei einer Anwendung führt der Codierer die Kachelgruppierung (1220) nach (und unabhängig von) der Einstellung (1210) der Fensterkonfigurationen für einen Frame aus. Bei anderen Anwendungen stellt der Codierer gleichzeitig Fensterkonfigurationen ein (1210) und gruppiert (1220) Fenster zu Kacheln, um beispielsweise die Zeitkorrelation (unter Verwendung größerer Fenster) oder die Kanalkorrelation (durch Setzen einer größerer Zahl von Kanälen in einzelne Kacheln) zu unterstützen oder um die Anzahl von Kacheln zu steuern, indem er Fenster dazu zwingt, in einen speziellen Satz von Kacheln zu passen.
  • Anschließend sendet (1230) der Codierer die Kachelkonfigurationsinformationen für den Frame für die Ausgabe mit den codierten Audiodaten. Der Partitionierer/Kachelkonfigurator des Codierers sendet beispielsweise die Kachelgröße und die Kanalelementinformationen für die Kacheln zu einem MUX. Alternativ sendet der Codierer andere Informationen, die die Kachelkonfigurationen festlegen. Bei einer Anwendung sendet (1230) der Codierer die Kachelkonfigurationsinformationen nach der Kachelgruppierung (1220). Bei anderen Anwendungen führt der Codierer diese Aktionen gleichzeitig aus.
  • 13 zeigt eine Technik (1300) zum Konfigurieren von Kacheln und Senden von Kachelkonfigurationsinformationen für einen Frame von Mehrkanalaudio gemäß einer speziellen Bitstromsyntax. 13 zeigt die Technik (1300), die von dem Codierer ausgeführt wird, um Informationen in den Bitstrom zu setzen; der Decodierer führt eine entsprechende Technik aus (Lesen von Kennzeichen, Beziehen von Konfigurationsinformationen für spezielle Kacheln, etc.), um Kachelkonfigurationsinformationen für den Frame abzurufen, gemäß der Bitstromsyntax aus. Alternativ verwenden der Decodierer und der Codierer eine andere Syntax für wenigstens eine der Optionen, die in 13 gezeigt ist, wie etwa jene, die unterschiedliche Kennzeichen oder eine andere Ordnung verwendet.
  • Der Codierer prüft (1310) zu Beginn, ob keine der Kanäle in dem Frame in Fenster geteilt sind. ist dies der Fall, sendet (1312) der Codierer ein Kennzeichenbit (das kennzeichnet, dass keine Kanäle geteilt sind) und verlässt die Routine. Somit kennzeichnet ein einzelnes Bit, ob ein gegebener Frame eine einzelne Kachel ist oder über mehrere Kacheln verfügt.
  • Wenn andererseits wenigstens ein Kanal in Fenster unterteilt ist, prüft (1320) der Codierer, ob sämtliche Kanäle des Frames dieselbe Fensterkonfiguration haben. Ist dies der Fall, sendet (1322) der Codierer ein Kennzeichenbit (das anzeigt, dass sämtliche Kanäle dieselbe Fensterkonfiguration haben – jede Kachel in dem Frame verfügt über alle Kanäle) und eine Abfolge von Kachelgrößen und verlässt anschließend die Routine. Somit kennzeichnet das einzelne Bit, ob die Kanäle allesamt dieselbe Konfiguration haben (wie in einem herkömmlichen Codierbitstrom) oder eine flexible Kachelkonfiguration haben.
  • Wenn wenigstens einige Kanäle unterschiedliche Fensterkonfigurationen haben, tastet der Codierer durch die Abtastpositionen des Frames, um Fenster zu identifizieren, die sowohl dieselbe Ausgangsposition als auch dieselbe Endposition haben. Doch zunächst markiert (1330) der Codierer sämtliche Abtastpositionen in dem Frame als nicht gruppiert. Anschließend sucht (1340) der Codierer nach der nächsten ungruppierten Abtastposition in dem Frame gemäß einem Kanal-/Zeitabtastmuster. Bei einer Anwendung tastet der Codierer durch sämtliche Kanäle zu einem bestimmten Zeitpunkt und sucht nach ungruppierten Abtastpositionen und wiederholt dies anschließend für die nächste Abtastposition in der Zeit, etc. Bei anderen Anwendungen verwendet der Codierer ein anderes Abtastmuster.
  • Für die erfasste ungruppierte Abtastposition gruppiert (1350) der Codierer ähnliche Fenster zusammen in einer Kachel. Insbesondere gruppiert der Codierer Fenster, die an der Anfangsposition des Fensters beginnen, das die erfasste ungruppierte Abtastposition enthält, und die zudem an derselben Position enden, wie das Fenster, das die erfasste ungruppierte Abtastposition enthält. In dem Frame, der in 11b gezeigt ist, würde der Codierer beispielsweise zuerst die Abtastposition am Beginn des Kanals 0 erfassen. Der Codierer würde die Fenster mit Viertel-Frame-Länge aus den Kanälen 0, 2, 3 und 4 zusammen in einer Kachel gruppieren, da diese Fenster jeweils dieselbe Anfangsposition und dieselbe Endposition wie die anderen Fenster in der Kachel haben.
  • Anschließend sendet (1360) der Codierer Kachelkonfigurationsinformationen, die die Kachel festlegen, für die Ausgabe mit den codierten Audiodaten. Die Kachelkonfigurationsinformationsdaten enthalten die Kachelgröße und ein Kennfeld, das angibt, welche Kanäle mit ungruppierten Abtastpositionen in dem Frame an diesem Punkt in der Kachel sind. Das Kanalkennfeld enthält ein Bit pro Kanal, der für die Kachel möglich ist. Auf der Basis der Sequenz der Kachelinformationen ermittelt der Decodierer, wo Eine Kachel in einem Frame beginnt und endet. Der Codierer verringert die Bitrate für das Kanalkennfeld unter Berücksichtigung, welche Kanäle in der Kachel vorhanden sein können. Beispielsweise enthalten die Informationen für die Kachel 0 in 11 b die Kachelgröße und ein Binärmuster ”101110” um zu kennzeichnen, dass die Kanäle 0, 2, 3 und 4 Teil der Kachel sind. Nach diesem Punkt werden lediglich die Gruppierungen der Abtastpositionen in den Kanälen 1 und 5 aufgelöst. Somit enthalten die Informationen für die Kachel 1 die Kachelgröße und das Binärmuster ”10” um zu kennzeichnen, dass Kanal 1 Teil der Kachel ist, Kanal 5 jedoch nicht. Dadurch werden vier Bits in dem Binärmuster gespart. Die Kachelinformationen für die Kachel 2 enthalten anschließend lediglich die Kachelgröße (und nicht das Kanalkennfeld), da Kanal 5 der einzige Kanal ist, der über ein Fenster verfügen kann, das bei Kachel 2 beginnt. Die Kachelinformationen für die Kachel 3 enthalten die Kachelgröße und das Binärmuster ”1111”, da die Kanäle 1 und 5 gruppierte Positionen in dem Bereich für Kachel 3 haben. Alternativ verwenden der Codierer und der Decodierer andere Techniken, um Kanalmuster in der Syntax auszuweisen.
  • Der Codierer markiert (1370) anschließend die Abtastpositionen für die Fenster in der Kachel als gruppiert und bestimmt (1380), ob er fortfahren soll oder nicht. Gibt es keine weiteren ungruppierten Abtastpositionen in dem Frame, verlässt der Codierer die Routine. Andernfalls sucht (1340) der Codierer nach der nächsten ungruppierten Abtastposition in dem Frame gemäß dem Kanal-/Zeitabtastmuster.
  • V. Flexible Mehrkanaltransformationen
  • Bei einigen Ausführungsformen führt ein Codierer, wie etwa der Codierer (600) aus 6, flexible Mehrkanaltransformationen aus, die wirkungsvoll die Zwischenkanalkorrelation nutzen. Ein Decodierer, wie etwa der Decodierer (700) aus 7, führt entsprechende inverse Mehrkanaltransformationen aus.
  • Insbesondere führen der Codierer und der Decodierer eine der folgenden Tätigkeiten aus, um Mehrkanaltransformationen in unterschiedlichen Situationen zu verbessern.
    • 1. Der Codierer führt die Mehrkanaltransformation nach der perzeptuellen Gewichtung aus, und der Decodierer führt die entsprechende inverse Mehrkanaltransformation vor der inversen Gewichtung aus. Dadurch wird die Demaskierung von Quantisierrauschen über die Kanäle nach der inversen Mehrkanaltransformation verringert.
    • 2. Der Codierer und der Decodierer gruppieren Kanäle für die Mehrkanaltransformation um zu begrenzen, welche Kanäle zusammen transformiert werden.
    • 3. Der Codierer und der Decodierer schalten wahlweise die Mehrkanaltransformationen auf Frequenzbandebene ein/aus um zu steuern, welche Bänder zusammen transformiert werden.
    • 4. Der Codierer und der Decodierer verwenden hierarchische Mehrkanaltransformationen, um die Berechungskomplexität (insbesondere im Decodierer) zu begrenzen.
    • 5. Der Codierer und der Decodierer verwendet vordefinierte Mehrkanaltransformationsmatrizen, um die Bitrate zu verringern, die verwendet wird, um die Transformationsmatrizen festzulegen.
    • 6. Der Codierer und der Decodierer verwenden quantisierte Faktorisierungsparameter auf Basis der Givens-Rotation, um Mehrkanaltransformationsmatrizen auf Biteffizienz festzulegen.
  • A. Mehrkanaltransformation an gewichtetem Mehrkanalaudio
  • Bei einigen Ausführungsformen ordnet der Codierer die Mehrkanaltransformation nach der wahrnehmungsgemäßen (perzeptuellen) Gewichtung an (und der Decodierer ordnet die inverse Mehrkanaltransformation vor der inversen Gewichtung an), so dass das über die Kanäle ausgetretene Signal gesteuert wird, messbar ist und ein Spektrum aufweist, das dem des Ursprungssignals gleicht.
  • 14 zeigt eine Technik (1400) zum Ausführen wenigstens einer Mehrkanaltransformation nach dem wahrnehmungsgemäßen Gewichten in dem Codierer. Der Codierer gewichtet wahrnehmungsgemäß (1410) Mehrkanalaudio, beispielsweise durch Anwenden von Gewichtungsfaktoren auf das Mehrkanalaudio in der Frequenzdomäne. Bei einigen Anwendungen wendet der Codierer sowohl Gewichtungsfaktoren als auch Quantisierschrittmodifikatoren pro Kanal auf die Mehrkanalaudiodaten vor der(den) Mehrkanaltransformation(en) an.
  • Anschließend führt der Codierer (1420) wenigstens eine Mehrkanaltransformation an den gewichteten Audiodaten an, wie es beispielsweise im folgenden erläutert ist. Schließlich quantisiert (1430) der Codierer die mehrkanaltransformierten Audiodaten.
  • 15 zeigt eine Technik (1500) zum Ausführen einer inversen Mehrkanaltransformation vor der inversen Gewichtung in dem Decodierer. Der Decodierer führt wenigstens eine inverse Mehrkanalumfomung an den quantisierten Audiodaten aus (1510), wie es beispielsweise im folgenden beschrieben ist. Insbesondere sammelt der Decodierer Abtastungen aus mehreren Kanälen an einem bestimmten Frequenzindex zu einem Vektor xmc und führt die inverse Mehrkanaltransformation Amc aus, um die Ausgabe ymc zu erzeugen. ymc = Amc·xmc (7).
  • Anschließend führt der Decodierer eine inverse Quantisierung und eine inverse Gewichtung an dem Mahrkanalaudio aus (1520), wobei er die Ausgabe der Mehrkanaltransformation mit einer Maskierung (Maskierungen) einfärbt. Somit wird ein Lecken, das über die Kanäle (infolge der Quantisierung) auftritt, spektral geformt, so dass die Hörbarkeit des leckenden Signals messbar und steuerbar ist, und das Lecken anderer Kanäle in einem gegebenen rekonstruierten Kanal wie das ursprüngliche nicht beeinträchtigte Signal des gegebenen Kanals spektral geformt wird. (Bei einigen Anwendungen gestatten es die Quantisierschrittmodifikatoren pro Kanal dem Codierer zudem, die Qualität des rekonstruierten Signals über sämtliche rekonstruierte Kanäle gleich zu gestalten.)
  • B. Kanalgruppen
  • Bei einigen Ausführungsformen gruppieren der Codierer und der Decodierer Kanäle für die Mehrkanaltransformation um zu begrenzen, welche Kanäle zusammen transformiert werden. Bei Ausführungsformen, die beispielsweise eine Kachelkonfiguration benutzen, bestimmt der Codierer, welche Kanäle innerhalb einer Kachel korrelieren, und gruppiert die korrelierten Kanäle. Alternativ verwenden ein Codierer und ein Decodierer nicht die Kachelkonfiguration, gruppieren aber dennoch Kanäle zu Frames oder auf einer anderen Ebene.
  • 16 zeigt eine Technik (1600) zum Gruppieren von Kanälen einer Kachel für Mehrkanalinformationen bei einer Anwendung. Bei dieser Technik (1600) berücksichtigt der Codierer paarweise Korrelationen zwischen den Signalen von Kanälen wie auch in einigen Fällen Korrelationen zwischen Bändern. Alternativ berücksichtigt ein Codierer andere und/oder zusätzliche Faktoren, wenn er Kanäle für die Mehrkanaltransformation gruppiert.
  • Zunächst bezieht (1610) der Codierer die Kanäle für eine Kachel. In der Kachelkonfiguration, die in 11b gezeigt ist, hat die Kachel 3 beispielsweise vier Kanäle in sich: 0, 2, 3 und 4.
  • Der Codierer berechnet (1620) paarweise Korrelationen zwischen den Signalen in Kanälen und gruppiert (1630) anschließend Kanäle dementsprechend. Es wird angenommen, dass für Kachel 3 in 11b, die Kanäle 0 und 2 paarweise korreliert sind, jedoch keiner dieser Kanäle mit Kanal 3 oder Kanal 4 paarweise korreliert ist, die Kanäle 0 und 2 paarweise korreliert sind, jedoch keiner dieser Kanäle mit Kanal 3 oder 4 paarweise korreliert ist, und Kanal 3 nicht paarweise mit Kanal 4 korreliert ist. Der Codierer gruppiert (1630) die Kanäle 0 und 2 zusammen, setzt Kanal 3 in eine separate Gruppe und setzt Kanal 4 in eine weitere Gruppe.
  • Ein Kanal der nicht paarweise mit einem beliebigen der Kanäle in einer Gruppe korreliert ist, kann trotzdem mit dieser Gruppe kompatibel sein. Somit prüft (1640) für die Kanäle, die mit einer Gruppe nicht kompatibel sind, der Codierer wahlweise eine Kompatibilität auf Bandebene und stellt die wenigstens eine Gruppe von Kanälen dementsprechend ein (1650). Insbesondere werden dadurch Kanäle identifiziert, die mit einer Gruppe in einigen Bändern kompatibel sind, jedoch in bestimmten anderen Bändern inkompatibel sind. Es wird beispielsweise angenommen, dass Kanal 4 von Kachel 3 in 11b tatsächlich mit den Kanälen 0 und 2 in den meisten Bändern kompatibel ist, dass jedoch die Inkompatibilität in einigen Bändern die paarweisen Korrelationsergebnisse verschiebt. Der Codierer stellt die Gruppen ein (1650), um die Kanäle 0, 2, und 4 zusammenzustellen, und belässt Kanal 3 in seiner eigenen Gruppe. Der Codierer kann eine derartige Überprüfung auch dann durchführen, wenn einige Kanäle ”insgesamt” korreliert sind, jedoch inkompatible Bänder haben. Das Abschalten der Transformation an diesen inkompatiblen Bändern verbessert die Korrelation unter den Bändern, die tatsächlich durch Mehrkanaltransformation codiert werden, und verbessert somit die Codiereffizienz.
  • Ein Kanal in einer gegebenen Kachel gehört zu einer Kanalgruppe. Die Kanäle in einer Kanalgruppe müssen nicht zusammenhängend sein. Eine einzige Kachel kann mehrere Kanalgruppen enthalten, und jede Kanalgruppe kann eine andere zugeordnete Mehrkanaltransformation erfahren. Nach dem entschieden worden ist, welche Kanäle kompatibel sind, setzt der Codierer Kanalgruppeninformationen in den Bitstrom.
  • 17 zeigt eine Technik (1700) zum Abrufen von Kanalgruppeninformationen und Mehrkanaltransformationsinformationen für eine Kachel aus einem Bitstrom gemäß einer speziellen Bitstromsyntax, unabhängig davon, wie der der Codierer Kanalgruppen berechnet. 17 zeigt die Technik (1700), die von dem Decodierer ausgeführt wird, um Informationen in dem Bitstrom abzurufen; der Codierer führt eine entsprechende Technik aus, um Kanalgruppeninformationen und Mehrkanaltransformationsinformationen für die Kachel gemäß der Bitstromsyntax zu formatieren. Alternativ verwenden der Decodierer und der Codierer eine andere Syntax für wenigstens eine der Optionen, die in 17 gezeigt sind.
  • Zunächst initialisiert der Decodierer zahlreiche Variable, die bei der Technik (1700) verwendet werden. Der Decodierer stellt #ChannelsToVisit gleich der Anzahl von Kanälen in der Kachel ChannelsInTile ein (1710) und stellt die Anzahl von Kanalgruppen #ChannelGroups auf 0.
  • Der Codierer prüft (1720), ob #ChannelsToVisit größer als 2 ist. Ist dies nicht der Fall, prüft (1730) der Decodierer, ob #ChannelsToVisit gleich 2 ist. Ist dies der Fall, decodiert (1740) der Decodierer die Mehrkanaltransformation für die Gruppe von zwei Kanälen beispielsweise unter Verwendung einer Technik, die unten beschrieben ist. Die Syntax gestattet es jeder Kanalgruppe, eine andere Mehrkanaltransformation zu erfahren. Wenn andererseits #ChannelsToVisit gleich 1 oder 0 ist, verlässt der Decodierer die Routine, ohne eine Mehrkanaltransformation zu decodieren.
  • Ist #ChannelsToVisit größer als 2, decodiert (1750) der Decodierer die Kanalmaskierung für eine Gruppe in der Kachel. Insbesondere liest der Decodierer #ChannelsToVisit-Bits aus dem Bitstrom für die Kanalmaskierung. Jedes Bit in der Kanalmaskierung gibt an, ob sich ein bestimmter Kanal in der Kanalgruppe befindet, oder nicht. Ist die Kanalmaskierung beispielsweise ”10110”, dann enthält die Kachel 5 Kanäle und die Kanäle 0, 2 und 3 befinden sich in der Kanalgruppe.
  • Anschließend zählt (1760) der Decodierer die Anzahl von Kanälen in der Gruppe und decodiert (1770) die Mehrkanaltransformation für die Gruppe beispielsweise unter Verwendung einer Technik, die im folgenden beschrieben ist. Der Decodierer aktualisiert (1780) #ChannelsToVisit durch Subtrahieren der gezählten Anzahl von Kanälen in der momentanen Kanalgruppe, erhöht (1790) #ChannelGroups und prüft (1720), ob die Anzahl übriger zu besuchender Kanäle #ChannelsToVisit größer als 2 ist.
  • Bei Ausführungsformen, die keine Kachelkonfigurationen verwenden, ruft der Decodierer alternativ die Kanalgruppeninformationen und die Mehrkanaltransformationsinformationen für einen Frame oder eine andere Ebene ab.
  • C. Band-Ein/Aus-Steuerung für die Mehrkanaltransformation
  • Bei einigen Ausführungsformen schalten der Codierer und der Decodierer Mehrkanaltransformationen auf der Frequenzbandebene wahlweise ein/aus um zu steuern, welche Bänder zusammen transformiert werden. Auf diese Weise schließen der Codierer und der Decodierer wahlweise Bänder aus, die in Mehrkanaltransformationen nicht kompatibel sind. Wird die Mehrkanaltransformation für ein spezielles Band ausgeschaltet, verwenden der Codierer und der Decodierer die Identitätstransformation für dieses Band und reichen die Daten in diesem Band ohne Veränderung durch.
  • Die Frequenzbänder sind kritische Bänder oder Quantisierbänder. Die Anzahl der Frequenzbänder bezieht sich auf die Abtastfrequenz der Audiodaten und die Kachelgröße. Je höher die Abtastfrequenz oder größer die Kachelgröße ist, desto größer ist im allgemeinen die Anzahl der Frequenzbänder.
  • Bei einigen Anwendungen schaltet der Codierer die Mehrkanaltransformationen auf der Frequenzbandebene für Kanäle einer Kanalgruppe einer Kachel wahlweise ein/aus. Der Codierer kann Bänder ein/aus-schalten, wenn der Codierer Kanäle für eine Kachel gruppiert, oder nach der Kanalgruppierung für die Kachel. Alternativ verwenden ein Codierer und ein Decodierer nicht die Kachelkonfiguration, sondern schalten weiterhin die Mehrkanaltransformationen an Frequenzbändern für einen Frame oder auf einer anderen Ebene ein/aus.
  • 18 zeigt eine Technik (1800) zum wahlweisen Einschließen von Frequenzbändern von Kanälen einer Kanalgruppe in eine Mehrkanaltransformation bei einer Anwendung. Bei dieser Technik (1800) berücksichtigt der Codierer paarweise Korrelationen zwischen den Signalen der Kanäle in einem Band um zu bestimmen, ob die Mehrkanaltransformation für das Band eingesetzt oder außer Kraft gesetzt wird. Alternativ berücksichtigt ein Codierer andere und/oder zusätzliche Faktoren, wenn er Frequenzbänder für eine Mehrkanaltransformation wahlweise ein- oder ausschaltet.
  • Zunächst bezieht (1810) der Codierer die Kanäle für eine Kanalgruppe, wie es beispielsweise unter Bezugnahme auf 16 beschrieben ist. Anschließend berechnet (1820) der Codierer paarweise Korrelationen zwischen den Signalen in den Kanälen für unterschiedliche Frequenzbänder. Wenn die Kanalgruppe beispielsweise zwei Kanäle enthält, berechnet der Codierer eine paarweise Korrelation in jedem Frequenzband. Oder der Codierer berechnet, wenn die Kanalgruppe mehr als zwei Kanäle enthält, paarweise Korrelationen zwischen einigen oder sämtlichen der entsprechenden Kanalpaare in jedem Frequenzband.
  • Anschließend schaltet der Codierer Bänder für die Mehrkanaltransformation für die Kanalgruppe ein oder aus (1830). Enthält die Kanalgruppe beispielsweise zwei Kanäle, setzt der Codierer die Mehrkanaltransformation für ein Band in Kraft, sofern die paarweise Korrelation an dem Band einen speziellen Schwellenwert erfüllt. Oder der Codierer setzt, wenn die Kanalgruppe mehr als zwei Kanäle enthält, die Mehrkanaltransformation für ein Band in Kraft, wenn jede oder eine Mehrheit der paarweisen Korrelationen an dem Band einen speziellen Schwellenwert erfüllt. Bei alternativen Ausführungsformen schaltet der Codierer das Band für einige Kanäle an und für andere Kanäle aus, anstelle ein spezielles Frequenzband für sämtliche Kanäle ein- oder auszuschalten.
  • Nachdem entschieden worden ist, welche Bänder in den Mehrkanaltransformationen eingeschlossen werden, gibt der Codierer Band-Ein/Aus-Informationen in den Bitstrom ein.
  • 19 zeigt eine Technik (1900) zum Abrufen von Band-Ein/Aus-Informationen für eine Mehrkanaltransformation für eine Kanalgruppe einer Kachel aus einem Bitstrom gemäß einer speziellen Bitstromsyntax, unabhängig davon, wie der Codierer entscheidet, ob die Bänder ein- oder auszuschalten sind. 19 zeigt die Technik (1900), die von dem Decodierer ausgeführt wird, um Informationen aus dem Bitstrom abzurufen; der Codierer führt eine entsprechende Technik aus, um Band-Ein/Aus-Informationen für die Kanalgruppe gemäß der Bitstromsyntax zu formatieren. Alternativ verwenden der Decodierer und der Codierer eine andere Syntax für wenigstens eine der Optionen, die in 19 gezeigt ist.
  • Bei einigen Anwendungen führt der Decodierer die Technik (1900) als Teil der Decodierung der Mehrkanaltransformation (1740 oder 1770) der Technik (1700) aus. Alternativ führt der Decodierer die Technik (1900) separat aus.
  • Der Decodierer bezieht (1910) ein Bit und prüft (1920) das Bit um zu bestimmen, ob sämtliche Bänder für die Kanalgruppe in Kraft gesetzt sind. Ist dies der Fall, setzt der Decodierer die Mehrkanaltransformation für sämtliche Bänder der Kanalgruppe in Kraft (1930).
  • Wenn andererseits das Bit angibt, dass sämtliche Bänder nicht für die Kanalgruppe in Kraft gesetzt sind, decodiert (1940) der Decodierer die Bandmaskierung für die Kanalgruppe. Insbesondere liest der Decodierer eine Anzahl von Bits aus dem Bitstrom, wobei die Anzahl die Anzahl von Bändern für die Kanalgruppe ist. Jedes Bit in der Bandmaskierung kennzeichnet, ob ein spezielles Band für die Kanalgruppe ein- oder ausgeschaltet ist. Ist die Bandmaskierung beispielsweise ”111111110110000”, dann enthält die Kanalgruppe 15 Bänder und werden die Bänder 0, 1, 2, 3, 4, 5, 6, 7, 9 und 10 für die Mehrkanaltransformation eingeschaltet. Anschließend setzt der Decodierer die Mehrkanaltransformation für die gekennzeichneten Bänder in Kraft (1950).
  • Bei Ausführungsformen, die keine Kachelkonfigurationen verwenden, ruft der Decodierer alternativ Band-Ein/Aus-Informationen für einen Frame oder auf einer anderen Ebene ab.
  • D. Hierarchische Mehrkanaltransformationen
  • Bei einigen Ausführungsformen verwenden der Codierer und der Decodierer hierarchische Mehrkanaltransformationen, um die Berechnungskomplexität insbesondere in dem Decodierer zu begrenzen. Mit der hierarchischen Transformation teilt ein Codierer Gesamtinformationen auf mehrere Stufen auf, wodurch die Berechungskomplexität für einzelne Stufen verringert wird und in manchen Fällen die Menge der Informationen reduziert wird, die erforderlich sind, um die Mehrkanaltransformation(en) festzulegen. Unter Verwendung dieser kaskadierten Struktur emuliert der Codierer die größere Gesamttransformation mit kleineren Transformationen bis zu einer gewissen Genauigkeit. Der Decodierer führt eine entsprechende hierarchische inverse Transformation aus.
  • Bei einigen Anwendungen ist jede Stufe der hierarchischen Transformation hinsichtlich des Aufbaus identisch, und in dem Bitstrom ist jede Stufe unabhängig von wenigstens einer anderen Stufe beschrieben. Insbesondere hat jede Stufe ihre eigenen Kanalgruppen sowie eine Mehrkanaltransformationsmatrix je Kanalgruppe. Bei alternativen Anwendungen sind unterschiedliche Stufen unterschiedlich aufgebaut, und der Codierer sowie der Decodierer verwenden eine unterschiedliche Bitstromsyntax und/oder die Stufen verwenden eine andere Konfiguration für Kanäle und Transformationen.
  • 20 zeigt eine verallgemeinerte Technik (2000) zum Emulieren einer Mehrkanaltransformation unter Verwendung einer Hierarchie einfacherer Mehrkanaltransformationen. 20 zeigt eine n-stufige Hierarchie, wobei n die Anzahl von Mehrkanaltransformationsstufen ist. Bei einer Anwendung ist n beispielsweise 2. Alternativ ist n größer als 2.
  • Der Codierer bestimmt (2010) eine Hierarchie von Mehrkanaltransformationen für eine Gesamttransformation. Der Codierer entscheidet über die Transformationsgrößen (d. h. die Kanalgruppengrößen) auf der Basis der Komplexität des Decodierers, der die inversen Transformationen ausführen wird. Oder der Codierer berücksichtigt das Profil des beabsichtigten Decodierers/die Ebene des Decodierers oder bestimmte andere Kriterien.
  • 21 ist ein Diagramm, das eine beispielhafte Hierarchie (2100) von Mehrkanaltransformationen darstellt. Die Hierarchie (2100) umfasst 2 Stufen. Die erste Stufe enthält N + 1 Kanalgruppen und Transformationen, die mit 0 bis N numeriert sind; die zweite Stufe umfasst M + 1 Kanalgruppen und Transformationen, die mit 0 bis M numeriert sind. Jede Kanalgruppe enthält 1 oder mehr Kanäle. Für jede der N + 1 Transformationen der ersten Stufe sind die Eingangskanäle eine bestimmte Kombination der Kanäle, die in den Mehrkanalwandler eingegeben werden. Es müssen nicht sämtliche Eingangskanäle in der ersten Suite transformiert werden. Wenigsten ein Eingangskanal kann die erste Stufe unverändert durchlaufen (der Codierer kann beispielsweise derartige Kanäle in einer Kanalgruppe enthalten, die eine Identitätsmatrix verwendet). Für jede der M + 1 Transformationen der zweiten Stufe sind die Eingangskanäle eine bestimmte Kombination der Ausgangskanäle aus der ersten Stufe und umfassen Kanäle, die die erste Stufe unverändert durchlaufen haben könnten.
  • Wendet man sich wieder 20 zu, so führt der Codierer (2020) die erste Stufe von Mehrkanaltransformationen aus und führt die nächste Stufe der Mehrkanaltransformationen aus, wobei er schließlich die nte Stufe der Mehrkanaltransformationen ausführt (2030). Ein Decodierer führt die entsprechenden inversen Mehrkanaltransformationen während des Decodierens aus.
  • Bei einigen Anwendungen sind die Kanalgruppen an mehreren Stufen der Hierarchie gleich, die Mehrkanaltransformationen jedoch unterschiedlich. In derartigen Fällen wie auch in bestimmten anderen Fällen kann der Codierer Frequenzband-Ein/Aus-Informationen für die zahlreichen Mehrkanaltransformationen kombinieren. Es wird beispielsweise davon ausgegangen, dass es zwei Mehrkanaltransformationen gibt und sich dieselben drei Kanäle in der Kanalgruppe für jede befinden. Der Codierer kann keine Transformation/Identitätstransformation an beiden Stufen für Band 0, lediglich Mehrkanaltransformation an Stufe 1 für Band 1 (keine Transformation an Stufe 2), nur Mehrkanaltransformation an Stufe 2 für Band 2 (keine Transformation an Stufe 1), Mehrkanaltransformationen an beiden Stufen für Band 3, keine Transformation an beiden Stufen für Band 4 und dergleichen festlegen.
  • 22 zeigt eine Technik (2200) zum Abrufen von Informationen für eine Hierarchie von Mehrkanaltransformationen für Kanalgruppen aus einem Bitstrom gemäß einer speziellen Bitstromsyntax. 22 zeigt die Technik (2200), die von dem Decodierer ausgeführt wird, um den Bitstrom zu parsen; der Codierer führt eine entsprechende Technik aus, um die Hierarchie von Mehrkanaltransformationen gemäß der Bitstromsyntax zu formatieren. Alternativ verwenden der Decodierer und der Codierer eine andere Syntax, wie etwa jene, die zusätzliche Kennzeichen und Signalisierungsbits für mehr als zwei Stufen enthält.
  • Zunächst stellt der Decodierer einen vorübergehenden Wert iTmp gleich dem nächstens Bit in dem Bitstrom ein (2210). Anschließend prüft (2220) der Decodierer den Wert des vorübergehenden Wertes, der signalisiert, ob der Decodierer Kanalgruppen- und Mehrkanaltransformationsinformationen für eine Gruppe von Stufe 1 decodieren (2230) soll oder nicht Nachdem der Decodierer (2230) Kanalgruppen- und Mehrkanaltransformationsinformationen für eine Gruppe in Stufe 1 decodiert (2230) hat, stellt der Decodierer iTmp gleich dem nächsten Bit in dem Bitstrom ein. Der Decodierer prüft erneut (2220) den Wert von iTmp, der signalisiert, ob der Bitstrom Kanalgruppen- und Mehrkanaltransformationsinformationen für eine weitere Gruppe von Stufe 1 enthält. Lediglich die Kanalgruppen mit Nicht-Identitätstransformationen werden in dem Stufe-1-Abschnitt des Bitstroms festgelegt; Kanäle, die in dem Stufe-1-Teil des Bitstroms nicht beschrieben sind, werden als Teil einer Kanalgruppe betrachtet, die eine Identitätstransformation verwendet.
  • Enthält der Bitstrom keine weiteren Kanalgruppen- und Mehrkanaltransformationsinformationen für Gruppen der Stufe 1, decodiert (2250) der Decodierer Kanalgruppen- und Mehrkanaltransformationsinformationen für sämtliche Gruppen der Stufe 2.
  • E. Vordefinierte oder angepasste Mehrkanaltransformationen
  • Bei einigen Ausführungsformen verwenden der Codierer und der Decodierer vordefinierte Mehrkanaltransformationsmatrizen, um die Bitrate zu verringern, die zur Festlegung der Transformationsmatrizen verwendet wird. Der Codierer wählt aus mehreren verfügbaren vordefinierten Matrixtypen und signalisiert die gewählte Matrix in dem Bitstrom mit einer kleinen Zahl (z. B. 1, 2) von Bits. Einige Typen von Matrizen verlangen keine zusätzliche Signalisierung in dem Bitstrom, aber andere Typen von Matrizen erfordern eine zusätzliche Festlegung. Der Decodierer ruft die Informationen ab, die den Matrixtyp kennzeichnen und (sofern notwendig) die zusätzlichen Informationen, die die Matrix festlegen.
  • Bei einigen Anwendungen verwenden der Codierer und der Decodierer die folgenden vordefinierten Matrixtypen: Identität, Hadamard, DCT Typ II oder beliebig unitär. Alternativ verwenden der Codierer und der Decodierer andere und/oder zusätzliche vordefinierte Matrixtypen.
  • 9a zeigt ein Beispiel einer Identitätsmatrix für 8 Kanäle in einem weiteren Kontext. Der Codierer legt wirkungsvoll eine Identitätsmatrix in dem Bitstrom mit Hilfe von Kennzeichenbits fest, vorausgesetzt die Anzahl der Dimensionen für die Identitätsmatrix ist sowohl dem Codierer als auch dem Decodierer aus anderen Informationen (z. B. der Anzahl der Kanäle in einer Gruppe) bekannt.
  • Eine Hadamard-Matrix hat die folgende Gestalt.
    Figure 00540001
    wobei ρ ein Normalisierungsskalar (√2) ist. Der Codierer legt wirkungsvoll eine Hadamard-Matrix für Stereodaten in dem Bitstrom mit Hilfe von Kennzeichenbits fest.
  • Eine DCT-Typ-II-Matrix hat die folgende Gestalt
  • Figure 00540002
  • Für zusätzliche Informationen über die DCT-Typ-II-Matrizen, siehe Rao et al., Discrete Cosine Transform, Academic Press (1990). Die DCT-Typ-II-Matrix kann eine beliebige Größe haben (d. h. für eine Kanalgruppe beliebiger Größe funktionieren). Die Codierer legt wirkungsvoll eine OCT-Typ-II-Matrix in dem Bitstrom unter Verwendung von Kennzeichenbits fest, vorausgesetzt die Anzahl der Dimensionen für die DCT-Typ-II-Matrix sind dem Coderier und dem Decodierer aus anderen Informationen (wie etwa der Anzahl von Kanälen in einer Gruppe) bekannt.
  • Eine Quadratmatrix Asquare ist unitär, sofern deren Transposition ihre Umkehrung ist. Asquare·Asquare T = Asquare T·Asqure = I (12), wobei I die Identitätsmatrix ist. Der Codierer verwendet beliebige unitäre Matrizen, um KLT-Transformationen für das effektive Entfernen von Redundanz festzulegen. Der Coderier legt wirkungsvoll eine beliebige unitäre Matrix in dem Bitstrom unter Verwendung von Kennzeichenbits und eine Parametrisierung der Matrix fest. Bei einigen Anwendungen parametrisiert der Codierer die Matrix mit Hilfe quantisierter Givens-Faktorierungsrotationen, wie es im folgenden beschrieben wird. Alternativ wendet der Codierer eine andere Parametrisierung an.
  • 23 zeigt eine Technik (2300) zum Wählen eines Mehrkanaltransformationstyps aus einer Vielzahl verfügbarer Typen. Der Codierer wählt einen Transformationstyp auf einer Basis Gruppe für Gruppe oder auf einer anderen Ebene.
  • Der Codierer wählt (2310) einen Mehrkanaltransformationstyp aus einer Vielzahl verfügbarer Typen. Die Typen umfassen beispielsweise Identität, Hadamard, DCT Typ II und beliebig unitär. Alternativ umfassen die Typen unterschiedliche und/oder zusätzliche Matrixtypen. Der Codierer verwendet eine Identitäts-, Hadamard-, DCT-Typ-II-Matrix (anstelle eine beliebigen unitären Matrix), sofern es möglich oder erforderlich ist, um die Bits zu reduzieren, die notwendig sind, um die Transformationsmatrix festzulegen. Der Codierer verwendet beispielsweise eine Identitäts-, Hadamard- oder DCT-Typ-II-Matrix, sofern das Entfernen der Redundanz (bei bestimmten Kriterien) vergleichbar mit dem Entfernen der Redundanz mit der beliebigen unitären Matrix ist oder diesem nahekommt. Oder der Codierer verwendet eine Identitäts-, Hadamard-, oder DCT-Typ-II-Matrix, sofern der Codierer die Bitrate reduzieren muss. In einer allgemeinen Situation verwendet der Codierer jedoch eine beliebige unitäre Matrix für die beste Kompressionseffizienz.
  • Anschließend wendet der Codierer eine Mehrkanaltransformation des gewählten Typs auf die Mehrkanalaudiodaten an.
  • 24 zeigt eine Technik (2400) zum Abrufen eines Mehrkanaltransformationstyps aus einer Vielzahl verfügbarer Typen und zum Ausführen einer inversen Mehrkanaltransformation. Der Decodierer ruft Transformationstypinformationen auf einer Basis Kanalgruppe für Kanalgruppe oder einer bestimmten anderen Ebene ab.
  • Der Decodierer ruft einen Mehrkanaltransformationstyp aus einer Vielzahl verfügbarer Typen ab (2410). Beispielsweise umfassen die Typen Identität, Hadamard, DCT-Typ-II und beliebig unitär. Alternativ enthalten die Typen andere und/oder zusätzliche Matrixtypen. Sofern es nötig ist, ruft der Decodierer zusätzliche Informationen ab, die die Matrix festlegen.
  • Nach der Rekonstruktion der Matrix, wendet der Decodierer eine inverse Mehrkanaltransformation des gewählten Typs auf die Mehrkanalaudiodaten an.
  • 25 zeigt eine Technik (2500) zum Abrufen von Mehrkanaltransformationsinformationen für eine Kanalgruppe aus einem Bitstrom gemäß einer speziellen Bitstromsyntax. 25 zeigt die Technik (2500), die von Decodierer angewendet wird, um den Bitstrom zu parsen; der Codierer führt eine entsprechende Technik aus, um die Mehrkanaltransformationsinformationen gemäß der Bitstromsyntax zu formatieren. Alternativ verwenden der Decodierer und der Codierer eine andere Syntax, wie etwa jene, die unterschiedliche Kennzeichenbits, eine andere Ordnung oder unterschiedliche Transformationstypen verwendet.
  • Zu Beginn prüft (2510) der Decodierer, ob die Zahl von Kanälen in der Gruppe #ChannelsInGroup größer ist als 1. Wenn nicht, ist die Kanalgruppe für Monoaudio bestimmt und der Codierer verwendet (2512) eine Identitätstransformation für die Gruppe.
  • Ist #ChannelsInGroup größer als 1, prüft (2520) der Decodierer, ob #ChannelsInGroup größer als 2 ist. Wenn nicht, ist die Kanalgruppe für Stereoaudio bestimmt, und der Decodierer stellt einen vorübergehenden Wert iTmp gleich dem nächsten Bit in dem Bitstrom ein (2522). Anschließend prüft (2524) der Decodierer den Wert des vorübergehenden Wertes, der signalisiert, ob der Decodierer die Hadamard-Transformation für die Kanalgruppe verwendet sollte (2530). Ist dies nicht der Fall, stellt der Decodierer iTmp gleich dem nächsten Bit in dem Bitstrom ein (2526) und prüft (2528) den Wert von iTmp, der signalisiert, ob der Decodierer eine Identitätstransformation für die Kanalgruppe verwenden sollte (2550). Wenn nicht, decodiert (2570) der Decodierer eine generische unitäre Transformation für die Kanalgruppe.
  • Wenn #ChannelsInGroup größer als 2 ist, ist die Kanalgruppe für Surroundsound-Audio bestimmt, und der Decodierer stellt einen vorübergehenden Wert iTmp gleich dem nächsten Bit in dem Bitstrom ein (2540). Der Decodierer prüft (2542) den Wert der vorübergehenden Wertes, der signalisiert, ob der Decodierer eine Identitätstransformation der Größe #ChannelsInGroup für die Kanalgruppe verwenden sollte (2550). Wenn nicht, stellt der Decodierer iTmp gleich dem nächsten Bit in dem Bitstrom ein (2560) und prüft (2562) den Wert von iTmp. Das Bit signalisiert, ob der Decodierer eine generische unitäre Transformation für die Kanalgruppe decodieren soll (2570) oder eine DCT-Typ-II-Transformation der Größe #ChannelsInGroup für die Kanalgruppe verwenden soll (2580).
  • Wenn der Decodierer eine Hadamard-, DCT-Typ-II- oder generische unitäre Transformationsmatrix für die Kanalgruppe verwendet, decodiert (2590) der Decodierer Mehrkanaltransformations-Band-Ein/Aus-Informationen für die Matrix und verlässt anschließend die Routine.
  • F. Givens-Rotationsdarstellung von Transformationsmatrizen
  • Bei einigen Ausführungsformen verwenden der Codierer und der Decodierer quantisierte Faktorisierungsparameter auf Givens-Rotationsbasis, um eine beliebige unitäre Transformationsmatrix hinsichtlich Biteffizienz festzulegen.
  • Im allgemeinen kann eine unitäre Transformationsmatrix mit Hilfe von Givens-Faktorisierungsrotationen dargestellt werden. Unter Verwendung dieser Faktorisierung kann eine unitäre Transformationsmatrix wie folgt dargestellt werden:
    Figure 00570001
    wobei αi +1 oder –1 (Vorzeichen der Rotation) ist und jedes Θ in Gestalt der Rotationsmatrix (2600) vorliegt, die in 26 dargestellt ist. Die Rotationsmatrix (2600) gleicht beinahe einer Identitätsmatrix, hat jedoch vier Sinus-/Kosinusterme mit variierenden Positionen. 27a bis 27c zeigen beispielhafte Rotationsmatrizen für Givens-Rotationen zum Darstellen einer Mehrkanaltransformationsmatrix. Die beiden Kosinusterme befinden sich immer auf der Diagonalen und die beiden Sinusterme sind in derselben Zeile/Spalte wie die Kosinusterme angeordnet.
  • Jedes Θ hat einen Rotationswinkel, wobei dessen Wert in einem Bereich – π / 2 ≤ ωk < π / 2 liegen Kann. Die Anzahl derartiger Rotationsmatrizen Θ, die erforderlich sind, um eine unitäre N×N-Matrix Aunitary vollständig zu beschreiben, ist wie folgt:
    Figure 00580001
  • Für zusätzliche Informationen bezüglich Givens-Faktorierungsrotationen, siehe Vaidyanathan, Multirate Systems and Filter Bank, Kapitel 14.6, "Factorization of Unitary Matrices", Prentice Hall (1993), die hiermit durch Bezugnahme enthalten ist.
  • Bei einigen Ausführungsformen quantisiert der Codierer die Rotationswinkel für die Givens-Faktorisierung, um die Bitrate zu verringern. 28 zeigt eine Technik (2800) für die Darstellung einer Mehrkanaltransformationsmatrix unter Verwendung quantisierter Givens-Faktorisierungsrotationen. Alternativ verwenden ein Codierer oder ein Verarbeitungswerkzeug quantisierte Givens-Faktorisierungsrotationen, um eine unitäre Matrix für andere Zwecke darzustellen, als die Mehrkanaltransformation von Audiokanälen.
  • Der Codierer berechnet (2810) zunächst eine beliebige unitäre Matrix für eine Mehrkanaltransformation. Anschließend berechnet (2820) der Codierer die Givens-Faktorisierungsrotationen für die unitäre Matrix.
  • Um die Bitrate zu verringern, quantisiert (2830) der Codierer die Rotationswinkel. Bei einer Anwendung quantisiert der Codierer einheitlich jeden Rotationswinkel auf einen von 64 (26 = 64) möglichen Winkeln. Die Rotationsvorzeichen sind mit jeweils einem Bit gekennzeichnet, so dass der Codierer die folgende Anzahl von Bits verwendet, um die unitäre N×N-Matrix darzustellen:
    Figure 00580002
  • Die Ebene der Quantisierung gestattet es dem Codierer die unitäre N×N-Matrix für die Mehrkanaltransformation mit einem sehr hohen Präzisionsgrad darzustellen. Alternativ verwendet der Codierer eine bestimmte andere Ebene und/oder anderen Typ einer Quantisierung.
  • 29 zeigt eine Technik (2900) zum Abrufen von Informationen für eine generische unitäre Transformation für eine Kanalgruppe aus einem Bitstrom gemäß einer speziellen Bitstromsyntax. 29 zeigt die Technik (2900), die von dem Decodierer ausgeführt wird, um den Bitstrom zu parsen; der Codierer führt eine entsprechende Technik aus, um die Informationen für die generische unitäre Matrix gemäß der Bitstromsyntax zu formatieren. Alternativ verwenden der Codierer und der Decodierer eine andere Syntax, wie etwa jene, die eine andere Ordnung oder Auflösung für Rotationswinkel verwendet.
  • Zunächst initialisiert der Decodierer zahlreiche Variable, die im übrigen Teil der Decodierung verwendet werden. Insbesondere stellt der Decodierer die Anzahl der zu decodierenden Winkel #AnglesToDecode auf der Basis der Anzahl von Kanälen in der Kanalgruppe #ChannelsInGroup ein (2910), wie es in Gleichung 14 gezeigt ist. Zudem stellt der Decodierer die Anzahl von zu decodierenden Vorzeichen #SignsToDecode auf der Basis von #ChannelsInGroup ein (2912). Daneben setzt der Decodierer einen Zähler für decodierte Winkel iAnglesDecoded und einen Zähler für decodierte Vorzeichen iSignsDecoded zurück (2914, 2916).
  • Der Decodierer prüft (2920), ob es zu decodierende Winkel gibt, und stellt (sofern dies der Fall ist) den Wert für den nächsten Rotationswinkel ein, wobei der Rotationswinkel aus dem quantisierten 6-Bit-Wert rekonstruiert wird. RotationAngle[iAnglesDecoded = π·(getBits(6) – 32)/64 (16).
  • Der Decodierer erhöht (2924) anschließend den Zähler für decodierte Winkel und prüft (2920), ob es zusätzliche zu decodierende Winkel gibt.
  • Gibt es keine weiteren zu decodierenden Winkel, prüft (2940) der Decodierer, ob es zusätzliche zu decodierende Vorzeichen gibt, und stellt, wenn dies der Fall ist, den Wert auf das nächste Vorzeichen ein (2942), wobei das Zeichen aus dem 1-Bit-Wert rekonstruiert wird. RotationSign[iSignsDecoded] = (2·getBits(1)) – 1 (17)
  • Anschließend erhöht (2944) der Decodierer den Zähler für decodierte Vorzeichen und prüft (2940), ob es zusätzliche zu decodierende Vorzeichen gibt. Gibt es keine weiteren zu decodierenden Vorzeichen, verlässt der Decodierer die Routine.
  • VI. Quantisierung und Gewichtung
  • Bei einigen Ausführungsformen führt ein Codierer, wie etwa der Codierer (600) aus 6, eine Quantisierung und Gewichtung an Audiodaten unter Verwendung unterschiedlicher Techniken aus, die im folgenden erläutert sind. Bei Mehrkanalaudio, das zu Kacheln konfiguriert ist, berechnet der Codierer Quantisiermatrizen für Kanäle von Kacheln, Quantisierschrittmodifikatoren pro Kanal und Gesamtquantisierkachelfaktoren und wendet diese an. Dies gestattet es dem Codierer das Rauschen gemäß einem Hörmodell zu formen, das Rauschen zwischen Kanälen auszugleichen und die Gesamtverzerrung zu steuern.
  • Ein entsprechender Decodierer, wie etwa der Decodierer (700) aus 7, führt die inverse Quantisierung und die inverse Gewichtung aus. Bei Mehrkanalaudio, das zu Kacheln konfiguriert ist, decodiert der Decodierer Gesamtquantisierkachelfaktoren, Quantisierschrittmodifikatoren pro Kanal und Quantisiermatrizen für Kanäle von Kacheln und wendet diese an. Die inverse Quantisierung und die inverse Gewichtung werden zu einem einzigen Schritt verschmolzen.
  • A. Kachelgesamtquantisierfaktor
  • Bei einigen Ausführungsformen berechnet für die Steuerung der Qualität und/oder der Bitrate für die Audiodaten einer Kachel ein Quantisierer in einem Codierer eine Quantisierschrittgröße Qt für die Kachel. Der Quantisierer kann in Verbindung mit einer Raten-/Qualitätssteuereinheit arbeiten, um unterschiedliche Quantisierschrittgrößen für die Kachel zu bewerten, bevor er eine Kachelquantisierschrittgröße wählt, die Anforderungen hinsichtlich Bitrate und/oder Qualität erfüllt. Beispielsweise arbeiten der Quantisierer und der Controller wie es in der US-Patentanmeldung mit der Sriennummer 10/017,694 mit dem Titel ”Quality and Rate Control Strategy for Digital Audio”, eingereicht am 14. Dezember 2001, beschrieben ist, die hiermit durch Bezugnahme enthalten ist.
  • 30 zeigt eine Technik (3000) zum Abrufen eines Kachelgesamtquantisierfaktors aus einem Bitstrom gemäß einer speziellen Bitstromsyntax. 30 zeigt eine Technik (3000), die von dem Decodierer ausgeführt wird, um den Bitstrom zu parsen; der Codierer führt eine entsprechende Technik aus, um den Kachelquantisierfaktor gemäß der Bitstromsyntax zu formatieren. Alternativ verwenden der Decodierer und der Codierer eine andere Syntax, wie etwa eine Syntax, die mit unterschiedlichen Bereichen für den Kachelquantisierfaktor arbeitet, eine andere Logik zum Codieren des Kachelfaktors verwendet oder Gruppen von Kachelfaktoren codiert.
  • Zunächst initialisiert (3010) der Decodierer die Quantisierschrittgröße Qt für die Kachel. Bei einer Anwendung setzt der Decodierer Qt auf: Q = 90·ValidBitsPerSample/16 (18), wobei ValidBitsPerSample eine Zahl 16 ≤ ValidBitsPerSample ≤ 24 ist, die für den Decodierer oder den Audioclip oder auf eine andere Höhe eingestellt ist.
  • Als nächstes bezieht (3020) der Decodierer sechs Bits, die die erste Modifikation von Qt im Bezug auf den initialisierten Wert von Qt kennzeichnen, und speichert den Wert –32 ≤ Tmp ≤ 31 in der vorübergehenden Variablen Tmp. Die Funktion SignExtend() unterscheidet einen Wert mit Vorzeichen von einem vorzeichenlosen Wert. Der Decodierer fügt den Wert Tmp dem initialisierten Wert von Qt hinzu (3030) und bestimmt anschließend (3040) das Vorzeichen der Variablen Tmp, das in der Variablen SignofDelta gespeichert ist.
  • Der Decodierer prüft (3050), ob der Wert Tmp gleich –32 oder 31 ist. Wenn nicht, verlässt der Decodierer die Routine. Ist der Wert von Tmp gleich –32 oder 31, könnte der Codierer signalisiert haben, dass Qt weiter zu modifizieren ist. Die Richtung (positiv oder negativ) der weiteren Modifikation(en) ist durch SignofDelta gekennzeichnet, und der Decodierer bezieht (3060) die nächstens fünt Bits, um die Größe 0 ≤ Tmp ≤ 31 der nächsten Modifikation zu bestimmen. Der Decodierer ändert (3070) den momentanen Wert von Qt in der Richtung von SignofDelta durch den Wert von Tmp und prüft anschließend (3080), ob der Wert von Tmp 31 ist. Ist dies nicht der Fall, verlässt der Decodierer die Routine. Ist der Wert von Tmp 31, bezieht (3060) der Decodierer die nächsten fünf Bits und fährt von diesem Punkt fort.
  • Bei Ausführungsformen, die keine Kachelkonfigurationen verwenden, berechnet der Codierer eine Gesamtquantisierschrittgröße für einen Frame oder einen anderen Abschnitt von Audiodaten.
  • B. Quantisierschrittmodifikatoren pro Kanal
  • Bei einigen Ausführungsformen berechnet ein Codierer einen Quantisierschrittmodifikator für jeden Kanal in einer Kachel: Qc,0, Qc,t, ..., Qc,#ChannelsInTile-1. Der Codierer berechnet normalerweise diese kanalspezifischen Quantisierfaktoren, um die Rekonstruktionsqualität über sämtliche Kanäle auszugleichen. Selbst bei Ausführungsformen, die keine Kachelkonfigurationen verwenden, kann der Codierer weiterhin die Quantisierfaktoren pro Kanal für die Kanäle in einem Frame oder einer anderen Einheit von Audiodaten berechnen. Im Gegensatz dazu verwenden vorherige Quantisiertechniken, wie etwa jene, die in dem Codierer (100) von 1 verwendet werden, ein Quantisiermatrixelement pro Band eines Fensters in einem Kanal, haben jedoch keinen Gesamtmodifikator für den Kanal.
  • 31 zeigt eine verallgemeinerte Technik (3100) für die Berechnung von Quantisierschrittmodifikatoren pro Kanal für Mehrkanalaudiodaten. Der Codierer verwendet zahlreiche Kriterien, um die Quantisierschrittmodifikatoren zu berechnen. Zunächst sucht der Codierer etwa gleiche Qualität über sämtliche Kanäle rekonstruierter Audiodaten. Sind die Lautsprecherpositionen bekannt, bevorzugt der Codierer anschließend Lautsprecher, die für die Wahrnehmung bei typischen Verwendungen für die Lautsprecherkonfiguration wichtiger sind. Sind die Lautsprechertypen bekannt, bevorzugt der Codierer schließlich die besseren Lautsprecher in der Lautsprecherkonfiguration. Alternativ berücksichtigt der Codierer andere oder zusätzliche zu diesen Kriterien.
  • Der Decodierer beginnt mit der Einstellung (3110) von Quantisierschrittmodifikatoren für die Kanäle. Bei einer Anwendung stellt der Codierer die Modifikatoren auf der Basis der Energie in den entsprechenden Kanälen ein. Für einen Kanal mit relativ mehr Energie (d. h. lauter) als die anderen Kanäle werden die Quantisierschrittmodifikatoren für die anderen Kanäle beispielsweise relativ erhöht. Alternativ stellt der Codierer die Modifikatoren auf der Basis anderer oder zusätzlicher Kriterien in einem Schätzvorgang mit ”offener Schleife” ein (3110). Oder der Codierer kann die Modifikatoren zu Beginn auf gleiche Werte einstellen (3110) (wobei er auf eine Bewertung der Ergebnisse mit ”geschlossener Schleife” zurückgreift, um sich an die finalen Werte der Modifikatoren anzunähern).
  • Der Codierer quantisiert (3120) die Mehrkanalaudiodaten unter Verwendung der Quantisierschrittmodifikatoren wie auch anderer quantisierender (einschließlich gewichtender) Faktoren, sofern derartige andere Faktoren nicht bereits angewendet wurden.
  • Nach der anschließenden Rekonstruktion bewertet (3130) der Codierer die Qualität der Kanäle des rekonstruierten Audios unter Verwendung von NER oder bestimmter anderer Qualitätsmessungen. Der Codierer prüft (3140), ob das rekonstruierte Audio die Qualitätskriterien (und/oder andere Kriterien) erfüllt und verlässt, sofern dies der Fall ist, die Routine. Wenn nicht, stellt der Codierer neue Werte für die Quantisierschrittmodifikatoren ein (3110), wobei er die Modifikatoren im Hinblick auf die bewerteten Ergebnisse einstellt. Für die Einstellung der Schrittmodifikatoren mit einem Durchgang und offenere Schleife überspringt der Codierer alternativ die Bewertung (3130) und die Prüfung (3140).
  • Vorkanal-Quantisierschrittmodifikatoren neigen dazu, sich von Fenster/Kachel zu Fenster/Kachel zuändern. Der Codierer codiert die Quantisierschrittmodifikatoren als Buchstabensymbole oder Codes variabler Länge und packt sie anschließend in den Bitstrom mit den Audiodaten. Oder der Codierer verwendet eine bestimmte andere Technik, um die Quantisierschrittmodifikatoren zu verarbeiten.
  • 32 zeigt eine Technik (3200) zum Abrufen von Quantisierschrittmodifikatoren pro Kanal aus einem Bitstrom gemäß einer speziellen Bitstromsyntax. 32 zeigt die Technik (3200), die von dem Decodierer angewendet wird, um den Bitstrom zu parsen; der Codierer führt ein entsprechende Technik aus (Einstellen von Kennzeichen, Packen von Daten für die Quantisierschrittmodifikatoren und dergleichen), um die Quantisierschrittmodifikatoren gemäß der Bitstromsyntax zu formatieren. Alternativ verwenden der Decodierer und der Codierer eine andere Syntax, wie etwa jene, die mit anderen Kennzeichen oder einer Logik zum Codieren der Quantisierschrittmodifikatoren arbeitet.
  • 32 zeigt das Abrufen der Quantisierschrittmodifikatoren pro Kanal für eine Kachel. Alternativ ruft bei Ausführungsformen, die keine Kacheln verwenden, der Decodierer Schrittmodifikatoren pro Kanal für Frames oder andere Einheiten von Audiodaten ab.
  • Um zu beginnen, prüft (3210) der Decodierer, ob die Anzahl von Kanälen in der Kachel größer ist als 1. Ist dies nicht der Fall, sind die Audiodaten mono. Der Decodierer stellt den Quantisierschrittmodifikator für den Monokanal auf 0 (3212) und verlässt die Routine.
  • Bei Mehrkanalaudio initialisiert der Decodierer zahlreiche Variable. Der Decodierer bezieht (3220) Bits, die die Anzahl von Bits pro Quantisierschrittmodifikator (BitsPerQ) für die Kachel angeben. Bei einer Anwendung bezieht der Decodierer drei Bits. Anschließend setzt der Decodierer einen Kanalzähler iChannelsDone auf 0 (3222).
  • Der Decodierer prüft (3230), ob der Kanalzähler niedriger als die Anzahl von Kanälen in der Kachel ist. Wenn nicht, wurden sämtlicher Quantisierschrittmodifikatoren für die Kachel abgerufen und der Codierer verlässt die Routine.
  • Wenn andererseits der Kanalzähler niedriger ist als die Anzahl von Kanälen in der Kachel, bezieht (3232) der Codierer ein Bit und prüft (3240) das Bit um zu bestimmen, ob der Quantisierschrittmodifikator für den momentanen Kanal 0 ist. Trifft dies zu, stellt der Decodierer den Quantisierschrittmodifikator für den momentanen Kanal auf 0 (3242).
  • Ist der Quantisierschrittmodifikator für den momentanen Kanal nicht 0, prüft (3250) der Decodierer ob #BitsPerQ größer ist als 0 um zu bestimmen, ob der Quantisierschrittmodifikator für den momentanen Kanal 1 ist. Ist dies der Fall, stellt der Decodierer den Quantisierschrittmodifikator für den momentanen Kanal auf 1 ein (3252).
  • Ist #BitsPerQ größer als 0, bezieht der Decodierer die nächsten #BitsPerQ-Bits in dem Bitstrom, addiert 1 (da der Wert von 0 eine frühere Ausstiegsbedingung auslöst) und stellt den Quantisierschrittmodifikator für den momentanen Kanal auf das Ergebnis ein (3260).
  • Nachdem der Decodierer den Quantisierschrittmodifikator für den momentanen Kanal eingestellt hat, erhöht (3270) der Decodierer den Kanalzähler und prüft (3230), ob der Kanalzähler geringer ist als die Anzahl der Kanäle in der Kachel.
  • C. Codieren und Decodieren der Quantisiermatrix
  • Bei einigen Ausführungsformen berechnet ein Codierer eine Quantisiermatrix für jeden Kanal in einer Kachel. Der Codierer verbessert die vorherigen Quantisiertechniken, wie etwa jene, die in dem Codierer (100) von 1 verwendet werden, auf vielfältige Weise. Für eine verlustbehaftete Kompression von Quantisiermatrizen verwendet der Codierer eine flexible Schrittgröße für Quantisiermatrixelemente, wodurch der Codierer in der Lage ist, die Auflösung der Elemente von Quantisiermatrizen zu ändern. Abgesehen von diesem Merkmal nutzt der Codierer die zeitliche Korrelation bei Quantisiermatrixwerten während der Kompression von Quantisiermatrizen.
  • Wie es zuvor erläutert wurde, dient eine Quantisiermatrix als eine Schrittgrößenanordnung, wobei ein Schrittwert pro Barkfrequenzband (oder einem anderweitig partitionierten Quantisierband) für jeden Kanal in einer Kachel vorgesehen ist. Der Codierer verwendet Quantisiermatrizen, um das rekonstruierte Audiosignal ”einzufärben”, damit es eine Spektralform hat, die mit jener des Ursprungssignals vergleichbar ist. Der Codierer bestimmt normalerweise Quantisiermatrizen auf der Basis einer Psychoakustik und komprimiert die Quantisiermatrizen, um die Bitrate zu verringern. Die Kompression und die Quantisiermatrizen können verlustbehaftet sein.
  • Die Techniken, die in diesem Abschnitt beschrieben sind, werden unter Bezugnahme auf Quantisiermatrizen für Kanäle von Kacheln beschrieben. Zur Kenntnisnahme soll Qm,iChannel,iBand das Quantisiermatrixelement für den Kanal iChannel für das Band iBand repräsentieren. Bei Ausführungsformen, die keine Kachelkonfigurationen verwenden, kann der Codierer weiterhin eine flexible Schrittgröße für Quantisiermatrixelemente verwenden und/oder die zeitliche Korrelation bei Quantisiermatrixschritten während der Kompression nutzen.
  • 1. Flexible Quantisierschrittgröße für Maskierinformationen
  • 33 zeigt eine verallgemeinerte Technik (3300) zum adaptiven Einstellen einer Quantisierschrittgröße für Quantisiermatrixelemente. Dadurch ist der Codierer in der Lage, Maskierinformationen grob oder fein zu quantisieren. Bei einer Anwendung stellt der Codierer die Quantisierschrittgröße für Quantisiermatrixelemente auf einer Basis Kanal für Kanal für eine Kachel ein (d. h. auf einer Basis Matrix für Matrix, wenn jeder Kanal der Kachel eine Matrix hat). Alternativ stellt der Codierer die Quantisierschrittgröße für Maskierelemente auf einer Basis Kachel für Kachel oder Frame für Frame für eine gesamte Audiosequenz oder auf einer anderen Ebene ein.
  • Der Codierer beginnt mit der Einstellung (3310) einer Quantisierschrittgröße für wenigstens eine Maskierung. (Die Anzahl betroffener Maskierungen hängt von der Ebene ab, auf der der Codierer die flexible Quantisierschrittgröße zuweist.) Bei einer Anwendung bewertet der Codierer die Qualität des rekonstruierten Audios über eine bestimmte Zeitperiode und wählt in Abhängigkeit des Ergebnisses die Quantisierschrittgröße auf 1, 2, 3 oder 4 dB für Maskierinformationen. Das Qualitätsmaß, das von dem Codierer bewertet wird, ist NER für wenigstens einen zuvor codierten Frame. Ist die Gesamtqualität beispielsweise gering, kann der Codierer einen höheren Wert für die Quantisierschrittgröße für Maskierinformationen einstellen (3310), da die Auflösung in der Quantisiermatrix keine effiziente Verwendung der Bitrate ist. Ist die Gesamtqualität andererseits gut, kann der Codierer einen geringeren Wert für die Quantisierschrittgröße für die Maskierinformationen einstellen (3310), da eine bessere Auflösung in der Quantisiermatrix die wahrgenommene Qualität wirkungsvoll verbessern kann. Alternativ verwendet der Codierer ein anderes Qualitätsmaß, eine Bewertung über eine andere Zeitperiode und/oder andere Kriterien bei einer Schätzung mit offener Schleife für die Quantisierschrittgröße. Der Codierer kann zudem andere oder zusätzliche Quantisierschrittgrößen für die Maskierinformationen verwenden. Oder der Codierer kann die Schätzung mit offener Schleife auslassen, wobei er anstelle dessen auf eine Bewertung mit geschlossener Schleife von Ergebnissen zurückgreift, um sich dem finalen Wert für die Schrittgröße anzunähern.
  • Der Codierer quantisiert (3320) die wenigstens eine Quantisiermatrix unter Verwendung der Quantisierschrittgröße für Maskierelemente und gewichtet und quantisiert die Mehrkanalaudiodaten.
  • Nach der anschließenden Rekonstruktion bewertet (3330) der Codierer die Qualität des rekonstruierten Audios unter Verwendung von NER oder anderer Qualitätsmaße. Der Codierer prüft (3340), ob die Qualität des rekonstruierten Audios die momentane Einstellung für die Quantisierschrittgröße für Maskierinformationen rechtfertigt. Wenn nicht, kann der Codierer einen höheren oder niedrigeren Wert für die Quantisierschrittgröße für Maskierinformationen einstellen (3310). Andernfalls verlässt der Codierer die Routine. Alternativ überspringt der Codierer für eine Einstellung der Quantisierschrittgröße für Maskierinformationen mit einem Durchgang offener Schleife die Bewertung (3330) und die Prüfung (3340).
  • Nach der Auswahl kennzeichnet der Codierer die Quantisierschrittgröße für Maskierinformationen auf der geeigneten Ebene in dem Bitstrom.
  • 34 zeigt eine verallgemeinerte Technik (3400) für das Abrufen einer adaptiven Quantisierschrittgröße für Quantisiermatrixelemente. Der Decodierer kann somit die Quantisierschrittgröße für Maskierelemente auf einer Basis Kanal für Kanal für eine Kachel, auf einer Basis Kachel für Kachel oder Frame für Frame für die gesamte Audiosequenz oder auf einer bestimmten anderen Ebene ändern.
  • Der Decoder beginnt mit dem Beziehen (3410) einer Quantisierschrittgröße für wenigstens eine Maskierung. (Die Anzahl betroffener Maskierungen hängt von der Ebene ab, auf der der Codierer die flexible Quantisierschrittgröße zugewiesen hat.) Bei einer Anwendung ist die Quantisierschrittgröße 1, 2, 3 oder 4 dB für Maskierinformationen. Alternativ verwenden der Codierer und der Decodierer andere oder zusätzliche Quantisierschrittgrößen für die Maskierinformationen.
  • Der Decodierer führt anschließend eine inverse Quantisierung (3420) an der wenigstens einer Quantisiermatrix unter Verwendung der Quantisierschrittgröße für Maskierinformationen aus und stellt die Mehrkanalaudiodaten wieder her.
  • 2. Zeitliche Vorhersage von Quantisiermatrizen
  • 35 zeigt eine verallgemeinerte Technik (3500) zum Komprimieren von Quantisiermatrizen unter Anwendung der zeitlichen Vorhersage. Mit dieser Technik (3500) nutzt der Codierer die zeitliche Korrelation von Maskierwerten. Dadurch wird die Bitrate reduziert, die den Quantisiermatrizen zugeordnet ist.
  • 35 und 36 zeigen eine zeitliche Vorhersage für Quantisiermatrizen in einem Kanal eines Frames von Audiodaten. Alternativ komprimiert ein Codierer Quantisiermatrizen mit Hilfe der zeitlichen Vorhersage zwischen mehreren Frames über eine bestimmte andere Audiosequenz oder für eine andere Konfiguration von Quantisiermatrizen.
  • Unter Bezugnahme auf 35 bezieht (3510) der Codierer Quantisiermatrizen für einen Frame. Die Quantisiermatrizen in einem Kanal neigen dazu, von Fenster zu Fenster dieselben zu sein, wodurch sie gute Kandidaten für die prädiktive Codierung sind.
  • Anschließend codiert (3520) der Codierer die Quantisiermatrizen mit Hilfe der zeitlichen Vorhersage. Der Codierer verwendet beispielsweise eine die Technik (3600), die in 36 gezeigt ist. Alternativ wendet der Codierer eine andere Technik mit zeitlicher Vorhersage an.
  • Der Codierer bestimmt (3530), ob es weitere zu komprimierende Matrizen gibt, und verlässt die Routine, sofern dies nicht der Fall ist. Andernfalls bezieht der Codierer die nächsten Quantisiermatrizen. Der Codierer prüft beispielsweise, ob die Matrizen für den nächsten Frame für die Codierung verfügbar sind.
  • 36 zeigt eine detaillierter Technik (3600) zum Komprimieren von Quantisiermatrizen in eifern Kanal mit Hilfe der zeitlichen Vorhersage bei einer Anwendung. Die zeitliche Vorhersage verwendet einen Neu-Abtastvorgang über die Kacheln unterschiedlicher Fenstergrößen und wendet eine Laufpegel-Codierung auf Prädiktionresiduen an, um die Bitrate zu verringern.
  • Der Codierer beginnt (3610) die Kompression für die nächste zu komprimierende Matrix und prüft (3620), ob eine Ankermatrix verfügbar ist, was normalerweise davon abhängig ist, ob die Matrix die erste in ihrem Kanal ist. Ist keine Ankermatrix verfügbar, komprimiert (3630) der Codierer die Quantisiermatrix direkt. Beispielsweise codiert der Codierer die Elemente der Quantisiermatrix differentiell (wobei die Differenz für ein Element relativ zu dem Element des vorherigen Bandes ist) und weist den Differentialen Huffman-Codes zu. Für das erste Element in der Matrix (d. h. das Maskierelement für das band 0) benutzt der Codierer eine Prädiktionskonstante, die von der Quantisierschrittgröße für die Maskierelemente abhängt. PredConst = 45/MaskQuantMultiplieriChannel (19).
  • Alternativ verwendet der Codierer eine andere Kompressionstechnik für die Ankermatrix.
  • Anschließend stellt (3640) der Codierer die Quantisiermatrix als Ankermatrix für den Kanal des Frames ein. Verwendet der Codierer Kacheln, kann die Kachel, die die Ankermatrix für einen Kanal enthält, als Ankerkachel bezeichnet werden. Der Codierer vermerkt die Ankermatrixgröße oder die Kachelgröße für die Ankerkachel, die verwendet werden können, um Vorhersagen für Matrizen mit einer unterschiedlichen Größe zu bilden.
  • Ist andererseits eine Ankermatrix verfügbar, komprimiert der Codierer die Quantisiermatrix mit Hilfe der zeitlichen Vorhersage. Der Codierer berechnet (3650) eine Vorhersage für die Quantisiermatrix auf der Basis der Ankermatrix für den Kanal. Hat die komprimierte Quantisiermatrix dieselbe Anzahl von Bändern wie die Ankermatrix, bilden die Elemente der Ankermatrix die Vorhersage. Hat die komprimierte Quantisiermatrix jedoch eine andere Anzahl von Bändern als die Ankermatrix, tastet der Codierer die Ankermatrix erneut ab, um die Vorhersage zu berechnen.
  • Der Neuabtastvorgang verwendet die Größe der komprimierten Quantisiermatrix I die momentane Kachelgröße und die Größe der Ankermatrix/Ankerkachelgröße. MaskPrediction[iBand] = AnchorMask[iScaledBand] (20), wobei iScaleBand das Ankermatrixband ist, das die repräsentative (d. h. durchschnittliche) Frequenz von iBand enthält. iBand bezieht sich auf die momentane Quantisiermatrix/momentane Kachelgröße, wohingegen sich iScaleBand auf die Ankermatrix/Ankerkachelgröße bezieht.
  • 37 zeigt eine Technik für die Neuabtastung der Ankermatrix, wenn der Codierer Kacheln verwendet. 37 zeigt eine beispielhafte Zuordnung (3700) von Bändern einer momentanen Kachel zu Bändern einer Ankerkachel, um eine Vorhersage zu bilden. Frequenzen in der Mitte von Bandgrenzen (3720) der Quantisiermatrix in der momentanen Kachel werden Frequenzen der Ankermatrix in der Ankerkachel zugeordnet (3730). Die Werte für die Maskiervorhersage werden in Abhängigkeit davon eingestellt, wo sich die zugeordneten Frequenzen im Bezug auf die Bandgrenzen (3710) der Ankermatrix in der Ankerkachel befinden. Alternativ verwendet der Codierer eine zeitliche Vorhersage relativ zu der vorangehenden Quantisiermatrix in dem Kanal oder einer bestimmten anderen vorhergehenden Matrix oder benutzt eine andere Neuabtasttechnik.
  • Wendet man sich wieder 36 zu, so berechnet (3660) der Codierer ein Residuum für die Quantisiermatrix im Bezug auf die Vorhersage. Im Idealfall ist die Vorhersage perfekt und hat das Residuum keine Energie. Wenn es jedoch erforderlich ist, codiert (3670) der Codierer das Residuum. Der Codierer verwendet beispielsweise eine Laufpegel-Codierung oder eine andere Kompressionstechnik für das Prädiktionsresiduum.
  • Anschließend bestimmt (3680) der Codierer, ob es weitere zu komprimierende Matrizen gibt, und verlässt die Routine, wenn dies nicht der Fall ist. Andernfalls bezieht (3610) der Codierer die nächste Quantisiermatrix und fährt fort.
  • 38 zeigt eine Technik (3800) zum Abrufen und Decodieren von Quantisiermatrizen, die mit Hilfe einer zeitlichen Vorhersage gemäß einer speziellen Bitstromsyntax komprimiert wurden. Die Quantisiermatrizen sind für die Kanäle einer einzelnen Kachel eines Frames bestimmt. 38 zeigt die Technik (3800), die von dem Decodierer ausgeführt wird, um Informationen in den Bitstrom zu parsen; der Codierer führt eine entsprechende Technik aus. Alternativ verwenden der Decodierer und der Codierer eine andere Syntax für wenigstens eine der Optionen, die in 38 gezeigt ist, wie etwa jene, bei der andere Kennzeichen oder eine andere Ordnung verwendet werden, oder jene, die keine Kacheln verwendet.
  • Der Decodierer prüft (3810), ob der Codierer den Beginn eines Frames erreicht hat. Ist dies der Fall, markiert (3812) der Decodierer sämtliche Ankermatrizen für den Frame als nicht eingestellt.
  • Anschließend prüft (3820) der Decodierer, ob die Ankermatrix in dem Kanal der nächsten zu codierenden Matrix vorhanden ist. Ist keine Ankermatrix verfügbar, bezieht (3830) der Decodierer die Quantisierschrittgröße für die Quantisiermatrix für den Kanal. Bei einer Anwendung bezieht der Decodierer den Wert 1, 2, 3 oder 4 dB. MaskQuantMultiplieriChannel = getBits(2) + 1 (21).
  • Der Decodierer decodiert (3832) anschließend die Ankermatrix für den Kanal. Der Decodierer wendet beispielsweise eine Huffman-Decodierung auf differentiell auf codierte Elemente der Ankermatrix an (wobei die Differenz für ein Element relativ zu dem Element des vorherigen Bandes ist) und stellt die Elemente wieder her. Für das erste Element verwendet der Decodierer die Prädiktionskonstante, die in dem Codierer verwendet wird. PredConst = 45/MaskQuantMultiplieriChannel (22).
  • Alternativ verwendet der Decodierer eine andere Dekompressionstechnik für die Ankermatrix in einem Kanal des Frames.
  • Anschleißend stellt der Decodierer die Quantisiermatrix als Ankermatrix für den Kanal des Frames ein (3834) und setzt die Werte der Quantisiermatrix für den Kanal auf jene der Ankermatrix. Qm,iChannel,iBand = AnchorMask[iBand] (23).
  • Der Decodierer vermerkt zudem die Kachelgröße für die Ankerkachel, die verwendet werden kann, um Vorhersagen für Matrizen in Kacheln mit einer anderen Größe als der Ankerkachel zu bilden.
  • Ist andererseits eine Ankermatrix für den Kanal verfügbar, dekomprimiert der Decodierer die Quantisiermatrix mit Hilfe der zeitlichen Vorhersage. Der Decodierer berechnet (3840) eine Vorhersage für die Quantisiermatrix auf der Basis der Ankermatrix für den Kanal. Sofern die Quantisiermatrix für die momentane Kachel dieselbe Anzahl von Bändern wie die Ankermatrix hat, bilden die Elemente der Ankermatrix die Vorhersage. Hat jedoch die Quantisiermatrix für die momentane Kachel eine andere Anzahl von Bändern als die Ankermatrix, tastet der Codierer die Ankermatrix erneut ab, um die Vorhersage zu beziehen, indem er beispielsweise die momentane Kachelgröße und Ankerkachelgröße verwendet, wie es in 37 gezeigt ist. MaskPrediction[iBand] = AnchorMask[iScaledBand] (24).
  • Alternativ verwendet der Decodierer die zeitliche Vorhersage im Bezug auf die vorhergehende Quantisiermatrix in dem Kanal oder eine andere vorhergehende Matrix oder verwendet eine andere Neuabtasttechnik.
  • Der Decodierer bezieht (3842) das nächste Bit in dem Bitstrom und prüft (3850), ob der Bitstrom ein Residuum für die Quantisiermatrix enthält. Gibt es keine Maskierungsaktualisierung für diesen Kanal in der momentanen Kachel, ist das Maskierprädiktionsresiduum 0, so dass: Qm,Channel,iBand = MaskPrediction[iBand] (25).
  • Gibt es andererseits ein Prädiktionsresiduum, decodiert (3852) der Decodierer des Residuum beispielsweise mit Hilfe einer Lautpegel-Decodierung oder einer bestimmten anderen Dekompressionstechnik. Anschließend addiert (3854) der Decodierer das Prädiktionsresiduum zu der Vorhersage, um die Quantisiermatrix zu rekonstruieren. Beispielsweise ist die Addition eine einfache Skalaraddition auf einer Basis Band für Band, um das Element für das Band/Band für den momentanen Kanal iChannel zu beziehen: Qm,iChannel,iBand = MaskPrediction[iBand] + MaskPredResidual[iBand] (26).
  • Anschließend prüft (3860) der Decodierer, ob Quantisiermatrizen für sämtliche Kanäle in der momentanen Kachel decodiert worden sind, und verlässt die Routine, wenn dies der Fall ist. Andernfalls fährt der Decodierer mit der Decodierung für die nächste Quantisiermatrix in der momentanen Kachel fort.
  • D. Kombinierte inverse Quantisierung und inverse Gewichtung
  • Sobald der Decodierer sämtliche erforderlichen Quantisier- und Gewichtungsinformationen abgerufen hat, führt der Decodierer eine inverse Quantisierung und eine inverse Gewichtung an den Audiodaten durch. Bei einer Anwendung führt der Decodierer die inverse Quantisierung und die inverse Gewichtung in einem Schritt aus, was in zwei Gleichungen aus Gründen eines klaren Ausdrucks im folgenden dargestellt ist.
    Figure 00710001
    wobei xiqw der Eingang (z. B. der invers MC-transformierte Koeffizient) des Kanals iChannel ist und n eine Koeffizientenindex im Band/Band ist. Max(Qm,iChannel,*) ist der maximale Maskierwert für den Kanal iChannel über sämtliche Bänder. (Der Unterschied zwischen den größten und kleinsten Gewichtungsfaktoren für eine Maskierung ist normalerweise weitaus geringer als der Bereich potentieller Werte für Maskierelemente, so dass der Umfang der Quantisiereinstellung pro Gewichtungsfaktor im Bezug auf das Maximum berechnet wird.) MaskQuantMultiplieriChannel ist der Maskierquantisierschrittmultiplikator für die Quantisiermatrix von Kanal iChannel und yiqw ist die Ausgabe dieses Schrittes.
  • Alternativ führt der Decodierer die inverse Quantisierung und inverse Gewichtung separat oder unter Verwendung anderer Techniken aus.
  • VII. Mehrkanalnachbearbeitung
  • Bei einigen Ausführungsformen führt ein Decodierer, wie etwa der Decodierer (700) aus 7 eine Mehrkanalnachbearbeitung an rekonstruierten Audioabtastungen in der Zeitdomäne aus.
  • Die Mehrkanalnachbearbeitung kann zu unterschiedlichen Zwecken angewendet werden. Beispielsweise kann die Anzahl decodierter Kanäle geringer sein als die Anzahl von Kanälen für die Ausgabe (z. B. weil der Codierer wenigstens einen Eingangskanal oder mehrkanaltransformierten Kanal verworfen hat, um die Codierkomplexität oder die Pufferfüllung zu verringern). Ist dies der Fall, kann eine Mehrkanal-Nachbearbeitungstransformation angewendet werden, um wenigstens einen Phantomkanal auf der Basis tatsächlicher Daten in den decodierten Kanälen zu erzeugen. Oder es kann, selbst wenn die Anzahl decodierter Kanäle gleich der Anzahl ausgegebener Kanäle ist, die Nachbearbeitungstransformation für eine beliebige räumliche Drehung der Darstellung, die Neuzuordnung von Ausgangskanälen zwischen Lautsprecherpositionen oder andere räumliche oder spezielle Effekte angewendet werden. Oder es kann, sofern die Anzahl decodierter Kanäle größer ist als die Anzahl von Ausgangskanälen (z. B. beim Abspielen von Surround-Sound-Audio auf Stereogeräten), die Nachbearbeitungstransformation verwendet werden, um die Kanäle ”herunterzufalten”. Bei einigen Ausführungsformen können die Herunterfalt-Koeffizienten möglicherweise über die Zeit variieren – die Mehrkanalnachbearbeitung ist bitstromgesteuert. Die Transformationsmatrizen für die Szenarien und Anwendungen können von dem Decodierer bereitgestellt oder signalisiert werden.
  • 39 zeigt eine verallgemeinerte Technik (3900) für die Mehrkanalnachbearbeitung. Der Decodierer decodiert (3910) codierte Mehrkanalaudiodaten (3905) unter Verwendung von Techniken, die in 7 gezeigt sind, oder anderen Kompressionstechniken, wodurch er rekonstruierte Zeitdomänen-Mehrkanalaudiodaten (3915) erzeugt.
  • Anschließend führt der Decodierer eine Mehrkanalnachbearbeitung an den Zeitdomänen-Mehrkanalaudiodaten (3915) aus (3920). Wenn der Codierer beispielsweise M decodierte Kanäle erzeugt und der Decodierer N Kanäle ausgibt, beinhaltet die Nachbearbeitung eine allgemeine M-Zu-N-Transformation. Der Decodierer nimmt M (zeitlich) an gleichem Ort angeordnete Abtastungen, eine aus jedem der rekonstruierten M codierten Kanäle, und füllt anschließend fehlende Kanäle (d. h. die N – M Kanäle, die der Codierer fortfallen hat lassen) mit Nullen auf. Der Decodierer multipliziert N Abtastungen mit einer Matrix Apost. ypost = Apost·xpost (28), wobei xpost und ypost die N-Kanal-Eingabe in die und die Ausgabe aus der Mehrkanalnachbearbeitung sind, Apost eine allgemeine N×N-Transformationsmatrix ist und xpost mit Nullen aufgefüllt ist, um mit der Ausgabevektorlänge N übereinzustimmen.
  • Die Matrix Apost kann eine Matrix mit vorbestimmten Elementen sein, oder sie kann eine allgemeine Matrix mit Elementen sein, die von dem Codierer festgelegt sind. Der Codierer signalisiert dem Decodierer, eine vorbestimmte Matrix (z. B. mit wenigstens einem Kennzeichenbit) zu verwenden, oder sendet die Elemente einer allgemeinen Matrix zu dem Decodierer, oder der Decodierer kann derart eingerichtet sein, dass er immer dieselbe Matrix Apost verwendet. Es ist nicht erforderlich, dass die Matrix Apost besondere Eigenschaften aufweist, wie etwa dass sie symmetrisch oder umkehrbar ist. Für zusätzliche Flexibilität kann die Mehrkanalnachbearbeitung auf einer Basis Frame für Frame oder einer anderen Basis ein-/ausgeschaltet werden (wobei in diesem Fall der Decodierer eine Identitätsmatrix verwenden kann, um Kanäle unverändert zu lassen).
  • 40 zeigt eine Beispielmatrix AP-conter (4000), die verwendet wird, um einen Phantomkanal aus rechten und linken Kanälen in einer 5.1-Wiedergabeumgebung zu erzeugen, wobei die Kanäle geordnet sind, wie es in 4 gezeigt ist. Die Beispielmatrix AP-center (4000) reicht die anderen Kanäle unverändert durch. Der Decodierer bezieht Abtastungen, die zeitlich am selben Ort angeordnet sind, aus den Kanälen links, rechts, Subwoofer, hinten links und hinten rechts und füllt den Mittelkanal mit Nullen auf. Anschließend multipliziert der Decodierer die sechs Eingangsabtastungen mit der Matrix AP-center (4000).
  • Figure 00740001
  • Alternativ verwendet der Decodierer eine Matrix mit anderen Koeffizienten oder einer anderen Zahl von Kanälen. Beispielsweise verwendet der Decodierer eine Matrix, um Phantomkanäle in einer 7.1-Kanal-, einer 9.1-Kanal- oder einer bestimmten anderen Abspielumgebung aus den codierten Kanälen für 5.1-Mehrkanalaudio zu erzeugen.
  • 41 zeigt eine Technik (4100) für die Mehrkanalnachbearbeitung, bei der sich die Transformationsmatrix möglicherweise auf einer Basis Frame für Frame ändert. Das Ändern der Transformationsmatrix kann zu einem hörbaren Rauschen (z. B. Knacken) in der fertigen Ausgabe führen, wenn sie nicht sorgsam gehandhabt wird. Um das Entstehen von Knackgeräuschen zu vermeiden, geht der Codierer allmählich von einer Transformationsmatrix zu einer weiteren zwischen Frames über.
  • Zunächst decodiert (4110) der Decodierer das codierte Mehrkanalaudio für einen Frame unter Verwendung von Techniken, die in 7 gezeigt sind, oder anderen Kompressionstechniken und erzeugt rekonstruierte Zeitdomänen-Mehrkanalaudiodaten. Anschließend bezieht (4120) der Codierer die Nachbearbeitungsmatrix für den Frame, wie es beispielsweise in 42 gezeigt ist.
  • Der Decodierer bestimmt (4130), ob die Matrix für den momentanen Frame eine andere Matrix als die Matrix für den vorherigen Frame ist (sofern es einen vorherigen Frame gab). Ist die momentane Matrix dieselbe oder gibt es keine vorherige Matrix, wendet der Decodierer die Matrix auf die rekonstruierten Audioabtastungen für den momentanen Frame an (4140). Andernfalls wendet der Decodierer eine verschmolzene Transformationsmatrix auf die rekonstruierten Audioabtastungen für den momentanen Frame an (4150). Die Verschmelzfunktion hängt von der Anwendung ab. Bei einer Anwendung, bei der Abtastung i in dem momentanen Frame, verwendet der Decodierer eine vorübergehende verschmolzene Matrix Apost,i an.
    Figure 00750001
    wobei Apost,prev und Apos,current die Nachbearbeitungsmatrizen für den vorherigen bzw. den momentanen Frame sind und NumSamples die Anzahl von Abtastungen in dem momentanen Frame ist. Alternativ verwendet der Decodierer eine Verschmelzfunktion, um Diskontinuitäten in den Nachbearbeitungstransformationsmatrizen zu glätten.
  • Der Decodierer wiederholt die Technik (4100) auf einer Basis Frame für Frame. Alternativ ändert der Decodierer die Mehrkanalnachbearbeitung auf einer bestimmten anderen Basis.
  • 42 zeigt eine Technik (4200) zum Identifizieren und Abrufen einer Transformationsmatrix für die Mehrkanalnachbearbeitung gemäß einer speziellen Bitstromsyntax. Die Syntax gestattet die Festlegung vorbestimmter Transformationsmatrizen wie auch angepasster Matrizen für die Mehrkanalnachbearbeitung. 42 zeigt die Technik (4200), die von dem Decodierer ausgeführt wird, um den Bitstrom zu parsen; der Codierer führt eine entsprechende Technik (Einstellen von Kennzeichen, Packen von Daten für Elemente und dergleichen) aus, um die Transformationsmatrix gemäß der Bitstromsyntax zu formatieren. Alternativ verwenden der Decodierer und der Codierer eine andere Syntax für wenigstens eine der Optionen, die in 42 gezeigt ist, wie etwa jene, die unterschiedliche Kennzeichen oder eine andere Ordnung verwendet.
  • Zunächst bestimmt (4210) der Decodierer, ob die Anzahl von Kanälen #Channels größer als 1 ist. Ist #Channeis 1, sind die Audiodaten mono und der Decodierer verwendet (4212) eine Identitätsmatrix (d. h. führt keine Mehrkanalnachbearbeitung an sich aus).
  • Ist andererseits #Channels > 1, stellt der Decodierer einen vorübergehenden Wert iTmp gleich dem nächsten Bit in dem Bitstrom ein (4220). Anschließend prüft (4230) der Decodierer den Wert des vorübergehenden Wertes, der signalisiert, ob der Decodierer eine Identitätsmatrix verwenden sollte (4232) oder nicht.
  • Verwendet der Decodierer etwas anderes als eine Identitätsmatrix für das Mehrkanalaudio, stellt der Decodierer den vorübergehenden Wert iTmp gleich dem nächsten Bit in dem Bitstrom ein (4240). Anschließend prüft (4250) der Decodierer den Wert des vorübergehenden Wertes, der signalisiert, ob der Decodierer eine vordefinierte Mehrkanaltransformationsmatrix verwenden soll (4252) oder nicht. Verwendet der Decodierer (4252) eine vordefinierte Matrix, kann der Decodierer wenigstens ein zusätzliches Bit aus dem Bitstrom (nicht gezeigt) beziehen, das kennzeichnet, welche der zahlreich verfügbaren vordefinierten Matrizen der Decodierer verwenden sollte.
  • Verwendet der Decodierer keine vordefinierte Matrix, initialisiert der Decodierer unterschiedliche vorübergehende Werte zur Decodierung einer angepassten Matrix. Der Decodierer stellt einen Zähler iCoefsDone für die zu 0 bearbeiteten Koeffizienten ein (4260) und stellt die Anzahl von zu decodierenden Koeffizienten #CoefsToDo ein (4262), um die Anzahl von Elementen in der Matrix (#Channels2) auszugleichen. Für Matrizen, von denen bekannt ist, dass sie spezielle Eigenschaften haben (wie etwa, dass sie symmetrisch sind), kann die Anzahl der zu decodierenden Koeffizienten verringert werden. Der Decodierer bestimmt (4270) anschließend, ob sämtliche Koeffizienten aus dem Bitstrom abgerufen wurden, und verlässt die Routine, sofern dies der Fall ist. Andernfalls bezieht (4272) der Decodierer den Wert des nächsten Elementes A[iCoefsDone] in der Matrix und erhöht (4274) iCoefsDone. Die Art und Weise, in der Elemente codiert und in den Bitstrom gepackt werden, hängt von der Anwendung ab. In 42 gestattet die Syntax vier Präzisionsbits pro Element der Transformationsmatrix, wobei der absolute Wert jedes Elementes kleiner oder gleich 1 ist. Bei anderen Anwendungen ist die Präzision pro Element anders, verwenden der Codierer und der Decodierer eine Kompression, um Redundanzmuster in der Transformationsmatrix zu nutzen, und/oder unterscheidet sich die Syntax in einer anderen Art und Weise.
  • Anhand der Beschreibung und Darstellung der Prinzipien unserer eigenen Erfindung mit Bezug auf die beschriebenen Ausführungsformen wird deutlich, dass die beschriebenen Ausführungsformen in Anordnung und Detail abgeändert werden können, ohne von derartigen Prinzipien abzuweichen. Es versteht sich, dass sich die Programme, Abläufe oder Verfahren, die hier beschrieben sind, nicht auf einen speziellen Typ einer Berechungsumgebung beziehen oder beschränken, solange es nicht anders vermerkt ist. Es können unterschiedliche Typen von Berechnungsumgebungen für allgemeine oder spezielle Zwecke in Verbindung mit Operationen gemäß der hier beschriebenen Lehre verwendet werden oder diese ausführen. Elemente der beschriebenen Ausführungsformen, die in Software dargestellt sind, können in Hardware eingesetzt werden, und umgekehrt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 10/016918 [0133]
  • Zitierte Nicht-Patentliteratur
    • Yang et al., ”An Inter-Channel Redundancy Removal Approach for High-Quality Multichannel Audio Compression”, AES Tagung, Los Angeles, September 2000 [”Yang”] [0042]
    • Wang et al., ”A Multichannel Audio Coding Algorithm for Inter-Channel Redundancy Removal,” AES 110. Tagung, Amsterdam, Niederlande, Mai 2001 [”Wang”] [0042]
    • Kuo et al., ”A Study of Why Cross Channel Prediction Is Not Applicable to Perceptual Audio Coding,” IEEE Signal Proc. Letters, vol. 8, no 9, September 2001 [0043]
    • Rao et al., Discrete Cosine Transform, Academic Press (1990) [0238]
    • Vaidyanathan, Multirate Systems and Filter Bank, Kapitel 14.6, ”Factorization of Unitary Matrices”, Prentice Hall (1993) [0254]

Claims (22)

  1. Computervorrichtung, umfassend: eine Kommunikationsverbindung, die eingerichtet ist zum Empfangen codierter Audioinformationen in einem Bitstrom, wobei die codierten Audioinformationen enthalten: Informationen, die eine Gewichtungsfaktorauflösung angeben, die einer Quantisierschrittgröße für Gewichtungsfaktoren entspricht; und entropiecodierte Differenzen für mehrere Gewichtungsfaktoren, wobei jeder der mehreren Gewichtungsfaktoren einen Gewichtungswert für ein oder mehrere Frequenzbänder für ein Zeitfenster angibt; und einen Audiodecodierer, der eingerichtet ist zum Decodieren von Audio unter Verwendung der codierten Audioinformationen, wobei: der Audiodecodierer eingerichtet ist, um die Gewichtungsfaktorauflösung basierend auf den Informationen in dem Bitstrom zu erhalten; der Audiodecodierer eingerichtet ist zum Decodieren eines momentanen Gewichtungsfaktors der mehreren Gewichtungsfaktoren mithilfe zeitlicher Vorhersage, wobei der momentane Gewichtungsfaktor einen Gewichtungswert für ein oder mehrere momentane Frequenzbänder für ein momentanes Zeitfenster angibt und wobei der Audiodecodierer für die Decodierung des momentanen Gewichtungsfaktors eingerichtet ist zum: Bestimmen eines entsprechenden Gewichtungsfaktors für das eine oder die mehreren momentanen Frequenzbänder für ein vorheriges Zeitfenster; Entropiedecodieren einer Differenz zwischen dem momentanen Gewichtungsfaktor und dem entsprechenden Gewichtungsfaktor; und Kombinieren des entsprechenden Gewichtungsfaktors mit der Differenz zwischen dem momentanen Gewichtungsfaktor und dem entsprechenden Gewichtungsfaktor; und der Audiodecodierer eingerichtet ist zum inversen Quantisieren des momentanen Gewichtungsfaktors gemäß der Gewichtungsfaktorauflösung.
  2. Computervorrichtung nach Anspruch 1, wobei der Audiodecodierer weiterhin eingerichtet ist, um als Teil der Bestimmung des entsprechenden Gewichtungsfaktors das eine oder die mehreren momentanen Frequenzbänder einem entsprechenden Frequenzband für das vorherige Zeitfenster zuzuordnen und den entsprechenden Gewichtungsfaktor als einen Gewichtungsfaktor für das entsprechende Frequenzband in einem Satz von Gewichtungsfaktoren für das vorherige Zeitfenster zuzuweisen.
  3. Computervorrichtung nach Anspruch 1 oder 2, wobei die Entropiedecodierung eine adaptive Entropiedecodierung, eine Codierung mit variabler zu variabler Länge, eine Lauflängendecodierung, eine Huffman-Decodierung, eine Wörterbuchdecodierung, eine arithmetische Decodierung oder eine LZ-Decodierung betrifft.
  4. Computervorrichtung nach einem der Ansprüche 1 bis 3, wobei der Audiodecodierer einen Bitstrom-Demultiplexer, einen oder mehrere Entropiedecodierer, einen inversen Mehrkanaltransformierer, einen inversen Quantisierer/Gewichter, einen inversen Frequenztransformierer, einen Überlapper/Addierer und einen Mehrkanal-Nachbearbeitungsprozessor umfasst.
  5. Computervorrichtung, die einen Audiodecodierer enthält, wobei: der Audiodecodierer eingerichtet ist zum Empfangen codierter Audioinformationen in einem Bitstrom, wobei die codierten Audioinformationen enthalten: Informationen, die eine Gewichtungsfaktorauflösung angeben, die einer Quantisierschrittgröße für Gewichtungsfaktoren entspricht; und entropiecodierte Differenzen für mehrere Gewichtungsfaktoren, wobei jeder der mehreren Gewichtungsfaktoren einen Gewichtungswert für ein oder mehrere Frequenzbänder für ein Zeitfenster des Audio angibt, und wobei die mehreren Gewichtungsfaktoren einen ersten Satz von Gewichtungsfaktoren und einen zweiten Satz von Gewichtungsfaktoren enthalten; der Audiodecodierer eingerichtet ist zum Decodieren des ersten Satzes von Gewichtungsfaktoren ohne Verwendung zeitlicher Vorhersage, wobei der erste Satz von Gewichtungsfaktoren einem ersten Zeitfenster zugeordnet ist und wobei der Audiodecodierer für die Decodierung eines gegebenen Gewichtungsfaktors aus dem ersten Satz von Gewichtungsfaktoren eingerichtet ist zum: Bestimmen eines vorherigen Gewichtungsfaktors aus dem ersten Satz von Gewichtungsfaktoren; Entropiedecodieren einer Differenz zwischen dem gegebenen Gewichtungsfaktor und dem vorherigen Gewichtungsfaktor; und Kombinieren des vorherigen Gewichtungsfaktors mit der Differenz zwischen dem gegebenen Gewichtungsfaktor und dem vorherigen Gewichtungsfaktor; und der Audiodecodierer eingerichtet ist zum Decodieren des zweiten Satzes von Gewichtungsfaktoren mithilfe zeitlicher Vorhersage, wobei der zweite Satz von Gewichtungsfaktoren einem zweiten Zeitfenster zugeordnet ist, das nach dem ersten Zeitfenster liegt, wobei für die Decodierung eines momentanen Gewichtungsfaktors aus dem zweiten Satz von Gewichtungsfaktoren, wobei der momentane Gewichtungsfaktor einen Gewichtungswert für ein oder mehrere momentane Frequenzbänder für das zweite Zeitfenster angibt, der Audiodecodierer eingerichtet ist zum: Bestimmen eines entsprechenden Gewichtungsfaktors für das eine oder die mehreren momentanen Frequenzbänder für das erste Zeitfenster; Entropiedecodieren einer Differenz zwischen dem momentanen Gewichtungsfaktor und dem entsprechenden Gewichtungsfaktor; und Kombinieren des entsprechenden Gewichtungsfaktors mit der Differenz zwischen dem momentanen Gewichtungsfaktor und dem entsprechenden Gewichtungsfaktor; der Audiodecodierer eingerichtet ist, um wenigstens teilweise basierend auf den Informationen in dem Bitstrom die Gewichtungsfaktorauflösung zu erhalten; der Audiodecodierer eingerichtet ist zum inversen Quantisieren der mehreren Gewichtungsfaktoren gemäß der Gewichtungsfaktorauflösung.
  6. Computervorrichtung nach Anspruch 5, wobei der Audiodecodierer weiterhin eingerichtet ist zum Bestimmen des entsprechenden Gewichtungsfaktors, wenn der erste Satz von Gewichtungsfaktoren und der zweite Satz von Gewichtungsfaktoren dieselbe Anzahl von Gewichtungsfaktoren aufweisen, indem bestimmt wird, welcher Gewichtungsfaktor in dem ersten Satz ein Gewichtungsfaktor für das eine oder die mehreren momentanen Frequenzbänder ist.
  7. Computervorrichtung nach Anspruch 5, wobei der Audiodecodierer weiterhin eingerichtet ist zum Bestimmen des entsprechenden Gewichtungsfaktors, wenn der erste Satz von Gewichtungsfaktoren und der zweite Satz von Gewichtungsfaktoren verschiedene Anzahlen von Gewichtungsfaktoren aufweisen, indem das eine oder die mehreren momentanen Frequenzbänder einem entsprechenden Frequenzband für den ersten Satz zugeordnet werden und der entsprechende Gewichtungsfaktor als der Gewichtungsfaktor in dem ersten Satz für das entsprechende Frequenzband zugewiesen wird.
  8. Computervorrichtung, die einen Audiodecodierer enthält, der eingerichtet ist zum: Empfangen codierter Audioinformationen für Audio in einem Bitstrom, wobei die codierten Audioinformationen Informationen für mehrere Gewichtungsfaktoren enthalten, wobei jeder der mehreren Gewichtungsfaktoren einen Gewichtungswert für ein oder mehrere Frequenzbänder für ein Zeitfenster des Audio angibt und wobei die codierten Audioinformationen weiterhin Informationen enthalten, die eine Quantisierschrittgröße für Gewichtungsfaktoren angeben; Decodieren der mehreren Gewichtungsfaktoren mithilfe zeitlicher Vorhersage für wenigstens einen der mehreren Gewichtungsfaktoren, wobei die mehreren Gewichtungsfaktoren eine Ankermatrix von Gewichtungsfaktoren für ein vorheriges Zeitfenster und eine momentane Matrix von Gewichtungsfaktoren für ein momentanes Zeitfenster enthalten, und wobei der Audiodecodierer für die Decodierung eines momentanen Gewichtungsfaktors in der momentanen Matrix eingerichtet ist zum: Bestimmen einer Vorhersage mithilfe der Ankermatrix; Dekomprimieren eines Residuums zwischen dem momentanen Gewichtungsfaktor und der Vorhersage mithilfe der Ankermatrix; und Kombinieren der Vorhersage mithilfe der Ankermatrix mit dem Residuum; und inversen Quantisieren der mehreren Gewichtungsfaktoren gemäß der Quantisierschrittgröße für Gewichtungsfaktoren.
  9. Computervorrichtung nach Anspruch 8, wobei die Ankermatrix und die momentane Matrix dieselbe Anzahl von Frequenzbändern haben und wobei der Audiodecodierer eingerichtet ist, um als Teil des Bestimmens der Vorhersage mithilfe der Ankermatrix zu bestimmen, welcher Gewichtungsfaktor in der Ankermatrix ein Gewichtungsfaktor für dieselben ein oder mehreren Frequenzbänder wie der momentane Gewichtungsfaktor in der momentanen Matrix ist.
  10. Computervorrichtung nach Anspruch 8, wobei die Ankermatrix und die momentane Matrix verschiedene Anzahlen von Frequenzbändern haben und wobei der Audiodecodierer als Teil des Bestimmens der Vorhersage mithilfe der Ankermatrix eingerichtet ist zum: Zuordnen eines oder mehrerer momentaner Frequenzbänder für den momentanen Gewichtungsfaktor in der momentanen Matrix zu einem entsprechenden Frequenzband für die Ankermatrix; und Zuweisen der Vorhersage als der Gewichtungsfaktor in der Ankermatrix für das entsprechende Frequenzband.
  11. Computervorrichtung nach Anspruch 8, wobei der Audiodecodierer als Teil der Decodierung der mehreren Gewichtungsfaktoren und für einen gegebenen Gewichtungsfaktor in der Ankermatrix eingerichtet ist zum: Dekomprimieren einer Differenz zwischen dem gegebenen Gewichtungsfaktor in der Ankermatrix und einem vorherigen Gewichtungsfaktor in der Ankermatrix; und Kombinieren der Differenz mit dem vorherigen Gewichtungsfaktor in der Ankermatrix.
  12. Computervorrichtung, die einen Audiodecodierer umfasst, der eingerichtet ist zum: Empfangen von Audiodaten in einem Bitstrom; Erhalten einer Quantisierschrittgröße für eine oder mehrere Maskierungen, wobei jede Maskierung ein Gewicht für jede der mehreren Frequenzbänder in einem Zeitfenster enthält; Bestimmen, ob eine Ankermaskierung verfügbar ist; differenziellen Decodieren codierter Elemente einer Quantisiermaskierung, wenn keine Ankermaskierung verfügbar ist, wobei die Differenz für ein Element der Quantisiermaskierung relativ zu dem Element des vorherigen Bandes ist; Dekomprimieren der Quantisiermaskierung unter Verwendung zeitlicher Vorhersage, wenn eine Ankermaskierung verfügbar ist, indem eine Vorhersage für die Quantisiermaskierung auf Grundlage der Ankermaskierung berechnet wird; inversen Quantisieren der Quantisiermaskierung unter Verwendung der Quantisierschrittgröße; und inversen Gewichten der Audiodaten unter Verwendung der Quantisiermaskierung.
  13. Computervorrichtung nach Anspruch 12, wobei der Audiodecodierer weiterhin eingerichtet ist zum differenziellen Decodieren codierter Elemente der Quantisiermaskierung, wenn keine Ankermaskierung verfügbar ist, unter Verwendung von Entropiedecodierung.
  14. Computervorrichtung nach Anspruch 12 oder 13, wobei der Audiodecodierer eingerichtet ist, um die Quantisierschrittgröße aus dem Bitstrom zu erhalten.
  15. Computervorrichtung nach einem der Ansprüche 12 bis 14, wobei die Dekomprimierung der Quantisiermaskierung mithilfe zeitlicher Vorhersage auf der Ankermaskierung eines vorherigen Zeitfensters basiert.
  16. Computervorrichtung nach einem der Ansprüche 12 bis 15, wobei der Audiodecodierer einen Bitstrom-Demultiplexer, einen oder mehrere Entropiedecodierer, einen inversen Mehrkanaltransformierer, einen inversen Quantisierer/Gewichter, einen inversen Frequenztransformierer, einen Überlapper/Addierer und einen Mehrkanal-Nachbearbeitungsprozessor umfasst.
  17. Computervorrichtung nach einem der Ansprüche 1 bis 16, wobei der Audiodecodierer durch Software implementiert ist, die auf einer Verarbeitungseinheit ausführbar ist.
  18. Computervorrichtung nach einem der Ansprüche 1 bis 16, wobei der Audiodecodierer als Spezial-Hardware implementiert ist.
  19. Computervorrichtung nach einem der vorangegangenen Ansprüche, ferner ein Eingabegerät umfassend, welches eine Tastatur, eine Maus, ein Stift, ein Trackball, ein Spracheingabegerät, eine Scan-Vorrichtung oder ein Netzwerkadapter ist.
  20. Computervorrichtung nach einem der vorangegangenen Ansprüche, weiterhin ein Ausgabegerät umfassend, welches ein Display, ein Drucker, ein Lautsprecher oder ein CD/DVD-Brenner ist.
  21. Computervorrichtung nach einem der vorangegangenen Ansprüche, ferner eine Verarbeitungseinheit und einen Speicher umfassend.
  22. Computervorrichtung nach einem der Ansprüche 1 bis 18, weiterhin ein Spracheingabegerät, einen Lautsprecher, einen Netzwerkadapter, eine Verarbeitungseinheit und einen Speicher umfassend.
DE20321886U 2002-09-04 2003-09-04 Inverse Quantisierung für Audio Expired - Lifetime DE20321886U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US40851702P 2002-09-04 2002-09-04
US60/408,517 2002-09-04
US10/642,551 US7299190B2 (en) 2002-09-04 2003-08-15 Quantization and inverse quantization for audio
US10/642,551 2003-08-15

Publications (1)

Publication Number Publication Date
DE20321886U1 true DE20321886U1 (de) 2012-03-02

Family

ID=31981597

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60325310T Expired - Lifetime DE60325310D1 (de) 2002-09-04 2003-09-04 Quantisierung und inverse Quantisierung für Tonsignale
DE20321886U Expired - Lifetime DE20321886U1 (de) 2002-09-04 2003-09-04 Inverse Quantisierung für Audio

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE60325310T Expired - Lifetime DE60325310D1 (de) 2002-09-04 2003-09-04 Quantisierung und inverse Quantisierung für Tonsignale

Country Status (6)

Country Link
US (2) US8069052B2 (de)
EP (3) EP2023340A3 (de)
JP (2) JP4676140B2 (de)
AT (1) ATE418136T1 (de)
DE (2) DE60325310D1 (de)
ES (1) ES2316679T3 (de)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4374448B2 (ja) 2004-07-02 2009-12-02 日本電信電話株式会社 多チャネル信号符号化方法、その復号化方法、これらの装置、プログラム及びその記録媒体
DE602005025887D1 (de) * 2004-08-19 2011-02-24 Nippon Telegraph & Telephone Mehrkanal-signaldekodierverfahren dafür, zugehörige vorrichtung, programm und aufzeichnungsmedium dafür
US7787631B2 (en) * 2004-11-30 2010-08-31 Agere Systems Inc. Parametric coding of spatial audio with cues based on transmitted channels
US7983922B2 (en) * 2005-04-15 2011-07-19 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for generating multi-channel synthesizer control signal and apparatus and method for multi-channel synthesizing
KR101251426B1 (ko) * 2005-06-03 2013-04-05 돌비 레버러토리즈 라이쎈싱 코오포레이션 디코딩 명령으로 오디오 신호를 인코딩하기 위한 장치 및방법
US8626503B2 (en) 2005-07-14 2014-01-07 Erik Gosuinus Petrus Schuijers Audio encoding and decoding
MX2008000504A (es) * 2005-07-14 2008-03-07 Koninkl Philips Electronics Nv Codificacion y decodificacion de audio.
JP5113051B2 (ja) * 2005-07-29 2013-01-09 エルジー エレクトロニクス インコーポレイティド オーディオ信号の処理方法
JP4859925B2 (ja) 2005-08-30 2012-01-25 エルジー エレクトロニクス インコーポレイティド オーディオ信号デコーディング方法及びその装置
JP5173811B2 (ja) * 2005-08-30 2013-04-03 エルジー エレクトロニクス インコーポレイティド オーディオ信号デコーディング方法及びその装置
DE102006055737A1 (de) * 2006-11-25 2008-05-29 Deutsche Telekom Ag Verfahren zur skalierbaren Codierung von Stereo-Signalen
BRPI0718738B1 (pt) 2006-12-12 2023-05-16 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Codificador, decodificador e métodos para codificação e decodificação de segmentos de dados representando uma corrente de dados de domínio de tempo
US8612237B2 (en) * 2007-04-04 2013-12-17 Apple Inc. Method and apparatus for determining audio spatial quality
US8457958B2 (en) * 2007-11-09 2013-06-04 Microsoft Corporation Audio transcoder using encoder-generated side information to transcode to target bit-rate
JP4929200B2 (ja) * 2008-02-13 2012-05-09 パイオニア株式会社 受信装置、音声再生方法、音声再生プログラム及びその記録媒体
CN102292769B (zh) * 2009-02-13 2012-12-19 华为技术有限公司 一种立体声编码方法和装置
JP5533502B2 (ja) * 2010-09-28 2014-06-25 富士通株式会社 オーディオ符号化装置、オーディオ符号化方法及びオーディオ符号化用コンピュータプログラム
US8620166B2 (en) * 2011-01-07 2013-12-31 Raytheon Bbn Technologies Corp. Holevo capacity achieving joint detection receiver
KR101854469B1 (ko) * 2011-11-30 2018-05-04 삼성전자주식회사 오디오 컨텐츠의 비트레이트 판단장치 및 방법
TWI453733B (zh) * 2011-12-30 2014-09-21 Nyquest Corp Ltd 音訊量化編解碼裝置及其方法
US9070362B2 (en) 2011-12-30 2015-06-30 Nyquest Corporation Limited Audio quantization coding and decoding device and method thereof
US9336791B2 (en) 2013-01-24 2016-05-10 Google Inc. Rearrangement and rate allocation for compressing multichannel audio
JP6179122B2 (ja) * 2013-02-20 2017-08-16 富士通株式会社 オーディオ符号化装置、オーディオ符号化方法、オーディオ符号化プログラム
US9530422B2 (en) 2013-06-27 2016-12-27 Dolby Laboratories Licensing Corporation Bitstream syntax for spatial voice coding
FR3008533A1 (fr) * 2013-07-12 2015-01-16 Orange Facteur d'echelle optimise pour l'extension de bande de frequence dans un decodeur de signaux audiofrequences
TWI579831B (zh) 2013-09-12 2017-04-21 杜比國際公司 用於參數量化的方法、用於量化的參數之解量化方法及其電腦可讀取的媒體、音頻編碼器、音頻解碼器及音頻系統
WO2015164575A1 (en) 2014-04-25 2015-10-29 Dolby Laboratories Licensing Corporation Matrix decomposition for rendering adaptive audio using high definition audio codecs
EP2963949A1 (de) * 2014-07-02 2016-01-06 Thomson Licensing Verfahren und Vorrichtung zur Dekodierung einer komprimierten HOA-Darstellung sowie Verfahren und Vorrichtung zur Kodierung einer komprimierten HOA-Darstellung
US9961467B2 (en) 2015-10-08 2018-05-01 Qualcomm Incorporated Conversion from channel-based audio to HOA
US9961475B2 (en) 2015-10-08 2018-05-01 Qualcomm Incorporated Conversion from object-based audio to HOA
US10249312B2 (en) * 2015-10-08 2019-04-02 Qualcomm Incorporated Quantization of spatial vectors
CN109450505B (zh) * 2016-05-13 2019-11-15 华为技术有限公司 一种信道信息发送方法、数据发送方法和设备
KR20190039562A (ko) * 2016-09-01 2019-04-12 엘지전자 주식회사 레이어드 기븐스 변환을 이용하여 변환을 수행하는 방법 및 장치
EP3467824B1 (de) * 2017-10-03 2021-04-21 Dolby Laboratories Licensing Corporation Verfahren und system zur codierung zwischen kanälen
GB2576769A (en) * 2018-08-31 2020-03-04 Nokia Technologies Oy Spatial parameter signalling
IL298813A (en) * 2020-06-11 2023-02-01 Dolby Laboratories Licensing Corp Quantization and Entropy Coding of Navel Audio Codec Parameters with Low Density

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100016918A1 (en) 2003-12-19 2010-01-21 Pacesetter, Inc. Method for digital cardiac rhythm management

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB206877A (en) 1922-05-17 1923-11-19 Charles Kingston Welch Improvements in or relating to pneumatic tyres and wheels for various vehicles
US1691801A (en) 1926-06-24 1928-11-13 George W Fothergill Multiplane bevel square
US1769401A (en) 1928-04-23 1930-07-01 William W Tancre Fruit clipper
JPS5921039B2 (ja) * 1981-11-04 1984-05-17 日本電信電話株式会社 適応予測符号化方式
CA1253255A (en) 1983-05-16 1989-04-25 Nec Corporation System for simultaneously coding and decoding a plurality of signals
GB8421498D0 (en) 1984-08-24 1984-09-26 British Telecomm Frequency domain speech coding
US4953196A (en) * 1987-05-13 1990-08-28 Ricoh Company, Ltd. Image transmission system
US4922537A (en) 1987-06-02 1990-05-01 Frederiksen & Shu Laboratories, Inc. Method and apparatus employing audio frequency offset extraction and floating-point conversion for digitally encoding and decoding high-fidelity audio signals
NL8901032A (nl) 1988-11-10 1990-06-01 Philips Nv Coder om extra informatie op te nemen in een digitaal audiosignaal met een tevoren bepaald formaat, een decoder om deze extra informatie uit dit digitale signaal af te leiden, een inrichting voor het opnemen van een digitaal signaal op een registratiedrager, voorzien van de coder, en een registratiedrager verkregen met deze inrichting.
US5142656A (en) 1989-01-27 1992-08-25 Dolby Laboratories Licensing Corporation Low bit rate transform coder, decoder, and encoder/decoder for high-quality audio
US5222189A (en) 1989-01-27 1993-06-22 Dolby Laboratories Licensing Corporation Low time-delay transform coder, decoder, and encoder/decoder for high-quality audio
US5752225A (en) 1989-01-27 1998-05-12 Dolby Laboratories Licensing Corporation Method and apparatus for split-band encoding and split-band decoding of audio information using adaptive bit allocation to adjacent subbands
US5479562A (en) 1989-01-27 1995-12-26 Dolby Laboratories Licensing Corporation Method and apparatus for encoding and decoding audio information
CA2332407C (en) 1989-01-27 2002-03-05 Dolby Laboratories Licensing Corporation Method for defining coding information
DE59008047D1 (de) 1989-03-06 1995-02-02 Bosch Gmbh Robert Verfahren zur Datenreduktion bei digitalen Tonsignalen und zur genäherten Rückgewinnung der digitalen Tonsignale.
DE69029120T2 (de) * 1989-04-25 1997-04-30 Toshiba Kawasaki Kk Stimmenkodierer
US5115240A (en) 1989-09-26 1992-05-19 Sony Corporation Method and apparatus for encoding voice signals divided into a plurality of frequency bands
JP2921879B2 (ja) * 1989-09-29 1999-07-19 株式会社東芝 画像データ処理装置
US5185800A (en) 1989-10-13 1993-02-09 Centre National D'etudes Des Telecommunications Bit allocation device for transformed digital audio broadcasting signals with adaptive quantization based on psychoauditive criterion
JP2560873B2 (ja) * 1990-02-28 1996-12-04 日本ビクター株式会社 直交変換符号化復号化方法
JP2861238B2 (ja) 1990-04-20 1999-02-24 ソニー株式会社 ディジタル信号符号化方法
US5388181A (en) * 1990-05-29 1995-02-07 Anderson; David J. Digital audio compression system
JP3033156B2 (ja) * 1990-08-24 2000-04-17 ソニー株式会社 ディジタル信号符号化装置
US5274740A (en) 1991-01-08 1993-12-28 Dolby Laboratories Licensing Corporation Decoder for variable number of channel presentation of multidimensional sound fields
US5559900A (en) 1991-03-12 1996-09-24 Lucent Technologies Inc. Compression of signals for perceptual quality by selecting frequency bands having relatively high energy
JP3141450B2 (ja) 1991-09-30 2001-03-05 ソニー株式会社 オーディオ信号処理方法
US5369724A (en) 1992-01-17 1994-11-29 Massachusetts Institute Of Technology Method and apparatus for encoding, decoding and compression of audio-type data using reference coefficients located within a band of coefficients
EP0559348A3 (de) * 1992-03-02 1993-11-03 AT&T Corp. Rateurregelschleifenprozessor für einen wahrnehmungsgebundenen Koder/Dekoder
US5285498A (en) 1992-03-02 1994-02-08 At&T Bell Laboratories Method and apparatus for coding audio signals based on perceptual model
JP2693893B2 (ja) * 1992-03-30 1997-12-24 松下電器産業株式会社 ステレオ音声符号化方法
JP3343962B2 (ja) * 1992-11-11 2002-11-11 ソニー株式会社 高能率符号化方法及び装置
DE69428939T2 (de) * 1993-06-22 2002-04-04 Thomson Brandt Gmbh Verfahren zur Erhaltung einer Mehrkanaldekodiermatrix
US5632003A (en) * 1993-07-16 1997-05-20 Dolby Laboratories Licensing Corporation Computationally efficient adaptive bit allocation for coding method and apparatus
TW272341B (de) * 1993-07-16 1996-03-11 Sony Co Ltd
US5623577A (en) * 1993-07-16 1997-04-22 Dolby Laboratories Licensing Corporation Computationally efficient adaptive bit allocation for encoding method and apparatus with allowance for decoder spectral distortions
US7158654B2 (en) * 1993-11-18 2007-01-02 Digimarc Corporation Image processor and image processing method
US5684920A (en) * 1994-03-17 1997-11-04 Nippon Telegraph And Telephone Acoustic signal transform coding method and decoding method having a high efficiency envelope flattening method therein
DE4409368A1 (de) * 1994-03-18 1995-09-21 Fraunhofer Ges Forschung Verfahren zum Codieren mehrerer Audiosignale
JP3277677B2 (ja) * 1994-04-01 2002-04-22 ソニー株式会社 信号符号化方法及び装置、信号記録媒体、信号伝送方法、並びに信号復号化方法及び装置
AU697176B2 (en) * 1994-11-04 1998-10-01 Koninklijke Philips Electronics N.V. Encoding and decoding of a wideband digital information signal
US5774846A (en) * 1994-12-19 1998-06-30 Matsushita Electric Industrial Co., Ltd. Speech coding apparatus, linear prediction coefficient analyzing apparatus and noise reducing apparatus
US5629780A (en) * 1994-12-19 1997-05-13 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Image data compression having minimum perceptual error
WO1996032710A1 (en) * 1995-04-10 1996-10-17 Corporate Computer Systems, Inc. System for compression and decompression of audio signals for digital transmission
US5774837A (en) * 1995-09-13 1998-06-30 Voxware, Inc. Speech coding system and method using voicing probability determination
US5960390A (en) * 1995-10-05 1999-09-28 Sony Corporation Coding method for using multi channel audio signals
DE19537338C2 (de) * 1995-10-06 2003-05-22 Fraunhofer Ges Forschung Verfahren und Vorrichtung zum Codieren von Audiosignalen
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
JPH09152896A (ja) * 1995-11-30 1997-06-10 Oki Electric Ind Co Ltd 声道予測係数符号化・復号化回路、声道予測係数符号化回路、声道予測係数復号化回路、音声符号化装置及び音声復号化装置
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
US5686964A (en) * 1995-12-04 1997-11-11 Tabatabai; Ali Bit rate control mechanism for digital image and video data compression
FR2742568B1 (fr) * 1995-12-15 1998-02-13 Catherine Quinquis Procede d'analyse par prediction lineaire d'un signal audiofrequence, et procedes de codage et de decodage d'un signal audiofrequence en comportant application
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
US5822370A (en) * 1996-04-16 1998-10-13 Aura Systems, Inc. Compression/decompression for preservation of high fidelity speech quality at low bandwidth
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
US5969750A (en) * 1996-09-04 1999-10-19 Winbcnd Electronics Corporation Moving picture camera with universal serial bus interface
GB2318029B (en) * 1996-10-01 2000-11-08 Nokia Mobile Phones Ltd Audio coding method and apparatus
SG54379A1 (en) * 1996-10-24 1998-11-16 Sgs Thomson Microelectronics A Audio decoder with an adaptive frequency domain downmixer
JP3339335B2 (ja) * 1996-12-12 2002-10-28 ヤマハ株式会社 圧縮符号化復号方式
JP3283200B2 (ja) * 1996-12-19 2002-05-20 ケイディーディーアイ株式会社 符号化音声データの符号化レート変換方法および装置
FI970266A (fi) * 1997-01-22 1998-07-23 Nokia Telecommunications Oy Menetelmä solukkoradiojärjestelmän ohjauskanavien kantaman pidentämiseksi ja solukkoradiojärjestelmä
CN1145363C (zh) * 1997-02-08 2004-04-07 松下电器产业株式会社 静画和动画编码的量化矩阵
JP3143406B2 (ja) * 1997-02-19 2001-03-07 三洋電機株式会社 音声符号化方法
FI114248B (fi) * 1997-03-14 2004-09-15 Nokia Corp Menetelmä ja laite audiokoodaukseen ja audiodekoodaukseen
KR100265112B1 (ko) * 1997-03-31 2000-10-02 윤종용 디브이디 디스크와 디브이디 디스크를 재생하는 장치 및 방법
US6064954A (en) * 1997-04-03 2000-05-16 International Business Machines Corp. Digital audio signal coding
EP0924962B1 (de) 1997-04-10 2012-12-12 Sony Corporation Kodierungsverfahren und vorrichtung, dekodierungsverfahren und vorrichtung, und aufzeichnungsmedium
DE19730130C2 (de) * 1997-07-14 2002-02-28 Fraunhofer Ges Forschung Verfahren zum Codieren eines Audiosignals
DE19730129C2 (de) 1997-07-14 2002-03-07 Fraunhofer Ges Forschung Verfahren zum Signalisieren einer Rauschsubstitution beim Codieren eines Audiosignals
US6016111A (en) * 1997-07-31 2000-01-18 Samsung Electronics Co., Ltd. Digital data coding/decoding method and apparatus
US6185253B1 (en) * 1997-10-31 2001-02-06 Lucent Technology, Inc. Perceptual compression and robust bit-rate control system
US6253185B1 (en) * 1998-02-25 2001-06-26 Lucent Technologies Inc. Multiple description transform coding of audio using optimal transforms of arbitrary dimension
US6249614B1 (en) * 1998-03-06 2001-06-19 Alaris, Inc. Video compression and decompression using dynamic quantization and/or encoding
US6353807B1 (en) * 1998-05-15 2002-03-05 Sony Corporation Information coding method and apparatus, code transform method and apparatus, code transform control method and apparatus, information recording method and apparatus, and program providing medium
JP3437445B2 (ja) * 1998-05-22 2003-08-18 松下電器産業株式会社 線形信号予測を用いた受信装置及び方法
US6115689A (en) * 1998-05-27 2000-09-05 Microsoft Corporation Scalable audio coder and decoder
US6029126A (en) * 1998-06-30 2000-02-22 Microsoft Corporation Scalable audio coder and decoder
JP3998330B2 (ja) * 1998-06-08 2007-10-24 沖電気工業株式会社 符号化装置
JP3541680B2 (ja) * 1998-06-15 2004-07-14 日本電気株式会社 音声音楽信号の符号化装置および復号装置
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
SE519552C2 (sv) 1998-09-30 2003-03-11 Ericsson Telefon Ab L M Flerkanalig signalkodning och -avkodning
CA2252170A1 (en) * 1998-10-27 2000-04-27 Bruno Bessette A method and device for high quality coding of wideband speech and audio signals
ES2208297T3 (es) * 1999-04-07 2004-06-16 Dolby Laboratories Licensing Corporation Generacion de matrices para codificacion y descodificacion sin perdidas de señales de audio multicanal.
US6370502B1 (en) * 1999-05-27 2002-04-09 America Online, Inc. Method and system for reduction of quantization-induced block-discontinuities and general purpose audio codec
US6226616B1 (en) * 1999-06-21 2001-05-01 Digital Theater Systems, Inc. Sound quality of established low bit-rate audio coding systems without loss of decoder compatibility
US6658162B1 (en) * 1999-06-26 2003-12-02 Sharp Laboratories Of America Image coding method using visual optimization
JP4242516B2 (ja) * 1999-07-26 2009-03-25 パナソニック株式会社 サブバンド符号化方式
EP1221694B1 (de) * 1999-09-14 2006-07-19 Fujitsu Limited Sprachkodierer/dekodierer
US6418405B1 (en) * 1999-09-30 2002-07-09 Motorola, Inc. Method and apparatus for dynamic segmentation of a low bit rate digital voice message
EP1228576B1 (de) * 1999-10-30 2005-12-07 STMicroelectronics Asia Pacific Pte Ltd. Kanal koppelung für einen ac-3 kodierer
US6738074B2 (en) * 1999-12-29 2004-05-18 Texas Instruments Incorporated Image compression system and method
US6499010B1 (en) * 2000-01-04 2002-12-24 Agere Systems Inc. Perceptual audio coder bit allocation scheme providing improved perceptual quality consistency
JP2001285073A (ja) 2000-03-29 2001-10-12 Sony Corp 信号処理装置及び方法
US6757654B1 (en) * 2000-05-11 2004-06-29 Telefonaktiebolaget Lm Ericsson Forward error correction in speech coding
DE60132853D1 (de) 2000-07-07 2008-04-03 Nokia Siemens Networks Oy Verfahren und Vorrichtung für die perzeptuelle Tonkodierung von einem mehrkanal Tonsignal mit Verwendung der kaskadierten diskreten Cosinustransformation oder der modifizierten diskreten Cosinustransformation
JP4857468B2 (ja) * 2001-01-25 2012-01-18 ソニー株式会社 データ処理装置およびデータ処理方法、並びにプログラムおよび記録媒体
US7062445B2 (en) * 2001-01-26 2006-06-13 Microsoft Corporation Quantization loop with heuristic approach
US7136418B2 (en) * 2001-05-03 2006-11-14 University Of Washington Scalable and perceptually ranked signal coding and decoding
US7027982B2 (en) * 2001-12-14 2006-04-11 Microsoft Corporation Quality and rate control strategy for digital audio
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
US7240001B2 (en) * 2001-12-14 2007-07-03 Microsoft Corporation Quality improvement techniques in an audio encoder
US7146313B2 (en) 2001-12-14 2006-12-05 Microsoft Corporation Techniques for measurement of perceptual audio quality
US7460993B2 (en) * 2001-12-14 2008-12-02 Microsoft Corporation Adaptive window-size selection in transform coding
US7299190B2 (en) * 2002-09-04 2007-11-20 Microsoft Corporation Quantization and inverse quantization for audio

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100016918A1 (en) 2003-12-19 2010-01-21 Pacesetter, Inc. Method for digital cardiac rhythm management

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Kuo et al., "A Study of Why Cross Channel Prediction Is Not Applicable to Perceptual Audio Coding," IEEE Signal Proc. Letters, vol. 8, no 9, September 2001
Rao et al., Discrete Cosine Transform, Academic Press (1990)
Vaidyanathan, Multirate Systems and Filter Bank, Kapitel 14.6, "Factorization of Unitary Matrices", Prentice Hall (1993)
Wang et al., "A Multichannel Audio Coding Algorithm for Inter-Channel Redundancy Removal," AES 110. Tagung, Amsterdam, Niederlande, Mai 2001 ["Wang"]
Yang et al., "An Inter-Channel Redundancy Removal Approach for High-Quality Multichannel Audio Compression", AES Tagung, Los Angeles, September 2000 ["Yang"]

Also Published As

Publication number Publication date
ES2316679T3 (es) 2009-04-16
EP1400955A3 (de) 2006-05-10
ATE418136T1 (de) 2009-01-15
US20100318368A1 (en) 2010-12-16
EP1400955B1 (de) 2008-12-17
EP1400955A2 (de) 2004-03-24
JP2010176151A (ja) 2010-08-12
DE60325310D1 (de) 2009-01-29
JP5091272B2 (ja) 2012-12-05
EP2261897A1 (de) 2010-12-15
US8255234B2 (en) 2012-08-28
JP2004264811A (ja) 2004-09-24
US8069052B2 (en) 2011-11-29
JP4676140B2 (ja) 2011-04-27
US20120035941A1 (en) 2012-02-09
EP2023340A3 (de) 2009-04-29
EP2023340A2 (de) 2009-02-11

Similar Documents

Publication Publication Date Title
DE20321886U1 (de) Inverse Quantisierung für Audio
EP2028648B1 (de) Mehrkanal-Audio-Kodierung und -Dekodierung
US7299190B2 (en) Quantization and inverse quantization for audio
DE69633633T2 (de) Mehrkanaliger prädiktiver subband-kodierer mit adaptiver, psychoakustischer bitzuweisung
US7953604B2 (en) Shape and scale parameters for extended-band frequency coding
RU2555221C2 (ru) Канальное кодирование на основе комплексного преобразования с частотным кодированием с расширенной полосой
US8249883B2 (en) Channel extension coding for multi-channel source
KR101679083B1 (ko) 2개의 블록 변환으로의 중첩 변환의 분해
DE69932861T2 (de) Verfahren zur kodierung eines audiosignals mit einem qualitätswert für bit-zuordnung
MX2008009186A (en) Complex-transform channel coding with extended-band frequency coding

Legal Events

Date Code Title Description
R087 Non-binding licensing interest withdrawn
R152 Utility model maintained after payment of third maintenance fee after eight years
R207 Utility model specification

Effective date: 20120426

R152 Utility model maintained after payment of third maintenance fee after eight years

Effective date: 20120326

R071 Expiry of right
R071 Expiry of right