PatentDe  


Dokumentenidentifikation DE69826529T2 22.09.2005
EP-Veröffentlichungsnummer 0001072036
Titel SCHNELLE DATENRAHMEN-OPTIMIERUNG IN EINEM AUDIO-KODIERER
Anmelder STMicroelectronics Asia Pacific (Pte) Ltd., Singapur/Singapore, SG
Erfinder ABSAR, Mohammed Javed, Singapore 530411, SG;
GEORGE, Sapna, Singapore 550315, SG;
ALVAREZ-TINOCO, Mario, Antonio, Singapore 596710, SG
Vertreter WAGNER & GEYER Partnerschaft Patent- und Rechtsanwälte, 80538 München
DE-Aktenzeichen 69826529
Vertragsstaaten DE, FR, GB, IT
Sprache des Dokument EN
EP-Anmeldetag 15.04.1998
EP-Aktenzeichen 989179379
WO-Anmeldetag 15.04.1998
PCT-Aktenzeichen PCT/SG98/00028
WO-Veröffentlichungsnummer 0099053479
WO-Veröffentlichungsdatum 21.10.1999
EP-Offenlegungsdatum 31.01.2001
EP date of grant 22.09.2004
Veröffentlichungstag im Patentblatt 22.09.2005
IPC-Hauptklasse G10L 19/00

Beschreibung[de]
Technisches Gebiet

Diese Erfindung bezieht sich auf Audiocodierer und im Besonderen auf die Codierung und Packung von Daten in Rahmen festgelegter Größe.

Technischer Hintergrund

Um Audiosignale effizienter auszustrahlen oder aufzuzeichnen, kann die zum Darstellen der Audiosignale nötige Informationsmenge reduziert werden. Im Fall von digitalen Audiosignalen kann die zum genauen Reproduzieren der originalen Pulscodemodulations-(puls code modulation, PCM)-Tastungen bzw. Abtastungen nötige Menge digitaler Information reduziert werden und zwar durch Anwenden eines digitalen Komprimierungsalgorithmus, was zu einer digital komprimierten Darstellung des Originalsignals führt. Das Ziel des digitalen Komprimierungsalgorithmus ist es, eine digitale Darstellung eines Audiosignals zu erzeugen, die, wenn sie decodiert und reproduziert wird, genauso wie das Originalsignal klingt, während ein Minimum an digitaler Information für die komprimierte oder codierte Darstellung verwendet wird.

Neueste Fortschritte bei der Audiocodierungstechnologie haben zu hohen Komprimierungsverhältnissen bzw. -raten geführt, wobei die hörbare Verschlechterung im komprimierten Signal auf einem Minimum gehalten wird. Diese Codierer sind für eine Vielzahl von Anwendungen gedacht, einschließlich 5.1-Kanal-Film-Soundtracks, HDTV, Laserdisks und Multimedia. Die Beschreibung eines anwendbaren Verfahrens kann in dem Standard- bzw. Normendokument der ATSC (Advanced Television Systems Committee) gefunden werden, das den Titel trägt „Digital Audio Compression (AC-3) Standard", Dokument A/52, 20. Dezember 1995.

In dem grundlegenden Ansatz wird beim Codierer das Zeitbereichsaudiosignal zuerst in den Frequenzbereich unter Verwendung einer Filterbank konvertiert. Die so erzeugten Frequenzbereichskoeffizienten werden in Fest-Komma-Darstellung (fixed point representation) konvertiert. Bei Fest-Komma-Syntax ist jeder Koeffizient als eine Mantisse und ein Exponent dargestellt. Der Großteil des an den Decoder gesendeten bzw. übertragenen komprimierten Bitstroms umfasst diese Exponenten und Mantissen.

Die Exponenten werden für gewöhnlich in ihrer originalen Form übertragen. Dennoch muss jede Mantisse auf eine feste oder variable Anzahl von Dezimalstellen abgeschnitten werden. Die Anzahl der zum Codieren jeder Mantisse zu verwendenden Bits wird von einem Bitzuordnungs- bzw. -zuweisungsalgorithmus erhalten, der auf den Maskierungseigenschaften des menschlichen Hörsystems basieren kann. Niedrigere Anzahlen von Bits führen zu höheren Komprimierungsverhältnissen bzw. -raten, weil weniger Platz zum Übertragen der Koeffizienten benötigt wird. Das kann jedoch hohe Quantisierungsfehler verursachen, was zu hörbaren Störungen führt. Eine gute Verteilung der verfügbaren Bits auf jede Mantisse bildet den Kern der verbesserten Audio- bzw. Toncodierer.

Weitere Komprimierung ist möglich und zwar durch Anwenden differentieller Codierung für die Exponenten. In diesem Fall werden die Exponenten für einen Kanal über den Frequenzbereich differentiell codiert. Der erste Exponent wird als ein Absolutwert gesendet. Folgende Exponentinformation wird in differentieller Form gesendet, und zwar einer maximalen Grenze bzw. Beschränkung unterliegend. D.h. anstatt des Sendens von tatsächlichen Exponentwerten wird nur die Differenz zwischen Exponenten gesendet. In dem extremen Fall, wenn Exponentensätze mehrerer aufeinander folgender Blöcke in einem Rahmen fast identisch sind, wird nur der Exponentensatz für den ersten Block gesendet. Die nachfolgenden Blöcke in dem Rahmen verwenden die vorher gesendeten Exponentwerte wieder.

In dem oben erwähnten AC-3 Standard besitzen die Audioblöcke und die Felder innerhalb der Blöcke variable Längen. Bestimmte Felder, wie beispielsweise Exponenten, können in einem bestimmten Audioblock nicht vorhanden sein, und selbst wenn sie vorhanden sind, können sie verschiedene Anzahlen von Bits zu verschiedenen Zeiten benötigen, und zwar abhängig von der gerade verwendeten Strategie und Signalcharakteristika. Die Mantissen erscheinen in jedem Block, die Bitzuordnung für die Mantissen wird jedoch global durchgeführt.

Ein Ansatz könnte sein alle Information, die Mantissen ausgenommen, für all die Audioblöcke in den AC-3 Rahmen zu packen. Der verbleibende Platz bzw. Raum in dem Rahmen wird dann verwendet um die Bits global an alle die Mantissen zuzuordnen. Die Mantissen für jeden Block, quantisiert zu geeigneten Bits unter Verwendung der Bitzuordnungsausgabe, werden dann in das richtige Feld in dem Rahmen platziert. Diese Art des Ansatzes ist mühsam und besitzt große Speicher- und Berechnungsanforderungen und ist somit nicht brauchbar für einen für Consumer-Anwendung gedachten Echtzeitcodierer.

Zusammenfassung der Erfindung

Gemäß der vorliegenden Erfindung ist ein Verfahren zum Verarbeiten von Audioeingangsdaten zur Komprimierung in einen codierten Bitstrom vorgesehen, der eine Folge von Rahmen bzw. Datenrahmen fester bzw. festgelegter Größe aufweist, wobei jeder der Rahmen festgelegter Größe eine Vielzahl von Feldern variabler Größe besitzt die codierte Daten unterschiedlicher Arten enthalten, wobei das Verfahren folgende Schritte aufweist:

Empfangen von Eingangsdaten, die in einen Rahmen des Ausgangsbitstroms zu codieren sind;

Vorverarbeiten der Eingangsdaten zum Bestimmen von wenigstens einem ersten Codierungsparameter, der verwendet wird zum Codieren der Eingangsdaten in wenigstens eines der Felder variabler Größe in dem Rahmen, wobei der Wert des wenigstens einen ersten Codierungsparameters die Datenraumgröße beeinflusst, die für das wenigstens eine Feld variabler Größe benötigt wird;

Speichern des wenigstens einen ersten Codierungsparameters, der in dem Vorverarbeitungsschritt bestimmt wird;

Zuordnen von Datenraum in dem Rahmen für wenigstens ein anderes der Felder variabler Größe, basierend auf dem wenigstens einen ersten Codierungsparameter;

Bestimmen von wenigstens einem zweiten Codierungsparameter zur Codierung von Daten in das wenigstens eine andere Feld variabler Größe, basierend auf dem zugewiesenen bzw. zugeordneten Raum; und

Codieren der Eingangsdaten in die Felder variabler Größe des Rahmens unter Verwendung der ersten und zweiten Codierungsparameter.

Die vorliegende Erfindung sieht auch ein Verfahren zur Transformationscodierung von Audiodaten vor, die eine Vielzahl von Kanälen zur Übertragung oder Speicherung mit bzw. in einer festen Rahmenlänge eines codierten Datenbitstroms besitzen, wobei der Rahmen Felder variabler Länge für codierte Exponenten, codierte Mantissen und Kopplungsdaten umfasst, wobei das Verfahren die folgenden Schritte aufweist:

Erhalten bzw. Erlangen von Audioeingangsdaten für einen Rahmen;

Bestimmen eines Transformationslängeparameters für die Audiodaten;

Bestimmen von Kopplungsparametern für die Audiodaten;

Bestimmen einer Exponent-Strategie für die Audiodaten;

Berechnen von in dem Rahmen benötigten Raum für die Exponent- und Kopplungsdatenfelder, basierend auf dem bestimmten Transformationslängeparameter, den bestimmten Kopplungsparametern und der bestimmten Exponent-Strategie;

Berechnen von in dem Rahmen verfügbarem Raum für das codierte Mantisse-Feld gemäß dem berechneten benötigten Raum in dem Rahmen für die Exponent- und Kopplungsdatenfelder;

Bestimmen eines Mantisse-Codierungsparameters basierend auf dem berechneten verfügbaren Raum; und

Codieren der Audiodaten in Exponent-Daten, Mantisse-Daten und Kopplungsdaten unter Verwendung des Transformationslängeparameters, der Kopplungsparameter, der Exponent-Strategie und des Mantisse-Codierungsparameters, und Packen der codierten Audiodaten in die entsprechenden Felder in dem Rahmen.

Die vorliegende Erfindung sieht ferner einen Transformationsaudiocodierer zum Codieren von Audiodaten vor, die eine Vielzahl von Kanälen für die Übertragung oder Speicherung in einem Rahmen fester Länge eines codierten Datenbitstroms besitzen, wobei der Rahmen Felder variabler Länge für codierte Exponenten, codierte Mantissen und Kopplungsdaten umfasst, wobei der Codierer Folgendes aufweist:

einen Eingangspuffer bzw. Eingangsspeicher (input buffer) zum Speichern von Audioeingangsdaten für einen Rahmen;

Mittel zum Bestimmen eines Transformationslängeparameters, Kopplungsparameter und einer Exponent-Strategie für die Audiodaten;

Mittel zum Berechnen von benötigtem Raum in dem Rahmen für die Exponent- und Kopplungsdatenfelder, basierend auf dem bestimmten Transformationslängeparameter, den bestimmten Kopplungsparametern und der bestimmten Exponent-Strategie;

Mittel zum Berechnen von in dem Rahmen verfügbaren Raum für das codierte Mantissefeld gemäß dem berechneten benötigten Raum in dem Rahmen für die Exponent- und Kopplungsdatenfelder;

Mittel zum Bestimmen eines Mantisse-Codierungsparameters basierend auf dem berechneten verfügbaren Raum; und

Codierungsmittel zum Codieren der Audiodaten in Exponent-Daten, Mantisse-Daten und Kopplungsdaten unter Verwendung des Transformationslängeparameters, der Kopplungsparameter, der Exponent-Strategie und des Mantisse-Codierungsparameters, und Packen der codierten Audiodaten in die entsprechenden Felder in dem Rahmen.

Vorzugsweise umfasst der Transformationsaudiocodierer ein Speichermittel zum Speichern des Transformationslängeparameters, der Kopplungsparameter, der Exponent-Strategie und der Mantisse-Codierungsparameter zur Verwendung durch die Codiermittel bei der Codierung der Audiodaten.

Ausführungsbeispiele der Erfindung behandeln die oben erörterten Probleme durch Schätzen der Bitverwendung für unterschiedliche Felder am Anfang der Rahmenverarbeitung basierend auf einiger Basisanalyse des Eingangssignals. Ist die festgelegte Rahmengröße vorgegeben, werden die Codierungsstrategien für jedes Feld so gewählt, dass die Gesamtmenge der benötigten Bits innerhalb der Größe des Rahmens liegt. Die Iteration für die Bitzuweisung wird am Anfang selbst durchgeführt, so dass in einer späteren Stufe kein rechenaufwändiges Backtracking nötig ist.

Gemäß dem hierin unten detailliert beschriebenen Ansatzes ist es in der initialen bzw. Eingangsstufe des Verarbeitens eines Rahmens vorteilhaft nur die nötigen Berechnungen durchzuführen die als Grundlage verwendet werden für die Entscheidungen für die unterschiedlichen Strategien die verwendet werden zum Codieren der verschiedenen Felder während des ganzen Rahmens. Jede solche Entscheidung wird in einer Tabelle aufgezeichnet, die während der späteren Stufe verwendet wird.

Die Verarbeitung des Rahmens kann in einer methodischen Art und Weise durchgeführt werden, so dass die Iteration für die Bitzuordnung minimale Rechnung benötigt. In der initialen Verarbeitungsstufe eines Rahmens können, basierend auf einiger grundlegender Analyse des Signals, alle Codierungsstrategien für den gesamten Rahmen, wie beispielsweise die Exponentstrategie und Kopplungskoordinationsstrategie bestimmt werden. Als zweites können die Bitanforderungen für jedes Feld des Rahmens, mit Ausnahme der für die Mantissen, bestimmt werden. Aus der Kenntnis über die Bitverwendung für alle Felder werden die für Mantissen verfügbaren Bits berechnet.

Unter Verwendung eines MBCA (Modified Binary Convergence Algorithm) wird der Wert für die Bitzuordnungsparameter csnroffset und fsnroffset, die zu einer maximalen Verwendung verfügbarer Bits führen, bestimmt. Ein FBAA (Fast Bit Allocation Algorithm) versucht nur die Gesamtmenge von Bits zu schätzen, die für Mantissen mit einem bestimmten Wert von csnroffset und fsnroffset nötig sind, unter Vermeidung aller Operationen die nicht für den Schätzprozess nötig sind.

Sobald die Werte für csnroffset und fsnroffset bestimmt sind, kann die Rahmenverarbeitung auf Blockebene durchgeführt werden und zwar in einem Wasserfallverfahren. Da die Schätzungen immer konservativ sind, ist sichergestellt, dass am Ende der Rahmenverarbeitung die Gesamtzahl von Bits die nötig sind, die spezifizierte Rahmengröße nicht übersteigen soll. Das vermeidet aufwändiges Backtracking das bei anderen Ansätzen unvermeidbar ist.

Kurze Beschreibung der Zeichnungen

Die Erfindung wird hier im Folgenden detaillierter beschrieben, und zwar nur beispielhaft durch die Beschreibung von ihren Ausführungsbeispielen und mit Bezug auf die begleitenden Zeichnungen, wobei:

1 ist eine schematische Darstellung der Datenstruktur eines codierten AC-3-Datenstroms die die Zusammenstellung und Anordnung von Datenrahmen und Blöcken zeigt;

2 ist ein schematisches Blockdiagramm eines digitalen Audiocodierers gemäß einem Ausführungsbeispiel der vorliegenden Erfindung; und

3 ist ein Flussdiagramm eines Datenverarbeitungssystems oder Audiodatencodierung gemäß einem Ausführungsbeispiel der Erfindung.

Detaillierte Beschreibung der bevorzugten Ausführungsbeispiele

Die Eingabe zu dem AC-3 Audiocodierer weist einen Strom digitalisierter Tastungen bzw. Abtastungen des Audiosignals bzw. Tonsignals im Zeitbereich auf. Falls der Strom mehrkanalig ist, erscheinen die Abtastungen jedes Kanals im verschachtelten (interleaved) Format. Die Ausgabe des Audiocodierers ist eine Folge bzw. Sequenz von Synchronisationsrahmen des seriell codierten Audiobitstroms. Für fortgeschrittene bzw. hochentwickelte Audiocodierer, wie beispielsweise dem AC-3, kann das Komprimierungsverhältnis bzw. die Komprimierungsrate über zehn mal sein.

1 zeigt das allgemeine Format eines AC-3 Rahmens. Ein Rahmen besteht aus den folgenden eindeutigen Datenfeldern:

  • – ein Synchronisationskopf (Synchronisationsinformation, Rahmengrößencode)
  • – die Bitstrominformation (den ganzen Rahmen betreffende Information)
  • – die sechs Blöcke mit gepackten Audiodaten
  • – zwei CRC Fehlerkontrollen (error checks).

Der Großteil der Rahmengröße wird von den sechs Blöcken mit Audiodaten verbraucht. Jeder Block ist eine decodierbare Einheit, jedoch ist nicht alle Information zum Decodieren eines bestimmten Blocks notwendigerweise in dem Block enthalten. Falls zum Decodieren von Blöcken nötige Information über Blöcke hinweg gemeinsam genutzt bzw. aufgeteilt (shared) werden kann, dann wird diese Information nur als Teil des ersten Blocks, in dem sie verwendet wird, übertragen und der Decoder verwendet die gleiche Information wieder zum Decodieren späterer Blöcke.

Alle Information die bedingt (conditionally) in einem Block enthalten sein kann ist immer in dem ersten Block enthalten. Somit wird ein Rahmen gebildet um eine unabhängige Einheit zu sein: es gibt keine gemeinsame Datennutzung bzw. Datenaufteilung zwischen Rahmen (inter-frame). Das ermöglicht das Spleißen (splicing) von codierten Daten auf der Rahmenebene und schnelle Erholung vom Übertragungsfehler. Da nicht alle nötige Information in jedem Block enthalten ist, können die individuellen Blöcke in einem Rahmen in der Größe variieren, und zwar mit der Randbedingung, dass die Summe aller Blöcke in die Rahmengröße passen muss.

Eine Form eines AC-3 Codierers ist in Blockdiagrammform in 2 dargestellt. Die Hauptverarbeitungsblöcke des gezeigten AC-3 Codierers werden unten kurz beschrieben und zwar mit spezieller Betonung von Sachverhalten, die für die vorliegende Erfindung relevant sind.

Eingangs- bzw. Eingabeformat

AC-3 ist ein blockstrukturierter Codierer, so dass einer oder mehrere Blöcke eines Zeitbereichsignals, typischerweise 512 Abtastungen pro Block und Kanal, in einem Eingangsspeicher bzw. Eingangspuffer (input buffer) gesammelt werden, und zwar bevor mit zusätzlicher Verarbeitung fortgefahren wird.

Transientendetektion

Blöcke des Eingangssignals für jeden Kanal werden mit einem Hochpassfilter 12 analysiert um das Vorhandensein von Transienten 14 zu detektieren. Diese Information wird verwendet, um die Blockgröße der TDAC-(time domain aliasing cancellation, Zeitbereichsaliasinglöschung)-Filterbank 16 einzustellen und zwar um Quantisierungsrauschen zu begrenzen, das mit dem Transienten bzw. Übergang innerhalb eines kleinen Zeitbereichs, um den Transienten herum assoziiert ist. In Gegenwart des Transienten wird das Bit 'blksw' für den Kanal in dem codierten Bitstrom in dem speziellen Audioblock gesetzt.

TDAC-Filter

Das Zeitbereichseingabesignal jedes Kanals wird individuell gefenstert (windowed) und gefiltert, und zwar mit einer TDAC-basierten Analysefilterbank 16 um Frequenzbereichskoeffizienten zu erzeugen. Falls das blksw-Bit gesetzt ist, was bedeutet, dass ein Transient für den Block detektiert wurde, dann werden zwei kurze Transformationen der Länge 256 genommen, was die Zeitauflösung des Signals erhöht. Falls nicht gesetzt, wird eine einzelne lange Transformation der Länge 512 verwendet, dadurch eine hohe spektrale Auflösung vorsehend.

Die Anzahl der zur Codierung jedes Koeffizienten zu verwendenden Bits muss als nächstes erhalten werden. Niedrigere Bitanzahlen führen zu höheren Komprimierungsraten weil weniger Raum benötigt wird um die Koeffizienten zu übertragen. Das kann jedoch einen hohen Quantisierungsfehler verursachen der zu hörbarer Verzerrung führt. Eine gute Verteilung verfügbarer Bits auf jeden Koeffizienten bildet den Kern der fortgeschrittenen Audiocodierer.

Kopplungsprozessor (18)

Weitere Komprimierung kann im AC-3 Codierer erreicht werden durch die Verwendung einer Technik, die als Kopplung bekannt ist. Kopplung zieht ein Vorteil aus der Art wie das menschliche Ohr Art, Richtung bzw. Bündelung (directionality) für Signale sehr hoher Frequenz bestimmt. Bei hohen Audiofrequenzen (ungefähr über 4 KHz) ist das Ohr physisch unfähig, individuelle Zyklen einer Audiowellenform zu detektieren und antwortet stattdessen auf die Einhüllende der Wellenform. Folglich kombiniert der Codierer die hochfrequenten Koeffizienten der individuellen Kanäle um einen gemeinsamen Kopplungskanal zu bilden. Die zum Bilden des Kopplungskanals kombinierten Originalkanäle werden die gekoppelten Kanäle genannt.

Die grundlegendsten bzw. einfachsten Codierer können den Kopplungskanal durch einfaches Übernehmen des Mittelwerts von jedem der individuellen Kanalkoeffizienten bilden. Ein fortgeschrittener Codierer könnte die Vorzeichen der individuellen Kanäle ändern, bevor diese zu der Summe addiert werden, um Phasenlöschung bzw. Phasenauslöschung zu vermeiden.

Der erzeugte Kopplungskanal wird als nächstes in eine Anzahl von Bändern abgeteilt. Für jedes derartige Band und jeden Kopplungskanal wird eine Kopplungskoordinate (coupling co-ordinate) an den Decoder übertragen. Um die hochfrequenten Koeffizienten in einem Band zu erhalten und zwar für einen speziellen gekoppelten Kanal von dem Kopplungskanal multipliziert der Decoder die Kopplungskanalkoeffizienten in dem Frequenzband durch die Kopplungskoordinate des Kanals für das spezielle Frequenzband. Für einen Zweikanalcodierer wird auch eine Phasenkorrekturinformation für jedes Frequenzband des Kopplungskanals gesendet.

Herausragende Verfahren der Kopplungskanalbildung werden in der Spezifikation der internationalen Patentanmeldungen PCT/SG97/00076 erörtert die den Titel trägt „Method and Apparatus for Estimation of Coupling Parameters in a Transform Coder for High Quality Audio" und erörtert in PCT/SG97/00075 mit dem Titel „Method and Apparatus for Phase Estimation in a Transform Coder for High Quality Audio".

Rematrixing (20)

Das Rematrixing bzw. Matrixneuanordnung, ein zusätzlicher Prozess, wird in dem Spezialfall aufgerufen, in dem der Codierer nur zwei Kanäle verarbeitet. Die Summe und Differenz der zwei Signale von jedem Kanal werden auf einer bandweisen Grundlange berechnet. Falls in einem gegebenen Barid die Pegelungleichheit bzw. die Pegeldisparität zwischen dem abgeleiteten (matrixed) Signalpaar größer als der entsprechende Pegel des Originalsignals ist, wird das Matrixpaar stattdessen ausgewählt. Mehr Bits werden in dem Bitstrom zum Anzeigen dieser Bedingung vorgesehen, darauf ansprechend führt der Decoder eine komplementäre Unmatrixing-Operation zum Wiederherstellen der Originalsignale durch. Die Rematrixbits werden weggelassen, falls die codierten Kanäle mehr als zwei sind.

Der Vorteil dieser Technik ist, dass sie gerichtete Unmarkierung vermeidet, falls die decodierten Signale im Folgenden durch einen Matrixsurroundprozessor verarbeitet werden, wie beispielsweise einem Dolby-(TM)-Prologic-Decodierer.

Konvertierung in Fließkomma (22)

Die transformierten Werte, die Rematrix und Kopplungsverarbeitung durchgemacht haben können, werden in eine spezielle Fließkommadarstellung konvertiert, was zu separaten Anordnungen bzw. Feldern binärer Exponenten und Mantissen führt. Diese Fließkommaanordnung wird überall in dem Rest des Codierungsprozesses beibehalten bis kurz vor der inversen Transformation des Decoders und sieht einen 144-dB-Dynamikbereich vor, ebenso wie sie erlaubt, den AC-3-Codierer entweder auf Fest- oder Fließkomma-Hardware zu implementieren.

Codierte Audioinformation besteht im Wesentlichen aus separater Darstellung der Exponent- und Mantissenfelder. Der restliche Codierungsprozess konzentriert sich individuell auf das Reduzieren der Exponent- und Mantissendatenrate.

Die Exponenten werden codiert unter Verwendung einer der Exponentcodierungsstrategien. Jede Mantisse wird auf eine festgelegte Anzahl binärer Stellen bzw. Plätze abgeschnitten. Die Anzahl der Bits die zum Codieren jeder Mantisse zu verwenden sind wird von einem Bitzuordnungsalgorithmus (bit allocation algorithm) erlangt, der auf den Maskierungseigenschaften des menschlichen Hörsystems basiert.

Exponentencodierungsstrategie (24)

Exponentenwerte bei AC-3 sind im Bereich von 0 bis –24 zugelassen. Der Exponent fungiert als ein Skalierungsfaktor für jede Mantisse und zwar 2–exp entsprechend. Exponenten für Koeffizienten die mehr als 24 führende Nullen haben werden auf –24 festgelegt und die entsprechenden Mantissen dürfen führende Nullen haben.

Der AC-3-codierte Bitstrom enthält Exponenten für unabhängige, gekoppelte und die Kopplungskanäle. Exponenteninformation kann über Blöcke innerhalb eines Rahmens verteilt bzw. gemeinsam benutzt werden, so dass Blöcke 1-5 Exponenten von vorhergehenden Blöcken wieder verwenden können.

AC-3-Exponentenübertragung setzt Differentialcodierungstechniken ein, in denen die Exponenten für einen Kanal über Frequenzen differentiell codiert werden. Der erste Exponent wird immer als ein Absolutwert gesendet. Der Wert zeigt die Anzahl der führenden Nullen des ersten Transformationskoeffizienten an. Nachfolgende Exponenten werden als differentielle Werte gesendet, die zu dem vorherigen Exponentwert addiert werden müssen, um den nächsten tatsächlichen Exponentwert zu bilden.

Die differentiell codierten Exponenten werden als nächstes in Gruppen kombiniert bzw. zusammengefasst. Die Gruppierung wird durch eines der drei Verfahren durchgeführt: D15, D25 und D45. Zusammen mit „reuse" bzw. Wiederverwendung werden diese als Exponent-Strategien bezeichnet. Die Anzahl der Exponenten in jeder Gruppe hängt nur von der Exponent-Strategie ab. In dem D15-Modus wird jede Gruppe aus drei Exponenten gebildet. In D45 werden vier Exponenten durch einen differentiellen Wert dargestellt. Als nächstes werden drei aufeinanderfolgende derartige repräsentative differentielle Werte zusammengruppiert um eine Gruppe zu bilden. Jede Gruppe umfasst immer sieben Bits. Im Fall dass die Strategie „reuse" für einen Kanal in einem Block ist, werden dann keine Exponenten für den Kanal gesendet und der Decoder verwendet die als letzte für diesen Kanal gesendeten Exponenten wieder.

Vorverarbeitung von Exponenten vor dem Codieren kann zu besserer Audioqualität führen. Eine derartige Form der Verarbeitung ist in der Beschreibung der PCT/SG98/00002 beschrieben mit dem Titel „Method and Apparatus for Spectral Exponent Reshaping in a Transform Coder for High Quality Audio".

Die Wahl der geeigneten Strategie zur Exponentcodierung bildet einen wichtigen Aspekt von AC-3. D15 liefert die höchste Genauigkeit, ist aber niedrig bzw. schlecht bezüglich der Komprimierung. Andererseits kann die Übertragung nur eines Exponentensatzes für einen Kanal in dem Rahmen (in dem ersten Audioblock des Rahmens) und das Versuchen die gleichen Exponenten für die nächsten fünf Audioblocks wiederzuverwenden bzw. „reuse" zu hoher Exponentkomprimierung aber auch manchmal zu sehr hörbarer Verzerrung führen.

Verschiedene Verfahren existieren zur Bestimmung einer Exponentstrategie. Ein derartiges Verfahren ist in der Spezifikation der PCT/SG98/00009 beschrieben, die den Titel trägt „A Neural Network Based Method for Exponent Coding in a Transform Coder for High Quality Audio".

Bitzuordnung für Mantissen (26)

Der Bitzuordnungsalgorithmus analysiert die spektrale Einhüllende des gerade codierten Audiosignals bezüglich Maskierungseffekten und zwar zum Bestimmen der Anzahl der Bits zum Zuteilen zu jeder Transformationskoeffizientenmantisse. In dem Codierer wird empfohlen, die Bitzuordnung global bzw. allgemein auf dem Ensemble von Kanälen als eine Einheit durchzuführen und zwar aus einem gemeinsamen Bitvorrat (Bitpool).

Die Bitzuordnungsroutine enthält ein parametrisches Modell des menschlichen Gehörs zum Schätzen einer, als eine Funktion der Frequenz ausgedrückten, Rauschpegelschwelle, die hörbare von unhörbaren Spektralkomponenten separiert bzw. trennt. Verschiedene Parameter des Gehörmodells können durch den Codierer eingestellt werden und zwar abhängig von den Signalcharakteristika bzw. Signaleigenschaften. Beispielsweise ist eine Prototypmaskierungskurve definiert und zwar in Ausdrücken von zweistückweisem kontinuierlichen Liniensegment jeweils mit seiner eigenen Neigung bzw. Steigung und Y-Abschnitt.

Optimierung

Aus der vorhergehenden Beschreibung ist es klar dass Audioblöcke und die Felder innerhalb der Blöcke variable Längen besitzen. Bestimmte Felder wie beispielsweise Exponenten können in einem speziellen Audioblock nicht vorhanden sein, uns selbst wenn sie vorhanden sind, können sie verschiedene Mengen von Raum zu verschiedenen Zeiten einnehmen und zwar abhängig von der aktuell verwendeten Strategie und Signalcharakteristika.

Die Mantissen erscheinen in jedem Audioblock. Die Bitzuordnung für die Mantissen muss jedoch global durchgeführt werden.

Eine Lösung könnte sein, alle Information, die Mantissen ausgenommen, aller Blöcke in den AC-3-Rahmen zu packen. Der verbleibende Raum in dem Rahmen wird dann verwendet um Bits an alle Mantissen global zuzuweisen. Die Mantissen für jeden Block, quantisiert auf die zugehörigen Bits, unter Verwendung der Bitzuordnungsausgabe werden dann an den richtigen Platz in dem Rahmen getan. Diese Art des Ansatzes ist aufwändig und besitzt große Speicher- und Berechnungsanforderungen und ist somit nicht geeignet für einen Echtzeitcodierer der für eine Consumer-Anwendung gedacht ist.

Der Schlüssel zu dem Problem ist die Schätzung der Bitverwendung für unterschiedliche Felder am Beginn bzw. Anfang der Rahmenverarbeitung und zwar basierend auf etwas grundlegender Analyse des Eingangssignals. In Anbetracht der festen Rahmengröße werden die Codierungsstrategien so gewählt, dass die benötigte Gesamtzahl der Bits innerhalb der Randbedingung ist. Die Iteration für die Bitzuordnung wird am Anfang selbst durchgeführt, so dass bei späteren Stufen kein rechenaufwändiges Backtracking nötig ist.

Der empfohlene Ansatz ist -bei der initialen Stufe der Verarbeitung eines Rahmens, nur die nötigen Berechnungen durchzuführen, die verwendet werden sollen um die Entscheidungen für die verschiedenen Strategien zur Codierung verschiedener Felder überall im Rahmen darauf zu basieren. Jede derartige Entscheidung wird in einer Tabelle aufgezeichnet, die während der späteren Stufe verwendet wird.

Beispielsweise ist die Bitverwendung von Exponenten abhängig von der Exponentcodierungsstrategie (24) und die Parameter – chbwcod (channel band width code, Kanalbandbreitencode), cplbegf (coupling begin frequency, Kopplungsanfangsfrequenz) und cplendf (coupling end frequency, Kopplungsendfrequenz). Sobald die Exponentcodierungsstrategie für alle Kanäle in allen Blöcken bekannt ist, kann der von den Exponenten in dem Rahmen verwendete Raum leicht berechnet werden. Wissend ob Kopplungskoordinaten in einem Block zu senden sind oder nicht, ist in gleicher Weise die Bitverwendung durch Kopplungsparameter sofort bekannt.

Unter Verwendung einfacher Techniken wie hier unten beschrieben ist es in der Tat möglich, bei der initialen Stufe der Rahmenverarbeitung die Bitanforderungen für jedes der Felder zu bestimmen. Sobald die Bits, die von anderen Feldern verwendet würden, geschätzt sind, sind die Bits bekannt, die für Mantissen verfügbar wären.

Die Information der verfügbaren Bits für Mantissen wird verwendet zum Durchführen von „Fast Bit Allocation" (schnelle Bitzuordnung). Dieser Algorithmus verwendet als Eingabe die grobe bzw. unverarbeitete Maskierungskurve und die verfügbaren Bits für Mantissen und bestimmt die Bitzuordnungsparameter, speziell die Werte für csnroffset und fsnroffset (Bezug nehmend auf AC-3-Standarddokument), die zur optimalen Ausnutzung der verfügbaren Bits führen. Der Ausdruck „fast" (schnell) wird verwendet, da keine Mantissenquantisierung in dieser Stufe durchgeführt wird. Die Iteration versucht nur, die Bitverwendung zu schätzen und zwar ohne tatsächliche Codierung der Mantissen.

Sobald der Wert von csnroffset und fsnroffset bestimmt ist, beginnt die normale Rahmenverarbeitung. Bei jedem Schritt der Verarbeitung werden die Entscheidungstabellen gelesen, um die Strategie für die Codierung jedes Feldes zu entscheiden. Beispielsweise werden Kopplungskoordinaten für einen Kanal ch im Audioblock blk no codiert unter Verwendung der Strategie „cplcoe [blk_no] [ch]". Die Mantissen werden unter Verwendung der festgelegten csnroffsef und fnsroffset codiert. Die quantisierten Mantissen können direkt in den AC-3-Rahmen gepackt werden, da es garantiert werden kann, dass die Gesamtgröße der Bits die vorgegebene Rahmengröße nicht übersteigen wird.

Die Speicheranforderungen werden durch die Verwendung dieser Technik minimiert, da die Originalmantissen für einen Block nicht länger benötigt werden, sobald dieser quantisiert worden ist. In dem anderen Ansatz, wobei Mantissen quantisiert werden und dann der verwendete Raum mit dem verfügbaren Raum überprüft bzw. abgeglichen wird, ist es möglich, dass die Mantissen später auf einen unterschiedlichen Quantisierungspegel requantisiert werden müssen und somit kann es nötig sein, die Originalmantissen für alle Blöcke bis zum Ende zu speichern, was zu mehr bzw. höheren Puffer- bzw. Zwischenspeicheranforderungen führt. In dem vorliegenden Ansatz wird der durch eine Mantisse besetzte Raum nach der Quantisierung freigegeben und zwar erlaubend, dass der Speicher für andere Verarbeitung wieder verwendet wird. Die endgültige Bitzuordnung wird auf der Blockebene durchgeführt, somit müssen Bitzuordnungszeiger (bit allocation pointers) für alle Audioblöcke nicht gleichzeitig in dem Puffer zu einer Zeit gespeichert werden.

Die Vorteile des empfohlenen Verfahrens sind vielfältig. Erstens, nachdem die initiale Verarbeitung durchgeführt ist und die Strategieentscheidungen vorgenommen sind, ist die nachfolgende Verarbeitung des Rahmens sehr simpel. Da die Schätzung der Bits für Mantissen in der initialen Phase durchgeführt wird, ist Backtracking nicht länger nötig.

Angenommen die Mantissen werden mit bestimmten Werten für die Bitzuordnungsparameter quantisiert und gepackt. Dann wird beobachtet, dass die benötigten Bits den verfügbaren Raum übersteigen. Dann wird Quantisierung und Paketierung mit einem unterschiedlichen Satz von Werten für Bitzuordnungszeiger durchgeführt. Dieser Prozess geht weiter, bis eine optimale Lösung gefunden ist. So ein Verfahren ist nicht geeignet für eine Echtzeitanwendung. Oder angenommen, dass Exponenten eines Rahmens mit einer bestimmten Strategie codiert werden und am Ende der Codierung der Exponenten des sechsten Blocks wird entdeckt, dass der von den Exponenten benötigte Raum zu wenig oder zu viel für die vorgegebene Rahmengröße ist. Dann wird ein anderer Satz von Exponent-Strategien ausgewählt und die Exponenten werden wieder codiert unter Verwendung der neuen Strategie. Das wird wieder zu aufwändig für den Echtzeitdecoder sein.

Der AC-3-Rahmen muss bestimmte Randbedingungen erfüllen. Beispielsweise gibt Seite 37, ATSC-Standard an dass:

  • 1. Die Größe des Blocks 0 und 1 zusammen wird nie 5/8 des Rahmens übersteigen.
  • 2. Die Summe der Mantissedaten und Zusatzdaten des Blocks 5 wird nie die endgülfigen 3/8 des Rahmens übersteigen.

Jetzt, angenommen nach der Verarbeitung von Block 0 und 1, wird festgestellt, dass die erste Randbedingung verletzt wird. Dann müssen bestimmte Strategien (wie beispielsweise die Expontentcodierungsstrategie oder Bitzuordnungsparameter) modifiziert werden, um innerhalb der Randbedingung zu bleiben. Das bedeutet, dass Block 0 und 1 möglicherweise wiederverarbeitet werden müssen und im schlimmsten Fall mehrmals wieder bevor die Bedingung erfüllt wird. Mit der Hilfe initialer Schätzungen, und zwar bevor die tatsächliche Verarbeitung durchgeführt wird, können die Strategien geeignet modifiziert werden, um solche Randbedingungen zu erfüllen. Das stellt sicher, dass der Codierer nicht bei „tötlichen Bitströmen (killer-bifstreams)" versagt.

Rahmenverarbeitung

Ein Verfahren zur Verarbeitung eines Rahmens gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ist hier im Folgenden in Schritten beschrieben und zwar mit Bezug zum in 3 gezeigten Flussdiagramm.

Transientendetektion

Die gepufferte Eingabe wird untersucht um das Vorhandensein von Transienten zu detektieren. Die Variable blksw wird als ein zweidimensionales Feld definiert, das Information über Transienten speichert. Falls 'blksw [blk_no] [ch] = 1', dann bedeutet das, dass Kanal 'ch' in dem Audioblock 'blk_no' befunden wurde einen Transient zu besitzen. Falls 'blksw [blk_no] [ch] = 0' wurde kein Transient detektiert.

Kopplung und Rematrixing

Dem Vorschlag in dem AC-3-Standard folgend, dass in Gegenwart eines Transienten ein Kanal nicht gekoppelt werden sollte, wird die blksw-Information verwendet, um zu bestimmen, ob innerhalb eines Blocks ein Kanal in den Kopplungskanal zu koppeln ist.

Selbst falls ein Transient nicht detektiert wird, sollte ein Kanal nicht gekoppelt werden, falls seine Kanalcharakteristika sehr unterschiedlich von denen anderer gekoppelter Kanäle sind, andernfalls könnte die Verzerrung signifikant ansteigen. D.h. falls die Korrelationskoeffizienten der bereits gekoppelten Kanäle und der als nächstes zu koppelnde Kanal weniger als eine vorgegebene Schwelle ist, sollte der Kanal unabhängig codiert werden und sollte nicht als ein gekoppelter Kanal behandelt werden.

Der Parameter cplinu wird verwendet um anzugeben, ob ein Kanal einen gekoppelten Kanal bildet. Somit bedeutet, falls 'chincpl [blk_no] [ch] = 1' ist, dass Kanal '[ch]' in dem Audioblock 'blk_no' gekoppelt ist. Falls 'chincpl [blk_no] [ch] = 0', ist der Kanal als ein unabhängiger Kanal zu codieren. (Man beachte: Der Pseudocode ist im C++ Format wobei '//' Kommentare kennzeichnen).

Falls die Anzahl gekoppelter Kanäle in einem Block mehr als eins ist, dann wird Kopplung bei diesem Audioblock berücksichtigt und somit 'cplinu [blk_no] = 1'.

Die chincpl und cplinu werden verwendet zum Bestimmen wie oft die Kopplungskoordinaten gesendet werden müssen. Zwei Ansätze können verfolgt werden um zu bestimmen, ob Kopplungskoordinaten für einen Kanal in einem Audioblock gesendet werden sollten. Der einfache Ansatz folgt dem Vorschlag im AC-3 Standard für den Basisencoder, dass: Kopplungskoordinaten müssen in alternierenden bzw. periodischen (alternate) Blöcken gesendet werden.

Für bessere Qualität kann ein deterministischerer Ansatz angewendet werden. Angenommen Kopplungskoordinate &PSgr;l wird für einen Block gesendet. Für den nächsten Block werden die Koordinaten nicht gesendet, falls die entsprechende Koordinate &PSgr;l+1 für den Block sehr ähnlich der für den vorhergehenden Block berechneten Koordinate &PSgr;l ist. Der Ähnlichkeitstest kann auf einer Schwellenwerttestung basiert sein. Angenommen dass || &PSgr;l+1 – &PSgr;l || < T, wobei T eine vordefinierte Konstante ist, dann werden keine Koordinaten gesendet, andernfalls wird die berechnete Koordinate &PSgr;l+1 gesendet.

Es sollte bemerkt werden, dass in dem Fall, dass ein Kanal im Block Bl gekoppelt ist aber im vorhergehenden Block Bl–1 nicht gekoppelt war, dann müssen gemäß den Spezifikationen des Standards die Koordinaten im Block Bl gesendet werden.

Falls für einen gekoppelten Kanal 'ch' in dem Audioblock 'block_no' Koordinaten zu senden sind, ist der Parameter 'cpcoe [blk_no] [ch] = 1'.

Unter Verwendung der Information cplinu [blk_no] [ch] und chincpl [blk_no] [ch] und cplcoe [blk_no] [ch] kann die für die Kopplungsinformation in jedem Block verwendete Anzahl von Bits geschätzt werden.

Die Variable used_bits enthält eine Zählung der in dem Rahmen verwendeten Bits. In ähnlicher Weise ist available_bits die Anzahl der freien Bits, die in dem Rahmen verfügbar sind. Die Variable ncplbnd repräsentiert die Anzahl der Kopplungsbänder.

Das Rematrixing wird für jeden Block als nächstes durchgeführt. Es ist nötig diesen Schritt durchzuführen, bevor die Exponenten extrahiert werden können. Für Rematrix- und Kopplungsphasenmarker (flags) kann eine simple bzw. grobe Zahlenangabe (basierend auf Analyse des ungünstigsten Falls) verwendet werden, weil ihre Bitanforderung sehr niedrig ist. Eine sehr genaue Schätzung ihres Bitverbrauchs ist jedoch noch möglich.

Die Spezifikation der vorgenannten internationalen Patentanmeldung PCT/SG97/00075 mit dem Titel „Method and Apparatus for Phase Estimation in a Transform Coder for High Quality Audio" beschreibt Mittel zum Bestimmen der Phasenmarker.

Verfahren zur Kopplungskanalbildung werden in der Spezifikation der vorgenannten internationalen Patentanmeldung PCT/SG97/00076 „Method and Apparatus for Estimation of Coupling Parameters in a Transform Coder for High Quality Audio" erörtert. Die Basisoperation des darin beschriebenen Systems ist als Referenz unten vorgestellt.

„Angenommen dass die Frequenzbereichskoeffizienten identifiziert werden als:

ai, für den ersten gekoppelten Kanal,

bi, für den zweiten gekoppelten Kanal,

ci, für den Kopplungskanal,

Für jedes Unterband wird der Wert &Sgr;iai·bi berechnet, Index i erstreckt sich über den Frequenzbereich des Unterbandes. Falls &Sgr;iai·bi > 0, wird die Kopplung für das Unterband durchgeführt als ci – (ai + bi)/2. In ähnlicher Weise, falls &Sgr;iai·bi ≤ 0, dann ist die Kopplungsstrategie für das Unterband ci = (ai – bi)/2.

Benachbarte Unterbänder, die identische Kopplungsstrategien verwenden, können zusammengruppiert werden um ein oder mehrere Kopplungsbänder zu bilden. Unterbänder mit unterschiedlichen Kopplungsstrategien dürfen jedoch nicht zu einer Gruppe vereinigt werden. Falls die Gesamtkopplungsstrategie für ein Band ci = (ai + bi)/2 ist, d.h. für alle Unterbänder, die das Band aufweisen, ist der Phasenmarker für das Band auf +1 gesetzt, andernfalls ist er auf –1 gesetzt."

Exponent-Strategie

In AC-3 werden die Exponenten verwendet zum Ableiten einer nahen bzw. geschlossenen Schätzung der logarithmischen Leistungsspektrumdichte. Der Bitzuordnungsalgorithmus verwendet die logarithmische Leistungsspektrum dichte (log power spectrum density) zur Zuweisung von Bits zur Mantisse. Zum Berechnen der gesamten Bitanforderungen für Mantissen müssen deshalb die Exponenten berechnet werden, bevor der Bitzuordnungsalgorithmus startet. Dazu muss die Exponentstrategie zur Codierung von Exponenten bestimmt werden.

Mehrere Verfahren existieren zum Bestimmen einer Exponentstrategie. Ein solches Verfahren ist in der Patentspezifikation mit dem Titel „A Neural Network Based Method for Exponent Coding in a Transform Coder for High Quality Audio" beschrieben. Der darin beschriebene Algorithmus nimmt als Eingabe den Exponentsatz eines Kanals für jeden Audioblock und erzeugt die geeignete Strategie zur Codierung jedes Exponentsatzes. Die Basis des darin beschriebenen Systems kann wie folgt ausgedrückt werden:

„Wir definieren einen Satz von Exponentcodierungsstrategien {S0, S1, S2, ...}. Strategie So sei definiert als Wiederverwendung. D.h. falls Exponentsatz Ei = {ei,0 ei,1 ei,2, ..., ei,n–1} die Strategie S0 zur Codierung verwendet, dann wird im Wesentlichen kein Exponent übertragen. Stattdessen wird der Empfänger angewiesen, Exponenten von Ei–1 als jene Exponenten E1 zu verwenden. Als nächstes sei S1 die Exponentcodierungsstrategie, in der alle Exponenten differentiell codiert werden mit der Randbedingung, dass die Differenz zwischen irgend welchen zwei aufeinanderfolgenden Exponenten immer –1, +1 oder 0 ist. D.h. für die Exponentcodierungsstrategie S1 ist die maximal erlaubte Differenz, L, gleich +/–1. In ähnlicher Weise, für Strategie S2, sei die maximal erlaubte Differenz, L, gemäß +/–2, und so weiter für S3, S4,.....

Die Eingaben (E0, E1, E2, ..., Eb–1) werden dem neuronalen Netzwerksystem präsentiert. Die Ausgabe (o0, o1, o2, ..., ob–1) des Systems ist die Exponentstrategie entsprechend jedem Exponentensatz."

Für den Fall von AC-3 muss die oben erwähnte generische Codierungsstrategie leicht modifiziert werden {S0=Reuse, S1=D45, S2=D25, S3=D15}. Da das Verfahren im Wesentlichen auf dem Ähnlichkeitstest für Exponentsätze basiert, können jedoch die im Beispiel des Patents vorgesehenen neuronalen Gewichte in diesem Fall noch verwendet werden.

Mit der Kenntnis der Exponentstrategie kann die Exponentcodierung und -decodierung leicht durchgeführt werden. Die Strategie hilft auch beim Bestimmen der von Exponenten verwendeten Bits.

Bei AC-3 wird der erste Exponentwert immer als Absolutwert mit 4-Bit-Auflösung gesendet. Die nachfolgenden Exponenten werden als Differentialwerte gesendet.

Als erstes müssen die Start- und Endfrequenzbänder (bins) für jeden Kanal bestimmt werden. Für unabhängige Kanäle sind diese wie folgt definiert:

Für den Kopplungskanal gilt 'startf[blk_no] [ch] = 37 + 12·cplbegf' und 'endf[blk_no] [ch] = 37 + 12·(cplendf + 3)'. Für den Ife-Kanal sind die Start- und Endfrequenz als 0 bzw. 7 vordefiniert. Unter Verwendung dieser Information kann die Anzahl von Bits zur Codierung von Exponenten für jeden Kanal wie folgt vorberechnet werden:

Für unabhängige und gekoppelte Kanäle

Dabei gelten folgende Übersetzungen in Deutsche:

Exponent_Verwendung (exponent_usage), Abschneiden (truncate), für Exponentenstrategie (for exp. strategy)

Für den Kopplungskanal

Dabei gelten folgende Übersetzungen in Deutsche:

Exponent Verwendung (exponent_usage), Abschneiden (truncate), für Exponentenstrategie (for exp. strategy)

Der Ife verwendet immer 4 + 7·2 = 18 Bits für die Exponenten. Die Exponent Verwendung (exponent_usage) für jeden Kanal innerhalb jedes Blocks wird zur Variable Bit Verwendung (bit_usage) addiert, um die gesamte Bitverwendung zu bestimmen.

Exponentcodierung und -decodierung

Nachdem die Exponentcodierungsstrategie für all die Audioblöcke bestimmt ist, werden die Exponenten entsprechend codiert. Die codierten Exponenten sind die nächsten die decodiert werden, so dass die exakten Werte der Exponenten, die von den Decodern gesehen bzw. empfangen werden, durch den Codierer für den Bitzuordnungsalgorithmus verwendet werden.

Wenn jedoch das in der Spezifikation der vorgenannten internationalen Patentanmeldung PCT/SG98/0002 „Method and Apparatus for Spectral Exponent Reshaping in a Transform Coder for High Quality Audio" beschriebene Verfahren verwendet wird, werden die Exponenten vor der Codierung verarbeitet (re-shaped bzw. neugeformt) und zwar derart, dass am Ende der Verarbeitung sie exakt in der Form sind, in der sie nach der Codierung (am Codierer) und Decodierung (am Decodierer) sind, wie sie am Decodierer erscheinen. Das bedeutet, der Extraaufwand bei der Decodierung wird vermieden.

PSD-Intergration und Anregungskurve (excitation curve)

Die decodierten Exponenten werden in eine 13-Bit Vorzeichen behaftete logarithmische Leistungsspektraldichtefunktion abgebildet.

Die PSD-Werte mit fein aufgelösten bzw. mit feinem Korn (fine grain) werden integriert und zwar innerhalb jedes einer Vielzahl von 1/6tel Oktavband unter Verwendung einer logarithmischen Addition, um ein Band-PSD zu ergeben.

Von dem Band-PSD wird die Anregungsfunktion berechnet, und zwar durch Anlegen der Prototypmaskierungskurve an das integrierte PSD-Spektrum. Das Ergebnis der Berechnung wird dann in der Amplitude um einen vordefinierten Faktor nach unten versetzt (offset).

Grobe bzw. unbearbeitete Maskierungskurve (Raw Masking Curve)

Die grobe Maskierungs-(Rauschpegelschwelle)-Kurve wird aus der Anregungsfunktion berechnet, wie unten gezeigt. Die Hörschwelle hth[][] wird in dem ATSC-Standard angegeben. Die anderen Parameter fscod und dppbcod sind vordefinierte Konstanten.

Dabei gelten folgende Übersetzungen in Deutsche:

für (for), alle Bänder (all bins), falls (if), anregen (excite), maskiert (mask)

Schnelle Bitzuordnung

Unter Verwendung der drei Informationsstücke, und zwar der PSD, Grobmarkierungskurve für jeden Kanal und der Gesamtzahl verfügbarer Bits für alle Mantissen, wird die Iteration für die Bitzuordnung durchgeführt.

Es ist wichtig festzustellen, dass die in den vorherigen Schritten beschriebene Operation nicht für die Iterationsphase wiederholt werden muss. Die Grobmaskierungskurve wird für jede Iteration modifiziert und zwar durch die Werte csnroffset und fsnroffset gefolgt bei einiger einfacher Verarbeitung wie beispielsweise Nachschlagen in einer Tabelle (table lookup). Nach jeder Iteration sind die für alle Mantissen zu zuzuordnenden Bits berechnet. Falls die Bitverwendung größer als verfügbar ist, werden die Parameter csnroffset und fsnroffset verringert.

In ähnlicher Weise werden, falls die Bitverwendung weniger als verfügbar ist, die Parameter csnroffset und fsnroffset entsprechend erhöht. Der Bitzuordnungszeiger wird unter Verwendung der unten angegebenen Routine berechnet.

dabei gelten folgende Übersetzungen ins Deutsche:

ausführen (do), falls (if), für (for), Adresse (address), quantisiere_Tabelle (quantize_table) und solange (while).

Die Bitzuordnungszeiger oder baps (bit allocation pointers) werden verwendet zum Bestimmen wie viele Bits für all die Mantissen nötig sind. Man beachte, dass bestimmte Mantissen bei AC-3 (jene auf Pegel 3, 5 und 11 quantisierten) zusammen gruppiert werden, um weitere Komprimierung vorzusehen. Das wird teilweise berücksichtigt durch Modifizieren der quantisiere_Tabelle (quantize_table). Beispielsweise werden bei AC-3 drei Pegel-1-Mantissen zusammengruppiert und als ein 5-Bit-Wert gespeichert. Somit lautet für Pegel-3-Mantissen die quantisiere_Tabelle 5/3 = 1,67 Bits.

Für die Gruppierungsphase werden, falls die Anzahl der Mantissen mit Pegel 3 in einem Block nicht ein Vielfaches von 3 ist, die letzten ein oder zwei verbleibenden Mantissen codiert und zwar durch Berücksichtigen der dritten als eine Null. Um das in der Schätzung zu berücksichtigen, wird der Wert 2·(5/3) zur Schätzung jedes Blockes addiert (siehe Pseudocode unten). Das kompensiert eine leichte Ungenauigkeit der Schätzung für Pegel-3-Mantissen. In ähnlicher Weise werden für Schätzungenauigkeiten von Pegel-5- und -11-Mantissen die Werte 2·(7/3) bzw. 1·(7/2) zu der Schätzung für jeden Block addiert. Diese Korrektur kann im unten angegebenen Code gesehen werden.

Man beachte dass der Effekt ist, dass die Schätzung immer konservativ ist, dass sie mehr als die tatsächliche Verwendung sein kann, aber niemals sonst ist. Das ist eine wichtige Eigenschaft des vorgeschlagenen Verfahrens dem für alle Pegel gefolgt werden muss, weil, falls sich am Ende der gesamten Verarbeitung herausstellt, dass die verwendeten Bits die verfügbaren Bits übersteigen, mehrere aufwändige Berechnungen wieder durchgeführt werden müssen, was zu einem Fehler in der Zeitsteuerung des Systems führt. Andererseits können am Ende entdeckte unbenutzte Bits so ein Problem nicht stellen, da sie immer als Zusatzbits bzw. Leerbits (auxiliary bits, dummy bits) einbezogen werden können.

Die Bitverwendung mit dem gegebenen Wert für csnroffsef und fsnroffset wird mit dem geschätzten verfügbaren Raum verglichen. Falls die Bitverwendung weniger als verfügbar ist, dann müssen der csnroffset und fsnroffset-Wert entsprechend erhöht werden, gleichermaßen müssen, falls die Verwendung mehr bzw. größer als verfügbar ist, die Parameter csnroffset und fsnroffset entsprechend verringert werden.

Gemäß dem AC-3-Standard kann csnroffset einen unterschiedlichen Wert in jedem Audioblock haben aber ist innerhalb des Blocks für alle Kanäle festgelegt. fsnroffset kann für jeden Kanal innerhalb des Blocks verschieden sein. Mit so vielen Variablen kann die erforderliche Berechnung um schließlich bei den Werten anzukommen die zur minimalen Signalverzerrung mit der maximalen Verwendung verfügbarer Bits führen sehr aufwändig sein.

Die Empfehlung im Standard für den Basiscodierer ist „Die Kombination von csnroffset und fsnroffset werden so gewählt, dass sie die größte Anzahl von Bits verwenden ohne die Rahmengröße zu überschreiten. Das umfasst einen iterativen Ansatz."

Für eine Echtzeitlösung ist es sehr wichtig, dass die Anzahl der Iterationen minimiert wird. Ein durchschnittlicher DSP-Kern könnte ab ∼ 1 Mips (Millionen Instruktionen pro Sekunde) für jede Iteration verwenden. Als erstes wird einige Vereinfachung vorgeschlagen. Da csnroffset und fsnroffsef ungefähr die Qualität bestimmen, wäre es vielleicht nicht nötig, verschiedene Werte über einen Rahmen hinweg zu haben.

Um eine schnelle Konvergenz für einen Echtzeitcodierer vorzusehen, werden einige vernünftige Vereinfachungen durchgeführt. Die empfohlene Vereinfachung ist, dass die Iteration mit nur einem Wert für csnroffset und fsnroffset für alle Audioblöcke und alle Kanäle durchgeführt wird.

Eine lineare Iteration ist definitiv nicht optimal. Bei AC-3 kann csnroffset Werte zwischen 0 und 63 haben. In ähnlicher Weise ist fsnroffset 0 bis 15. Das bedeutet, dass in dem schlimmsten Fall 64 + 16 = 80 Iterationen (∼ 80 Mips) zur Konvergenz auf den optimalen Wert nötig sein können. Grundsätzlich ist die lineare Iteration O(n), wobei n die Anzahl möglicher Werte ist.

Ein modifizierter binärer Konvergenzalgorithmus (Modified Binary Convergence Algorithm, MBCA) wird deshalb vorgeschlagen, der in dem schlimmsten Fall (worst case) Konvergenz in O(log2n)-Zeit bzw. Dauer garantiert.

Der Algorithmus ist naturgemäß rekursiv. Das erste Mal wird er als Optimiere_csnr (verfügbare_Bits, 0, 32, 64) aufgerufen. Die Funktion Schätze_Mantisse_Bits (Estimate_mantissa_bits) wird aufgerufen zum Bestimmen der Bitverwendung mit dem csnroffset = 32 und dem fsnroffset = 0 (1 ).

Falls die verwendeten Bits weniger als verfügbar sind (6), dann wird überprüft, ob die verschwendeten Bits weniger als ein Schwellenwert (7) sind. Falls ja, wird die Verschwendung ignoriert, um eine schnelle Konvergenz zu erzeugen und deshalb der aktuelle csnroffsef-Wert als der optimale zurückgegeben (8). Falls nicht, ist der neue Wert von csnroffset der ausprobiert wird genau zwischen curr_csnr = 32 und end_csnr = 64, d.h. der nächste csnroffset = 48 (9).

Falls die verwendeten Bits mehr als verfügbar sind, dann ist der neue Wert von csnroffsef der ausprobiert wird genau zwischen begin_csnr = 0 und curr_csnr = 32, d.h. der nächste csnroffset = 16 (10).

Die Konvergenz muss enden wenn der curr_csnr ein ungerader Wert ist. Hier bedeutet das, dass mit curr_csnr-1 Bitverwendung durch Mantissen weniger als verfügbar ist und mit curr_csnr+l Bitverwendung durch Mantissen mehr als verfügbar ist. Falls mit curr_csnr Bitverwendung durch Mantissen weniger als oder gleich dem verfügbaren ist, ist der optimale Wert curr_csnr (3), sonst mit curr_csnr-1 (5) kann die Bitverwendung immer erfüllt werden.

Es kann festgestellt werden, dass falls mit csnroffset = 0 die von den Mantissen benötigten Bits mehr als verfügbar sind, müssen einige Bits von anderen Feldern (z.B. Exponent-Feld) freigemacht werden um die Mantissenbits mit einem gültigen csnroffset-Wert codieren zu können. Dieser Aspekt hebt auch die Tatsache hervor, dass falls die Mantissenoptimierung als der letzte Verarbeitungsschritt beibehalten wird, eine Bedingung auftreten kann, in der kein gültiger csnroffset zu einer gültigen Komprimierung führen kann.

Beispielsweise wenn man einen Fall betrachtet in dem csnroffset = 37 der Wert ist für die Mantissenverwendung optimiert wird. Das Folgende folgt dem obigen Algorithmus schrittweise um zu überprüfen wie er abläuft. Zuerst wird er mit Optimiere_csnr (verfügbare_Bits, 0, 32, 64) aufgerufen. Da 37 > 32 wird die Anzahl der verwendeten Bits weniger als die der verfügbaren sein. Die Funktion wird rekursiv aufgerufen als Optimiere_csnr (verfügbare_Bits, 32, 48, 64). Jetzt werden die verfügbaren Bits mit curr_csnr = 48 weniger sein als die verwendeten. Deshalb wird die Funktion wieder rekursiv aufgerufen als Optimiere_csnr (verfügbare_Bits, 32, 40, 48). Wieder gilt 40 > 37, deshalb werden mehr Bits verwendet als verfügbar sind. Die Funktion wird als Optimiere_csnr (verfügbare_Bits, 32, 36, 40) aufgerufen. Als nächstes Optimiere_csnr (verfügbare_Bits, 36, 37, 38). Deshalb konvergiert es schließlich auf einen Wert von 37.

Es ist leicht zu sehen, dass die Funktion Estimate_Mantissa_Bits im schlimmsten Fall 6 mal aufgerufen wird. Da sie im Wesentlichen binär ist, sollte bemerkt werden, dass log264 = 6 kein Zufall (co-incident) ist. Natürlich kann der gleiche Algorithmus zum Optimieren des Werts fsnroffset für den Rahmen verwendet werden. Da der fsnroffset-Wert von 0 bis 15 reicht, werden in dem schlimmsten Fall log216 = 4 Iterationen benötigt. Deshalb ist die Optimierung des MBCA verglichen mit dem linearen iterativen Verfahren 80/(6+4) = 8 mal schneller.

Normale Rahmenverarbeitung

Nachdem die Werte für csnroffset und fsnroffset erhalten worden sind geht die normale Verarbeitung des Rahmens weiter. Blockweise Verarbeitung wird durchgeführt. Die Codierung von Feldern wird gemäß der früher gebildeten Tabelle mit Strategien durchgeführt. Kopplungskoordinaten und codierte Exponenten werden gemäß den abgeleiteten Strategien erzeugt. In jedem Block berechnet der Kernbitzuordnungsalgorithmus die Bitzuordnung für jede Mantisse mit den vordefinierten Werten von csnroffset und fsnroffset und die Mantissen werden quantisiert und in den AC-3-Strom gepackt.

Die vorstehende detaillierte Beschreibung der bevorzugten Ausführungsbeispiele der vorliegenden Erfindung ist nur als Beispiel präsentiert worden und ist nicht als die Erfindung einschränkend zu betrachten, die in den angehängten Ansprüchen definiert ist.


Anspruch[de]
  1. Ein Verfahren zur Verarbeitung von Audioeingangsdaten zur Komprimierung in einen codierten Bitstrom, der eine Folge von Rahmen bzw. Datenrahmen festgelegter Größe aufweist, wobei jeder der Rahmen festgelegter Größe eine Vielzahl von Feldern variabler Größe besitzt, die codierte Daten unterschiedlicher Arten enthalten, wobei das Verfahren folgende Schritte aufweist:

    Empfangen von Eingangsdaten, die in einen Rahmen des Ausgangsbitstroms zu Codieren sind;

    Vorverarbeiten der Eingangsdaten zum Bestimmen von wenigstens einem ersten Codierungsparameter, der verwendet wird zum Codieren der Eingangsdaten in wenigstens eines der Felder variabler Größe in dem Rahmen, wobei der Wert des wenigstens einen ersten Codierungsparameters die Datenraumgröße beeinflusst, die für das wenigstens eine Feld variabler Größe benötigt wird;

    Speichern des wenigstens einen ersten Codierungsparameters, der in dem Vorverarbeitungsschritt bestimmt wird;

    Zuordnen des Datenraums in dem Rahmen für wenigstens ein anderes der Felder variabler Größe basierend auf dem wenigstens einen ersten Codierungsparameter;

    Bestimmen von wenigstens einem zweiten Codierungsparameter zur Codierung von Daten in das wenigstens eine andere Feld variabler Größe basierend auf dem zugewiesenen Raum; und

    Codieren der Eingangsdaten in die Felder variabler Größe des Rahmens unter Verwendung der ersten und zweiten Codierungsparameter.
  2. Verfahren nach Anspruch 1, wobei der Rahmen in einer Vielzahl von Datenblöcken angeordnet ist, wobei jeder Block die Vielzahl von Feldern variabler Größe entsprechend unterschiedlicher codierter Datenarten besitzt.
  3. Verfahren nach Anspruch 1 oder 2, wobei eine Transformationscodierungstechnik angewendet wird, so dass die codierten Daten Exponent-Daten und Mantisse-Daten aufweisen.
  4. Verfahren nach Anspruch 3, wobei die Audioeingangsdaten eine Vielzahl von Kanälen beinhalten und die codierten Daten Kopplungsparameter, die Vielzahl von Kanälen betreffen, beinhalten.
  5. Verfahren nach Anspruch 3 oder 4, wobei der wenigstens eine zweite Codierungsparameter wenigstens einen zum Codieren der Mantisse-Daten benötigten Parameter aufweist.
  6. Verfahren nach Anspruch 5, wobei der wenigstens eine erste Codierungsparameter eine Exponent-Strategie zur Codierung der Exponent-Daten umfasst.
  7. Verfahren nach Anspruch 5 oder 6, wobei der wenigstens eine erste Codierungsparameter einen Blockschaltparameter umfasst, der eine Transformationslänge für die Transformationscodierungstechnik anzeigt.
  8. Verfahren nach Anspruch 7, wobei der Blockschaltparameter gemäß der Detektion von Transienten bzw. Übergängen in den Audioeingangsdaten bestimmt wird.
  9. Verfahren nach Ansprüchen 5, 6 oder 7, wobei der wenigstens eine erste Codierungsparameter eine Kopplungsstrategie zwischen mehreren Kanälen in den Audioeingangsdaten umfasst.
  10. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Audioeingangsdaten im Wesentlichen gemäß dem AC-3 Audiocodierstandard codiert werden.
  11. Verfahren zur Transformationscodierung von Audiodaten, die eine Vielzahl von Kanälen zur Übertragung oder Speicherung mit einer festen Rahmenlänge eines codierten Datenbitstroms besitzen, wobei der Rahmen Felder variabler Länge für codierte Exponenten, codierte Mantissen und Kopplungsdaten umfasst, wobei das Verfahren die folgenden Schritte aufweist:

    Erhalten von Audioeingangsdaten für einen Rahmen;

    Bestimmen eines Transformationslängeparameters für die Audiodaten;

    Bestimmen von Kopplungsparametern für die Audiodaten;

    Bestimmen einer Exponent-Strategie für die Audiodaten;

    Berechnen von benötigtem Raum in dem Rahmen für die Exponent- und Kopplungsdatenfelder basierend auf dem bestimmten Transformationslängeparameter, den bestimmten Kopplungsparametern und der bestimmten Exponent-Strategie;

    Berechnen von verfügbarem Raum in dem Rahmen für das codierte Mantisse-Feld gemäß dem berechneten benötigten Raum in dem Rahmen für die Exponent- und Kopplungsdatenfelder;

    Bestimmen eines Mantisse-Codierungsparameters basierend auf dem berechneten verfügbaren Raum; und

    Codieren der Audiodaten in Exponent-Daten, Mantisse-Daten und Kopplungsdaten unter Verwendung des Transformationslängeparameters, der Kopplungsparameter, der Exponent-Strategie und des Mantisse-Codierungsparameters, und Packen der codierten Audiodaten in die entsprechenden Felder in dem Rahmen.
  12. Verfahren nach Anspruch 11, wobei der Mantisse-Codierungsparameter gemäß einem iterativen Bit-Zuordnungsalgorithmus bestimmt wird unter Verwendung einer Leistungsspektraldichtefunktion und einer groben (raw) Maskierungskurvenfunktion für die Audioeingangsdaten, sowie dem berechneten vorhandenen Raum.
  13. Verfahren nach Anspruch 11 oder 12, wobei die Audiodaten im Wesentlichen gemäß dem AC-3 Audiocodierstandard codiert sind, und wobei zwei Mantisse-Codierungsparameter bestimmt werden, und zwar csnroffset und fsnroffset.
  14. Ein Transformationsaudiocodierer zum Codieren von Audiodaten, die eine Vielzahl von Kanälen für die Übertragung oder Speicherung in einem Rahmen fester Länge eines codierten Datenbitstroms besitzen, wobei der Rahmen Felder variabler Länge für codierte Exponenten, codierte Mantissen und Kopplungsdaten umfasst, wobei der Codierer Folgendes aufweist:

    einen Eingangspuffer (input buffer) zum Speichern von Audioeingangsdaten für einen Rahmen;

    Mittel zum Bestimmen eines Transformationslängeparameters, Kopplungsparametern und einer Exponent-Strategie für die Audiodaten;

    Mittel zum Berechnen von benötigtem Raum in dem Rahmen für die Exponent- und Kopplungsdatenfelder basierend auf dem bestimmten Transformationslängeparameter, den bestimmten Kopplungsparametern und der bestimmten Exponent-Strategie;

    Mittel zum Berechnen von verfügbarem Raum in dem Rahmen für das codierte Mantisse-Feld gemäß dem berechneten benötigten Raum in dem Rahmen für die Exponent- und Kopplungsdatenfelder;

    Mittel zum Bestimmen eines Mantisse-Codierungsparameters basierend auf dem berechneten verfügbaren Raum; und

    Codierungsmittel zum Codieren der Audiodaten in Exponent-Daten, Mantisse-Daten und Kopplungsdaten unter Verwendung des Transformationslängeparameters, der Kopplungsparameter, der Exponent-Strategie und des Mantisse-Codierungsparameters, und packen der codierten Audiodaten in die entsprechenden Felder in dem Rahmen.
  15. Ein Transformationsaudiocodierer nach Anspruch 14, der Speichermittel zur Speicherung des Transformationslängeparameters, der Kopplungsparameter, der Exponent-Strategie und des Mantisse-Codierungsparameters zur Verwendung durch die Codierungsmittel bei der Codierung der Audiodaten umfasst.
Es folgen 3 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com