Die vorliegende Erfindung bezieht sich auf die Bildung
einer Darstellung eines von einem Quadrat eines Wertes linear abhängigen Berechnungsergebnisses,
wie z.B. einer Quadratsumme einer Gruppe von Werten wie sie beispielsweise bei manchen
Audiocodierern benötigt wird, bei denen gemäß einem psychoakustischen
Modell Frequenzlinien zu Frequenzgruppen zusammengefasst werden, um mit den Signalenergien
der Frequenzgruppen die weitere Codierung vorzunehmen.
In modernen, filterbankbasierten Audiocodierverfahren,
wie z.B. MPEG Layer-3 oder MPEG AAC, wird im Kodierer bzw. Encoder ein psychoakustisches
Modell verwendet. In diesem psychoakustischen Modell wird das Gesamtspektrum des
in den Frequenzbereich transformierten Audiosignals in einzelne Frequenzgruppen
unterschiedlicher Breite bzw. mit einer unterschiedlichen Anzahl von Frequenzlinien
pro Frequenzgruppe eingeteilt. Zur Berechnung der psychoakustischen Mithörschwellen,
zur Entscheidung ob Mitte-Seite-Stereocodierung verwendet werden soll und zur Schätzung
bzw. Berechnung der Skalenfaktoren im Quantisierungsmodul des Audioencoders werden
im psychoakustischen Modell die Signalenergien der Audiosignalanteile in den einzelnen
Frequenzgruppen berechnet. Dies geschieht durch Quadrierung jeder einzelnen Frequenzlinie,
wodurch sich die Linienenergien ergeben, und nachfolgender Aufsummation aller Linienenergien
in einer Frequenzgruppe zur Bandenergie einer Frequenzgruppe, von denen es z. B.
bei MPEG AAC ca. 40 bis 60 pro Audiokanal geben kann.
Im Folgenden soll der spezielle Anwendungsfall einer Implementierung
eines solchen Verfahrens auf einem Festkommaprozessor betrachtet werden.
Die Frequenzlinien werden in Festkommadarstellung mit einer
Wortbreite von z.B. 24 Bit oder 32 Bit dargestellt. Eine Wortbreite von nur 16 Bit
ist nicht ausreichend. Es wird ein globaler Skalierungsfaktor oder ein Schiebefaktor
verwendet, der für alle Frequenzlinien eines Audiokanals oder auch für
alle in einem Encoder bearbeiteten Frequenzlinien aller Audiokanäle gilt und
bestimmt, um wie viele Stellen jeder Frequenzlinienwert nach links oder rechts geschoben
werden muss, so dass die ursprüngliche Skalierung wieder erreicht wird, was
als Blockfloatingpointdarstellung bezeichnet wird. Dies heißt, dass alle Frequenzlinien
zumindest eines Audiokanals gleich ausgesteuert sind bzw. sich auf dem gleichen
Skalierungsniveau befinden. Bei Berücksichtigung der im allgemeinen hohen Dynamik
der einzelnen Amplituden der Frequenzlinien sind dadurch einige Frequenzlinien mit
relativ hoher Genauigkeit, wie z.B. 22 gültige Bits bei 24-Bit-Wortbreite oder
30 gültige Bits bei 32-Bit-Wortbreite, dargestellt, andere jedoch mit nur wenigen
gültigen Bits und damit eher ungenau.
Bei der Implementierung oben beschriebener filterbankbasierter
Audiocodierverfahren auf einem Festkommaprozessor treten nun Probleme auf, wie sie
im Folgenden dargestellt werden.
Zunächst betreffen die Probleme die Darstellung der
Signalenergien selbst. Die Signalenergien, d.h. die aufsummierten Quadrate der Frequenzlinien,
haben durch die Quadratbildung eine doppelt so hohe Dynamik wie die Frequenzlinien,
wenn die gesamte Genauigkeit beibehalten werden soll.
Es bestehen durchaus unterschiedliche Möglichkeiten,
die Signalenergien darzustellen. Eine Möglichkeit besteht in der Repräsentation
der Signalenergien durch einen Datentyp mit doppelt so großer Wortbreite wie
im für die Darstellung der Frequenzlinien verwendeten Datentyp, also beispielsweise
in einem 48 Bit oder 64 Bit breiten Datentyp. Man stelle sich beispielsweise eine
Frequenzlinie mit 22 gültigen Bits vor, die in einem 24-Bit-Datentyp dargestellt
ist. Dann würde die Signalenergie aufgrund der Aufsummierung zusammen mit den
anderen Frequenzlinien mindestens 44 gültige Bits aufweisen und in einem 48-Bit-Datentyp
dargestellt werden. Diese Vorgehensweise ist allerdings zumindest für 64-Bit-Energien,
d.h. in Fällen, da die Frequenzlinien in einem 32-Bit-Datentyp dargestellt
sind, nicht praktikabel, da die meisten gebräuchlichen Festkommaprozessoren
einen 64-Bit-Datentyp entweder überhaupt nicht unterstützen oder aber
Speicherzugriffe und Berechnungen mit einem 64-Bit-Datentyp extrem langsam im Vergleich
zu beispielsweise 32-Bit-Zugriffen und Berechnungen sind. Zudem ist der Speicherverbrauch
bei 64-Bit-Daten sehr viel höher.
Eine andere Möglichkeit der Darstellung der Signalenergien
besteht in der Repräsentation durch einen Fließkommadatentyp mittels Mantisse
und Exponent. Es werde beispielsweise wieder von dem obigen Beispielfall ausgegangen,
dass eine Frequenzlinie mit 22 gültigen Bits in einem 24-Bit-Datentyp dargestellt
ist. Die Signalenergie der entsprechenden Gruppe würde dann in einem standardisierten
oder proprietären Fließkommadatentyp mit 16-Bit-Mantisse inklusive Vorzeichenbit
und einem 8-Bit-Exponenten dargestellt werden. Es ist hierbei nicht von Belang,
ob es sich dabei um einen standardisierten Fließkommadatentyp, wie z.B. IEEE-P754,
oder einen proprietären Fließkommadatentyp mit frei gewählter Mantissen-
und Exponentenbreite handelt. Auf einem Festkommaprozessor ohne Fließkommarechenwerk
werden Berechnungen mit Fließkommadatentypen immer durch mehrere Rechenschritte
emuliert werden müssen und extrem langsam sein, so dass diese Vorgehensweise
nicht praktikabel ist.
Ein weiteres Problemfeld bei der Implementierung obiger
filterbankbasierter Audiocodierverfahren auf einem Festkommaprozessor betrifft die
Weiterverarbeitung der Signalenergien im Laufe des Codierverfahrens. Die Signalenergien
und die daraus abgeleiteten Mithörschwellen werden im weiteren Ablauf des Audioencoders
an einer Vielzahl von verschiedenen Stellen im Algorithmus dazu verwendet, beispielsweise
Verhältnisse oder Quotienten z.B. zwischen Signalenergie und Mithörschwelle
zu berechnen. Eine hierzu erforderliche Division ist auf einem Festkommaprozessor
nicht einfach durchzuführen.
Eine Möglichkeit, eine Division auf einem Festkommaprozessor
durchzuführen, besteht in der Verwendung von Single-Bit-Divisionsbefehlen bzw.
Ein-Bit-Divisionsbefehlen, die auf manchen Festkommaprozessoren implementiert sind
und pro Aufruf ein zusätzliches Bit an Genauigkeit im Quotienten liefern. Für
eine Division mit beispielsweise 48-Bit-Genauigkeit wären somit 48 einzelne
Divisionsbefehle für eine einzige Division zweier Signalenergien oder einer
Signalenergie und einer Mithörschwelle nötig. Das ist aufgrund des hohen
damit verbundenen Rechenzeitaufwands nicht praktikabel bzw. sehr ineffizient.
Eine andere Möglichkeit der Implementierung einer
Division auf einem Festkommaprozessor besteht in der Verwendung von Tabellen, gegebenenfalls
in Verbindung mit nachfolgenden Iterationsschritten zur Erhöhung der Genauigkeit
des Divisionsergebnisse. Diese Vorgehensweise ist aber oft nicht praktikabel, da
für die geforderte Genauigkeit des Divisionsergebnisses entweder eine sehr
große Tabelle verwendet werden muss oder nachfolgende Iterationsschritte wiederum
einen zu hohen Rechenzeitbedarf haben.
Beide genannte Verfahren können auf einem Festkommaprozessor
in Verbindung mit Festkommadatentypen oder per Software emulierten Fließkommadatentypen
benutzt werden, was aber in keinem Fall eine ausreichend effiziente Anwendung in
Bezug auf Rechenzeit und Speicherverbrauch und gleichzeitig Ergebnisgenauigkeit
ermöglicht.
Obige Probleme würden sich bei Verwendung eines GPP
(General Purpose Processor) nicht ergeben. Für viele Anwendungen verbietet
es sich aber aufgrund des hohen Preisdrucks und der hohen Stückzahl automatisch,
zur Implementierung von Audioencodern auf Prozessoren zurückzugreifen, die
leistungsvoller sind als Festkommaprozessoren ohne Fließkommarechenwerk. Beispiele
für solche Anwendungen sind Handys und PDAs.
Auf das Problem der SMR-Berechnung, d.h. der Berechnung
des Verhältnisses zwischen Signalenergie und Mithörschwelle, geht die
US 6,754,618 B1
ein, und zwar vor dem Hintergrund der Verwendung von Festpunkt-DSP-Chips.
Gemäß der dort vorgeschlagenen Vorgehensweise wird zunächst die übliche
Fensterung und anschließende Fourier-Transformation zur Zerlegung eines Audiosignals
in seine spektralen Bestandteile durchgeführt, woraufhin die Energie jedes
Eingangssignals bzw. Frequenzliniensignals, also die Linienenergie, aus dem Real-
und Imaginärteil des jeweiligen Frequenzlinienwertes berechnet wird. Ohne auf
die Bildung der Signalenergien der Gruppen von Frequenzlinien weiter einzugehen,
könne das Verfahren auch von den Signalenergien dieser Gruppen ausgehend fortgeführt
werden. In der Druckschrift wird nun ausgeführt, dass versucht werde, das Problem
zu beseitigen, dass die Eingangsdaten, d.h. die Energien, meistens einen zu großen
Dynamikbereich aufweisen, da die meisten Festkomma-DSP-Chips lediglich 16 bis 24
Bits Datenbreite ausweisen würden, wohingegen der MPEG-Standard eine Datenbreite
von 34 Bits, d.h. einen Dynamikbereich von 101 dB benötige. Die Energien müssten
deshalb zunächst skaliert werden. Insbesondere wird vorgeschlagen, von der
früheren Vorgehensweise abzuweichen und zwei unterschiedliche Skalierungswerte
zu verwenden. Genauer ausgedrückt wird gemäß dieser Druckschrift
die Energie gegen einen Schwellwert verglichen und je nachdem abwärts oder
aufwärts skaliert, um bei einem Übergang in einen logarithmischen Bereich
das Logarithmusergebnis mit 16 Bits ausreichend darstellen zu können, und um
in dem logarithmischen Bereich mit 16 Bits das SMR-Verhältnis berechnen zu
können. Je nach Aufwärtsskalierung oder Abwärtsskalierung wird eine
unterschiedliche Tabelle für die Schwellwerte verwendet. Zur Logarithmierung
wird ein Zehner-Logarithmus multipliziert mal 10 verwendet, so dass die Einheit
dB erhalten wird. Ist das Ergebnis der Logarithmierung der aufwärts skalierten
Linienenergien Null, so wird das SMR-Verhältnis durch Logarithmierung der aufwärts
skalierten Linienenergie minus dem Logarithmus der Schwellwertenergie multipliziert
mit 10 berechnet. Andernfalls werden die Ergebnisse der aufwärts skalierten
Linienenergie und der abwärts skalierten Linienenergie miteinander kombiniert.
Die in der
US 6,754,618 B1
vorgeschlagene Vorgehensweise umgeht zwar einige der im Vorhergehenden
erwähnten Probleme im Hinblick auf die Weiterverarbeitung der Signalenergien,
indem sie vorschlägt, das SMR-Verhältnis im logarithmischen Bereich zu
berechnen. Hierdurch entfällt nämlich die aufwendige Divisionsberechnung.
Nachteilhaft an der Vorgehensweise ist jedoch, dass die Logarithmusberechnung noch
relativ aufwendig ist, da erst nach der Logarithmusberechnung der Wertebereich für
eine 16-Bit-Festkommadarstellung ausgelegt ist, wie sie für 16-Bit-DSP-Festkommaprozessoren
geeignet ist, während die Logarithmierung an sich noch an den in hoher Dynamik
vorliegenden Energien durchgeführt wird, weshalb zudem sogar zwei Logarithmierungen
pro Energiewert erforderlich sind.
Wünschenswert wäre es deshalb, wenn auch der
Übergang in den logarithmischen Bereich vereinfacht werden könnte, ohne
dass ein Dynamikverlust eintritt.
Die
US 5,608,663
beschäftigt sich mit der schnellen Ausführung paralleler Multiplikationen
von Fließkommazahlen mittels Konversion in ein logarithmisches Festkommaformat,
Addition im logarithmischen Bereich und anschließender Rückkonversion.
Die
US 5,197,024
beschäftigt sich ganz allgemein mit einer Exponential/Logarithmus-Berechnung
und einer entsprechenden Vorrichtung.
Die
US 6,732,071
beschäftigt sich mit einer effizienten Lösung für eine
Ratensteuerung bei der Audiocodierung und verwendet zur Bestimmung eines Quantisierungsparameterwerts
eine Schleifeniteration mit einer Beendigungsbedingung, nach welcher der Quantisierungsparameterwert
mit einem Ausdruck verglichen wird, der sich aus einem Zweier-Logarithmus eines
Ausdrucks herleitet, der von einem maximalen Frequenzlinienwert abhängt.
Die
US 6,351,730
beschreibt die Verwendung eines Logarithmus zur Basis 2 für eine
Gain-Berechnung im Rahmen einer Audiocodierung. Die Gain-Werte werden zur Bitzuteilung
in einem MDCT-codierten Audiocodec verwendet.
Die
US 5,764,698
beschreibt die Verwendung eines natürlichen Logarithmus zur Darstellung
von Audiosignalenergien. Eine nähere Beschreibung des Übergangs in den
logarithmischen Bereich erfolgt nicht.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein
Verfahren und eine Vorrichtung zum Bilden einer Darstellung eines von einem Quadrat
eines Wertes linear abhängigen Ergebnisses zu schaffen, so dass die Berechnung
einfacher bzw. mit weniger Hardwareaufwand möglich ist.
Diese Aufgabe wird durch eine Vorrichtung gemäß
Anspruch 1 und ein Verfahren gemäß Anspruch 18 gelöst.
Eine erfindungsgemäße Vorrichtung zum Bilden
einer Darstellung eines von einem Quadrat eines Wertes linear abhängigen Berechnungsergebnisses,
wobei das Berechnungsergebnis in einer nicht-logarithmierten x-Bit-Darstellung vorliegt,
umfasst
eine Verarbeitungseinrichtung zum Durchführen einer Verarbeitung der nicht-logarithmierten
x-Bit-Darstellung des Werts, um das Berechnungsergebnis zu erhalten, das linear
von dem Wert abhängt, wobei die Verarbeitungseinrichtung ausgebildet ist, um
einen effektiven Skalierungsfaktor zu verwenden, derart, dass das Berechnungsergebnis
abhängig von dem effektiven Skalierungsfaktor skaliert ist,
eine Logarithmierungseinrichtung zum Anwenden einer Logarithmusfunktion auf eine
nicht-logarithmierte, aus der Verarbeitung durch die Verarbeitungseinrichtung unmittelbar
oder mittelbar - nämlich durch beispielsweise Herausgreifen von Bitpositionen
- erhaltene &ggr;-Bit-Darstellung des Berechnungsergebnisses, um eine skalierte
logarithmierte Darstellung des Berechnungsergebnisses bzw. eine logarithmierte Darstellung
des skalierten Berechnungsergebnisses zu erhalten, wobei y kleiner als 2 mal x ist;
und
eine Reskalierungseinrichtung zum Addieren oder Subtrahieren eines Korrekturwerts
zu bzw. von der skalierten logarithmischen Darstellung, der der Logarithmusfunktion,
wie z.B. einem skalierten Logarithmus, angewendet auf den effektiven Skalierungsfaktor
entspricht, um eine logarithmierte Darstellung des - nun nicht mehr skalierten -
Berechnungsergebnisses zu erhalten.
Die Erkenntnis der vorliegenden Erfindung besteht darin,
dass es nicht notwendig ist, bei dem Übergang in den logarithmischen Bereich
die gesamte Bitbreite des von dem Quadrat des Wertes linear abhängigen Ergebnisses
zu berücksichtigen. Vielmehr ist es möglich, bei einem Wert mit x Bits
eine Skalierung des Ergebnisses derart vorzunehmen, dass eine Darstellung mit weniger
als x Bits des Ergebnisses ausreichend ist, um basierend auf demselben die logarithmische
Darstellung zu gewinnen. Die Auswirkung des Skalierungsfaktors auf die sich ergebende
logarithmische Darstellung kann durch Addieren oder Subtrahieren eines durch die
Logarithmusfunktion angewendet auf den Skalierungsfaktor gewonnenen Korrekturwertes
zu bzw. von der skalierten logarithmischen Darstellung ohne Dynamikverlust aufgehoben
werden.
Ein Vorteil der vorliegenden Erfindung besteht deshalb
darin, dass auf die erfindungsgemäße Weise eine Mehrzahl von Ergebnissen
auf eine Art und Weise in eine logarithmische Darstellung überführt werden
können, so dass anschließend im wesentlichen bewahrter Dynamik das Skalierungsniveau
für alle das gleiche ist.
Gemäß einem Ausführungsbeispiel der vorliegenden
Erfindung besteht die Verarbeitung der x-Bit-Darstellung des Wertes, um das Berechnungsergebnis
zu erhalten, das linear von dem Wert abhängt, in der Bildung einer Quadratsumme
einer Gruppe von Werten. Anstatt jedoch den effektiven Skalierungsfaktor erst nach
der Quadratsummenberechnung durchzuführen, werden die x-Bit-Darstellungen bereits
vorher mit einem gemeinsamen Skalierungsfaktor skaliert. Der gemeinsame Skalierungsfaktor
wird dabei aus der Anzahl an Werten und/oder anhand der größten Anzahl
an gültigen Stellen unter den x-Bit-Darstellungen der Werte bestimmt. Diese
Vorgehensweise ermöglicht es, von der Ausgangsituation mit den x-Bit-Darstellungen
der Werte aus durchgehend im x-Bit-Darstellungsformat zu bleiben. Dies gilt für
die Quadrate der einzelnen Werte ebenso wie die Summe der einzelnen Quadrate. Der
gemeinsame Skalierungsfaktor wird dabei derart bestimmt, dass die Quadratsumme durch
die Summation keinen Überlauf erfährt. Gemäß diesem Ausführungsbeispiel
wird die Durchführung der Logarithmusfunktion an einem Ausschnitt der nicht-logarithmierten
x-Bit-Darstellung der Quadratsumme durchgeführt. Auch bei diesem Ausführungsbeispiel
bleibt der Vorteil bestehen, dass die Vorgehensweise für mehrere Gruppen von
Werten verwendet werden kann, so dass einerseits die Werte der einzelnen Gruppen
mit unterschiedlichem gemeinsamen Skalierungsfaktor skaliert werden, und andererseits
anschließend das Skalierungsniveau für die logarithmische Darstellung
aller Quadratsummen das gleiche ist.
Gemäß einem weiteren bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung wird als Logarithmusfunktion ein Logarithmus Dualis verwendet
zusammen mit einem Faktor, der kleiner oder gleich 1/y ist. Auf diese Weise ist
es möglich, die Abbildung zwischen der y-Bit-Darstellung des Berechnungsergebnisses
und der skalierten logarithmierten Darstellung des Berechnungsergebnisses auf eine
Weise vorzunehmen, die die Wertebereiche beider Darstellungen optimal ausnutzt.
Gemäß einem weiteren Ausführungsbeispiel
der vorliegenden Erfindung werden zur Audiocodierung die Spektrallinienwerte einer
Gruppe auf die oben beschriebene Weise gruppenweise einer Quadratsummenbildung unterzogen,
nämlich durch Skalieren der Spektrallinienwerte vor der Quadratsummenberechnung,
wobei die Frequenzlinienwerte in einem nicht-logarithmischen x-Bit-Festkommadatenformat
vorliegen, Aufsummieren der sich ergebenden Einzelquadrate, die ebenfalls nur im
x-Bit-Festkommadatenformat vorliegen müssen, Anwenden der Logarithmusfunktion,
die die Logarithmierung mit dem Logarithmus Dualis und die Skalierung mit dem Faktor
kleiner oder gleich 1/x aufweist, auf die Quadratsumme und Addieren oder Subtrahieren
eines durch die Logarithmusfunktion aus dem gemeinsamen Skalierungsfaktor erhaltenen
Korrekturwertes zu bzw. von der x-Bit-Festkommadarstellung des Logarithmierungsergebnisses.
Auf diese Weise werden die Signalenergien aller Spektralgruppen auf gleichem Skalierungsniveau
erhalten, ohne die Dynamik zu verringern. Zudem kann jede der Rechenoperationen
mit einem Rechenwerk durchgeführt werden, das lediglich zur Verarbeitung von
Festkommazahlen mit x Bits ausgelegt ist. Ein Vorteil dieses Ausführungsbeispiels
besteht folglich darin, dass es möglich ist, einen Audiocodierer auf einem
16- oder 24-Bit-Festkomma-DSP zu implementieren, ohne dass hierzu eine aufwendige
Programmierung mit dem damit verbundenen erhöhten Rechenzeitaufwand notwendig
wäre.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert.
Es zeigen:
- Fig. 1
- eine schematische Darstellung zur Veranschaulichung des Aufbaus eines 32-Bit-Festkommadatenformats;
- Fig. 2a und 2b
- schematische Darstellungen einer Quadration eines 32-Bit-Festkommadatenwerts
zur Veranschaulichung der Auswirkung zu kleiner Werte auf das 64-Bit-Festkommaergebnis;
- Fig. 3
- einen Graphen einer Logarithmusfunktion gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung;
- Fig. 4
- ein schematisches Blockschaltbild einer Quadratsummenbildungsvorrichtung gemäß
einem Ausführungsbeispiel der vorliegenden Erfindung;
- Fig. 5
- ein Blockschaltbild einer möglichen Implementierung der Vorrichtung von
Fig. 4;
- Fig. 6
- ein Flussdiagramm zur Veranschaulichung der Funktionsweise der Vorrichtung nach
Fig. 5; und
- Fig. 7
- ein schematisches Blockschaltbild zur Veranschaulichung eines Audiocodierers
gemäß einem Ausführungsbeispiel der vorliegenden Erfindung.
Die vorliegende Erfindung wird im Folgenden Bezug nehmend
auf die Figuren häufig vor dem Hintergrund der Audiosignalverarbeitung und
insbesondere der Audiosignalcodierung beschrieben. Wie es im Anschluss an die Figurenbeschreibung
aber noch näher ausgeführt wird, ist die vorliegende Erfindung nicht auf
dieses Anwendungsgebiet begrenzt, sondern diese Szenerie dient vornehmlich dem einfacheren
Verständnis.
Bevor Ausführungsbeispiele der vorliegenden Erfindung
näher erläutert werden, soll im Folgenden Bezug nehmend auf die Fig. 1
- 3 eine Hinführung zu diesen Ausführungsbeispielen geliefert werden,
die eher übersichtlicher Art ist und die Vorteile der nachfolgenden Ausführungsbeispiele
besser erkennen lässt.
Fig. 1 zeigt den Aufbau eines möglichen 32-Bit-Festkommadatenformats,
das den nachfolgend erläuterten Ausführungsbeispielen exemplarisch zugrunde
liegt. Das dargestellte 32-Bit-Datenformat ist ohne weiteres auch auf andere Bitzahlen
übertragbar. Wie es zu sehen ist, weist ein in dem 32-Bit-Festkommadatenformat
gespeicherter Wert 32 Bits auf. Zur Speicherung dieses Werts im 32-Bit-Festkommadatenformat
reicht deshalb ein 32-Bit-Register aus. Ein solches Register ist in Fig. 1 mit 10
angezeigt. Die 32 Bitpositionen sind mit einzelnen Quadraten angedeutet, die mit
X0 ... X31 vom niedrigstwertigen Bit (LSB) zum höchstwertigen
Bit (MSB) durchnumeriert sind. Die Bedeutung der einzelnen Bitpositionen gemäß
dem 32-Bit-Festkommadatenformat sind unterhalb der einzelnen Bitpositionen angedeutet.
Wie es zu erkennen ist, gibt das höchstwertige Bit das Vorzeichen des Wertes
an, d.h. + oder -. Die restlichen Bits X30 - X0 geben den
Betrag des Wertes wieder. Gemäß dem Ausführungsbeispiel von Fig.
1 stellen diese Bits einen echten Bruch dar, d.h. das Datenformat 10 ist ein Fractional-
bzw. Bruch-Festkommadatenformat, bei dem per Konvention der Punkt bzw. das Komma
ganz links, d.h. links vor dem Bit X30, angeordnet ist. Der Wert in dem
Register 10 lässt sich somit angeben als
Wie es ohne weiteres ersichtlich ist, erstreckt sich der
darstellbare Wertebereich des Fractional-Festkommadatenformats in etwa von -1 ausschließlich
bis 1 ausschließlich.
Wie es nun in der Beschreibungseinleitung der vorliegenden
Anmeldung beschrieben worden ist, werden beispielsweise Signalenergien durch Quadrierung
der Frequenzlinien und Aufsummation aller quadrierten Frequenzlinien, d.h. der Linienenergien,
in einer Frequenzgruppe erhalten. Die Anzahl der in einer Frequenzgruppe enthaltenen
Linien beträgt beispielsweise bei MPEG Layer-3 und MPEG AAC zwischen 4 und
96.
Wie es nun ebenfalls in der Beschreibungseinleitung der
vorliegenden Anmeldung beschrieben wurde, ist es möglich, die Frequenzlinienwerte
in einem Festkommadatenformat darzustellen, indem ein globaler Skalierungsfaktor
verwendet wird, der für alle Frequenzlinien eines Audiokanals oder sogar für
alle in einem Encoder bearbeiteten Frequenzlinien aller Audiokanäle gilt und
bestimmt, um wie viele Stellen jeder Frequenzlinienwert decoderseitig nach links
oder rechts geschoben werden muss, so dass die ursprüngliche Skalierung wieder
erreicht wird. Um nun solche 32-Bit-Festkommadatenwerte auf einem Festkommaprozessor
mit 32-Bit-Datenwortbreite einer Quadratsummation zur Berechnung der Audiosignalenergien
zu unterziehen, müssen für eine effiziente Implementierung der Berechnung
der Audiosignalenergien aus den Frequenzlinien folgende Grundvoraussetzungen erfüllt
sein:
- Die Frequenzlinien müssen mit einer Wortbreite von 32 Bits dargestellt
werden. 16 Bits sind nicht ausreichend.
- Die Audiosignalenergien sollen ebenfalls in einem Festkommadatenformat und nicht
in einem Fließkommadatenformat dargestellt werden.
- Die Audiosignalenergien sollen in einem Datentyp mit einer nicht größeren
Wortbreite als 32 Bit dargestellt werden. Daraus ergibt sich auch für die Audiosignalenergien
eine Wortbreite von 32 Bits.
Die nachfolgend beschriebenen speziellen Ausführungsbeispiele
der vorliegenden Erfindung erfüllen all diese Grundvoraussetzungen, wobei jedoch
angemerkt werden soll, dass eine weniger effiziente Implementierung erhalten werden
kann, wenn nicht alle dieser Grundvoraussetzungen erfüllt sind. Wie es später
noch erörtert werden wird, ist es beispielsweise nicht unbedingt erforderlich,
dass die Audiosignalenergien in ihrer Wortbreite auf 32 Bit begrenzt werden. Lediglich
die Weiterverarbeitung der Audiosignalenergien soll sich auf eine 32-Bit-Festkommadarstellung
begrenzen.
Aus den obigen Voraussetzungen ergibt sich folgendes Problem
bei der Berechnung der Audiosignalenergien. Die Quadrierung der 32-Bit-Frequenzlinienwerte
ergibt zunächst Linienenergien mit einer Wortbreite von 64 Bits, wobei jedoch
die 32 Bits - in dem Fall der nachfolgenden Ausführungsbeispiele die unteren
32 Bits - in der weiteren Verarbeitung verworfen werden, und in der Fractional-Arithmetik
lediglich mit den oberen 32 Bits weitergearbeitet wird.
Um dies zu veranschaulichen, sei Bezug auf Fig. 2a und
2b genommen. Diese zeigen zwei Eingangsregister 12a und 12b eines Multiplizierers,
der als Quadrierer verwendet wird, indem in die Eingangsmultiplikandenregister 12a
und 12b die gleichen Werte eingeschrieben werden. Beide Register 12a und 12b sind
32-Bit-Register. Ferner zeigen die Fig. 2a und 2b ein 64-Bit-Ausgangsregister 14,
das sich aus einem oberen Teil 14a und einem unteren Teil 14b zusammensetzt.
Der Multiplizierer, der in den Fig. 2a und 2b nicht weiter
dargestellt ist, ist dazu ausgelegt, die Registerinhalte der Register 12a und 12b
im 32-Bit-Festkommadatenformat zu lesen und die beiden Werte zu multiplizieren 16,
so dass sich ein 64-Bit-Ergebnis ergibt, das in das Ausgangsregister 14 in einem
64-Bit-Festkommadatenformat ausgegeben wird. Der obere Teil 14a des Ausgangsregisters
14 deckt somit die ersten 31 Binärstellen hinter dem Komma ab, während
der untere Teil 14b die restlichen Binärstellen abdeckt.
Die Fig. 2a und 2b zeigen Situationen, bei denen unterschiedliche
Frequenzlinienwerte in die Eingangsregister 12a und 12b eingeschrieben worden sind,
so dass sich unterschiedliche Ergebnisse im Ausgangsregister 14 ergeben.
Insbesondere zeigt Fig. 2a eine Situation, bei der der
Frequenzlinienwert hoch ist, nämlich 0x12345678. Solange die Frequenzlinienwerte
hoch ausgesteuert sind, also eine hohe Anzahl von gültigen Bits im 32-Bit-Datenwort
belegen, sind die oberen 32 Bits des eigentlich 64 Bit breiten Ergebnisses im Ausgangsregister
14 ausreichend genau, um das Ergebnis bzw. das Quadrat wiederzugeben. Der Fehler,
der begangen wird, wenn anstelle des vollständigen Ergebnisses lediglich der
obere Teil 14a verwendet wird, beträgt in dem Fall von Fig. 2a lediglich 0x000000003be9b080.
Fig. 2b zeigt den Fall eines kleinen Frequenzlinienwerts
in dem Eingangsregister 12a bzw. 12b, nämlich 0x00004321. Solche Frequenzlinienwerte
kommen ebenfalls vor, da, wie bereits erwähnt, alle Frequenzlinien zumindest
eines Audiokanals einen globalen Skalierungsfaktor haben und somit in der Regel
eine große Anzahl von Frequenzlinien nur eine geringe Anzahl von gültigen
Bits in einem 32-Bit-Datenwort belegen, also eine geringe Amplitude aufweisen. Wie
sich aus Fig. 2b ergibt, stellen die oberen 32 Bits des Ausgangsregisters 14 in
dem Fall kleiner Frequenzlinienwerte das Quadrationsergebnis nicht mit ausreichender
Genauigkeit wieder. Insbesondere eine Aufsummation mehrerer solcher Linienenergien
zu einem Signalenergiewert wird somit ein falsches Ergebnis liefern, nämlich
beispielsweise Null, das im späteren Ablauf einer Audiocodierung zu einer verminderten
Audioqualität führt. In dem Beispiel von Fig. 2b wird der obere Teil des
Ausgangsregisters beispielsweise das Ergebnis von Null anzeigen, während der
tatsächliche Ergebniswert 0x0000000023349482 wäre.
Betrachtet man die Beispiele von Fig. 2a und 2b, erscheint
es zunächst erforderlich zu sein, alle 64 Bits des Ausgangsregisters 14 bei
nachfolgenden Verarbeitungen der Signalenergien zu berücksichtigen. Dies würde
jedoch eine Vielzahl von komplizierten 64-Bit-Datenoperationen notwendig machen,
d.h. Operationen mit 64-Bit-Operanden, und gegen obige Grundvoraussetzungen für
eine effiziente Implementierung verstoßen.
Soll aber tatsächlich von jedem Signalenergiewert
in dem Ausgangsregister 14 lediglich der obere 32-Bit-Teil verwendet werden, kann
eine Verbesserung zunächst dadurch erreicht werden, dass alle Frequenzlinienwerte
in einer Frequenzgruppe vor der Quadrierung um eine gleiche Anzahl von Bits nach
links geschoben werden und das Ergebnis somit eine größere Anzahl von
gültigen Bits im oberen 32-Bit-Teil des 64-Bit-Ergebnisses enthält, oder
dass das Ergebnis in dem Ergebnisregister 14 verschoben wird.
Der obere Teil 14a jedes Signalenergiewertes könnte
dann in einen logarithmischen Bereich überführt werden, indem ein Rechenwerk
zur Berechnung einer Logarithmusfunktion auf den jeweils oberen Teil 14a der Signalenergien
angewendet wird. Das Rechenwerk müsste lediglich in der Lage sein, einen 32-Bit-Festkommadatenwert
zu logarithmieren, um einen 32-Bit-Festkommadatenwert zu erhalten. Die Logarithmusfunktion,
die den Wert x in den Wert y überführt, könnte y = log2(x)/64
sein, deren Funktionsverlauf in Fig. 3 dargestellt ist. Fig. 3 zeigt lediglich den
Abschnitt der Logarithmusfunktion mit x ∈ ]0, 1[, der für die quadrierten
Signalenergiewerte im 32-Bit-Festkommadatenformat der einzig relevante ist. Der
Skalierungsfaktor 1/64 stellt dabei sicher, dass selbst dann, wenn die Energiesignalwerte,
die gemäß der Logarithmusfunktion von Fig. 3 logarithmiert werden, 64-Bit-Festkommawerte
sind, der kleinste mögliche Wert, nämlich ein Energiesignalwert von 2-63
(1 Bit ist für das Vorzeichen zumindest reserviert), auch noch auf den möglichen
Ausgangswertebereich, der sich ja bei Festkommadarstellungen von -1 bis 1 ausschließlich
erstreckt, fällt.
Diese Vorgehensweise wäre allerdings nicht sehr zufriedenstellend,
da in den weiteren Verarbeitungsschritten der Audiocodierung innerhalb eines Audioencoders
alle Signalenergien zwingend die gleiche Skalierung aufweisen müssen und somit
der die Genauigkeit erhöhende Linksshift bzw. der Skalierungsfaktor eben genau
dieses gleiche Skalierungsniveau stört.
Genau hier kommt aber eine positive Eigenschaft der Logarithmierung
zum Tragen. Wie oben bereits erwähnt, ist durch den vorgeschriebenen Linksshift
um beispielsweise s Bitpositionen in der Frequenzlinien- bzw. Amplitudendomäne
bzw. durch die Skalierung um effektiv 22s in der Signalenergiedomäne
unter Einhaltung des besagten Sicherheitsabstands die Darstellung der Linienenergien
maximal genau. Vorübergehend muss nun die Anzahl der in dieser Frequenzgruppe
durchgeführten Linksshifts notiert werden, d.h. der Wert s. Wenn nun der so
mit hoher Genauigkeit berechnete Signalenergiewert der in Fig. 3 gezeigten Logarithmusfunktion,
die im Folgenden als LD64() bezeichnet wird, in den'logarithmischen Bereich - im
folgenden auch manchmal als LD64-Format bezeichnet - überführt wird, dann
liegt derselbe immer noch mit maximal möglicher Genauigkeit vor. Ein Linksshift
der Frequenzlinien um 1 Bit entspricht nun beispielsweise einem Linksshift um 2
Bits bei den Signalenergien im linearen, nichtlogarithmischen Bereich, d.h. nach
der Quadrierung, und dies entspricht wiederum einer Addition von 2/64 im logarithmischen
Bereich, da 2/64 = log2(22)/64 = LD64(2 2).
Um die Originalskalierung bei den Signalenergien im LD64-Format
wieder herzustellen, muss somit lediglich eine Subtraktion mit 2*s/64 erfolgen,
wobei s dem vorher notierten Linksshift der Frequenzlinienwerte der Gruppe entspricht.
Durch diese Subtraktion erfolgt allerdings kein Genauigkeitsverlust, da keine gültigen
Bits verloren gehen bzw. herausgeschoben werden, wie dies bei einem Rechtsshift
im linearen Bereich der Fall wäre. Die Signalenergien liegen auf diese Weise
somit im LD64-Format, das, wie es im Folgenden noch ausgeführt wird, für
die weiteren Berechnungen im Audiocodierer sowieso vorteilhaft ist, mit hoher Genauigkeit
und mit gleicher Skalierung für alle Signalenergiewerte vor.
Nachdem im Vorhergehenden die Grundlagen sowie die Vorteile
für die Ausführungsbeispiele der vorliegenden Erfindung erläutert
worden sind, werden im Folgenden die bevorzugten Ausführungsbeispiele der vorliegenden
Erfindung anhand der Fig. 4 - 7 näher erläutert.
Fig. 4 zeigt zunächst eine schematische Darstellung
einer Vorrichtung, die dazu geeignet ist, die Quadratsumme einer Gruppe von N x-Bit-Festkommawerten
zu berechnen, und dabei einerseits den Dynamikbereich zu bewahren und andererseits
den Hardwareaufwand in vernünftigen Grenzen zu halten. Die Vorrichtung basiert
dabei auf den vorhergehenden Überlegungen.
Die Vorrichtung von Fig. 4, die allgemein mit 20 angezeigt
ist, umfasst x-Bit-Register 221, 222 ... 22N zur
Speicherung der N-Bit-Festkommawerte, eine Quadratsummeneinrichtung 24 zur Ermittlung
der Quadratsumme der Werte in den Registern 221 - 22N im nicht-logarithmischen
Bereich skaliert um einen einstellbaren effektiven Skalierungsfaktor, ein erstes
Ergebnisregister 26 zur Zwischenspeicherung des Ergebnisses der Quadratsummeneinrichtung
24, eine Logarithmierungseinrichtung 28 zur Überführung des Ergebnisses
in dem Ergebnisregister 26 in das LD64-Format, ein zweites Ergebnisregister 30 zur
Zwischenspeicherung des Ergebnisses der Logarithmierungseinrichtung 28, eine Reskalierungseinrichtung
32 zur Reskalierung bzw. zum Rückgängigmachen der Umskalierung des Ergebnisses
in dem Ergebnisregister 30, ein Ausgangsregister 34 zur Zwischenspeicherung des
Endergebnisses, wie es von der Reskalierungseinrichtung 32 ausgegeben wird, und
eine Steuereinrichtung 36, die dafür sorgt, dass die durch die Quadratsummeneinrichtung
24 bewirkte Skalierung durch die Reskalierung in der Reskalierungseinrichtung 32
wieder rückgängig gemacht wird, und die ferner den gemeinsamen Skalierungsfaktor
ermittelt.
Nachdem nun die einzelnen Komponenten der Vorrichtung 20
beschrieben worden sind, wird im Folgenden deren Zusammenspiel bei der Quadratsummenbildung
beschrieben, wobei die Interaktion jeweils durch Pfeile angedeutet ist.
Wie bereits erwähnt, liegen die der Quadratsumme zu
unterziehenden Werte zunächst in den Registern 221 - 22N
im x-Bit-Festkommadatenformat vor. Wie es ebenfalls bereits im Vorhergehenden beschrieben
worden ist, können diese Werte, die Frequenzlinienwerte sein können, in
der Anzahl ihrer gültigen Bits deutlich voneinander variieren.
Die Quadratsummeneinrichtung 24 erhält nun diese Werte
in den Registern 221 - 22N, um dieselben in einer Art und
Weise einer Quadratsummenbildung zu unterziehen, so dass am Ende in dem Register
26 die Quadratsumme der Werte in den Registern 221 - 22N in
einer Festkommadarstellung vorhanden ist, und zwar skaliert um einen effektiven
Skalierungsfaktor, der durch die Steuereinrichtung 36 zumindest mittelbar einstellbar
ist. Dabei ist es nicht unbedingt erforderlich, dass das Ergebnisregister 26, in
welches die Quadratsummeneinrichtung 24 das Quadratsummenergebnis schreibt, 2x Bits
aufweist. Es genügt vielmehr, wie es durch teilweise Strichliniendarstellung
des Registers 26 angedeutet ist, wenn die Quadratsummeneinrichtung 24 eine y-Bit-Festkommadarstellung
des Ergebnisses liefert, wobei hier vorzugsweise y = x gilt.
Es werden nun im Folgenden insbesondere zwei Möglichkeiten
herausgegriffen, wie die Quadratsummeneinrichtung 24 die Skalierungsfaktorinformationen
von der Steuereinrichtung 36 berücksichtigen kann, um das skalierte Ergebnis
in dem Register 26 auszugeben, und auf welche Weise die Steuereinrichtung 36 die
Skalierungsfaktorinformationen bzw. den effektiven Skalierungsfaktor, mit welchem
das Ergebnis in dem Ergebnisregister 26 skaliert ist, so bestimmen kann, dass keine
gültigen Bits durch Überlauf verloren gehen.
Eine erste Möglichkeit besteht nun entsprechend der
vorhergehenden Beschreibung darin, dass die Steuereinrichtung 36 die Inhalte der
Register 221 - 22N analysiert, um den effektiven Skalierungswert
vorab derart zu bestimmen, dass durch die anschließende Aufsummation der Quadrate
der Werte in den Registern 221 - 22N kein Überlauf auftreten
kann. Dies würde passieren, wenn in einem Additionsrechenwerk der Quadratsummeneinrichtung
24, das in Fig. 4 mit 38 angedeutet ist, keine Überlaufbits vorhanden wären
bzw. spätestens dann, wenn der "übergelaufene" Quadrat- bzw. Energiewert
in eine Speicherzelle geschrieben wird, die mit Sicherheit keine Überlaufbits
bietet, wie es bei dem Register 26 beispielsweise der Fall ist. Die Steuereinrichtung
36 stellt deshalb abhängig von Anzahl N und der maximalen Anzahl von freien
Bits in den Registern 221 - 22N bzw. dem Maximum aus x minus
Anzahl der gültigen Stellen der einzelnen Werte in den Registern 221
- 22N die Skalierungsfaktorinformationen derart ein, dass bei Ausgabe
in das Register 26 kein Überlauf eintritt bzw. das Ergebnis nicht den Wertebereich
von -1 bis 1, ausschließlich, verlässt.
Insbesondere ist es möglich, dass die Steuereinrichtung
36, wie im Vorhergehenden erwähnt, den effektiven Skalierungsfaktor, mit welchem
das Ergebnis in dem Register 26 skaliert ist, über einen gemeinsamen Skalierungsfaktor
einstellt, mit welchem die Quadratsummeneinrichtung 24 die Registerinhalte 221
- 22N gleich zu Beginn, d.h. noch vor der Quadration 40, skaliert. Insbesondere
kann der gemeinsame Skalierungsfaktor, wie im Vorhergehenden beschrieben, einer
Potenz von 2 entsprechen, so dass die Vorabskalierung der Werte in den Registern
221 - 22N durch eine Linksschiebeoperation erzielt werden
kann. In diesem Fall wäre es auch, wie im Vorhergehenden erwähnt, nicht
erforderlich, dass die Quadratsummeneinrichtung 24 die Zwischenergebnisse der Quadrierungen
40 der einzelnen skalierten Registerinhalte in einem 2x-Festkommadatenformat addiert
38, um das Ergebnis in dem Ergebnisregister 26 auszugeben, sondern vielmehr benötigte
die Quadratsummeneinrichtung 24 lediglich eine y-Bit-Festkommadarstellung der Quadrierungszwischenergebnisse
421 ... 42N. Die Summation 38 über alle Quadrationszwischenergebnisse
421 - 42N ergibt dann das Endergebnis der Quadratsummeneinrichtung
24 in dem Register 26.
Eine noch weitere Möglichkeit zur Skalierungsfaktorbestimmung
und -berücksichtigung bestünde darin, dass die Quadratsummeneinrichtung
24 zunächst die Registerinhalte 221 - 22N jeweils einzeln
der Quadrierung 40 unterzieht, um Zwischenergebnisse im 2x-Festkommadatenformat
421 - 42N zu erhalten. Diese würde die Quadratsummeneinrichtung
24 dann der Summation 38 unterziehen. Das entstehende 2x-Festkommaquadratsummenergebnis
würde von der Steuereinrichtung 36 zunächst auf die Anzahl der unbenutzten
Bits bzw. die Differenz zwischen 2x und die Anzahl der gültigen Stellen hin
untersucht werden, um dementsprechend einen Linksshift bzw. eine Linksschiebeoperation
um eine entsprechende Anzahl von Bits an diesem 2x-Bit-Quadratsummenergebnis durch
die Quadratsummeneinrichtung 24 vornehmen zu lassen, bevor letztere das Ergebnis
in das Ergebnisregister 26 einträgt. Der Nachteil bei dieser Vorgehensweise
gegenüber der zuerst beschriebenen besteht darin, dass der interne Rechenaufwand
in der Quadratsummeneinrichtung 24 erhöht wäre, da Werte 421
- 42N mit einer Wortbreite von 2x verarbeitet werden müssten, insbesondere
der Summation 38 unterzogen werden müssten. Hierzu ist entweder ein Additionsrechenwerk
mit erhöhter Leistungsfähigkeit notwendig oder aber ein y-Bit-Festkommadatenformat-Additionsrechenwerk
mit zugeordnetem Überlaufbit muss entsprechend öfter angesteuert werden.
Bei dieser Möglichkeit würde also die Quadratsummeneinrichtung 24 die
Werte in den Registern 221 - 22N zunächst einzeln quadrieren
und die 2x-Bit-Festkommaquadratwerte 421 - 42N aufsummieren
38, um erst danach das Ergebnis gemäß den Skalierungsfaktorinformationen
der Steuereinrichtung 36 zu skalieren und an das Register 26 auszugeben.
Bei einem Ausführungsbeispiel, das vorzugsweise mit
x = 24 Bits implementiert ist, ist das Register 26 y = 2x Stellen lang. Bei einem
anderen Ausführungsbeispiel, das vorzugsweise mit x = 32 Bits implementiert
ist, wird jedoch bereits beim Quadrieren in einer Einrichtung 421 - 42N
gewissermaßen bereits während der Quadrierung oder nach der Quadrierung
aber vor dem Einspeichern in das Register eine Stellenreduktion auf x Stellen durchgeführt.
Die Aufsummation wird dann mit einer Wortbreite von x Bits durchgeführt. Hier
hat das Register 26 also nur y = x Stellen. Die Logarithmierungseinrichtung kann
dann vorzugsweise ebenfalls x Stellen haben.
Mit Hilfe des effektiven Skalierungsfaktors kann die Anzahl
an gültigen Bits in dem Ergebnisregister 26 nahezu optimal eingestellt werden.
Die Logarithmierungseinrichtung 28 empfängt nun die y-Bit-Festkommadarstellung
aus dem Register 26 unter gegebenenfalls Unberücksichtigt-Lassen der übrigen
Bitpositionen höherer Genauigkeit und unterzieht dieselbe der im Vorhergehenden
Bezug nehmend auf Fig. 3 erläuterten LD64-Formatumwandlung, um das Ergebnis
in das Register 30 im z-Bit-Festkommadatenformat einzutragen, wobei vorzugsweise
z = y gilt, ebenso wie vorzugsweise y = x gilt.
Das Ergebnis in dem Ergebnisregister 30 stellt eine skalierte
logarithmische Darstellung der Quadratsumme der Werte in den Registern 221
- 22N dar. Die Reskalierungseinrichtung 32 macht die Skalierung nun wiederum
rückgängig, indem sie von dem skalierten Wert in dem Register 30 einen
Korrekturwert abzieht 44, den sie von der Steuereinrichtung 36 erhält. In dem
Fall des LD64-Formats beträgt der Korrekturwert, wie im Vorhergehenden erwähnt,
LD64(s), wobei s der effektive Skalierungswert sei, mit welchem die Quadratsumme
in dem Ergebnisregister 26 skaliert ist.
Das Ergebnis gibt die Reskalierungseinrichtung 32 dann
im Register 34 im Festkommadatenformat aus.
Bezug nehmend auf Fig. 4 wurde ein bevorzugtes Ausführungsbeispiel
der vorliegenden Erfindung zunächst eher grob in seiner Wirkweise beschrieben,
ohne näher auf eine mögliche Hardwareimplementierung einzugehen. Fig.
5 zeigt eine mögliche Implementierung der Vorrichtung von Fig. 4 etwas detaillierter.
Die Vorrichtung von Fig. 5, die allgemein mit 60 angezeigt ist, umfasst einen Speicher
62, eine Steuereinrichtung 64, eine Schiebeeinrichtung 66, einen Quadrierer 68,
einen Summierer 70, einen Logarithmierer 72, einen Dividierer 74 und einen Subtrahierer
76. All die Module 62 - 76 sind kommunikativ miteinander über beispielsweise
einen Bus oder aber eine Programmschnittstelle 78 miteinander verbunden. Die Einrichtungen
66 - 76 können in Hardware implementiert sein oder können teileise aber
auch entsprechende Programmcodes sein, die von der Steuereinrichtung 64 ausgeführt
werden, um die entsprechenden Aufgaben zu erfüllen. Die Module 66 - 76 müssen
jeweils nur in der Lage sein, x-Bit-Festkommadatenformatoperanden zu verarbeiten.
Unter den Modulen 66 - 76 bilden die Module 66 - 70 eine Quadratsummeneinrichtung
80, während der Logarithmierer 72 und der Dividierer 74 zusammen eine Logarithmierungseinrichtung
82 bilden.
Die Steuereinrichtung 64 ist beispielsweise programmgesteuert
und bewirkt, dass eine Quadratsummenbildung von Werten durchgeführt wird, die
in dem Speicher 62 in x-Bit-Speicherplätzen 841 ... 84N
im x-Bit-Festkommadatenformat abgelegt sind. Die genaue Funktionsweise der Steuereinrichtung
64 wird Bezug nehmend auf Fig. 6 erläutert. Dabei wird insbesondere davon ausgegangen,
dass es sich bei den x-Bit-Festkommawerten in den Speicherplätzen 841
- 84N um Frequenzlinienwerte einer Frequenzgruppe handelt.
Zunächst untersucht die Steuereinrichtung 100 die
Frequenzlinienwerte der Gruppe in den Speicherplätzen 841 - 84N
und stellt einen gemeinsamen Skalierungsfaktor ein. Die Einstellung im Schritt 100
erfolgt, wie im Vorhergehenden erwähnt, basierend auf der Anzahl N und der
minimalen Anzahl ungenutzter Bitpositionen in den Speicherplätzen 841
- 84N. Insbesondere stellt sie den gemeinsamen Skalierungsfaktor auf
eine Potenz von 2 ein, wie z.B. 2s. Alternativ stellt die Steuereinrichtung
64 einen Schiebewert s ein, der dem gemeinsamen Skalierungsfaktor 2s
entspricht. Den Wert s oder 2s trägt die Steuereinrichtung zur Zwischenspeicherung
in ein internes oder externes Register 101 ein.
In einem darauffolgenden Schritt 102 veranlasst die Steuereinrichtung
64 die Schiebeeinrichtung 66, die Inhalte der Speicherplätze 841
- 84N mit den Frequenzlinienwerten der Gruppe gemäß dem gemeinsamen
Skalierungsfaktor bzw. dem Schiebewert um s Bitpositionen nach links zu schieben.
In einem Schritt 104 bewirkt die Steuereinrichtung 64 dann,
dass der Quadrierer 68 jeden Wert in den Speicherplätzen 841 - 84N
quadriert und die obere Hälfte des 2x-Bit-Ergebnisses in den entsprechenden
Speicherplatz 841 - 84N zurückschreibt. Der Quadrierer
68 ist beispielsweise ein Multiplizierer, wobei die Steuereinrichtung 104 in beide
x-Bit-Multiplikandenregister des Multiplizierers den jeweils zu quadrierenden Wert
aus einem der Speicherplätze 841 - 84N schreibt. Der
Quadrierer kann intern beispielsweise ein 2x-Bit-Ergebnisregister umfassen, wobei
jedoch die Steuereinrichtung 64 dafür sorgt, dass nur die obere Hälfte,
d.h. ein x-Bit-Festkommaquadrierungswert, in den entsprechenden Speicherplatz 841
- 84N zurückgeschrieben wird. Alternativ berechnet der Quadrier
im vorhinein lediglich eine x-Bit-Darstellung und besitzt deshalb auch nur ein x-Bit-Ausgangsregister.
In einem Schritt 106 bildet daraufhin die Steuereinrichtung
64 mittels des Summierers 70 eine Summe über alle Inhalte der Speicherpositionen
841 - 84N. Beispielsweise beginnt er mit der Summe der beiden
ersten Werte und schreibt das Ergebnis in ein x-Bit-Summenregister 86 im x-Bit-Festkommadatenformat.
Danach könnte die Steuereinrichtung 64 den Summierer 70 dazu verwenden, den
Wert mit der Speicherposition 86 mit den nachfolgenden Werten nacheinander zu addieren
und jeweils den bisherigen Wert in dem Speicherplatz 86 mit der entstehenden Summe
zu überschreiben. Alternativ könnte die Steuereinrichtung 64 dafür
sorgen, dass die Summe in eine der Speicherpositionen 841 - 84N
geschrieben und dort akkumuliert wird.
In einem Schritt 108 weist die Steuereinrichtung 64 dann
den Logarithmierer 72 an, die Summe in dem Speicherplatz 86 zu logarithmieren, und
daraufhin den Dividierer 74, das Ergebnis durch 64 zu dividieren. Das Zwischenergebnis
des Logarithmierers 72 wird dabei beispielsweise zurück in die Speicherposition
86 geschrieben, ebenso wie beispielsweise das Ergebnis des Dividierers 74. Falls
der Divisor eine Zweierpotenz ist, ist der Dividierer als einfache Schiebeeinrichtung
ausgeführt.
Nach dem Schritt 108 steht folglich in der Speicherposition
86 eine skalierte logarithmierte Darstellung der Quadratsumme. In einem Schritt
110 weist deshalb die Steuereinrichtung den Subtrahierer 76 an, von dem logarithmierten
und dividierten Wert in der Speicherposition 86 einen Wert abzuziehen, der von dem
im Zwischenspeicher 101 gespeicherten Skalierungsfaktor s abhängt, nämlich
den Wert 2*s/64.
Nachdem im Vorhergehenden Bezug nehmend auf die Fig. 4
- 6 bevorzugte Ausführungsbeispiele für die vorliegende Erfindung beschrieben
worden sind, wird im Folgenden ein Ausführungsbeispiel für einen Audiocodierer
beschrieben, bei dem eine Vorrichtung gemäß dieser Ausführungsbeispiele
implementiert ist.
Der Audiocodierer von Fig. 7, der allgemein mit 150 angezeigt
ist, umfasst eine Transformationseinrichtung 152, eine Gruppenenergieberechnungseinrichtung
154 und einen Codestromerzeuger 156, die in Reihe zwischen einen Eingang 158 und
einen Ausgang 160 des Codierers 150 geschaltet sind. Der Codestromerzeuger 156 verwendet
ein psychoakustisches Modell 162, um beispielsweise aus einem an dem Eingang 158
anliegenden und zu codierenden Audiosignal 164 Irrelevanzinformationen auszusondieren,
dessen Entfernung nicht oder kaum die Hörqualität des codierten Datenstroms
beeinträchtigt, der am Ausgang 160 ausgegeben wird. Obwohl es in Fig. 7 nicht
gezeigt ist, könnte es sein, dass der Codestromerzeuger 156 über einen
Rückkopplungspfad mit der Transformationseinrichtung 152 oder der Gruppenenergieberechnungseinrichtung
154 gekoppelt ist.
Das am Eingang 158 anliegende Audiosignal 164 liegt beispielsweise
als eine Folge von Audioabtastwerten vor, die mit einer vorbestimmten Abtastfrequenz
abgetastet wurden. Das Audiosignal 164 kann beispielsweise in einem PCM-Format vorliegen.
Bei 164 ist das Audiosignal als gegen die Zeit t aufgetragen dargestellt, wobei
die vertikale Achse die Amplitude A in willkürlichen Einheiten darstellt.
Die Transformationseinrichtung 152 transformiert dann das
Audiosignal 164 von einem Zeitbereich in einen Spektralbereich, indem dieselbe das
Audiosignal 164 in seine spektralen Bestandteile zerlegt. Insbesondere kann die
Transformationseinrichtung 152 beispielsweise aus einer Analysefilterbank mit 32
Bandpassfiltern bestehen. Genauer ausgedrückt zerlegt die Transformationseinrichtung
152 das Audiosignal 164 abschnittsweise in spektrale Komponenten. Die Abschnitte
bzw. Frames 166, für die die spektrale Zerlegung durchgeführt wird, überlappen
sich beispielsweise um 50 % in der Zeit. Für jede spektrale Komponente entsteht
somit für jedes aufeinander folgende Frame ein Spektralwert bzw. Frequenzlinienwert,
der in dem durch die Transformationseinrichtung 152 erzeugten Spektrogramm 168 durch
Punkte veranschaulicht ist. Auf diese Weise entstehen pro spektraler Komponente
eine Frequenzlinie aus einer Folge von Frequenzlinienwerten, wobei die Frequenzlinien
bei 168 mit waagerechten Pfeilen angedeutet sind, die lediglich für die drei
angedeuteten Frames 166 sichtbar in Frequenzlinienwerte aufgegliedert sind. In dem
Spektrogramm 168 ist eine willkürliche Anzahl von Frequenzlinien entlang der
spektralen Achse bzw. der Frequenzachse f angeordnet, wobei jedoch die tatsächliche
Anzahl von Frequenzlinien größer sein wird.
Basierend auf dem so entstehenden Spektrogramm 168 wird
der Codestromerzeuger 156 den codierten Datenstrom erzeugen. Jedoch benötigt
der Codestromerzeuger 156 hierfür nicht oder nicht immer die spektrale Zerlegung
in alle Spektralkomponenten. Vielmehr sind nach psychoakustischen Gesichtspunkten
die Frequenzlinien in Gruppen 170 eingeteilt, wie es durch Kreise angedeutet ist.
Insbesondere benötigt nun der Codestromerzeuger 156
zur Codestromerzeugung für jede Gruppe 170 von Frequenzlinien den zugehörigen
Signalenergiewert, d.h. die Quadratsumme der einzelnen Amplitudenwerte, d.h. die
Quadratsumme der Frequenzlinienwerte, und das für jedes der Frames 166.
Diese Berechnung wird durch die Gruppenenergieberechnungseinrichtung
154 durchgeführt. Sie berechnet für jede Gruppe 170 von Frequenzlinien
die Signalenergie als die Quadratsumme der Frequenzlinien, wobei die Gruppenenergieberechnungseinrichtung
154 beispielsweise wie in Fig. 4 und 5 gezeigt aufgebaut ist bzw. wie in Fig. 4
- 6 beschrieben agiert. Das Ergebnis der Gruppenenergieberechnungseinrichtung 154
sind Folgen 172 von Signalenergiewerten, nämlich eine Folge 172 pro Gruppe
170. Die Signalenergiefolgen 172 weisen folglich pro Frame 166 einen Signalenergiewert
auf, die wiederum mit einem Punkt entlang den Pfeilen 172 veranschaulicht sind.
Basierend auf diesen Folgen 172 von Signalenergiewerten
erzeugt dann der Codestromerzeuger 156 auf der Basis des psychoakustischen Modells
162 den codierten Datenstrom 160. Dabei besteht ein Vorteil bei der Weiterverarbeitung
der Signalenergiewerte in der Einrichtung 156 nicht nur darin, dass die Werte in
einem Festkommadatenformat mit der gleichen Anzahl an Bits vorliegen, wie die Frequenzlinienwerte
vorlagen, sondern auch darin, dass die Werte im logarithmischen Bereich vorliegen,
da es dieser Bereich ermöglicht Multiplikationen, Exponentationen und Divisionen
einfacher durchzuführen, da diese Rechenoperationen im logarithmischen Bereich
in einfachere Additionen/Subtraktionen und Multiplikationen/Divisionen übergehen.
Um dies zu veranschaulichen, werde beispielsweise der Fall
betrachtet, dass der Kodierer von Fig. 7 ein MPEG-Datenstrom ausgebe.
Der Audiocodierer von Fig. 7 ist beispielsweise ein MPEG
AAC-Codierer. In diesem Fall umfasst der Codestromerzeuger 156 ein TNS (temporal
noise shaping) Modul, in welchem der Codestromerzeuger 156 eine effiziente Berechnung
des energiegewichteten Spektrums vornimmt. Insbesondere führt das TNS-Modul
eine Berechnung mit den Signalenergien SE der Art
durch. Dies kann mit den Signalenergien im logarithmischen Format LD64, wie es
von der Gruppenenergieberechnungseinrichtung 154 verwendet wird, einfacher durchgeführt
werden. Das TNS-Modul berechnet X einfach zu LD64-1 (-LD64_SE >>
1), wobei a >> b eine Rechtsschiebeoperation des linksstehenden Operanden
a um die rechtsstehende Anzahl b von Bits anzeige, während LD64-1()
eine zu der Logarithmusfunktion LD64() inverse Funktion sei, d.h. eine Umkehrfunktion
der LD64-Funktion, und LD64_SE der Signalenergiewert im logarithmischen LD64-Format
sei, wie es von der Gruppenenergieberechnungseinrichtung 154 ausgegeben wird. "»
1" bezeichnet also einen Rechtsshift um 1 Bit, was einer Division durch 2 entspricht.
Die Division durch 2 entspricht, da sie im logarithmischen Bereich durchgeführt
wird, einer Quadratwurzel im linearen Bereich. Das Minuszeichen entspricht der Umkehrfunktion
1/x im linearen Bereich. Die Berechnung der LD64-1-Funktion kann mit
geringerer Komplexität realisiert werden als die Wurzelbildung und Inversion
des Ergebnisses, wie sie erforderlich wären, wenn die Signalenergien im linearen
Bereich dem Codestromerzeuger 156 zugeführt würden.
Der Codestromerzeuger 156 könnte auch einen codierten
MPEG-4 AAC-Datenstrom erzeugen und würden dann ein PNS- (Perceptual Noise Substitution)
Modul umfassen. Das PNS-Modul berechnet intern den Abstand zwischen Mithörschwelle
und Signalenergie in einer Frequenzgruppe 170. Insbesondere entscheidet das PNS-Modul
anhand des Abstands zwischen Mithörschwelle und Signalenergie, ob eine Rauschsubstitution
durchgeführt werden kann bzw. soll. Die größere Dynamik und damit
verbundene Genauigkeit der logarithmischen Darstellung der Signalenergien, wie sie
von der Gruppenenergieberechnungseinrichtung 154 ausgegeben werden, und Mithörschwellen,
die in dem Codestromerzeuger 156 ebenfalls in der logarithmischen Darstellung LD64
bereitgestellt werden, trägt hier einen entscheidenden Teil zur korrekten PNS-Entscheidung
bei. Insbesondere tritt in einer Kohärenzfunktion im PNS-Modul eine Division
und eine Wurzelberechnung in Form von
auf, wobei SE1, SE2 und SE3 Signalenergien sind, die von der Gruppenenergieberechnungseinrichtung
154 ausgegeben werden. Durch die logarithmische Darstellung der Signalenergien wird
diese Berechnung sehr vereinfacht und beschleunigt. Insbesondere kann das PNS-Modul
in dem Codestromerzeuger 156 die Berechnung von LD64_Y, also von Y im LD64-Format,
durchführen, indem sie folgendes berechnet:
wobei LD64_ SE# die logarithmische Darstellung des jeweiligen Signalenergiewertes
SE# sei, wie sie von der Gruppenenergieberechnungseinrichtung 154 ausgegeben wird.
Der Codestromerzeuger 156 kann beispielsweise auch ein
Mitte-Seite-Stereo-Modul aufweisen, das eine Mitte-Seite-Codierungsentscheidung
durchführt. In diesem MS-Modul werden für die Entscheidung, ob Mitte-Seite-
(MS-) Codierung verwendet werden soll oder nicht, eine Vielzahl von Divisionen berechnet,
nämlich von Mithörschwelle zu Signalenergie. Diese Divisionen gehen durch
die Verwendung des LD64-Formats, wie es von der Gruppenenergieberechnungseinrichtung
154 ausgegeben wird, in einfache Subtraktionen über. Die Schwellwerte, ab denen
eine MS-Codierung verwendet werden soll, sind konstant und können somit schon
im Quellcode in den logarithmischen Bereich überführt sein, wodurch zur
Programmlaufzeit keine weitere Rechenzeit benötigt wird. Dies trifft für
viele weitere Konstanten zu, die im modifizierten Code im Zusammenhang mit LD64-Berechnungen
verwendet werden. Obiges gilt insbesondere auch für das Intensitäts-Stereo-Modul
eines MPEG Layer-3 oder AAC-Encoders.
Der Codestromerzeuger 156 kann ferner einen Skalenfaktorschätzer
aufweisen, der eine Berechnung einer Lautheit vornimmt. Im Skalenfaktorschätzer,
der beispielsweise in einem Quantisierungsmodul des Codestromerzeugers 156 angeordnet
ist, erfolgt eine Berechnung der vierten Wurzel der Mithörschwellen, d.h. eine
Lautheitsberechnung. Durch Darstellung der Mithörschwelle mittels eines logarithmischen
Datenformats, nämlich des LD64, kann die Berechnung dieser vierten Wurzel sehr
effizient durch einfaches Rechtsschieben der logarithmischen Mittelschwellen um
2 Bits erfolgen. Der umgekehrte Schritt, also eine Potenzierung um 4, kann ebenfalls
sehr einfach über Linksschieben um 2 Bitstellen erfolgen.
Im Skalenfaktorschätzer des Codestromerzeugers 156
kann ferner beispielsweise eine Berechnung der Skalenfaktoren SCF, der einen Teil
der Quantisierungsschrittweite bildet, aus den modifizierten Mithörschwellen
MHS und den Signalenergien SE berechnet werden. Die Berechnung beinhaltet einen
Rechenschritt der Art SCF = log (k*MHS/SE), wobei log() einen Zehnerlogarithmus
bedeute und k eine konstante sei. Diese Berechnung kann durch die Verwendung des
LD64-Formats und einer dementsprechenden Umformung der Originalformel sehr elegant
und effizient gelöst werden. Insbesondere würde der Skalenfaktorschätzer
die Berechnung folgendermaßen vornehmen: SCF = log(k) + log2*64*(LD64_MHS -
LD64_SE) .
Obige Beispiele für mögliche Module innerhalb
des Codestromerzeugers 156 zeigen, dass die Verwendung des logarithmischen Datenformats
LD64 eine Effizienzsteigerung auf Festkommaprozessoren ermöglicht. Das logarithmische
Datenformat LD64 ermöglicht für viele Fälle erst, dass ein Audiocodec
mit hoher Audioqualität auf diesen Plattformen implementiert werden kann, wenn
eine bestimmte Audioqualität nicht unterschritten werden soll.
Insbesondere zeigten obige Beispiele für mögliche
Module in dem Codestromerzeuger 156, dass, da in der Verarbeitung der Signalenergien
und Mithörschwellen die meisten Rechenschritte mittels einer Division oder
Multiplikation durchgeführt werden, die Darstellung der Signalenergien, Mithörschwellen
und weiterer Energiewerte in einem logarithmischen Datenformat äußerst
zweckdienlich ist. Eine Division geht dadurch in eine Subtraktion und eine Multiplikation
in eine Addition über, was eine effiziente Darstellung und Verarbeitung der
Signalenergien und Mithörschwellen in einem Audiocoder mittels des dargestellten
logarithmischen Datenformats bedeutet. Die Signalenergien im linearen Bereich, d.h.
im nicht-logarithmischen Bereich, werden im Fractional-Festkommadatenformat dargestellt,
das einen Wertebereich von -1,0 bis +0,99999... aufweist.
Bei den vorhergehenden Ausführungsbeispielen wurde
zur Logarithmusbildung ein Logarithmus zur Basis 2, der Logarithmus Dualis LD, verwendet.
Bei einem Logarithmus Dualis entspricht ein Signalenergiewert von 0,25 im linearen
Bereich einem LD-Wert von -2. Einem Signalenergiewert von 0,3 im linearen Bereich
entspricht ein LD-Wert von - 1,7369656. Da auf einem Festkommaprozessor in der Regel
entweder ganzzahlige Werte, nämlich Integer, oder aber Fraktionalwerte, aber
üblicherweise keine Mischwerte dargestellt werden können, wurden in den
vorhergehenden Ausführungsbeispielen die LD-Werte im Rahmen des LD64-Formats
so skaliert, dass nur Fraktionalwerte zustande kommen. Eine andere Möglichkeit
bestünde natürlich darin, die Skalierung so zu wählen, dass nur ganzzahlige
Werte zustande kommen. Insbesondere wurde eine Skalierung mit einem Faktor 1/64
gewählt, da dieser Faktor für alle Wortbreiten bis zu 64 Bits anwendbar
ist und somit auch die gebräuchlichen Wortbreiten 48 Bit und 32 Bit abdeckt.
Die Berechnung des Logarithmusduales skaliert mit 1/64, d.h. des LD64-Formats, erfolgt
nach der Formel y = log2(x)/64 = LD64(x). Unter verzicht auf die erweiterte
Portabilität könnte der Faktor natürlich auch erhöht werden,
nämlich bis zu 1/y, wobei y die Anzahl der Bits der nicht-logarithmierten skalierten
Quadratsumme sei.
Fig. 3 zeigt den Graphen der Logarithmusfunktion. Es ist
hierbei die Charakteristik der Logarithmusfunktion zu erkennen, die für kleinere,
also in einer Festkommadarstellung eigentlich ungenauere, Eingangswerte x (näher
an 0,0) eine größere Anzahl von Ausgangswerten y, also eine feinere Auflösung,
im logarithmischen Bereich bietet, die, weil sie betragsmäßig größer,
d.h. näher an -1,0, sind, somit in einer Festkommadarstellung genauer sind.
Ein Genauigkeitsverlust bei der Berechnung der Signalenergien vor dem Übergang
in den logarithmischen Bereich wurde gemäß obiger Ausführungsbeispiele
durch den gemeinsamen Skalierungsfaktor bzw. den gemeinsamen Schiebewert vor der
Quadrierung vermieden.
Das Ausführungsbeispiel von Fig. 7 stellt somit einen
Codierer dar, der ein skaliertes oder auch nicht-skaliertes logarithmisches Datenformat
im psychoakustischen Modell und/oder im Quantisierungsmodul zur Darstellung und
Verarbeitung der Signalenergien und Mithörschwellen verwendet. Es wird jedoch
darauf hingewiesen, dass die vorhergehende Beschreibung des Logarithmus Dualis und
der Skalierung mit 1/64 nur beispielhaft war. Durch die logarithmische Darstellung
wird in jedem Fall eine schnellere Ausführung einer Vielzahl von Berechnungen,
wie z.B. im Mitte-Seite-Entscheidungsmodul und dem Skalenfaktorschätzer des
Quantisierungsmoduls, erreicht, da wie erwähnt die dort ursprünglichen
vorhandenen Divisionen durch die Verwendung des logarithmischen Formats in einfache
Subtraktionen übergehen, die auf einem Festkommaprozessor um ein Vielfaches
schneller durchzuführen sind. Dasselbe gilt für Wurzelberechnungen, wie
z.B. die Berechnung einer Quadratwurzel, einer vierten Wurzel usw., die in einfache
Rechtsshifts übergehen. Der Rechenaufwand, der für den Übergang in
den logarithmischen Bereich aufgewendet werden muss, wird durch den Geschwindigkeitsgewinn
in den späteren Schritten des Algorithmus bei weitem wieder Wett gemacht. Die
Vorteile obiger Ausführungsbeispiele liegen also insbesondere in der höheren
Genauigkeit der logarithmisch dargestellten Werte sowie in der höheren Verarbeitungsgeschwindigkeit
bei Verwendung der logarithmischen Darstellung.
Bezug nehmend auf die vorhergehende Beschreibung wird darauf
hingewiesen, dass die vorliegende Erfindung nicht auf Festkommadatenformate eingeschränkt
ist. Obige Ausführungsbeispiele, die sich auf eine Quadratsummenbildung von
Werten beziehen, könnten auch bei Werten sinnvoll angewendet werden, die nicht
in einem Festkommadatenformat, sondern in einem Integer-Datenformat vorliegen. In
diesem Fall würden die höherwertigeren y-Bits aus dem 2x-Bit-Quadratsummenergebnis
der Logarithmierung zugeführt werden.
Nach den vorhergehenden Ausführungsbeispielen wurde
eine Logarithmierungsfunktion verwendet, bei der eine Skalierung um 1/64 vorgenommen
worden ist. Dieser Faktor ist sinnvoll, falls ein und dieselbe Codierung auf verschiedenen
Plattformen mit unterschiedlichen Festkommadatenformaten laufen soll. Es ist aber
ferner möglich, dass der Faktor in der Logarithmusfunktion lediglich größer
als x, d.h. größer als die Anzahl der Bits der Werte ist, die der Quadratsummierung
zugeführt werden.
Ferner wird Bezug nehmend auf die vorhergehenden Ausführungsbeispiele
darauf hingewiesen, dass die vorliegende Erfindung nicht auf eine Quadratsummenbildung
begrenzt ist. Die vorliegende Erfindung könnte beispielsweise auch vorteilhaft
sein, wenn die Gruppen nur lediglich aus einem Wert bestehen, so dass lediglich
eine Codierung durchgeführt wird. In diesem Fall müsste die Steuereinrichtung
36 natürlich nicht die Skalierungsfaktorinformationen irgendwie antizipieren.
Vielmehr ergäbe sich in diesem Fall der Skalierungsfaktor, der vor der Quadrierung
zur Skalierung des Wertes verwendet würde, automatisch aus der Anzahl an gültigen
Bits bzw. der Anzahl an unbenutzten Bits. Ganz allgemein kann die vorliegende Erfindung
zur Bildung einer Darstellung eines von einem Quadrat eines Wertes linear abhängigen
Ergebnisses verwendet werden.
Ferner wird Bezug nehmend auf die vorhergehende Beschreibung
noch darauf hingewiesen, dass die vorliegende Erfindung natürlich nicht auf
den Einsatz im Rahmen der Audiocodierung eingeschränkt ist. Die gleichen Vorteile,
die im Vorhergehenden in Bezug auf die Audicodierung beschrieben worden sind, nämlich
das Erzielen eines gleichen Skalierungsniveaus für die einzelnen Signalenergien
unter Bewahrung des Dynamikbereichs und gleichzeitiger Verringerung des Audiocodieraufwands,
können sich auch bei anderen Anwendungsgebieten ergeben, wie z.B. bei dem Versehen
einer Audiodatei mit einem Wasserzeichen oder dergleichen.
Insbesondere wird darauf hingewiesen, dass abhängig
von den Gegebenheiten das erfindungsgemäße Schema auch in Software implementiert
sein kann. Die Implementation kann auf einem digitalen Speichermedium, insbesondere
einer Diskette oder einer CD mit elektronisch auslesbaren Steuersignalen erfolgen,
die so mit einem programmierbaren Computersystem zusammenwirken können, dass
das entsprechende Verfahren ausgeführt wird. Allgemein besteht die Erfindung
somit auch in einem Computerprogrammprodukt mit auf einem maschinenlesbaren Träger
gespeicherten Programmcode zur Durchführung des erfindungsgemäßen
Verfahrens, wenn das Computerprogrammprodukt auf einem Rechner abläuft. In
anderen Worten ausgedrückt kann die Erfindung somit als ein Computerprogramm
mit einem Programmcode zur Durchführung des Verfahrens realisiert werden, wenn
das Computerprogramm auf einem Computer abläuft.