-
Die
Erfindung betrifft ein Signalkodierverfahren, ein Signalkodiergerät, ein Signalübertragungsverfahren,
ein Signalaufzeichnungsmedium, ein Signaldekodierverfahren und ein
Signaldekodiergerät,
die sich für den
Einsatz in einem System zur Kodierung oder Dekodierung von digitalen
Audiosignalen eignen.
-
Als
eine Art von effizienter Kodierung zur hocheffizienten Bitkomprimierung
von zeitseriellen Abtastdatensignalen, wie digitalen Audiosignalen
zum Zwecke der Kodierung ist eine Transformationskodierung bekannt,
die eine sogenannte spektrale Transformation benutzt.
-
Diese
Transformationskodierung stellt eine Verarbeitung dar, bei der ein
Eingangssignal in Blöcke
unterteilt und zur Kodierung dann in den jeweiligen Blockeinheiten
eine spektrale Transformation implementiert wird. Die diskrete Cosinustransformation
(DCT) stellt eine repräsentative
spektrale Transformation bei der Transformationskodierung dar.
-
Bei
einer solchen Transformationskodierung wird die Blockverzerrung,
durch die diskontinuierliche Verbindungs-(Vereinigungs)-Abschnitte
zwischen Blöcken
als Geräusch
wahrgenommen werden, zu einem Problem. Zur Reduzierung der Blockverzerrung
benutzt man üblicherweise
ein Verfahren, das es erlaubt, die Endabschnitte eines Blocks mit
angrenzenden Blöcken
zu überlappen.
-
Bei
der sogenannten MDCT (der modifizierten DCT oder der verbesserten
DCT) wird für
Abtastproben an Überlappungsabschnitten
keine Doppelübertragung
durchgeführt,
während
ein beliebiger Block mit den in beiden Richtungen anschließenden Blöcken in
Hälften
(Halbblöcken) überlappen
kann, so daß diese
MDCT sich für
eine effiziente Kodierung eignet.
-
Die
Kodierung und Dekodierung mit Hilfe einer solchen MDCT bzw. der
IMDCT, die deren inverse Transformationsverarbeitung darstellt,
ist z.B. in Mochizuki, Yano, Nishitani "Filter Constraints of Plural Block Size
Mixed MDCT", Technical
Research Report of Institute of Electronics ans Communication Engineers
of Japan, CAS90-10, DSP 90-14, Seiten 55–60, oder in Hazu, Sugiyama,
Iwatare, Nishitani "Adaptive
Block Length Adaptive Transform Coding using MDCT (ATC-ABS)", Society of Electronics
and Information Communication Engineers of Japan Spring National
Meeting Lecture Collection of 1990, A-197 usw. beschrie ben. Die
Verarbeitungsprozedur, bei der MDCT bzw. IMDCT benutzt wird, wird
im folgenden anhand von 12 kurz
beschrieben.
-
In
der Darstellung von 12 besitzt ein beliebiger Block
von zeitseriellen Abtastdaten, z.B. der J-te Block, Abschnitte,
die mit dem (J – 1)-ten
Block bzw. dem (J + 1)-ten Block zur Hälfte (50%) überlappen. Wenn die Zahl der
Abtastproben des J-ten Blocks mit N (N ist eine natürliche Zahl)
angenommen wird, besitzt der J-te Block eine Überlappung mit N/2 Abtastproben
zwischen dem J-ten Block und dem (J – 1)-ten Block sowie eine Überlappung
von N/2 Abtastproben zwischen dem J-ten Block und dem (J + 1)-ten
Block. Für
die Transformation wird auf die jeweiligen Blöcke, z.B. einen beliebigen
J-ten Block mit zeitseriellen Eingangsdaten d01, ein Vorverarbeitungsfilter
oder -fenster Wh angewendet, um (eine Anzahl von) N zeitseriellen
Daten d02 zu gewinnen.
-
Als
Kennlinie des Vorverarbeitungsfilters oder des Transformationsfensters
Wh wird der statistischen Eigenschaft des Eingangssignals entsprechend
eine Kennlinie gewählt,
bei der der Grad der Leistungskonzentration der Transformationsdaten
zu einem Maximum wird. Durch Anwendung einer linearen Transformation mit
MDCT auf die zeitseriellen Daten d02 mit N Abtastproben wird eine
(Zahl von) N/2 unabhängigen
Spektraldaten d03 auf der Frequenzbasis gewonnen, die halb so groß ist wie
Zahl der Abtastproben des Eingangssignals, welche Pegel von Spektralkomponenten
angeben. Durch die Anwendung der linearen inversen Transformation
(IMDCT) auf die (Zahl von) N/2 Spektraldaten d03 wird (eine Zahl
von) N zeitseriellen Daten d04 gewonnen. Auf diese zeitseriellen
Daten d04 wird ein Synthesefilter oder -fenster Wf für die inverse
Transformation angewendet, um zeitserielle Daten d05 zu gewinnen
und diese anschließend
zu den Ausgangsergebnissen der vorangehenden und nachfolgenden Blöcke zu addieren
und so die ursprünglichen
zeitseriellen Eingangs-Abtastdaten zu restaurieren (rekonstruieren).
-
Die
herkömmliche
effiziente Kodierung benutzt ein Verfahren, um die in der oben beschriebenen
Weise gewonnenen Spektraldaten d03 in mehrere Einheiten pro Band
zu unterteilen und alle diese Einheiten zu normieren, um eine Quantisierung
unter Berücksichtigung
der Eigenschaften des Gehörsinns
durchzuführen und
die jeweiligen Einheiten zusammen mit Normierungskoeffizienten aufzeichnen
oder zu übertragen.
-
Darüber hinaus
wurde eine Entropiekodierung implementiert, wie sie in ISO11172-3
des ISO-Standards beschrieben ist, bei der Daten mit großer Häufigkeit
kurze Codes bzw. Daten mit niedrigerer Häufigkeit lange Codes zugeteilt
werden. Auf diese Weise wird die Effizienz verbessert.
-
Wenn
eine Entropiekodierung in dieser Weise implementiert wird, sind
die Bitzahlen nach der Kodierung allerdings für jeden Block der zugeführten zeitseriellen
Abtastdaten unterschiedlich. Unter diesen Umständen kann die resultierende
Bitzahl größer sein
als die Bitzahl in dem Zustand vor der Implementierung der Entropiekodierung.
-
Darüber hinaus
tritt der Nachteil auf, daß die
zur Implementierung der Entropiekodierung erforderliche Hardware
umfangreicher wird. Nun gibt es Anwendungen, bei denen die Kodiereffizienz
verbessert werden muß,
selbst wenn dadurch der Hardwareumfang anwächst, und Anwendungen, bei
denen der Hardwareumfang reduziert werden muß und keine so große Kodiereffizienz
benötigt
wird. Es ist schwierig, diese gegensätzlichen Anforderungen zu erfüllen.
-
Ein
Signalkodierverfahren mit allen Merkmale des Oberbegriffs von Anspruch
1 ist in PUR-CELL;
STEPHEN, C.: "The
C-Cube CL550 JPEC Image Compression Processor", 01. März 1991, IEEE COMPUTER SOCIETY,
XP-10022526A, LOS ALAMITOS, CA, USA, beschrieben.
-
Aus
EP-A-0 424 016 ist außerdem
ein Signalkodierverfahren zum Kodieren eines Audiosignals bekannt,
bei dem der Tonalitätsschätzwert eine
Statistik aus mehreren vorangehenden Zeitrahmen benutzt, um den
Wert einer gegebenen Leistungsspektrums-Frequenzlinie in dem laufenden
Zeitrahmen zu prädizieren.
-
Es
ist ein Ziel der Erfindung, ein Signalkodierverfahren, ein Signalkodiergerät, ein Signalübertragungsverfahren,
ein Signalaufzeichnungsmedium, ein Signaldekodierverfahren und ein
Signaldekodiergerät
zur Verfügung
zu stellen, die sich sowohl für
den Fall eignen, in dem eine effizientere Kodierung benötigt wird,
als auch für
den Fall, in dem eine einfachere Hardware eingesetzt werden soll.
-
Dieses
Ziel wird erreicht durch ein Signalkodierverfahren, ein Signalkodiergerät, ein Signalübertragungsverfahren,
ein Signalaufzeichnungsmedium, ein Signaldekodierverfahren und ein
Signaldekodiergerät nach
den anliegenden unabhängigen
Ansprüchen.
Vorteilhafte Merkmale der Erfindung sind in den entsprechenden Unteransprüchen definiert.
-
Wenn
im Zusammenhang mit der der vorliegenden Erfindung die Forderung
nach kompaktem Hardwareumfang des Kodierers besteht, genügt es, ein
Kodiergerät
herzustellen, das nur eine einzige Codetabelle vorsieht, und diese
eine Codetabelle bei der Kodierung zu benutzen. Wenn eine höhere Kodiereffizienz
ermöglicht
werden soll, genügt
es, ein Kodiergerät
herzustellen, das mehrere Codetabellen vorsieht, und eine Codetabelle
auszuwählen,
die für
alle betreffenden Rahmen, die betreffenden Blöcke, die betreffenden Einheiten oder
die betreffende Anzahl von Kodierstufen eine Kodierung mit der höchsten Effizienz
ermöglicht.
-
In
jedem Fall wird dafür
gesorgt, daß die
Codetabellen-Identifiziersignale übertragen oder aufgezeichnet
werden. Deshalb beherrscht die vorliegende Erfindung sowohl den
Fall, daß der
Hardwareumfang kompakt sein soll, als auch den Fall, daß eine höhere Kodiereffizienz
gefordert wird.
-
1 zeigt
ein Flußdiagramm,
in dem ein Teil der Operation des fundamentalen Ausführungsbeispiels eines
Signalkodierverfahrens gemäß der Erfindung
skizziert ist,
-
2 zeigt
ein Flußdiagramm,
in dem der andere Teil der Operation des fundamentalen Ausführungsbeispiels
des Signalkodierverfahrens gemäß der Erfindung
skizziert ist,
-
3 zeigt
ein Blockdiagramm eines Beispiels für eine Schaltungskonfiguration
eines effizienten Kodiergeräts,
mit dem das Signalkodierverfahren nach dem Ausführungsbeispiel realisiert wird,
-
4 zeigt
ein Blockdiagramm eines Beispiels der Schaltungskonfiguration der
Steuerschaltung von 3,
-
5 zeigt
ein funktionales Blockdiagramm eines weiteren Beispiels für die Konfiguration
zur Realisierung des Signalkodierverfahrens des Ausführungsbeispiels
in einer praktischeren Weise,
-
6 zeigt
eine Ansicht zur Erläuterung
eines Beispiels für
einen Rahmen des Ausführungsbeispiels,
-
7 zeigt
eine Ansicht zur Erläuterung
eines weiteren Beispiels für
einen Rahmen des Ausführungsbeispiels,
-
8 zeigt
eine Ansicht zur Erläuterung
einer Codekette für
die Übertragung
oder Aufzeichnung,
-
9 zeigt
ein Flußdiagramm,
in dem die Operation des fundamentalen Ausführungsbeispiels eines Signaldekodierverfahrens
gemäß der Erfindung
skizziert ist,
-
10 zeigt
ein Blockdiagramm eines Beispiels für die Schaltungskonfiguration
eines effizienten Dekodiergeräts,
mit dem das Signaldekodierverfahren nach dem Ausführungsbeispiel
realisiert wird,
-
11 zeigt
ein Blockdiagramm eines Beispiels der Schaltungskonfiguration der
in 10 dargestellten Dekodierschaltung für quantisierte
Daten,
-
12 zeigt
eine Ansicht zur Erläuterung
der Verarbeitungsprozedur für
die MDCT (modifizierte diskrete Cosinustransformation) und die (MDCT,
die deren inverse Transformationsverarbeitung darstellt.
-
Unter
Bezugnahme auf die anliegenden Zeichnungen werden nun bevorzugte
Ausführungsbeispiele der
Erfindung beschrieben.
-
1 und 2 zeigen
Flußdiagramme,
in denen die Prozedur der Kodierverarbeitung für den Fall skizziert ist, daß die Kodierung
unter Verwendung eines Ausführungsbeispiels
der Erfindung durchgeführt
wird.
-
Zunächst werden
in dem ersten Schritt S01 von 1 zeitserielle
Abtastdaten, z.B. PCM-Audiodaten usw.,
jeweils einer Blockbildung mit einer vorbestimmten Anzahl von Abtastproben
(im vorliegenden Beispiel N Abtastproben) unterzogen (sie werden
in Blöcke
unterteilt). Wie 12 zeigt, werden die Blöcke jeweils
so eingerichtet, daß die
Größe der Überlappung
zwischen einander benachbarten Blöcken gleich 50% wird, d.h. daß sie einander
um N/2 Abtastproben überlappen.
Auf die Abtastdaten des j-ten Blocks der zeitseriellen Daten wird
ein Transformationsfenster Wh angewendet, wie dies in 12 dargestellt
ist. In dem nachfolgenden Schritt S02 wird hierauf MDCT angewendet,
so daß man
(eine Anzahl von) N/2 Spektraldaten erhält, die die Pegel von Spektralkomponenten
repräsentieren.
-
In
dem folgenden Schritt S03 werden z.B. für mehrere Einheiten, die durch
Unterteilen der Spektraldaten in einer den sogenannten kritischen
Bändern ähnlichen
Form, gewonnen werden, Normierungskoeffizienten berechnet. Auf die
Spektraldaten wird eine Normierung angewendet. Diese Einheiten werden
weiter unten beschrieben.
-
In
dem folgenden Schritt S04 wird geprüft, ob die Bitrate bei der Übertragung
der kodierten Daten, d.h. die Transfer-Bitrate des Mediums oder Übertragungsweges
gleich oder größer ist
als die voreingestellte Zahl p oder nicht. Wenn die Transfer-Bitrate
gleich oder größer p ist,
geht die Verarbeitung weiter zu dem in 2 dargestellten
Schritt S10. Wenn die Transfer-Bitrate kleiner ist als p, geht die
Verarbeitung weiter zu dem Schritt S05 von 1.
-
In
dem Schritt S05 und in dem Schritt S10 werden die Quantisierungsstufenzahlen
berechnet, die für jede
Einheit erforderlich sind, wobei der Einfluß des Gehörsinns berücksichtigt wird. Die Verarbeitung
geht dann weiter entweder zu dem nachfolgenden Schritt S06 oder
zu dem Schritt S11 von 2.
-
In
dem Schritt S06 von 1 wird z.B. für jede Einheit
eine optimale Codetabelle ausgewählt.
Die optimale Codetabelle, auf die hier Bezug genommen wird, kann
z.B. eine Codetabelle mit der höchsten
Kodiereffizienz sein oder für
den Fall, daß irgendwelche
Hardwarebeschränkung
usw. besteht, eine geeignete Codetabelle, die durch die Ausführung einer
vereinfachten Berechnung festgelegt wird.
-
In
dem folgenden Schritt S61 wird die Bitzahl berechnet, die benötigt wird,
wenn die Kodierung mit der in dem Schritt S06 ausgewählten Codetabelle
durchgeführt
wird. Die Verarbeitung geht dann weiter zu dem nachfolgenden Schritt
S07.
-
In
dem Schritt S07 wird geprüft,
ob die in dem Schritt S61 berechnete Bitzahl innerhalb des Werts
n liegt, der einer voreingestellten Bitrate entspricht. Falls die
Bitzahl größer ist
als n, wird in dem Schritt S16 die Quantisierungsstufenzahl zurückgesetzt.
Auf diese Weise kehrt die Verarbeitung zum zweiten Mal zu dem Schritt
S06 zurück.
Wenn die Bitzahl in dem Schritt S07 hingegen innerhalb von n liegt,
geht die Verarbeitung weiter zu dem nächsten Schritt S08.
-
In
dem Schritt S08 werden die Spektraldaten mit der aktuellen Quantisierungsstufenzahl
quantisiert, um anschließend
jede Einheit mit der in dem Schritt S06 ausgewählten Codetabelle zu kodieren.
Die Verarbeitung geht dann weiter zu dem Schritt S09.
-
In
dem Schritt S09 wird ein Flag ausgewählt, das anzeigt, daß das Identifizierungs-(ID)-Signal
der Codetabelle für
jede Einheit als Flag der Codetabelle dieses Rahmens unabhängig übertragen
oder aufgezeichnet wird, um das ID-Signal der verwendeten Codetabelle
(Codetabellen-Unterinformation), den Normierungskoeffizienten und
die Quantisierungsstufenzahl jeder Einheit zusammen mit den in dem
Schritt S08 kodierten Spektraldaten auszugeben. Damit ist die Verarbeitung
beendet.
-
In
dem Schritt S11 von 2 wird eine einzige Codetabelle
ausgewählt,
die in diesem Rahmen benutzt wird. In dem nachfolgenden Schritt
S12 wird diese Codetabelle benutzt, um die bei der Kodierung verwendete
Bitzahl zu berechnen.
-
In
dem nächsten
Schritt S13 wird geprüft,
ob oder ob nicht die in dem Schritt S12 berechnete Bitzahl innerhalb
des Werts n liegt, der für
eine voreingestellte Bitrate ausreicht. Falls die Bitzahl größer ist
als n, wird die Quantisierungsstufenzahl in dem Schritt S17 zurückgesetzt.
Auf diese Weise kehrt die Verarbeitung zum zweiten Mal zu dem Schritt
S11 zurück.
Falls in dem Schritt S13 hingegen festgestellt wird, daß die erforderliche
Bitzahl innerhalb von n liegt, geht die Verarbeitung weiter zu dem
Schritt S14.
-
In
dem Schritt S14 wird eine Prozedur durchgeführt, um die Spektraldaten mit
der aktuellen Quantisierungsstufenzahl zu quantisieren und anschließend alle
Spektraldaten mit in dem Schritt S11 eingerichteten einzigen Codetabelle
zu kodieren.
-
In
dem folgenden Schritt S15 wird eine Prozedur durchgeführt, bei
der das die benutzte Codetabelle kennzeichnende Flag als ein Flag
ausgewählt
wird, das die Codetabelle dieses Rahmens repräsentiert, und bei der der Normierungskoeffizient
und die Quantisierungsstufenzahl jeder Einheit zusammen mit den
in dem Schritt S14 kodierten Spektraldaten ausgegeben werden. Auf
diese Weise wird die Verarbeitung beendet.
-
Als
Codetabelle des oben beschriebenen Typs ist eine Codetabelle denkbar,
die den Huffman-Code benutzt, bei dem es sich um eine Art von Entropie-Codes
usw. handelt. So können
mehrere Huffman-Code-Tabellen vorgesehen sein, um die oben beschriebene
Verarbeitung auszuführen.
Als Codetabellenwert können auch
die Werte selbst benutzt werden, nachdem sie einer Quantisierung
unterzogen wurden. Das heißt,
mehrere vorgesehene Tabellen können
irgendeinen Code aufweisen, dessen Typ nicht auf den Entropie-Code
beschränkt
ist. Wenn die Werte selbst als Codetabellenwert benutzt werden,
nachdem sie einer Quantisierung unterzogen wurden, entspricht dies
im wesentlichen der Tatsache, daß keine Verarbeitung unter
Verwendung einer Codetabelle durchgeführt wird, wobei jedoch auch
die Verarbeitung, die einen solchen Fall einschließt, im vorliegenden
Ausführungsbeispiel
ebenfalls als Kodierung mittels Codetabelle bezeichnet wird.
-
Die
Beschreibung geht bei diesem Ausführungsbeispiel davon aus, daß für einen
Rahmen nur eine Codetabelle ausgewählt wird, wenn die Bitrate
einen vorbestimmten Wert hat oder größer ist. Darüber hinaus sind
jedoch verschiedene Beispiele denkbar, z.B. daß der Benutzer im voraus eine
Codetabelle auswählt
oder dgl.. Bei der vorliegenden Erfindung gibt es keine Beschränkung, insbesondere
was die Beziehung zwischen dem Fall betrifft, bei dem für einen
Rahmen nur eine Codetabelle ausgewählt wird, und dem Fall, bei
dem zwischen einer Mehrzahl von Codetabellen wahlweise umgeschaltet
wird, um das jeweils ausgewählte
Exemplar zu benutzen.
-
In
der folgenden Tabelle 1 ist ein praktisches Beispiel einer Codetabelle
dargestellt, die bei der Kodierung der einzelnen Rahmen benutzt
wird, sowie das Flag, das seine Anwendbarkeit kennzeichnet.
-
-
In
dieser Tabelle 1 bedeutet z.B. das Flag "00",
daß alle
Spektraldaten in dem Rahmen mit der Codetabelle CT0 kodiert werden.
Die Flags "01", "10" zeigen an, daß alle Spektraldaten
in dem Rahmen mit den Codetabellen CT1 bzw. CT2 kodiert werden.
Das Flag "11" zeigt an, daß die Spektraldaten
des Rahmens in jeder Einheit mit unterschiedlichen Codetabellen
kodiert werden. Es genügt,
an einer unterschiedlichen, vorbestimmten Position (Stelle) innerhalb
des gleichen Rahmens eine Information zu übertragen oder aufzuzeichnen,
die die Beziehung zwischen den jeweiligen Einheiten und den Codetabellen
angibt, mit denen diese Einheiten kodiert sind.
-
In
dem vorliegenden Ausführungsbeispiel
ist angegeben, daß die
Umschaltung zwischen Codetabellen in allen entsprechenden Einheiten
durchgeführt
wird. Es ist jedoch auch vorstellbar, zusätzlich zu der Umschaltung in
allen entsprechenden Einheiten z.B. bei allen entsprechenden Quantisierungsstufenzahlen
eine Umschaltung zwischen mehreren Codetabellen vorzunehmen. Ein
derartiges Beispiel fällt
ebenfalls in den Rahmen dieser Erfindung. In einem solchen Fall
sind natürlich
Signale (Codetabellen-Unterinformation), die an einer unterschiedlichen
Position (Stelle) durch ein Flag gesteuert und übertragen oder aufgezeichnet
werden, Signale für
alle betreffenden Quantisierungsstufenzahlen.
-
In
einem praktischeren Sinne ist dies der Anwendung einer Methode äquivalent,
die es ermöglicht,
daß die
Codetabelle, die ausgewählt
wird, wenn die Quantisierungsstufenzahl z.B. zwei Bits beträgt, und
die Codetabelle, die ausgewählt
wird, wenn die Quantisierungsstufenzahl z.B. drei Bits beträgt, voneinander
verschieden sind. Da die Quantisierungsstufenzahlen jeder der betreffenden
Einheiten zugeteilt werden, genügt es,
die Umschaltung zwischen Codetabellen in Abhängigkeit von den Quantisierungsstufenzahlen
in allen betroffenen Einheiten durchzuführen, um die durch das Umschalten
gewonnene Codetabelle für
die Kodierung zu benutzen.
-
Darüber hinaus
kann das Umschalten zwischen Codetabellen bei mehreren Blöcken auch
in jedem Block durchgeführt
werden. Für
den Fall, daß die
Umschaltung zwischen Codetabellen bei jeder Einheit, jedem Block
oder jeder Stufenquantisierungszahl durchgeführt wird, wobei diese Einheiten
kleiner sind als der Rahmen, wie dies oben beschrieben wurde, wird
ein Lösungsweg
beschritten, bei dem das in der Tabelle 1 dargestellte Flag "00", "01" oder "10" als Codetabellen-Unterinformation
bei jeder Codetabellen-Umschalteinheit übertragen wird, um durch das übertragene
Flag anzuzeigen, welche Codetabelle für die jeweilige Einheit, den jeweiligen
Block oder die jeweilige Quantisierungsstufenzahl benutzt wird.
-
Anhand
von 3 wird nun ein praktisches Beispiel eines effizienten
Kodiergeräts
zur Realisierung der oben beschriebenen Kodierverarbeitung beschrieben.
-
Das
in 3 dargestellte effiziente Kodiergerät benutzt
die Technologien der Teilbandkodierung (Bandteilungskodierung),
der adaptiven Transformationskodierung und der adaptiven Bitzuteilung.
Dabei wird ein Lösungsweg
beschritten, bei dem das zugeführte
digitale Signal, z.B. ein PCM-Audiosignal usw., in Signalkomponenten
in mehreren Frequenzbändern
zerlegt wird, wobei die Auswahl so getroffen wird, daß die Bandbreiten
in den jeweiligen Frequenzbändern
größer werden,
wenn die Frequenz zur höheren
Frequenzbandseite ver schoben wird, um dann in den einzelnen Frequenzbändern die
oben erwähnte
MDCT durchzuführen,
die eine orthogonale Transformation darstellt, um für die Spektraldaten
aller so gewonnenen unter Berücksichtigung
der sogenannten kritischen Bänder
eingerichteten Einheiten auf Frequenzbasis eine adaptive Bitzuteilung
durchzuführen
und diese Daten zu kodieren.
-
In
der Anordnung von 3 wird dem Eingang 3 z.B.
ein PCM-Audiosignal mit 0 bis 22 kHz zugeführt. Dieses Eingangssignal
wird mittels eines Bandteilungsfilters 12, z.B. eines sogenannten
QMF-Filters, in ein Signal mit einem Band von 0 bis 11 kHz und ein
Signal mit einem Band von 11 kHz bis 22 kHz zerlegt. Das Signalband
mit 0 bis 11 kHz wird von einem Bandteilungsfilter 13,
z.B. einem QMF-Filter, in ein Signalband mit 0 bis 5,5 kHz und ein
Signalband mit 5,5 kHz bis 11 kHz zerlegt. Das Signalband mit 11
kHz bis 22 kHz aus dem Bandteilungsfilter 12 wird in einem
zeitseriellen Abtastpuffer 40 temporär gespeichert und dann einer Schaltung 14 zugeführt, die
ein Beispiel für
eine orthogonale Transformationsschaltung darstellt und die modifizierte
diskrete Cosinustransformation (MDCT) durchführt. Das Signal in dem Band
von 5,5 kHz bis 11 kHz aus dem Bandteilungsfilter 13 wird
in einem zeitseriellen Abtastpuffer 41 temporär gespeichert
und dann einer MDCT-Schaltung 15 zugeführt. Das Signal in dem Band
von 0 bis 5,5 kHz aus dem Bandteilungsfilter 13 wird in
einem zeitseriellen Abtastpuffer 42 temporär gespeichert
und dann einer MDCT-Schaltung 16 zugeführt. Auf diese Weise werden
alle Signale einer MDCT-Verarbeitung unterzogen.
-
Die
Ausgangssignale der jeweiligen Bänder
aus den Bandteilungsfiltern 12, 13 werden, obwohl
dies hier nicht dargestellt ist, einer Einrichtung zur Festlegung
der orthogonalen Transformationsblockgröße zugeführt, in denen die Blockgrößen für die jeweiligen
Bänder
festgelegt werden. Die Blockgrößeninformation
wird den einzelnen MDCT-Schaltungen 14, 15, 16 zugeführt, in
denen die Filter-Ausgangssignale der einzelnen Bänder einer diesen Blockgrößen entsprechenden
Blockbildung und dann der orthogonalen Transformation unterzogen
werden. Für
die Länge
dieser Blockgröße wird,
wie in 6 dargestellt, z.B. eine Grundlänge von 11,6
ms festgelegt, und diese Länge
wird die maximale Blocklänge.
Diese maximale Blocklänge
wird als Transformationsrahmen oder einfach als Rahmen bezeichnet.
In dem unteren Frequenzband (0 bis 5,5 kHz) und dem mittleren Frequenzband
(5,5 kHz bis 11 kHz) kann z.B. entweder eine Blockgröße von 11,6
ms (Langmodus) oder von 2,9 ms (Kurzmodus) gewählt werden. In dem höheren Frequenzband
kann entweder eine Blockgröße von 11,6
ms (Langmodus) oder von 1,45 ms (Kurzmodus) gewählt werden.
-
Die
nach der MDCT-Verarbeitung in den jeweiligen MDCT-Schaltungen 14, 15, 16 gewonnenen
Spektraldaten auf Frequenzbasis (die auch als Koeffizientendaten
bezeichnet werden) werden in Spektraldatenpuffern 43, 44, 45 temporär gespeichert
und dann in allen Einheiten, die unter Berücksichtigung der kritischen Bänder eingerichtet
werden, einer Kodier schaltung 17 mit adaptiver Bitzuteilung
und einer Steuerschaltung 30 zugeführt. Die Steuerschaltung 30 ermittelt
aus den zugeführten
Spektraldaten einen Normierungskoeffizienten für jede Einheit (z.B. den Maximalwert
der Absolutwerte der Spektralkoeffizienten (im folgenden als Spektralsignale
bezeichnet), die in den jeweiligen Einheiten enthalten sind, und
die Quantisierungsstufenzahl (die Quantisierungsstufenzahl, die
der Bitzahl entspricht, bei der das Quantisierungsrauschen durch
ein Signal des entsprechenden kritischen Bandes hinreichend maskiert
wird). Kritische Bänder
sind Frequenzbänder,
die unter Berücksichtigung
der Eigenschaften des menschlichen Gehörsinns unterteilt sind und
als Bänder
so definiert werden, daß Schmalbandgeräusche in
der Nähe
der Frequenz eines reinen Tons die gleiche Intensität haben,
wenn dieser reine Ton durch diese Geräusche verdeckt wird. Die kritischen
Bänder
sind so festgelegt, daß die
Bandbreiten größer werden,
wenn die Frequenz sich zur höheren
Frequenzbandseite verschiebt. Das ganze Frequenzband von 0 bis 22
kHz ist z.B. in 25 kritische Bänder
unterteilt. Die Steuerschaltung 30 liefert den Normierungskoeffizienten
und die so festgelegte Quantisierungsstufenzahl an die Kodierschaltung 17 mit adaptiver
Bitzuteilung und liefert außerdem
den Normierungskoeffizienten und die Quantisierungsstufenzahl als
Kodiersteuerinformation an eine Codefolgen-Generatorschaltung 19.
-
Die
Kodierschaltung 17 mit adaptiver Bitzuteilung führt in allen
Einheiten eine Operation durch, um die zugeführten Spektraldaten durch die
von der Steuerschaltung 30 gelieferten Normierungskoeffizienten
zu normieren und die normierten Spektraldaten mit den von der Steuerschaltung 30 gelieferten
Quantisierungsstufenzahlen zu quantisieren.
-
Die
normierten und quantisierten Daten werden einer Kodierschaltung 18 für quantisierte
Daten zugeführt,
in der sie einer weiteren Kodierung, z.B. einer Entropiekodierung
mittels Codetabellen, unterzogen werden. Die kodierten Daten werden
an die Codefolgen-Generatorschaltung 19 ausgegeben. Die
Codefolgen-Generatorschaltung 19 multiplext die von der
Kodierschaltung 18 für
quantisierte Daten ausgegebenen kodierten Daten, den Normierungskoeffizienten,
die Quantisierungsbitzahl, die Codetabellen-ID-(Identifizierungs)-Information
und die Codetabellen-Unterinformation usw., die den kodierten Daten
entsprechen, um eine einem vorbestimmten Format entsprechende Codefolge
zu erzeugen und die so erzeugte Codefolge auszugeben. Ein ECC-Kodierer 46 addiert
einen Fehlerkorrekturcode zu der Codefolge aus der Codefolge-Generatorschaltung 19.
Das Ausgangssignal des ECC-Kodierers 46 wird
in einer EFM-Schaltung 47 moduliert. Die modulierten Daten
werden dann einem Aufzeichnungskopf 48 zugeführt. Der
Aufzeichnungskopf 48 zeichnet die von der EFM-Schaltung 47 ausgegebenen
Daten auf einer Platte 49 auf.
-
Bei
dem in 3 dargestellten Beispiel besteht die Kodierschaltung 18 für quantisierte
Daten z.B. aus einem Wählschalter
(Umschalter) 31 und drei Kodierern 32, 33, 34 mit
unter schiedlichen Codetabellen. Der Wählschalter 31 nach
Maßgabe
der Codetabellen-ID-Information oder der Codetabellen-Unterinformation
aus der Steuerschaltung 30 selektiv umgeschaltet. Als Codetabellen,
die in den Kodierern 32, 33 bzw. 34 benutzt werden,
dienen die Codetabellen CT0, CT1, CT2 der obigen Tabelle 1. Die
Codetabelle CT0 kann eine Tabelle sein, die die zugeführten quantisierten
Daten so ausgibt, wie sie sind, d.h. der Kodierer 32 kann
eine Schaltung sein, die in der Praxis ohne Codetabelle kodiert.
-
4 zeigt
den Aufbau der Steuerschaltung 30 in detaillierterer Darstellung.
Die Steuerschaltung 30 kann eine virtuelle Kodierung durchführen, um
bei der Erzeugung von Codefolgen, die tatsächlich übertragen oder aufgezeichnet
werden, verschiedene Parameter zu setzen.
-
Nach
der MDCT-Verarbeitung werden die Spektraldaten von einem Eingang 100 einer
Normierungskoeffizienten-Berechnungsschaltung 101 und einer
Quantisierungsstufenzahl-Berechnungsschaltung 102 zugeführt. Die
Normierungskoeffizienten-Berechnungsschaltung 101 berechnet
für alle
Einheiten Normierungskoeffizienten auf der Basis der zugeführten Spektraldaten
und gibt Normierungskoeffizientendaten an eine Kodierschaltung 103 mit
adaptiver Bitzuteilung und an die Kodierschaltung 17 mit
adaptiver Bitzuteilung sowie an die Codefolgen-Generatorschaltung 19 von 3 aus.
Die Schaltung 102 zur Festlegung der Quantisierungsstufenzahl
bestimmt in jeder Einheit die Quantisierungsstufenzahl auf der Basis
der zugeführten
Spektraldaten. Die Kodierschaltung 103 mit adaptiver Bitzuteilung
normiert und quantisiert in jeder Einheit die zugeführten Spektraldaten
auf der Basis der festgelegten Normierungskoeffizienten und Quantisierungsstufenzahlen.
Die normierten und quantisierten Daten werden Kodierern 104, 105 bzw. 106 zugeführt, die
den Kodierern 32, 33 bzw. 34 von 3 entsprechen,
in denen sie mit Hilfe von unterschiedlichen Codetabellen kodiert
werden.
-
Eine
Bitraten-Prüfschaltung 110 vergleicht
die über
einen Eingang 107 zugeführte
Information zur Transfer-Bitrate mit einem Schwellwert b. Wenn die
Transfer-Bitrate gleich oder größer ist
als der Schwellwert p, sendet die Bitraten-Prüfschaltung 110 eine
Anweisung an eine Minimaldaten-Auswahlschaltung 108, um
Minimaldaten auszuwählen,
bei denen die Bitzahl in jedem Rahmen ein Minimum ist. Wenn die
Transfer-Bitrate hingegen kleiner ist als der Schwellwert p, sendet
die Bitraten-Prüfschaltung 110 eine
Anweisung an die Minimaldaten-Auswahlschaltung 108, um
Minimaldaten auszuwählen,
bei denen die Bitzahl in jeder Einheit ein Minimum ist. Die Minimaldaten-Auswahlschaltung 108 wählt aus
den von den Kodierern 104, 105, 106 gelieferten kodierten
Daten in jedem Rahmen oder jeder Einheit solche Daten aus, bei denen
die Bitzahl ein Minimum ist, und gibt die ausgewählten Daten an eine Bitzahl-Prüfschaltung 109 aus.
-
Die
Bitzahl-Prüfschaltung 109 prüft, ob die
Bitzahl der Minimaldaten, die in jedem Rahmen oder in jeder Einheit
ausgewählt
werden, innerhalb eines Werts n liegt, bei dem eine voreingestellte
Bitrate befriedigt wird. Falls die Bitzahl größer ist als n, weist die Bitzahl-Prüfschaltung 109 die
Schaltung 102 zur Festlegung der Quantisierungsstufenzahl
an, die Quantisierungsstufenzahl zurückzusetzen. Falls die Bitzahl
der Minimaldaten größer ist
als n, wird die oben beschriebene Verarbeitung von der Kodierschaltung 103 mit
adaptiver Bitzuteilung, den Kodierern 104, 105, 106,
der Minimaldaten-Auswahlschaltung 108 und der Bitzahl-Prüfschaltung 109 wiederholt,
bis die Bitzahl der Minimaldaten innerhalb des Werts n liegt. Falls
die Bitzahl-Prüfschaltung 109 feststellt,
daß die
Bitzahl der Minimaldaten innerhalb des Werts n liegt, weist sie
die Schaltung 102 zur Festlegung der Quantisierungsstufenzahl
an, die aktuelle Quantisierungsstufenzahl an die Schaltung 17 zur
adaptiven Bitzuteilung und an die Codefolgen-Generatorschaltung 19 von 3 auszugeben.
Außerdem weist
die Bitzahl-Prüfschaltung 109 die
Minimaldaten-Auswahlschaltung 108 an, die Codetabelleninformation, die
den in diesem Zeitpunkt ausgewählten
Daten entspricht, an den Wählschalter 31 und
die Codefolgen-Generatorschaltung 19 auszugeben.
-
Die
Schaltung 17 von 3 zur adaptiven
Bitzuteilung führt
die oben beschriebenen Normierung und Quantisierung auf der Basis
des Normierungskoeffizienten und der Bitstufenzahl aus, die auf
diese Weise gewonnen werden. Darüber
hinaus wählt
die Kodierschaltung 18 für quantisierte Daten in jedem
Rahmen oder jeder Einheit auf der Basis der in dieser Weise ausgewählten Codetabelleninformation
eine entsprechende Codetabelle aus, um die Kodierung durchzuführen.
-
5 zeigt
ein weiteres Ausführungsbeispiel
für ein
effizientes Kodiergerät.
Komponenten, die Komponenten von 4 entsprechen,
sind hier mit den gleichen Bezugszeichen versehen, und auf ihre
detaillierte Erläuterung
wird zur Verkürzung
der Beschreibung verzichtet.
-
Die
Spektraldaten, die nach der MDCT-Verarbeitung von den Spektraldatenpuffern 43, 44, 45 geliefert werden,
werden einer Normierungskoeffizienten-Berechnungsschaltung 151 und
einer Schaltung 152 zum Festlegen der Quantisierungsstufenzahl
zugeführt.
Die Normierungskoeffizienten-Berechnungsschaltung 151 berechnet
auf der Basis der zugeführten
Spektraldaten für
jede Einheit einen Normierungskoeffizienten und gibt diesen an eine
Kodierschaltung 150 mit adaptiver Bitzuteilung und an eine
Codefolgen-Generatorschaltung 158 aus. Die Schaltung 152 zur
Festlegung der Quantisierungsstufenzahl bestimmt auf der Basis der
zugeführten
Spektraldaten die Quantisierungsstufenzahl in jeder Einheit und
gibt diese an die Kodierschaltung 150 mit adaptiver Bitzuteilung
und an die Codefolgen-Generatorschaltung 158 aus. Die Kodierschaltung 150 mit
adaptiver Bitzuteilung normiert und quantisiert in jeder Einheit
die von den Spektraldatenpuffern 43, 44, 45 gelieferten
Spektraldaten auf der Basis des Normierungskoeffizienten und der
festgelegten Quantisierungsstufenzahl.
-
Die
normierten und quantisierten Daten werden Kodierern 153, 154, 155 zugeführt, in
denen sie dann mit unterschiedlichen Codetabellen kodiert werden.
-
Die
Bitraten-Prüfschaltung 110 vergleicht
die über
einen Eingang 107 zugeführte
Information zur Transfer-Bitrate mit einem Schwellwert p, und wenn
die Transfer-Bitrate gleich oder größer ist als p, gibt die Bitraten-Prüfschaltung 110 eine
Anweisung an eine Minimaldaten-Auswahlschaltung 156 aus,
so daß diese Minimaldaten
auswählt,
bei denen die Bitzahl in jedem Rahmen ein Minimum ist. Wenn die
Transfer-Bitrate hingegen kleiner ist als p, gibt die Bitraten-Prüfschaltung 110 eine
Anweisung an die Minimaldaten-Auswahlschaltung 156 aus,
so daß Minimaldaten
ausgewählt
werden, bei denen die Bitzahl in jeder Einheit ein Minimum ist.
Die Minimaldaten-Auswahlschaltung 156 wählt aus den von den Kodierern 153, 154, 155 gelieferten kodierten
Daten diejenigen Daten aus, bei denen die Bitzahl in jedem Rahmen
oder in jeder Einheit ein Minimum ist, und liefert diese an eine
Bitzahl-Prüfschaltung 157.
Außerdem
liefert die Minimaldaten-Auswahlschaltung 156 an die Codefolgen-Generatorschaltung 158 eine
Codetabelleninformation, die den ausgewählten Minimaldaten entspricht.
-
Die
Bitzahl-Prüfschaltung 157 prüft, ob die
Bitzahl der in jedem Rahmen oder in jeder Einheit ausgewählten Minimaldaten
innerhalb eines Werts n liegt, der eine voreingestellte Rate befriedigt.
Falls die Bitzahl größer ist
als n, weist die Bitzahl-Prüfschaltung 157 die
Schaltung 152 zur Festlegung der Quantisierungsstufenzahl
an, die Quantisierungsstufenzahl zurückzusetzen. Falls die Bitzahl
der minimalen Daten größer ist
als n, wird der oben beschriebene Prozeß von der Kodierschaltung 150 mit
adaptiver Bitzuteilung, den Kodierern 153, 154, 155,
der Minimaldaten-Auswahlschaltung 156 und der Bitzahl-Prüfschaltung 157 wiederholt,
bis die Bitzahl der Minimaldaten innerhalb des Werts n liegt. Wenn
die Bitzahl-Prüfschaltung 157 feststellt,
daß die Bitzahl
der Minimaldaten innerhalb des Werts n liegt, liefert sie ihre Minimaldaten
an die Codefolgen-Generatorschaltung 158. Die Codefolgen-Generatorschaltung 158 multiplext
die von der Bitzahl-Prüfschaltung 157 ausgegebenen
kodierten Daten und den Normierungskoeffizienten, die Quantisierungsstufenzahl,
die Codetabellen-ID-Information und die Codetabellen-Unterinformation
usw., die den kodierten Daten entsprechen, um eine einem vorbestimmten
Format entsprechende Codefolge zu erzeugen und diese Codefolge auszugeben.
-
Für den Fall,
daß für einen
bestimmten Rahmen nur eine Codetabelle ausgewählt wird, existiert in einer
von der Codefolgen-Generatorschaltung 19 von 3 oder
der Codefolgen-Generatorschaltung 158 von 5 als
Information für
die Codetabelle in dem einem Rahmen nur das Flag, das die entsprechende
Codetabelle anzeigt (Codetabellen-ID-Information). Falls hingegen
Tabellen für
die jeweiligen Einheiten ausgewählt werden,
ist sowohl ein Flag enthalten, das anzeigt, daß für alle entsprechenden Einheiten
Tabellen ausgewählt sind (Codetabellen-ID-Information),
als auch ein Flag, das die Tabellen anzeigt, die in den jeweiligen
Einheiten tatsächlich
ausgewählt
sind (Codetabellen-Unterinformation).
-
6 zeigt
eine Ansicht, in der ein Beispiel für die Beziehung zwischen dem
oben beschriebenen Transformationsrahmen und den ausgewählten Codetabellen
dargestellt ist. Bei diesem Beispiel ist die Codetabelle in Richtung
der Zeitbasis durch die MDCT-Blockgröße geteilt, und es findet bei
allen Blöcken,
in die alle Ausgangsbänder
der Bandteilungsfilter 12, 13 in Richtung der
Frequenzbasis unterteilt sind, eine Umschaltung statt. Dementsprechend
wird als Codetabellen-ID-Information dieses Rahmens "11" ausgewählt. In
dem Beispiel von 5 ist in dem unteren Frequenzband,
dem mittleren Frequenzband und im oberen Frequenzband der Kurzmodus
als MDCT-Blockgröße gewählt. Deshalb
werden in dem unteren Frequenzband, dem mittleren Frequenzband und
dem oberen Frequenzband die betreffenden Blöcke die Blöcke, die in 5 durch
schraffierte Abschnitte gekennzeichnet sind. Darüber hinaus bilden in der Figur
die Flags "00", "01" und "10" Beispiele für Flags
der Codetabellen-Unterinformation, die die in den betreffenden Blöcken ausgewählten Codetabellen
kennzeichnet. In dem unteren Frequenzbereich sind vier Blöcken innerhalb
eines Transformationsrahmens z.B. die Werte "00", "01", "10" bzw. "10" zugeordnet (zugeteilt).
In dem mittleren Frequenzbereich sind vier Blöcken innerhalb eines Transformationsrahmens
z.B. die Werte "00", "01", "01" bzw. "10" zugeordnet (zugeteilt). In
dem oberen Frequenzband sind acht Blöcken innerhalb eines Transformationsrahmens,
z.B. die Werte "00", "00", "00", "01", "01", "01", "01" bzw. "01" zugeordnet (zugeteilt).
-
Wie
oben erläutert
wurde, ist es bei diesem Ausführungsbeispiel
möglich,
optimale Codetabellen für die
jeweiligen Blöcke
auszuwählen.
In diesem Fall wird in jeder Einheit, die durch weitere Unterteilung
der jeweiligen Blöcke
in Richtung der Frequenzbasis gewonnen wird, eine Normierung und
eine Quantisierung durchgeführt.
Die Auswahl der Codetabelle für
jede Einheit kann in der oben beschriebenen Weise durchgeführt werden.
-
7 zeigt
ein weiteres Beispiel für
den Transformationsrahmen. Bei diesem Beispiel ist die Blockgröße der orthogonalen
Transformation für
alle Bänder
auf 11,6 ms festgelegt. Das heißt,
es findet keine Umschaltung zwischen Langmodus und Kurzmodus in
Richtung der Zeitbasis statt. Indem man die Blockgröße der orthogonalen
Transformationsverarbeitung auf diese Weise fixiert, kann der Aufbau
der MDCT-Schaltung und der (MDCT-Schaltung vereinfacht werden. In
dem Beispiel von 7 ist der Transformationsrahmen
in Richtung der Frequenzbasis in 52 Bänder unterteilt, und der Transformationsrahmen
besteht letztlich aus 52 Einheiten. Für jede dieser Einheiten wird
eine Normierung und Quantisierung durchgeführt. Es ist außerdem möglich, für jede Einheit
eine Codetabelle auszuwählen.
Wenn die Kodierung so durchgeführt
wird, daß für einen Rahmen
als Ganzes eine einzige Codetabelle benutzt wird, wird in jedem
Rahmen als Codetabellen-ID-Information einer der Werte "00", "01" und "10" übertragen oder aufgezeichnet.
Falls für
jede Einheit eine Codetabelle für
die Kodierung ausgewählt
wird, wird als Codetabellen-ID-Information "11" übertragen
oder aufgezeichnet und als Codetabelle-Unterinformation für jede Einheit
wird einer der Werte "00", "01" und "10" übertragen oder aufgezeichnet.
-
Die
Basiseinheit in Richtung der Zeitbasis, d.h. die maximale Blockgröße der orthogonalen
Transformationsverarbeitung in 7 ist auf
11,6 ms gesetzt. Diese maximale Blockgröße kann jedoch auch für alle Bänder auf
23,2 ms festgesetzt werden. Außerdem
wird in dem oben beschriebenen Ausführungsbeispiel die Zahl der
Unterteilungen in Richtung der Frequenzbasis auf 52 gesetzt und
auf diese Weise die Unterteilung in Einheiten vorgenommen. Die Zahl
der Unterteilungen kann jedoch auch auf 32 gesetzt und so die Unterteilung in
entsprechende Einheiten vorgenommen werden. Das Frequenzband der
Eingangsdaten ist auf 0 bis 22 kHz gesetzt, statt dessen kann das
Frequenzband auch auf 0 bis 22,05 kHz gesetzt werden.
-
8 zeigt
eine Ansicht, aus der der Ausbau einer beispielhaften Codefolge
hervorgeht, die von der Codefolge-Generatorschaltung 19 oder
der Codefolge-Generatorschaltung 158 erzeugt und übertragen
oder aufgezeichnet wird. Obwohl in einer wirklichen Codefolge Informationen,
wie Spektraldaten, Normierungskoeffizienten und die Quantisierungsstufenzahlen
usw. enthalten sind, die einer Normierung, Quantisierung und Kodierung
unterzogen wurden, sind hier zur Vereinfachung der Darstellung nur
die Informationen gezeigt, die sich auf die Codetabelle beziehen.
In dieser Figur werden der (m – 1)-te
Rahmen, der (m + 1)-te Rahmen und der (m + 2)-te Rahmen jeweils
mit der einzigen Codetabelle CT0 kodiert. Deshalb werden als Codetabellen-ID-Signal
in der Codefolge in der Codefolge die Flags "00" pro
Rahmen übertragen.
Für den
m-ten Rahmen werden hingegen Codetabellen für jede Einheit ausgewählt, so
daß der
m-te Rahmen kodiert wird. Dementsprechend wird als Codetabellen-ID-Signal
das Flag "11" übertragen, das eine solche
Codetabellen-Anwendung anzeigt. Außerdem werden in jeder Einheit
die Werte "00", "01", ... "01" als Codetabellen-Unterinformation übertragen,
welche die für
die einzelnen Einheiten ausgewählten
Codetabellen anzeigen.
-
Es
ist zu beachten, daß eine
Kodierung, wie die Entropiekodierung usw. der Spektralsignale (Spektraldaten)
für alle
Bändern
durchgeführt
oder auf einen Teil der Spektralsignale angewendet werden kann.
Darüber
hinaus können
bei dieser Operation Spektralsignale der einzelnen Blöcke in mehrere
Einheiten unterteilt werden und auf diese Weise die Spektralsignale
in den einzelnen Einheiten normiert werden, um deren Verarbeitung
durchzuführen.
Durch die Anwendung eines solchen Lösungsweges kann die Verarbeitung
bei gleicher Verarbeitungswortlänge
mit höherer
Genauigkeit durchgeführt
werden. Ferner kann eine solche Unterteilung in Bänder oder
Einheiten in Abhängigkeit
von der Eigenschaft eines Eingangssignals variabel durchgeführt werden.
-
Hinsichtlich
der Kodierung von quantisierten Daten kann jedoch nicht nur eine
Entropiekodierung durchgeführt
werden, um Signalen, die häufiger
auftreten, Codes mit kurzer Wortlänge zuzuordnen (zuzuteilen)
und Signalen, die weniger häufig
auftreten, Codes mit größerer Wortlänge zuzuordnen
(zuzuteilen), sondern es kann auch eine Kodierung durchgeführt werden,
bei der eine völlig
andere spezielle Codetabelle benutzt wird.
-
9 zeigt
ein Flußdiagramm
der Signaldekodierprozedur zum Dekodieren von Signalen, wie sie durch
das oben beschriebene Kodierverfahren oder das effiziente Kodiergerät nach dem
Ausführungsbeispiel gewonnen
werden. Die Schritte S30 bis S35 von 9 stellen
jeweils Verarbeitungschritte dar.
-
In
dem ersten Schritt S30 von 9 wird das
Flag des Abschnitts ausgelesen, das die Codetabelle der Daten angibt,
die von dem effizienten Kodiergerät direkt oder über einen Übertragungsweg
zugeführt
oder von Aufzeichnungsmedien, wie Package-Medien usw., reproduziert
und eingegeben werden. Die Verarbeitungsprozedur geht dann weiter
zu dem Schritt S31.
-
In
dem Schritt S31 wird geprüft,
ob dieses Flag anzeigt, daß die
Codetabelle in jeder Einheit geändert (umgeschaltet)
wird und das ID-Signal der Codetabelle jeder Einheit unabhängig aufgezeichnet
oder übertragen
wird. Wenn das Flag anzeigt, daß die
Codetabelle in jeder Einheit umgeschaltet wird, geht die Verarbeitung
weiter zu dem Schritt S33. Falls das Flag hingegen anzeigt, daß der gesamte
Block mit einer einzigen Codetabelle kodiert ist, geht die Verarbeitung
weiter zu dem Schritt S32.
-
In
dem Schritt S32 wird die durch das Flag bestimmte Codetabelle für die Dekodierung
benutzt, um (eine Zahl von) N/2 Spektraldaten zu bilden. Die Verarbeitungsprozedur
geht dann weiter zu dem Schritt S35.
-
In
dem Schritt S33 wird das ID-Signal der Codetabelle ausgelesen, das
entsprechend jeder Einheit unabhängig
aufgezeichnet oder übertragen
wird. Die Verarbeitungsprozedur geht dann weiter zu dem Schritt S34.
-
In
dem Schritt S34 werden Codetabellen, die dem in dem Schritt S33
ausgelesenen ID-Signale
entsprechen, zur Dekodierung der Spektraldaten der betreffenden
Einheiten benutzt, um insgesamt (eine Zahl von) N/2 Spektraldaten
zu erzeugen. Die Verarbeitungsprozedur geht dann weiter zu dem Schritt
S35.
-
In
dem letzten Schritt S35 wird die inverse Quantisierung und Normierung
für die
dekodierten Spektraldaten durchgeführt, um anschließend die
IMDCT zu implementieren und das inverse Transformationsfenster anzuwenden,
um (eine Anzahl von) N zeitseriellen Abtastdaten zu ermitteln und
mit den Daten von in beiden Richtungen angrenzenden Blöcken zu
synthetisieren und das synthetisierte Ausgangssignal auszugeben. Damit
ist die Verarbeitung abgeschlossen.
-
Anhand
von 10 wird nun ein Dekodiergerät zur Realisierung der oben
beschriebenen Dekodierverarbeitung beschrieben, d.h. ein effizientes
Dekodiergerät
für die
Durchführung
einer zu der effizienten Kodierung inversen Verarbeitung.
-
In 10,
auf die hier Bezug genommen wird, wird eine Codefolge, die mittels
eines Wiedergabekopfes 51 von einer Platte 49 reproduziert
wird, einer EFM-Datendemodulierschaltung 52 zugeführt. Die
EFM-Datendemodulierschaltung 52 demoduliert die eingegebene
Codefolge. Die demodulierte Codefolge wird einem ECC-Dekodierer 53 zugeführt, der
eine Fehlerkorrektur durchführt.
Die fehlerkorrigierte Codefolge wird in einem Puffer 54 für kodierte
Daten temporär
gespeichert und dann an einer Codefolge-Trennschaltung 55 zugeführt. Die
Codefolge-Trennschaltung 55 demultiplext die Codefolge,
um einer Spektrumdekodierschaltung 22 einen Normierungskoeffizienten
und die Quantisierungsstufenzahl zuzuführen, liefert ein kodiertes
Spektralsignal, das normiert und quantisiert und mit Hilfe einer
Codetabelle quantisiert wurde, an eine Dekodierschaltung 21 für quantisierte
Daten und liefert die Information über die Codetabelle (Codetabellen-ID-Information,
Codetabellen-Unterinformation) an eine Codetabellen-Auswahlschaltung 56.
Die Codetabellen-Auswahlschaltung 56 dekodiert die Codetabellen-ID-Information,
um zu prüfen,
ob diese Information ein Flag ist, das bei der Dekodierung eines
gesamten Rahmens benutzt wird (z.B. "00", "01", "10"), oder ein Flag,
das anzeigt, daß die Codetabellen-Unterinformation
(z.B. "11") existiert. Falls
die Codetabellen-ID-Information ein Flag ist, das eine Codetabelle
anzeigt, die bei der Kodierung eines gesamten Rahmens benutzt wurde,
weist die Codetabellen-Auswahlschaltung 56 die Schaltung 21 zur
Dekodierung quantisierter Daten an, die Dekodierung für alle Einheiten
innerhalb eines entsprechenden Rahmens mit der durch das Flag gekennzeichneten
Codetabelle durchzuführen.
Falls die Codetabellen-ID-Information ein Flag ist, das anzeigt,
daß die
Codetabellen-Unterinformation existiert, dekodiert die Codetabellen-Auswahlschaltung 56 die
in jeder Einheit übertragene
Codetabellen-Unterinformation, um die Schaltung 21 zur
Dekodierung quantisierter Daten anzuweisen, die Dekodierung in jeder
Einheit mit der jeweiligen Codetabelle durchzuführen, die durch das Flag der
Codetabellen-Unterinformation gekennzeichnet ist.
-
Die
Schaltung 21 zur Dekodierung quantisierter Daten besteht,
wie in 11 dargestellt, z.B. aus einem
Wählschalter
(Umschalter) 200 und drei Dekodierern 201, 202, 203 mit
unterschiedlichen Codetabellen. In diesem Beispiel führen diese
drei Dekodierer 201, 202 bzw. 203 Verarbeitungen
durch, die zu denjenigen der Kodierer 32, 33, 34 (oder
der Kodierer 153, 154, 155) des effizienten
Kodiergeräts
invers sind. In der Schaltung 21 zur Dekodierung quantisierter
Daten wird der Wählschalter 200 in
jedem Rahmen oder in jeder Einheit auf der Basis eines Auswahlsignals
umgeschaltet, das von der Codetabellen-Auswahlschaltung 56 geliefert wird.
Auf diese Weise wird die Dekodierung mit derjenigen Codetabelle
durchgeführt,
die der bei der Kodierung benutzten Codetabelle entspricht.
-
Die
Spektrumdekodierschaltung 22 löst die inverse Quantisierung
und Normierung für
die Daten aus, die von der Dekodierschaltung 21 für quantisierte
Daten geliefert werden, wobei sie den Normierungskoeffizienten und
die Quantisierungsstufenzahl verwendet, die von der Codefolge-Trennschaltung 55 in
jeder Einheit geliefert werden, um Spektraldaten zu erzeugen. Die
Daten, die dem Band von 11 kHz bis 22 kHz dieser Spektraldaten entsprechen,
werden in einem Spektraldatenpuffer 57 temporär gespeichert
und dann in einer Anzahl von N/2 Daten einer IMDCT-Schaltung 23 zugeführt. Die
Daten, die dem Band von 5,5 kHz bis 11 kHz entsprechen, werden in
einem Spektraldatenpuffer 58 temporär gespeichert und dann in eine
Anzahl von N/2 Daten einer IMDCT-Schaltung 24 zugeführt. Die
Daten, die dem Band von 0 bis 5,5 kHz entsprechen, werden in einem
Spektraldatenpuffer 59 temporär gespeichert und dann in eine
Anzahl von N/2 einer IMDCT-Schaltung 25 zugeführt.
-
Die
IMDCT-Schaltungen 23, 24 bzw. 25 unterziehen
die Spektraldaten einer IMDCT, um ein inverses Transformationsfenster
anzuwenden und (eine Anzahl von) N zeitseriellen Abtastdaten zu
erzeugen. Die von den IMDCT-Schaltungen 23, 24, 25 ausgegebenen
zeitseriellen Abtastdaten werden in zeitseriellen Abtastpuffern 60, 61 bzw. 62 temporär gespeichert
und dann an Schaltungen 63, 64, 65 zum
Addieren überlappender Abschnitte
geliefert. Die Schaltungen 63, 64, 65 zum
Addieren überlappender
Abschnitte führen
eine Verarbeitung durch, bei der zeitserielle Abtastdaten, die in
den zeitseriellen Abtastpuffern 60, 61, 62 gespeichert
sind, zu den zeitseriellen Abtastdaten von Blöcken addiert werden, die in
beiden Richtungen angrenzen, um für alle betreffenden Bänder Signalwellenformdaten
auszugeben.
-
Die
so gewonnenen Signalwellenformendaten von 0 bis 5,5 kHz und die
Signalwellenformendaten von 5,5 kHz bis 11 kHz der Signalwellenformendaten
in diesen drei Bändern
werden zunächst
von einer Bandintegrations-(Synthetisier)-Schaltung 26 synthetisiert,
d.h. die beiden Signalwellenformdaten werden in Wellenformdaten
von 0 bis 11 kHz umgewandelt. Das so gewonnene synthetische Signal
wird von einer Bandintegrations-(Synthetisier)-Schal tung 27 mit
den Signalwellenformdaten von 11 kHz bis 22 kHz synthetisiert. Somit werden
an dem Ausgang 28 Signalwellenformdaten für das gesamte
Band ausgegeben.
-
Es
ist zu beachten, daß in
den oben beschriebenen Ausführungsbeispielen
auf der Kodiererseite (der Seite des effizienten Kodiergeräts) mehrere
Kodierer 32, 33, 34 oder die Kodierer 104, 105, 106 für die Kodierung
mittels unterschiedlicher Kodiertabellen vorgesehen sind, um die
Kodierung durchzuführen.
Statt dessen kann auch ein einziger Kodierer vorgesehen sein, um
den ganzen Rahmen mit Hilfe einer einzigen Codetabelle zu kodieren.
Wenn ein solcher Lösungsweg
benutzt wird, kann der Schaltungsumfang des Kodierers kompakt sein.
Es ist zu beachten, daß auch
in diesem Fall das Codetabellen-ID-Signal, ähnlich wie in dem oben beschriebenen
Ausführungsbeispiel, übertragen
oder aufgezeichnet wird, da die Dekodiererseite (das effiziente Dekodiergerät) über die
für die
Kodierung benutzte Codetabelle informiert werden muß.
-
Während in
den oben beschriebenen Ausführungsbeispielen
ein Lösungsweg
beschritten wird, bei dem die Minimaldaten-Auswahlschaltung 108 oder
die Minimaldaten-Auswahlschaltung 156 die Codetabelle mit
der höchsten
Kodiereffizienz auswählt,
kann der Benutzer die Codetabelle auch beliebig einstellen.
-
Während in
den oben beschriebenen Ausführungsbeispielen
die Kodierer 32, 33, 34, die Kodierer 104, 105, 106 und
die Dekodierer 201, 202, 203 aus unabhängiger (separater)
Hardware bestehen, kann auch eine Konfiguration benutzt werden,
bei der wenigstens einer der Kodierer oder Dekodierer gemeinsam
benutzt werden kann, um die jeweiligen in einem ROM usw. gespeicherten
Codetabellen auszulesen und sie zu benutzen.
-
Während in
den oben beschriebenen Ausführungsbeispielen
in der vorgeordneten MDCT-Stufe
das gesamte Band in drei Bänder
mit ungleichen Bandbreiten unterteilt wird, indem zwei Quadraturspiegelfilter (QMFs)
benutzt werden, kann das gesamte Band auch in vier Bänder gleicher
Bandbreite unterteilt werden, indem Polyphasen-Quadraturfilter (PQF)
usw. benutzt werden, um die MDCT für die jeweiligen Bänder durchzuführen.
-
Während in
den oben beschriebenen Ausführungsbeispielen
die Bitzahl geprüft
wird, indem die kodierten Daten selbst benutzt werden, kann eine
solche Prüfung
auch durch eine Rechenoperation erfolgen.
-
Während in
den oben beschriebenen Ausführungsbeispielen
Codefolgen auf der Platte aufgezeichnet werden, kann als Platte
eine optische Platte, eine magneto-optische Platte, eine Phasenänderungsplatte
usw. benutzt werden. Außer
diesen kann als Aufzeichnungsmedium eine magnetische Platte, ein
bandförmiges
Aufzeichnungsmedium oder eine IC-Karte usw. mit einem Halbleiterspeicherelement
usw. benutzt werden. Die Erfindung ist nicht auf den Fall beschränkt, daß Codefolgen
auf dem oder in dem Aufzeichnungsmedium aufgezeichnet werden, solche
Codefolgen können
statt dessen auch über
einen Übertragungsweg,
wie eine optische Faser usw. übertragen
werden.
-
Die
Erfindung ist auch nicht auf die obigen Ausführungsbeispiele beschränkt. Die
Geräte
sind nicht auf die in 3, 5, 10 dargestellten
effizienten Kodier-/Dekodiergeräte
beschränkt,
die Erfindung ist vielmehr auf verschiedene Transformationskodiergeräte oder
Dekodiergeräte,
die die Kodierung rückgängig machen,
anwendbar. Darüber
hinaus kann die Erfindung außer
auf den Fall einer spektralen Transformationsverarbeitung auch auf
den Fall angewendet werden, in welchem eine Bandteilung mittels
eines Bandteilungsfilters vorgenommen wird, um die Kodierung/Dekodierung
auszuführen.
-
Die
Erfindung ist nicht nur z.B. bei Signalprozessoren für PCM-Audiosignale
anwendbar, sondern auch bei Signalprozessoren für digitale Sprachsignale oder
digitale Videosignale usw. Für
die Bitzuteilung ist eine große
Vielfalt von Bitzuteilungsverfahren denkbar. Als einfachste Verfahren
können
eine feste Bitzuteilung, eine einfache Bitzuteilung durch die jeweiligen
Signalbandenergien und eine Bitzuteilung mit einer Kombination aus
fester Bitzuteilung und variabler Bitzuteilung benutzt werden. Wie
oben beschrieben wurde, ist die Blockgröße bei der orthogonalen Transformation
nicht auf das dargestellte Beispiel beschränkt, es kann auch eine beliebige
Einstellung vorgenommen werden, bei der die Blockgröße der orthogonalen
Transformation in Richtung der Zeitbasis z.B. auf 23,2 ms gesetzt
ist, die Teilungszahl der Bänder
in Richtung der Frequenzbasis auf vier gesetzt ist oder die Blockgröße der orthogonalen
Transformation in Richtung der Frequenzbasis auf 22,05 kHz oder
20 kHz gesetzt ist.
-
Bei
dem Signalkodierverfahren oder -gerät gemäß der Erfindung wird ein Eingangssignal
in Blöcke
unterteilt, werden diese Blöcke
in mehrere Einheiten unterteilt, um diese einer Kompressionskodierung
zu unterziehen und einen Teil der oder alle verarbeiteten Signale
mit Hilfe einer oder mehrerer Codetabellen zu kodieren, um ein Ausgangssignal
zu gewinnen, in dem die einzelnen Blöcke mehrere Codetabellen für die Kodierung
haben können,
wodurch es möglich
wird, zumindest in jedem Rahmen eine Codetabelle für die Kodierung festzulegen.
Falls der Hardwareumfang des Kodierers kompakt sein soll, wird ein
Lösungsweg
benutzt, um ein Signalkodiergerät
aufzubauen, in dem nur eine Codetabelle vorgesehen ist und diese
eine Codetabelle bei der Kodierung benutzt wird. Falls eine höhere Kodiereffizienz
benötigt
wird, wird eine Konfiguration benutzt, bei der mehrere Codetabellen
vorgesehen sind, so daß in
jedem Rahmen, jedem Block, jeder Einheit oder für jede Quantisierungsstufenzahl
die Codetabelle ausgewählt
werden kann, die die Kodierung mit der höchsten Effizienz ermöglicht.
-
Durch
Flag-Steuerung in dem gleichen Standard kann die vorliegende Erfindung
also sowohl den Fall meistern, in eine effizientere Kodierung benötigt wird,
als auch den Fall, in dem einfachere Hardware gefordert wird.