DE10102159C2 - Verfahren und Vorrichtung zum Erzeugen bzw. Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkasse, Codierer und skalierbarer Codierer - Google Patents
Verfahren und Vorrichtung zum Erzeugen bzw. Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkasse, Codierer und skalierbarer CodiererInfo
- Publication number
- DE10102159C2 DE10102159C2 DE10102159A DE10102159A DE10102159C2 DE 10102159 C2 DE10102159 C2 DE 10102159C2 DE 10102159 A DE10102159 A DE 10102159A DE 10102159 A DE10102159 A DE 10102159A DE 10102159 C2 DE10102159 C2 DE 10102159C2
- Authority
- DE
- Germany
- Prior art keywords
- encoder
- block
- output data
- data
- samples
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000005540 biological transmission Effects 0.000 claims abstract description 33
- 230000003111 delayed effect Effects 0.000 claims abstract description 7
- 230000003139 buffering effect Effects 0.000 claims description 2
- 230000005236 sound signal Effects 0.000 description 13
- 230000008901 benefit Effects 0.000 description 7
- 238000005070 sampling Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000007175 bidirectional communication Effects 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000003595 spectral effect Effects 0.000 description 2
- 101000873502 Homo sapiens S-adenosylmethionine decarboxylase proenzyme Proteins 0.000 description 1
- 102100035914 S-adenosylmethionine decarboxylase proenzyme Human genes 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006854 communication Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000036651 mood Effects 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/18—Vocoders using multiple modes
- G10L19/24—Variable rate codecs, e.g. for generating different qualities using a scalable representation such as hierarchical encoding or layered encoding
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/08—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
- G10L19/12—Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders
Landscapes
- Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Quality & Reliability (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
Die vorliegende Erfindung bezieht sich auf skalierbare Co
dierer und Decodierer und insbesondere auf das Erzeugen von
skalierbaren Datenströmen.
Skalierbare Codierer sind in der EP 0 846 375 B1 gezeigt.
Allgemein versteht man unter der Skalierbarkeit die Möglich
keit, einen Teilsatz eines Bitstroms, der ein codiertes
Datensignal, wie z. B. ein Audiosignal oder ein Videosignal,
darstellt, in ein nutzbares Signal zu decodieren. Diese Ei
genschaft ist insbesondere dann gewünscht, wenn z. B. ein
Datenübertragungskanal nicht die nötige vollständige Band
breite zur Übertragung eines vollständigen Bitstroms zur
Verfügung stellt. Andererseits ist eine unvollständige De
codierung auf einem Decodierer mit niedrigerer Komplexität
möglich. Allgemein werden in der Praxis verschiedene diskre
te Skalierbarkeitsschichten definiert.
Ein Beispiel für einen skalierbaren Codierer, wie er im Sub
part 4 (General Audio) des Parts 3 (Audio) des MPEG-4 Stan
dards (ISO/IEC 14496-3: 1999 Subpart 4) definiert ist, ist in
Fig. 1 gezeigt. Ein zu codierendes Audiosignal s(t) wird
eingangsseitig in den skalierbaren Codierer eingespeist. Der
in Fig. 1 gezeigte skalierbare Codierer enthält einen ersten
Codierer 12, der ein MPEG-Celp-Codierer ist. Der zweite
Codierer 14 ist ein AAC-Codierer, der eine hochqualitative
Audiocodierung liefert und im Standard MPEG-2 AAC (ISO/IEC
13818) definiert ist. Der Celp-Codierer 12 liefert über eine
Ausgangsleitung 16 eine erste Skalierungsschicht, während
der AAC-Codierer 14 über eine zweite Ausgangsleitung 18 eine
zweite Skalierungsschicht zu einem Bitstrom-Multiplexer
(BitMux) 20 liefert. Ausgangsseitig gibt der Bitstrom-Multiplexer
dann einen MPEG-4-LATM-Bitstrom 22 aus (LATM = Low-
Overhead MPEG-4 Audio Transport Multiplex). Das LATM-Format
ist im Abschnitt 6.5 des Parts 3 (Audio) der ersten Ergän
zung zum MPEG-4 Standard (ISO/IEC 14496-3: 1999/AMD1: 2000)
beschrieben.
Der skalierbare Audiocodierer umfaßt ferner einige weitere
Elemente. Zunächst existiert eine Verzögerungsstufe 24 im
AAC-Zweig und eine Verzögerungsstufe 26 im Celp-Zweig. Durch
beide Verzögerungsstufen kann eine optionale Verzögerung für
den jeweiligen Zweig eingestellt werden. Der Verzögerungs
stufe 26 des Celp-Zweigs ist eine Downsampling-Stufe 28
nachgeschaltet, um die Abtastrate des Eingangssignals s(t)
an die von dem Celp-Codierer geforderte Abtastrate anzupas
sen. Dem Celp-Codierer 12 nachgeschaltet ist ein inverser
Celp-Decodierer 30, wobei das Celp-codierte/decodierte
Signal einer Upsampling-Stufe 32 zugeführt wird. Das upge
sampelte Signal wird dann einer weiteren Verzögerungsstufe
34, die im MPEG-4-Standard mit "Core Coder Delay" bezeichnet
ist, zugeführt.
Die Stufe CoreDoderDelay 34 hat folgende Funktion. Ist die
Verzögerung auf Null eingestellt, so verarbeiten der erste
Codierer 12 und der zweite Codierer 14 in einem sogenannten
Superframe exakt dieselben Abtastwerte des Audioeingangs
signals. Ein Superframe kann beispielsweise aus drei AAC-
Frames bestehen, die zusammen eine gewisse Anzahl von Ab
tastwerten Nr. x bis Nr. y des Audiosignals darstellen. Der
Superframe umfaßt ferner z. B. 8 CELP-Blöcke, die im Falle
von CoreCoderDelay = 0 dieselbe Anzahl von Abtastwerten und
auch dieselben Abtastwerte Nr. x bis Nr. y darstellen.
Ist dagegen ein CoreCoderDelay D als Zeitgröße ungleich Null
eingestellt, so stellen die drei Blöcke von AAC Frames den
noch die gleichen Abtastwerte Nr. x bis Nr. y dar. Die acht
Blöcke von CELP-Frames stellen dagegen Abtastwerte Nr. x -
Fs D bis Nr. y - Fs D dar, wobei Fs die Abtastfrequenz des
Eingangssignals ist.
Die aktuellen Zeitabschnitte des Eingangssignals in einem
Superframe für die AAC-Blöcke und die CELP-Blöcke können
somit entweder identisch sein, wenn CoreCoderDelay D = 0
ist, oder aber im Falle von D ungleich Null um
CoreCoderDelay zueinander verschoben sein. Für die nachfol
genden Ausführungen wird jedoch aus Einfachheitsgründen ohne
Einschränkung der Allgemeinheit ein CoreCoderDelay = 0
angenommen, so daß der aktuelle Zeitabschnitt des Eingangs
signals für den ersten Coder und der aktuelle Zeitabschnitt
für den zweiten Coder identisch sind. Allgemein besteht für
einen Superframe jedoch lediglich die Anforderung, daß
der/die AAC-Block/Blöcke und der/die CELP-Blöcke in einem
Superframe dieselbe Anzahl von Abtastwerten darstellen,
wobei die Abtastwerte an sich nicht unbedingt die identi
schen sein müssen, sondern auch um CoreCoderDelay zueinander
verschoben sein können.
Es sei angemerkt, daß der Celp-Codierer einen Abschnitt des
Eingangssignals s(t) je nach Konfiguration schneller ver
arbeitet als der AAC-Codierer 14. In dem AAC-Zweig ist der
Optionalverzögerungsstufe 24 eine Blockentscheidungsstufe 26
nachgeschaltet, die u. a. feststellt, ob zum Fenstern des
Eingangssignals s(t) kurze oder lange Fenster zu verwenden
sind, wobei für stark transiente Signale kurze Fenster zu
wählen sind, während für weniger transiente Signale lange
Fenster vorgezogen werden, da bei ihnen das Verhältnis zwi
schen Nutzdatenmenge und Seiteninformationen besser als bei
kurzen Fenstern ist.
Durch die Blockentscheidungsstufe 26 wird im vorliegenden
Beispiel eine feste Verzögerung um z. B. das 5/8-fache eines
Blocks durchführt. Dies wird in der Technik als Look-Ahead-
Funktion bezeichnet. Die Blockentscheidungsstufe muß bereits
um eine gewisse Zeit vorausschauen, um überhaupt feststellen
zu können, ob in der Zukunft transiente Signale sind, die
mit kurzen Fenstern codiert werden müssen. Hierauf wird so
wohl das entsprechende Signal im Celp-Zweig als auch das
Signal im AAC-Zweig einer Einrichtung zum Umsetzen der zeit
lichen Darstellung in eine spektrale Darstellung zugeführt,
welche in Fig. 1 mit MDCT 36 bzw. 38 bezeichnet ist (MDCT =
Modified Discrete Cosine Transform = Modifizierte Diskrete
Cosinus-Transformation). Die Ausgangssignale der MDCT-Blöcke
36, 38 werden dann einem Subtrahierer 40 zugeführt.
An dieser Stelle müssen zeitlich zusammengehörige Abtastwer
te vorliegen, d. h. das Delay muß in beiden Zweigen iden
tisch sein.
Der darauffolgende Block 44 stellt fest, ob es günstiger
ist, das Eingangssignal an sich dem AAC-Codierer 14 zuzu
führen. Dies wird über den Umgehungszweig 42 ermöglicht.
Wenn jedoch festgestellt wird, daß das Differenzsignal am
Ausgang des Subtrahierers 40 z. B. energiemäßig kleiner ist
als das von dem MDCT-Block 38 ausgegebene Signal, so wird
nicht das ursprüngliche Signal, sondern das Differenzsignal
genommen, um durch den AAC-Codierer 14 codiert zu werden, um
schließlich die zweite Skalierungsschicht 18 zu bilden.
Dieser Vergleich kann bandweise durchgeführt werden, was
durch eine frequenzselektive Schalteinrichtung (FSS) 44
angedeutet ist. Die näheren Funktionen der einzelnen Ele
mente sind in der Technik bekannt und beispielsweise im
MPEG-4-Standard sowie in weiteren MPEG-Standards beschrie
ben.
Ein wesentliches Merkmal beim MPEG-4-Standard bzw. auch bei
anderen Codierer-Standards ist, daß die Übertragung des kom
primierten Datensignals über einen Kanal mit konstanter Bit
rate erfolgen soll. Alle High-Quality-Audiocodecs arbeiten
blockbasiert, d. h. sie verarbeiten Blöcke von Audiodaten
(Größenordnung 480-1024 Samples) zu Stücken eines kompri
mierten Bitstroms, welche auch als Frames bezeichnet werden.
Das Bitstromformat muß dabei so aufgebaut sein, daß ein De
codierer ohne A-Priori-Informationen, wo ein Frame beginnt,
in der Lage ist, den Anfang eines Frames zu erkennen um mit
einer möglichst geringen Verzögerung die Ausgabe der decodierten
Audiosignaldaten zu beginnen. Daher beginnt jeder
Header oder Bestimmungsdatenblock eines Frames mit einem be
stimmten Synchronisationswort, nach dem in einem kontinu
ierlichen Bitstrom gesucht werden kann. Weitere übliche Be
standteile im Datenstrom neben dem Bestimmungsdatenblock
sind die Hauptdaten oder "Payload Data" der einzelnen Layer,
in denen die eigentlichen komprimierten Audiodaten enthalten
sind.
Fig. 4 zeigt ein Bitstromformat mit fester Framelänge. In
diesem Bitstromformat werden die Header oder Bestimmungs
datenblöcke äquidistant in den Bitstrom eingefügt. Die zu
diesem Header zugehörigen Seiteninformationen ("Side Infor
mation") und Hauptdaten (Main Data) folgen unmittelbar da
hinter. Die Länge, d. h. Bitanzahl, für die Hauptdaten ist in
jedem Frame gleich. Ein solches Bitstromformat, wie es in
Fig. 4 gezeigt wird, wird beispielsweise bei MPEG-Layer 2
oder MPEG-CELP verwendet.
Fig. 5 zeigt ein anderes Bitstromformat mit einer festen
Framelänge und einem Backpointer oder Rückwärtszeiger. Bei
diesem Bitstromformat sind der Header und die Seiteninfor
mationen wie bei dem Format, das in Fig. 4 gezeigt ist,
äquidistant angeordnet. Der Beginn der zugehörigen Haupt
daten erfolgt allerdings nur im Ausnahmefall unmittelbar im
Anschluß an einen Header. In den meisten Fällen ist der
Beginn in einem der vorherigen Frames. Die Anzahl an Bits,
um die der Beginn der Hauptdaten im Bitstrom verschoben ist,
wird durch die Seiteninformations-Variable Backpointer
übertragen. Das Ende dieser Hauptdaten kann in diesem Frame
liegen oder in einem vorherigen Frame. Die Länge der
Hauptdaten ist damit nicht mehr konstant. Somit kann die
Anzahl der Bits, mit denen ein Block codiert wird, an die
Eigenschaften des Signals angepaßt werden. Gleichzeitig kann
jedoch eine konstante Bitrate erreicht werden. Diese Technik
wird "Bitsparkasse" genannt und vergrößert das theoretische
Delay in der Übertragungskette. Ein solches Bitstromformat
wird beispielsweise bei MPEG Layer 3 (MP3) eingesetzt. Die
Technik der Bitsparkasse ist ebenfalls in dem Standard MPEG
Layer 3 beschrieben.
Allgemein gesagt stellt die Bitsparkasse einen Buffer von
Bits dar, die eingesetzt werden können, um zum Codieren
eines Blocks von zeitlichen Abtastwerten mehr Bits zur Ver
fügung zu stellen, als eigentlich durch die konstante Aus
gangsdatenrate erlaubt sind. Die Technik der Bitsparkasse
trägt der Tatsache Rechnung, daß manche Blöcke von Audioab
tastwerten mit weniger Bits als durch die konstante Über
tragungsrate vorgegeben codiert werden können, so daß sich
durch diese Blöcke die Bitsparkasse füllt, während wieder
andere Blöcke von Audioabtastwerten psychoakustische Eigen
schaften haben, die keine so große Kompression erlauben, so
daß für diese Blöcke zum störungsarmen bzw. störungsfreien
Codieren die zur Verfügung stehenden Bits eigentlich nicht
ausreichen würden. Die benötigten überzähligen Bits werden
aus der Bitsparkasse genommen, so daß sich die Bitsparkasse
bei solchen Blöcken leert.
Ein solches Audiosignal könnte jedoch auch, wie es in Fig. 6
gezeigt ist, durch ein Format mit variabler Framelänge über
tragen werden. Bei dem Bitstromformat "Variable Framelänge",
wie es in Fig. 6 dargestellt ist, wird die feste Reihenfolge
der Bitstromelemente Header, Seiteninformationen und Haupt
daten wie bei der "Festen Framelänge" eingehalten. Da die
Länge der Hauptdaten nicht konstant ist, kann auch hier die
Bitsparkassentechnik eingesetzt werden, es werden jedoch
keine Backpointer wie in Fig. 5 benötigt. Ein Beispiel für
ein Bitstromformat, wie es in Fig. 6 dargestellt ist, ist
das Transportformat ADTS (Audio Data Transport Stream), wie
es im Standard MPEG 2 AAC definiert ist.
Es sei darauf hingewiesen, daß die vorher genannten Codierer
alle keine skalierbaren Codierer sind, sondern lediglich ei
nen einzigen Audiocodierer umfassen.
In MPEG 4 ist die Kombination verschiedener Codierer/Decodierer
zu einem skalierbaren Codierer/Decodierer vorgesehen.
So ist es möglich und sinnvoll, einen Celp-Sprachcodierer
als ersten Codierer mit einem AAC-Codierer für die weitere
bzw. die weiteren Skalierungsschichten zu kombinieren und in
einem Bitstrom zu verpacken. Der Sinn dieser Kombination be
steht darin, daß die Möglichkeit offen steht, entweder alle
Skalierungsschichten oder Layer zu decodieren und damit eine
bestmögliche Audioqualität zu erreichen, oder auch Teile
davon, unter Umständen auch nur die erste Skalierungsschicht
mit der entsprechenden eingeschränkten Audioqualität. Gründe
für die alleinige Decodierung der untersten Skalierungs
schicht können sein, daß wegen zu kleiner Bandbreite des
Übertragungskanals der Decodierer nur die erste Skalierungs
schicht des Bitstroms erhalten hat. Deswegen werden bei der
Übertragung die Anteile der ersten Skalierungsschicht im
Bitstrom gegenüber der zweiten und den weiteren Skalierungs
schichten bevorrechtigt, wodurch bei Kapazitätsengpässen im
Übertragungsnetz die Übertragung der ersten Skalierungs
schicht sichergestellt wird, während die zweite Skalierungs
schicht eventuell ganz oder teilweise verloren geht.
Ein weiterer Grund kann darin liegen, daß ein Decodierer ein
möglichst geringes Codec-Delay erreichen möchte und deswegen
nur die erste Skalierungsschicht decodiert. Es sei darauf
hingewiesen, daß das Codec-Delay eine Celp-Codecs im allge
meinen signifikant kleiner als das Delay des AAC-Codecs ist.
In MPEG 4 Version 2 ist das Transportformat LATM standardi
siert, welches unter anderem auch skalierbare Datenströme
übertragen kann.
Im nachfolgenden wird auf Fig. 2a Bezug genommen. Fig. 2a
ist eine schematische Darstellung der Abtastwerte des Ein
gangssignals s(t). Das Eingangssignal kann in verschiedene
aufeinanderfolgende Abschnitte 0, 1, 2, 3 eingeteilt werden,
wobei jeder Abschnitt eine bestimmte feste Anzahl von zeit
lichen Abtastwerten hat. Üblicherweise verarbeitet der
AAC-Codierer 14 (Fig. 1) einen gesamten Abschnitt 0, 1, 2
oder 3, um für diesen Abschnitt ein codiertes Datensignal zu
liefern. Der Celp-Codierer 12 (Fig. 1) verarbeitet jedoch
üblicherweise eine geringere Menge an zeitlichen Abtast
werten pro Codierungsschritt. So ist in Fig. 2b beispielhaft
gezeigt, daß der Celp-Codierer bzw. allgemein gesagt der
erste Codierer oder Coder 1 eine Blocklänge hat, die ein
Viertel der Blocklänge des zweiten Codierers beträgt. Es sei
darauf hingewiesen, daß diese Aufteilung völlig willkürlich
ist. Die Blocklänge des ersten Codierers könnte auch halb so
groß sein, könnte jedoch auch ein Elftel der Blocklänge des
zweiten Codierers betragen. Somit wird der erste Codierer
aus dem Abschnitt des Eingangssignals vier Blöcke erzeugen
(11, 12, 13, 14), aus denen der zweite Codierer einen Block
von Daten liefert. In Fig. 2c ist ein übliches LATM-Bit
stromformat gezeigt.
Ein Superframe kann verschiedene Verhältnisse von Anzahl von
AAC-Frames zu Anzahl von CELP-Frames haben, wie es in MPEG 4
tabellarisch dargelegt ist. So kann ein Superframe z. B.
einen AAC Block und 1 bis 12 CELP-Blöcke, 3 AAC-Blöcke und 8
CELP-Blöcke aber auch z. B. mehr AAC-Blöcke als CELP-Blöcke
je nach Konfiguration aufweisen. Ein LATM-Frame, der einen
LATM-Bestimmungsdatenblock hat, umfaßt einen Superframe oder
auch mehrere Superframes.
Es wird beispielhaft die Erzeugung des durch den Header 1
eröffneten LATM-Frames beschrieben. Zunächst werden die
Ausgangsdatenblöcke 11, 12, 13, 14 des Celp-Codierers 12
(Fig. 1) erzeugt und zwischengespeichert. Parallel dazu wird
der Ausgangsdatenblock des AAC-Codierers, der in Fig. 2c mit
"1" bezeichnet ist, erzeugt. Dann, wenn der Ausgangsdaten
block des AAC-Codierers erzeugt ist, wird erst der Bestim
mungsdatenblock (Header 1) geschrieben. Je nach Konvention
kann dann unmittelbar hinter den Header 1 der als erstes
erzeugte Ausgangsdatenblock des ersten Codierers, der in
Fig. 2c mit 11 bezeichnet ist, geschrieben, d. h. übertra
gen, werden. Es wird üblicherweise (in Anbetracht geringer
erforderlicher Signalisierungsinformationen) zum weiteren
Schreiben bzw. Übertragen des Bitstroms ein äquidistanter
Abstand der Ausgangsdatenblöcke des ersten Codierers ge
wählt, wie es in Fig. 2c dargestellt ist. Dies bedeutet, daß
nach dem Schreiben bzw. Übertragen des Blocks 11 der zweite
Ausgangsdatenblock 12 des ersten Codierers, dann der dritte
Ausgangsdatenblock 13 des ersten Codierers und dann der
vierte Ausgangsdatenblock 14 des ersten Codierers in äquidi
stanten Abständen geschrieben bzw. übertragen werden. Der
Ausgangsdatenblock 1 des zweiten Codierers wird während der
Übertragung in die verbleibenden Lücken eingefüllt. Dann ist
ein LATM-Frame fertig geschrieben, d. h. fertig übertragen.
Nachteilig an den in den Fig. 4 bis 6 dargestellten Bit
stromformaten ist die Tatsache, daß dieselben lediglich für
einfache Codierer bekannt sind, jedoch nicht für skalierbare
Codierer und insbesondere nicht für skalierbare Codierer mit
Bitsparkassenfunktion.
Wie es bekannt ist, wird die Bitsparkasse dazu verwendet,
daß die variable Ausgangsdatenrate, die ein psychoakusti
scher Codierer inhärent erzeugt, an eine konstante Ausgangs
datenrate angepaßt werden kann. Mit anderen Worten ausge
drückt hängt die Anzahl von Bits, die ein Audiocodierer
benötigt, von den Signaleigenschaften ab. Ist das Signal
derart beschaffen, daß relativ grob quantisiert werden kann,
so wird eine relativ geringe Menge an Bits zur Codierung
dieses Signals benötigt. Ist das Signal jedoch derart be
schaffen, daß sehr fein quantisiert werden muß, um keine
hörbaren Störungen einzuführen, so wird eine größere Anzahl
an Bits zum Codieren dieses Signals benötigt.
Um eine konstante Ausgangsdatenrate zu erreichen, wird eine
mittlere Anzahl von Bits für einen Abschnitt eines zu codie
renden Signals festgesetzt. Ist die tatsächlich benötigte
Menge an Bits zum Codieren eines Abschnitts kleiner als die
festgesetzte Anzahl an Bits, so können die nicht benötigten
Bits in die Bitsparkasse gesteckt werden. Die Bitsparkasse
füllt sich also. Ist dagegen ein Abschnitt eines zu codierenden
Signals so beschaffen, daß eine größere als die fest
gesetzte Anzahl an Bits zum Codieren benötigt wird, um keine
hörbaren Störungen in das Signal einzuführen, so können die
zusätzlich benötigten Bits aus der Bitsparkasse entnommen
werden. Die Bitsparkasse entleert, sich dadurch. Damit kann
sichergestellt werden, daß eine konstante Ausgangsdatenrate
erhalten wird, und dennoch keine hörbaren Störungen in das
Audiosignal eingeführt werden. Voraussetzung dafür ist, daß
die Bitsparkasse ausreichend groß gewählt wird.
Im Standard MPEG AAC (13818-7: 1997) wird die Bitsparkasse
als "Bitreservoir" bezeichnet. Die maximale Größe der Bit
sparkasse für Kanäle mit konstanter Datenrate kann berechnet
werden, indem die mittlere Anzahl von Bits pro Block von der
maximalen Decodierereingangspuffergröße subtrahiert wird.
Deren Wert ist gemäß dem Standard MPEG AAC bei einer Über
tragungsrate von 96 kBit/s für ein Stereosignal mit einer
Abtastrate von 48 kHz auf einen Wert von 10.240 Bits fest
voreingestellt. Der maximale Wert der Bitsparkasse, also die
Größe der Bitsparkasse ist so groß dimensioniert, damit auch
unter schlechten Umständen, also auch wenn das Signal viele
Abschnitte enthält, die nicht mit der festgesetzten Anzahl
von Bits codiert werden können, keine hörbaren Störungen in
das Audiosignal eingeführt werden müssen, um die konstante
Ausgangsdatenrate einzuhalten. Dies ist nur möglich, wenn
die Bitsparkasse ausreichend groß dimensioniert ist, so daß
sie zu keinem Zeitpunkt leer wird.
Auf der Decodiererseite hat dies folgende Konsequenz. Nach
dem der Decodierer damit rechnen muß, daß sowohl der Fall
einer vollen Bitsparkasse als auch der Fall einer leeren
Bitsparkasse im Laufe des Decodierens eines Audiosignals
auftreten kann, muß der Decodierer, bevor er überhaupt mit
dem Decodieren beginnt, eine Anzahl von Bits zwischenspei
chern, die der Größe der Bitsparkasse entspricht. Damit wird
sichergestellt, daß beim Decodieren des Audiosignals dem De
codierer die Bits nicht ausgehen. Würde nämlich der Decodie
rer ein mit Bitsparkassenfunktion codiertes Signal unmittelbar
sofort decodieren, wenn er es empfangen hat, so würden
bereits die Bits zur Ausgabe ausgehen, wenn der erste zu de
codierende Block zufälligerweise eine geringere Anzahl als
die festgesetzte Anzahl zum Codieren benötigt hatte, also
wenn durch den ersten Block die Bitsparkasse angefüllt wor
den ist. In anderen Worten ausgedrückt führt die Bitsparkas
senfunktion unweigerlich zu einer Verzögerung (Delay) im De
codierer, wobei dieses Delay mit der Größe der Bitsparkasse
korrespondiert.
Für das vorherige Beispiel beträgt die Größe der Bitsparkas
se 10.240 Bits. Dies führt zu einer inhärenten Anfangsverzö
gerung aufgrund der Bitsparkasse von etwa 0,1 s. Die Verzö
gerung wird um so größer, je größer die maximale Größe der
Bitsparkasse gewählt wird, und je kleiner die Übertragungs
rate gewählt wird.
Wenn an Echtzeitübertragungen beispielsweise eines Telefon
gesprächs gedacht wird, bei dem ständig ein Wechsel der
Sprecher stattfindet, so tritt bereits aufgrund der Bitspar
kassenfunktion bei jedem Wechsel des Sprechers eine Verzöge
rung in der genannten Größe auf. Eine solche Verzögerung ist
für beide Kommunikationsteilnehmer außerordentlich störend
und führt typischerweise dazu, daß ein Sprecher, da er nicht
unmittelbar eine Reaktion des anderen Sprechers hört,
noch einmal nachfragt, was zu einer wei
teren Verwirrung beiträgt. Damit bleibt festzustellen, daß
ein solchermaßen ausgestaltetes Produkt für Echtzeitanwen
dungen nicht geeignet ist bzw. am Markt keine Durchsetzungs
chance hätte.
Die Fachveröffentlichung "Buffer Constraints In A Variable-
Rate Packetized Video System" von M. Balakrishnan, Inter
national Conference on Image Processing, IEEE Computer
Society Press, 1995, Seiten 29-32, Band 1, offenbart ein
System mit einem Codierer, einem Codiererpuffer, einem Über
tragungskanal, einem Decodiererpuffer und einem Decodierer.
Zur Datenübertragung vom Codierer zum Decodierer wird eine
konstante Verzögerung vorausgesetzt, so daß ein Video-Frame
zwischen seiner Erzeugung durch den Codierer und seiner An
zeige nach dem Decodierer eine konstante Verzögerung er
fährt. Dies entspricht einer festen Verzögerung zwischen dem
Ausgang des Codierers und dem Eingang in dem Decodierer.
Sowohl auf der Codiererseite als auch auf der Decodierer
seite muß sichergestellt werden, daß einerseits der Codie
rerpuffer und andererseits der Decodiererpuffer weder über
laufen noch leer werden. Im Falle eines Codierers mit vari
abler Ausgangsrate und einem Kanal mit konstanter Übertra
gungsrate muß der Decodiererpuffer größer oder gleich dem
Codiererpuffer sein. Im Falle einer variablen Übertragungs
rate aufgrund von Kanaleigenschaften, wobei auch ein Multi
plexer zum Multiplexen verschiedener Quellen Teil des Kanals
sein kann, muß der Decodiererpuffer auf jeden Fall größer
als der Codiererpuffer sein. In dem Fall, in dem der Codie
rer selbst die Kanalübertragungsrate variiert, muß der Deco
diererpuffer wesentlich größer als der Codierpuffer dimen
sioniert werden, um die Anforderung nach einer konstanten
Verzögerung zu erfüllen. Zur Reduzierung der Größe des
Decodiererpuffers wird eine künstliche Begrenzung des Codie
rerpuffers auf eine logische Codiererpuffergröße eingesetzt,
die kleiner als die physikalische Größe des Codiererpuffers
ist. Damit der Decodiererpuffer nicht leer wird oder über
läuft, genügt es unter bestimmten Voraussetzungen allein,
sicherzustellen, daß der logische Codiererpuffer nicht über
läuft oder leer wird.
Die Aufgabe der vorliegenden Erfindung besteht darin, einen
Codierer mit Bitsparkassenfunktion zu schaffen, durch den
eine geringere Übertragungsverzögerung erreichbar ist.
Diese Aufgabe wird durch einen Codierer nach Patentanspruch
5 oder durch einen skalierbaren Codierer nach Patentanspruch
6 gelöst.
Eine weitere Aufgabe der vorliegenden Erfindung besteht dar
in, ein Verfahren und eine Vorrichtung zum Erzeugen eines
skalierbaren Datenstroms zu schaffen, in dem eine Bitspar
kassenfunktion signalisiert werden kann.
Diese Aufgabe wird durch ein Verfahren nach Patentanspruch 1
oder durch eine Vorrichtung nach Patentanspruch 7 gelöst.
Eine weitere Aufgabe der vorliegenden Erfindung besteht dar
in, ein Verfahren und eine Vorrichtung zum Decodieren eines
skalierbaren Datenstroms zu schaffen, in dem eine Bitspar
kassenfunktion signalisiert ist.
Diese Aufgabe wird durch ein Verfahren nach Patentanspruch 8
oder durch eine Vorrichtung nach Patentanspruch 9 gelöst.
Der vorliegenden Erfindung liegt die Erkenntnis zugrunde,
daß von dem bisherigen Konzept der fest eingestellten Bit
sparkassengröße weggegangen werden muß, um eine verzöge
rungsärmere Decodierung zu erreichen. Erfindungsgemäß wird
dies erreicht, indem die maximale Größe der Bitsparkasse
eines Codierers einstellbar gemacht wird, wobei je nach An
wendungsfall und je nach beabsichtigter Decodiererfunktion
eine bestimmte Einstellung der Bitsparkasse erreicht wird.
Für den Fall einer lediglich unidirektionalen Datenübertra
gung kann, um höchste Audioqualitätsansprüche zu erfüllen,
eine große Bitsparkasse gewählt werden, während für den Fall
einer bidirektionalen Kommunikation, in der ein häufiger
Wechsel von Sender und Empfänger bzw. ein häufiger Wechsel
der Sprecher stattfindet, eine kleinere Bitsparkassengröße
einzustellen ist. Damit der Decodierer von einer kleineren
Bitsparkassengrößeneinstellung profitieren kann, muß die
Bitsparkassengröße irgendwie dem Decodierer übermittelt
werden. Dies kann einerseits durch Übertragung zusätzlicher
Informationen in dem Datenstrom erreicht werden, kann jedoch
auch, wie es insbesondere anhand des skalierbaren Falls
dargestellt wird, implizit ohne Übertragung zusätzlicher
Seiteninformationen bzw. Signalisierungsinformationen erfol
gen.
Ein Vorteil der vorliegenden Erfindung besteht darin, daß
nunmehr über die Einstellung der maximalen Größe der Bit
sparkasse unmittelbar Einfluß auf die Decodiererverzögerung
genommen werden kann. Wird die maximale Größe der Bitspar
kasse kleiner gewählt, so kann der Decodierer auch eine
kleinere Verzögerung einfügen, bevor er mit dem Decodieren
beginnt, ohne in die Gefahr zu kommen, daß ihm während der
Decodierung Ausgabedaten ausgehen, was in jedem Fall zu
vermeiden ist. Der "Preis", der dafür zu zahlen ist, besteht
darin, daß der eine oder andere Abschnitt des Audiosignals
nicht mit 100%iger Audioqualität codiert worden ist, da die
Bitsparkasse leer war und keine überzähligen Bits mehr zur
Verfügung standen. Üblicherweise reagiert ein Audiocodierer
in einem solchen Fall damit, daß er bei der Quantisierung
die psychoakustische Maskierungsschwelle verletzt, und, um
mit der zur Verfügung stehenden Anzahl von Bits auszukommen,
eine gröbere Quantisierung als eigentlich notwendig wählt.
Dafür wird jedoch der wesentliche Vorteil der geringeren
Verzögerung des Decodierers gewährleistet. Die Reduzierung
der Größe der Bitsparkasse, um auch eine kleinere decodier
erseitige Verzögerung zu erreichen, wird somit mit einer ge
ringeren Audioqualität erreicht, wobei diese geringere Au
dioqualität jedoch nur ab und an im Audiosignal auftritt,
und, wenn das Audiosignal einfach zu codieren ist, viel
leicht sogar überhaupt nicht auftritt. Damit wird die im
Stand der Technik vorhandene Unflexibilität hinsichtlich der
Bitsparkasse, die für viele Anwendungen überdimensioniert
sein dürfte, um alle möglichen Fälle mit hoher Audioqualität
zu codieren, überwunden, so daß ein Einsatz von Codierern
für eine bidirektionale Kommunikation mit häufig wechselnden
Sprechern möglich wird, an den in Anbetracht der großen fest
eingestellten Bitsparkasse bisher nicht zu denken war.
Die erfindungsgemäße Variabilität der Bitsparkasse und die
damit einhergehende Variabilität der decodiererseitigen Verzögerung
ist insbesondere im Falle eines skalierbaren Audio
codierers von Vorteil, da nunmehr auch dort eine verzöge
rungsärmere Decodierung nicht nur der ersten untersten Ska
lierungsschicht erreicht werden kann, sondern auch eine ver
zögerungsärmere Decodierung höherer Skalierungsschichten,
welche beispielsweise durch einen AAC-Codierer erzeugt wer
den. Insbesondere im skalierbaren Fall wird durch die va
riable Einstellung der Bitsparkassengröße lediglich eine
Skalierungsschicht beeinflußt, während die andere bzw. die
anderen Skalierungsschichten unbeeinflußt bleiben. Damit
kann gezielt auf einzelne Skalierungsschichten eingewirkt
werden, während keine Veränderungen in den anderen Skalie
rungsschichten herbeigeführt werden.
Wie es bereits ausgeführt worden ist, besteht die Notwen
digkeit, die frei wählbare bzw. frei gewählte Bitsparkas
sengröße dem Decodierer mitzuteilen. Dies war im Stand der
Technik nicht erforderlich, da immer eine fest eingestellte
Bitsparkassengröße vereinbart war, so daß ein Decodierer in
Kenntnis dieser fest vereinbarten Bitsparkassengröße die
derselben entsprechende Verzögerung beispielsweise durch Di
mensionierung seines Eingangspuffers ("Input Puffer") ein
geführt hat.
Insbesondere für skalierbare Codierer und skalierbare Da
tenströme kann eine einstellbare Bitsparkassengröße ohne
zusätzliche Seiteninformationen einfach durch die Positio
nierung eines Bestimmungsdatenblocks im skalierbaren Daten
strom erreicht werden. Erfindungsgemäß wird der Bestimmungs
datenblock so im Bitstrom positioniert, daß der Decodierer,
wenn er den Bestimmungsdatenblock empfängt, so viele Bits
für den entsprechenden Layer enpfangen muß, wie es durch die
mittlere Blocklänge vorgegeben ist.
Nach Empfang eines Frames kann der Decodierer ohne Berech
nung oder Einfügung eines Delays mit dem Decodieren begin
nen. Dies wird dadurch erreicht, daß bereits im skalierbaren
Datenstrom der Bestimmungsdatenblock bezüglich der Nutzdaten
der ersten und zweiten Skalierungsschicht verzögert ge
schrieben wird, und zwar vorzugsweise um eine Zeitdauer ver
zögert, die der Einstellung der Bitsparkassengröße ent
spricht. Damit wird erreicht, daß der Codierer je nach
Anforderung eine beliebige Bitsparkassengröße wählen kann
und die gewählte Bitsparkassengröße einfach dadurch gewis
sermaßen implizit dem Decodierer signalisiert, daß er den
Bestimmungsdatenblock im Bitstrom bezüglich der Nutzdaten
verzögert einträgt.
Anders ausgedrückt führt dies dazu, daß der Bestimmungsda
tenblock nicht mehr, wie im Stand der Technik, zum erst
möglichen Zeitpunkt, also delay-optimiert geschrieben wird,
sondern zum letztmöglichen Zeitpunkt, ohne den AAC-Block zu
verzögern. Der aktuelle Stand der Bitsparkasse kann dann
durch einen sogenannten Backpointer signalisiert werden, wo
die Daten eines vorausgehenden Abschnitts aufhören, und wo
die Daten des aktuellen Abschnitts beginnen.
Dies gilt sowohl für den nicht skalierbaren Fall, bei dem
nur Ausgangsdaten eines einzigen Codierers im Bitstrom ste
hen, als auch für den skalierbaren Fall, in dem Daten von
zumindest zwei unterschiedlichen Codierern im skalierbaren
Bitstrom stehen. Falls ein Superframe, also ein Abschnitt im
Bitstrom, der eine erste Anzahl von Ausgangsdatenblöcken ei
nes ersten Codierers und eine zweite Anzahl von Ausgangsda
tenblöcken eines zweiten Codierers, die sich auf die gleiche
Anzahl von Abtastwerten eines Eingangssignals beziehen, eine
Mehrzahl von Blöcken eines Codierers aufweist, so kann die
Anzahl von Blöcken des einen Codierers, die einem Bestim
mungsdatenblock zugeordnet sind, einfach dadurch signali
siert werden, daß Offset-Informationen mit dem Bitstrom über
tragen werden. Die Offset-Informationen kann der Decodierer
ebenfalls als Backpointer interpretieren, um zu wissen,
welche Daten des Bitstroms nunmehr zu einem Bestimmungsda
tenblock gehören, und damit einem Zeitabschnitt des Ein
gangssignals gegebenenfalls unter Berücksichtigung der Va
riable Core Coder Delay entsprechen.
Ein wesentlicher Vorteil dieser Anordnung ist, daß der Deco
dierer, wenn er einen erfindungsgemäßen Datenstrom empfängt,
kein Delay berechnen und einfügen muß, sondern daß das Delay
bereits codierseitig allein durch die Positionierung des Be
stimmungsdatenblocks berücksichtigt worden ist. Der Decodie
rer kann daher einen Frame sofort nach Empfang ausgeben.
Dies eröffnet auch die Möglichkeit, auf einfache Art und
Weise, nämlich ohne zusätzliche Bits, eine eingestellte ma
ximale Bitsparkassengröße zu signalisieren. Da die Signali
sierung einfach und ohne Aufwand durchgeführt werden kann,
nämlich durch die Position des Bestimmungsdatenblocks, ist
es auch ohne weiteres und insbesondere ohne Zugriff auf den
Decodierer möglich, die Bitsparkassengröße zu variieren, um
die Übertragungsverzögerung je nach Bedarf einstellen zu
können.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend bezugnehmend auf die beiliegenden Zeich
nungen detailliert erläutert. Es zeigen:
Fig. 1a einen skalierbaren Codierer gemäß MPEG 4, der die
vorliegende Erfindung aufweist;
Fig. 1b einen Decodierer gemäß der vorliegenden Erfindung;
Fig. 2a eine schematische Darstellung eines Eingangssi
gnals, das in aufeinanderfolgende Zeitabschnitte
eingeteilt ist;
Fig. 2b eine schematische Darstellung eines Eingangssi
gnals, das in aufeinanderfolgende Zeitabschnitte
eingeteilt ist, wobei das Verhältnis der Blocklänge
des ersten Codierers zu der Blocklänge des zweiten
Codierers dargestellt ist;
Fig. 2c eine schematische Darstellung eines skalierbaren
Datenstroms mit hoher Verzögerung bei der Decodierung
der ersten Skalierungsschicht;
Fig. 2d eine schematische Darstellung eines skalierbaren
Datenstroms mit niedriger Verzögerung bei der
Decodierung der ersten Skalierungsschicht;
Fig. 2e zeigt eine schematische Darstellung eines erfin
dungsgemäßen skalierbaren Datenstroms, bei dem der
Bestimmungsdatenblock gegenüber den Nutzdaten ver
zögert ist;
Fig. 3 eine detaillierte Darstellung des erfindungsgemäßen
skalierbaren Datenstromes am Beispiel eines Celp-
Codierers als erster Codierer und eines AAC-Codie
rers als zweiter Codierer mit Bitsparkassenfunk
tion.
Fig. 4 ein Beispiel für ein Bitstromformat mit fester
Framelänge;
Fig. 5 ein Beispiel für ein Bitstromformat mit fester
Framelänge und Back-Pointer; und
Fig. 6 ein Beispiel eines Bitstromformats mit variabler
Framelänge.
Im nachfolgenden wird auf Fig. 2d im Vergleich zu Fig. 2c
eingegangen, um zu Vergleichszwecken einen Bitstrom mit
geringer Verzögerung der ersten Skalierungsschicht zu
erläutern. Genauso wie in Fig. 2c enthält der skalierbare
Datenstrom aufeinanderfolgende Bestimmungsdatenblöcke, die
als Header 1 und Header 2 bezeichnet sind. Beim bevorzugten
Ausführungsbeispiel der vorliegenden Erfindung, das gemäß
dem MPEG 4-Standard ausgeführt ist, sind die Bestimmungsda
tenblöcke LATM-Header. Genauso wie im Stand der Technik
findet sich in Übertragungsrichtung von einem Encoder zu
einem Decodierer, die in Fig. 2d mit einem Pfeil 202 dar
gestellt ist, hinter dem LATM-Header 200 die von links oben
nach rechts unten schraffierten Teile des Ausgangsdaten
blocks des AAC-Codierers, die in verbleibende Lücken zwi
schen Ausgangsdatenblöcken des ersten Codierers eingetragen
sind.
Im Unterschied zum Stand der Technik finden sich nun jedoch
in dem durch den LATM-Header 200 begonnenen Frame nicht mehr
nur Ausgangsdatenblöcke des ersten Codierers, die in diesen
Frame gehören, wie z. B. die Ausgangsdatenblöcke 13 und 14,
sondern auch die Ausgangsdatenblöcke 21 und 22 des nachfol
genden Abschnitts von Eingangsdaten. Anders ausgedrückt sind
bei dem in Fig. 2d gezeigten Beispiel die beiden Ausgangsda
tenblöcke des ersten Codierers, die mit 11 und 12 bezeichnet
sind, in Übertragungsrichtung (Pfeil 202) vor dem LATM-Hea
der 200 im Bitstrom vorhanden. Bei dem in Fig. 2d gezeigten
Beispiel deuten die Offset-Informationen 204 auf einen Off
set der Ausgangsdatenblöcke des ersten Codierers von zwei
Ausgangsdatenblöcken hin. Wenn Fig. 2d mit Fig. 2c vergli
chen wird, so ist zu erkennen, daß der Decodierer bereits
die unterste Skalierungsschicht genau um eine diesem Offset
entsprechende Zeit früher decodieren kann als im Fall von
Fig. 2c, wenn der Decodierer lediglich an der ersten Skalie
rungsschicht interessiert ist. Die Offset-Informationen, die
z. B. in Form eines "Core Frame Offset" signalisiert werden
können, dienen dazu, die Position des ersten Ausgangsdaten
blocks 11 im Bitstrom zu bestimmen.
Für den Fall von Core Frame Offset = Null ergibt sich der in
Fig. 2c bezeichnete Bitstrom. Ist jedoch Core Frame Offset <
Null, so wird der entsprechende Ausgangsdatenblock des er
sten Codierers 11 um die Anzahl Core Frame Offset an Aus
gangsdatenblöcken des ersten Codierers früher übertragen.
Anders ausgedrückt ergibt sich das Delay zwischen dem ersten
Ausgangsdatenblock des ersten Codierers nach dem LATM-Header
und dem ersten AAC-Frame aus Core Coder Delay (Fig. 1) +
Core Frame Offset × Core-Blocklänge (Blockölänge des Coders
1 in Fig. 2b). Wie aus dem Vergleich von Fig. 2c und 2d
deutlich wird, werden für Core Frame Offset = Null (Fig. 2c)
nach dem LATM-Header 200 die Ausgangsdatenblöcke 11 und 12
des ersten Codierers übertragen. Durch die Übertragung von
Core Frame Offset = 2 können die Ausgangsdatenblöcke 13 und
14 nach dem LATM-Header 200 folgen, wodurch die Verzögerung
bei reiner Celp-Decodierung, also Decodierung der ersten
Skalierungsschicht, um zwei Celp-Blocklängen verringert
wird. Optimal wäre im Beispiel ein Offset von drei Blöcken.
Ein Offset von einem oder zwei Blöcken bringt jedoch
ebenfalls bereits einen Delayvorteil.
Durch diesen Bitstromaufbau ist es möglich, daß der Celp-Co
dierer den erzeugten Celp-Block unmittelbar nach dem Codie
ren übertragen kann. In diesem Fall wird dem Celp-Codierer
kein zusätzliches Delay durch den Bitstrommultiplexer (20)
zugefügt. Somit wird für diesen Fall zu dem Celp-Delay kein
zusätzliches Delay durch die skalierbare Kombination hinzu
gefügt, so daß das Delay minimal wird.
Es wird darauf hingewiesen, daß der in Fig. 2d gezeigte Fall
lediglich beispielhaft ist. So sind verschiedene Verhält
nisse der Blocklänge des ersten Codierers zu der Blocklänge
des zweiten Codierers möglich, die z. B. von 1 : 2 bis zu 1 : 12
variieren können oder aber auch andere Verhältnisse einneh
men können.
Dies heißt im Extremfall (1 : 12 für MPEG 4 AAC/CELP), daß für
denselben Zeitabschnitt des Eingangssignals, für den der
AAC-Codierer einen Ausgangsdatenblock erzeugt, der Celp-
Codierer zwölf Ausgangsdatenblöcke erzeugt. Der Verzöge
rungs-Vorteil durch den Datenstrom, der in Fig. 2d gezeigt
ist, gegenüber dem Datenstrom, der in Fig. 2c gezeigt ist,
kann in diesem Fall durchaus in Größenordnungen von einer
viertel bis zu einer halben Sekunde kommen. Dieser Vorteil
wird sich um so mehr erhöhen, je größer das Verhältnis
zwischen Blocklänge des zweiten Codierers und Blocklänge des
ersten Codierers wird, wobei im Falle des AAC-Codierers als
zweiter Codierer eine möglichst große Blocklänge aufgrund
des dann günstigeren Verhältnisses zwischen Nutzinformationen
zu Seiteninformationen angestrebt wird, wenn es das
zu codierende Signal zuläßt.
In Fig. 2c ist ein skalierbarer Datenstrom nach dem LATM-
Format dargestellt, bei dem die Datenblöcke des ersten
Codierers zwischengespeichert werden müssen, also verzögert
werden müssen. Dies rührt, wie es ausgeführt worden ist, bei
dem Format von Fig. 2c daher, daß der Header erst dann ge
schrieben werden kann, wenn die Ausgangsdaten des zweiten
Codierers vorliegen, da der Header Informationen über die
Länge bzw. die Anzahl der Bits im Ausgangsdatenblock des
zweiten Codierers umfaßt.
So ist in Fig. 2d zu Illustrationszwecken bereits eine Ver
besserung dahingehend gezeigt, daß die Ausgangsdatenblöcke
des ersten Codierers bereits früher in den Bitstrom ge
schrieben werden, um die Verzögerung zu verringern, wenn ein
Decodierer lediglich die unterste Skalierungsschicht deco
dieren möchte. Nichtsdestoweniger steht jedoch der Bestim
mungsdatenblock immer noch vor dem Ausgangsdatenblock des
zweiten Codierers, der in Fig. 2d mit "1" bezeichnet ist.
In Fig. 2e ist nunmehr, im Vergleich zu Fig. 2c der erfin
dungsgemäße skalierbare Datenstrom dargestellt, bei dem der
Bestimmungsdatenblock (Header 1 200) nicht mehr unmittelbar
dann geschrieben wird, wenn er verfügbar ist, also vor dem
Ausgangsdatenblock des ersten Codierers, der mit einer "11"
bezeichnet ist, sondern bei dem der Bestimmungsdatenblock
200 um eine Zeitspanne gegenüber dem Fall von Fig. 2c
verzögert in den Datenstrom geschrieben wird. Diese Zeit
spanne ist bei einem bevorzugten Ausführungsbeispiel der
vorliegenden Erfindung gleich der maximalen Größe der Bit
sparkasse (Max Bufferfullness 250). Damit beginnt der Aus
gangsdatenblock des zweiten Codierers für den aktuellen Ab
schnitt des Eingangssignals, der durch den Bestimmungsdaten
block 200 bezeichnet wird, um eine Anzahl von Bits, die
gleich Bufferfullness 260 ist, in Übertragungsrichtung von
einem Codierer zu einem Decodierer vor dem Bestimmungsdatenblock,
während, wenn Fig. 2c betrachtet wird, die AAC-Daten
hinter dem Bestimmungsdatenblock begonnen haben.
Vom Decodierer aus betrachtet ist der Zeiger 260 somit ein
Backpointer.
Für den Fall, daß der erste Codierer für eine Anzahl von
Abtastwerten eine größere Anzahl von Blöcken liefert als der
zweite Codierer, wobei bei dem in Fig. 2e gezeichneten Bei
spiel das Verhältnis vier Blöcke von Ausgangsdaten des er
sten Codierers zu einem Block von Ausgangsdaten des zweiten
Codierers für dieselbe Anzahl von Abtastwerten lediglich
beispielhaft ist, wird ausgehend von dem Bestimmungsdaten
block nunmehr ebenfalls wie im Fall von Fig. 2d ein Core
Frame Offset signalisiert, damit ein Decodierer weiß, welche
Blöcke von Ausgangsdaten des ersten Codierers zu beispiels
weise einem Block von Ausgangsdaten des zweiten Codierers
gehören bzw. über Core Coder Delay aufeinander bezogen sind.
Wenn nunmehr Fig. 2d mit Fig. 2e verglichen wird, so ist zu
sehen, daß auch in Fig. 2d ein Offset 204 vorhanden ist. Der
Offset 204 von Fig. 2d, der in Fig. 2d einen Wert von 2 hat,
würde sich, bezogen auf den Fall von Fig. 2e auf einen Wert
von 3 erhöhen, da sich der Bestimmungsdatenblock 200 in Fig.
2e im Vergleich von Fig. 2d um 3 Ausgangsdatenblöcke des er
sten Codierers nach hinten verschoben hat.
Im nachfolgenden wird noch einmal auf Fig. 1a Bezug genom
men. Zusätzlich zu dem bereits in der Beschreibungseinlei
tung beschriebenen skalierbaren Codierer enthält der erfin
dungsgemäße skalierbare Codierer, der in Fig. 1a dargestellt
ist, einen Block Bitsparkassensteuerung 50 sowie eine
Steuerleitung 52 vom AAC-Codierer 14 zum Bitstrommultiplexer
20, über die die maximale Größe der Bitsparkasse, die durch
die Bitsparkassensteuerung 50 eingestellt worden ist, dem
Bitstrommultiplexer mitgeteilt werden kann, damit derselbe
die in Fig. 2e erforderliche Bitstromformatierung durch
führen kann.
In Fig. 1b findet sich ein schematisches Blockschaltbild
eines skalierbaren Decodierers, der zu dem skalierbaren Co
dierer in Fig. 1a komplementär ist. Der skalierbare Bit
strom, der dem Codierer über eine Leitung 60 zugeführt wird,
wird in einen Eingangspuffer/Bitstrom-Demultiplexer 62 des
Decodierers eingespeist. Hier wird der Bitstrom aufgeteilt,
um die für einen CELP-Decodierer 64 und einen AAC-Decodierer
66 benötigten Blöcke zu extrahieren. Der erfindungsgemäße
Decodierer umfaßt ferner eine AAC-Verzögerungsstufe 68, die
dafür da ist, um eine der Bitsparkassengröße entsprechende
Verzögerung einzuführen, damit dem AAC-Decodierer 66 niemals
Daten zur Ausgabe ausgehen. Erfindungsgemäß ist diese AAC-
Verzögerungsstufe nunmehr variabel ausgestaltet, wobei die
Verzögerung abhängig von Bitsparkasseninformationen gesteu
ert werden, welche vom Bitstrom-Demultiplexer 62 aus dem
Bitstrom extrahiert werden und über eine Bitsparkassen-In
formationen-Leitung 70 der AAC-Verzögerungsstufe 68 zuge
führt werden. Je nach Bitsparkassenstand wird nunmehr die
Verzögerung der AAC-Verzögerungsstufe 68 eingestellt. Wird
durch die Bitsparkassensteuerungseinrichtung 50 von Fig. 1a
eine kleine Bitsparkasse eingestellt, so kann auch die AAC-
Verzögerungsstufe 68 auf eine kleinere Verzögerung einge
stellt werden, so daß eine verzögerungsärmere Decodierung
der zweiten Skalierungsschicht erreicht werden kann.
Der skalierbare Decodierer von Fig. 1b umfaßt ferner eine
MDCT-Einrichtung 72, um die Zeitbereichsausgangssignale des
CELP-Decodierers 64 in den Frequenzbereich zu transformie
ren, und ein derselben vorgeschaltete Upsampling-Stufe. Das
Spektrum wird durch eine Verzögerungsstufe 74 verzögert, die
zwischen den beiden Zweigen vorhandene Zeitunterschiede
ausgleicht, so daß an einer Einrichtung 76, die mit Addie
rer/FSS-1 bezeichnet ist, gleiche Verhältnisse vorliegen.
Die Einrichtung 66 vollführt im wesentlichen die analoge
Funktion wie der Subtrahierer 40 und die FSS 44 von Fig. 1a.
Nach dem Block 76 werden die Spektralwerte durch eine Ein
richtung 78 zum Durchführen einer Rücktransformation vom
Frequenzbereich in den Zeitbereich transformiert, so daß an
einem Ausgang 80 entweder lediglich die zweite Skalierungs
schicht oder aber die erste und die zweite Skalierungs
schicht im Zeitbereich vorliegen. An einem Ausgang 82 liegt
dagegen lediglich die erste Skalierungsschicht im Zeitbe
reich vor, die vom CELP-Decodierer 64 erzeugt wird.
Im nachfolgenden wird auf Fig. 3 eingegangen, welche zu Fig.
2 ähnlich ist, jedoch die besondere Implementierung am Bei
spiel von MPEG 4 darstellt. In der ersten Zeile ist wieder
ein aktueller Zeitabschnitt schraffiert gezeigt. In der
zweiten Zeile ist die Fensterung, die beim AAC-Codierer
verwendet wird, schematisch dargestellt. Wie es bekannt ist,
wird ein Overlap-And-Add von 50% verwendet, so daß ein
Fenster üblicherweise die doppelte Länge von zeitlichen
Abtastwerten hat wie der aktuelle Zeitabschnitt, der in der
obersten Zeile von Fig. 3 schraffiert dargestellt ist. In
Fig. 3 ist ferner die Verzögerung tdip eingezeichnet, die
dem Block 26 von Fig. 1 entspricht und die im gewählten
Beispiel eine Größe von 5/8 der Blocklänge hat. Typischer
weise wird eine Blocklänge des aktuellen Zeitabschnitts von
960 Abtastwerten verwendet, so daß die Verzögerung tdip von
5/8 der Blocklänge 600 Abtastwerte beträgt. Beispielsweise
liefert der AAC-Codierer einen Bitstrom von 24 kBit/s, wäh
rend der darunter schematisch dargestellte Celp-Codierer
einen Bitstrom mit einer Rate von 8 kBit/s liefert. Die
Gesamtbitrate beträgt dann 32 kBit/s.
Wie es aus Fig. 3 ersichtlich ist, entsprechen die Ausgangs
datenblöcke Null und Eins des Celp-Codierers dem aktuellen
Zeitabschnitt für den ersten Codierer. Der Ausgangsdaten
block mit der Nummer 2 des Celp-Codierers entspricht bereits
dem nächsten Zeitabschnitt. Dasselbe trifft für den Celp-
Block mit der Nummer 3 zu. In Fig. 3 ist ferner die Verzöge
rung der Downsampling-Stufe 28 und des Celp-Codierers 12
durch einen Pfeil eingezeichnet, der mit dem Bezugszeichen
302 dargestellt ist. Daraus ergibt sich als die Verzögerung,
die durch die Stufe 34 eingestellt werden muß, damit an der
Subtrahierstelle 40 von Fig. 1 gleiche Verhältnisse vorlie
gen, die Verzögerung, die durch Core Coder Delay bezeichnet
ist und mit einem Pfeil 304 in Fig. 3 veranschaulicht ist.
Diese Verzögerung kann alternativ auch durch Block 26 er
zeugt werden. So gilt beispielsweise:
Core Coder Delay =
= tdip - Celp Encoder Delay - Downsampling Delay =
= 600 - 120 - 117 = 363 Abtastwerte.
Für den Fall ohne Bitsparkassenfunktion bzw. für den Fall,
daß die Bitsparkasse (Bit Mux Outputbuffer) voll ist, was
durch die Variable Bufferfullness = Max angezeigt ist, er
gibt sich der in Fig. 2d gezeichnete Fall. Im Unterschied zu
Fig. 2d, bei der vier Ausgangsdatenblöcke des ersten Codie
rers entsprechend einem Ausgangsdatenblock des zweiten Co
dierers erzeugt werden, wird bei Fig. 3 für einen Ausgangs
datenblock des zweiten Codierers, welcher in den beiden
letzten Zeilen von Fig. 3 schwarz gezeichnet ist, zwei Aus
gangsdatenblöcke des Celp-Codierers, die mit "0" und "1" be
zeichnet sind, erzeugt. Erfindungsgemäß wird nun jedoch hin
ter einen ersten LATM-Header 306 nicht mehr der Ausgangs
datenblock des Celp-Codierers mit der Nummer "0" geschrie
ben, sondern der Ausgangsdatenblock des Celp-Codierers mit
der Nummer "Eins", zumal der Ausgangsdatenblock mit der Num
mer "Null" bereits zum Decodierer übertragen worden ist. In
dem für die Celp-Datenblöcke vorgesehenen äquidistanten
Rasterabstand folgt dann dem Celp-Block 1 der Celp-Block 2
für den nächsten Zeitabschnitt, wobei dann zur Fertigstel
lung eines Frames der Rest der Daten des Ausgangsdatenblocks
des AAC-Codierers in den Datenstrom geschrieben wird, bis
wieder ein nächster LATM-Header 308 für den nächsten Zeitab
schnitt folgt.
Die vorliegende Erfindung kann, wie es in der letzten Zeile
von Fig. 3 dargestellt ist, einfach mit der Bitsparkassenfunktion
kombiniert werden. Für den Fall, daß die Variable
"Bufferfullness", die die Füllung der Bitsparkasse anzeigt,
kleiner als der maximale Wert ist, bedeutet dies, daß der
AAC-Frame für den unmittelbar vorhergehenden Zeitabschnitt
mehr Bits als eigentlich zulässig benötigt hat. Dies be
deutet, daß hinter dem LATM-Header 306 die Celp-Frames wie
vorher geschrieben werden, daß jedoch zunächst der zumindest
eine Ausgangsdatenblock des AAC-Codierers aus einem oder
mehreren vorhergehenden Zeitabschnitten in den Bitstrom
geschrieben werden muß, bevor mit dem Schreiben des
Ausgangsdatenblocks des AAC-Codierers für den aktuellen
Zeitabschnitt begonnen werden kann. Aus dem Vergleich der
beiden letzten Zeilen von Fig. 3, die mit "1" und "2"
gekennzeichnet sind, ist zu sehen, daß die Bitsparkassen
funktion unmittelbar auch zu einer Verzögerung im Codierer
für den AAC-Frame führt. So sind die Daten für den AAC-Frame
des aktuellen Zeitabschnitts, die in Fig. 3 mit 310
bezeichnet sind, zwar genau zum gleichen Zeitpunkt wie im
Fall "1" vorhanden, können jedoch erst dann in den Bitstrom
geschrieben werden, nachdem die AAC-Daten 312 für den
unmittelbar vorhergehenden Zeitabschnitt in den Bitstrom
geschrieben worden sind. In Abhängigkeit von dem Bit
sparkassenstand des AAC-Codierers verschiebt sich somit die
Anfangsposition des AAC-Frames.
Der Bitsparkassenstand soll im LATM-Element StreamMuxConfig
durch die Variable "Bufferfullness" übertragen werden. Die
Variable Bufferfullness berechnet sich aus der Variablen
Bitreservoir geteilt durch das 32fache der gerade vorhande
nen Kanalanzahl der Audiokanäle.
Es sei darauf hingewiesen, daß es sich bei dem Zeiger, der
in Fig. 3 mit dem Bezugszeichen 314 gekennzeichnet ist, und
dessen Länge = max Bufferfullness - Bufferfullness ist, um
einen Vorwärtszeiger handelt, der gewissermaßen in die
Zukunft zeigt, während es sich bei dem in Fig. 5 gezeich
neten Zeiger um einen Rückwärtszeiger handelt, der ge
wissermaßen in die Vergangenheit zeigt. Dies liegt daran,
daß gemäß vorliegendem Ausführungsbeispiel der LATM-Header
immer dann in den Bitstrom geschrieben wird, nachdem der
aktuelle Zeitabschnitt durch den AAC-Codierer verarbeitet
worden ist, obgleich ggf. noch AAC-Daten aus vorherigen
Zeitabschnitten in den Bitstrom zu schreiben sind.
Es sei ferner darauf hingewiesen, daß der Zeiger 314 ab
sichtlich unterhalb des Celp-Blocks 2 unterbrochen gezeich
net ist, da er die Länge des Celp-Blocks 2 genauso wie die
Länge des Celp-Blocks 1 nicht berücksichtigt, da diese Daten
selbstverständlich nichts mit der Bitsparkasse des AAC-Co
dierers zu tun haben. Ferner werden keinerlei Header-Daten
und Bits von gegebenenfalls vorhandenen weiteren Layern
berücksichtigt.
Im Decodierer wird zunächst aus dem Bitstrom eine Extraktion
der Celp-Frames vorgenommen, was ohne weiteres möglich ist,
da dieselben beispielsweise äquidistant angeordnet sind und
eine feste Länge haben.
Im LATM-Header können jedoch ohnehin Länge und Abstand aller
CELP-Blöcke signalisiert werden, so daß in jedem Fall eine
unmittelbare Decodierung möglich ist.
Damit werden die gewissermaßen durch den Celp-Block 2 ge
trennten Teile der Ausgangsdaten des AAC-Codierers des un
mittelbar vorhergehenden Zeitabschnitts wieder aneinander
gefügt, und der LATM-Header 306 rückt gewissermaßen an den
Beginn des Zeigers 314, so daß der Decodierer unter Kenntnis
der Länge des Zeigers 314 weiß, wann nunmehr die Daten des
unmittelbar vorhergehenden Zeitabschnitts zu Ende sind, um
dann, wenn diese Daten vollständig eingelesen sind, den
unmittelbar vorhergehenden Zeitabschnitt zusammen mit den
für denselben vorhandenen Celp-Datenblöcken mit voller
Audioqualität decodieren zu können.
Im Gegensatz zu dem in Fig. 2c gezeigten Fall, bei dem einem
LATM-Header sowohl die Ausgangsdatenblöcke des ersten Codierers
als auch der Ausgangsdatenblock des zweiten Codierers
folgt, kann nun einerseits durch die Variable Core Frame
Offset eine Verschiebung von Ausgangsdatenblöcken des ersten
Codierers nach vorne im Bitstrom erfolgen, während durch den
Pfeil 314 (max Bufferfullness - Bufferfullness) eine Ver
schiebung des Ausgangsdatenblocks des zweiten Codierers nach
hinten im skalierbaren Datenstrom erreicht werden kann, so
daß die Bitsparkassenfunktion auch im skalierbaren Daten
strom auf einfache und sichere Art und Weise implementiert
werden kann, während das Grundraster des Bitstroms durch die
aufeinanderfolgende LATM-Bestimmungsdatenblöcke beibehalten
wird, die immer dann geschrieben werden, wenn der AAC-Co
dierer einen Zeitabschnitt codiert hat, und die daher als
Bezugspunkt dienen können, auch wenn, wie es in Fig. 3 in
der letzten Zeile gezeigt ist, ein Großteil der Daten in dem
durch einen LATM-Header bezeichneten Frame einerseits vom
nächsten Zeitabschnitt stammen (hinsichtlich der Celp-
Frames) oder aber von vorhergehenden Zeitabschnitten stammen
(hinsichtlich des AAC-Frames), wobei die jeweiligen Ver
schiebungen jedoch durch die zwei im Bitstrom zusätzlich zu
übertragenden Variablen einem Decodierer mitgeteilt werden.
Zu Illustrationszwecken beschreibt, wie es ausgeführt worden
ist, die letzte Zeile von Fig. 3 den Fall, bei dem der
LATM-Header 306 unmittelbar, nachdem er erzeugt worden ist,
in den Bitstrom geschrieben wird, so daß dem LATM-Header 306
noch Ausgangsdaten des zweiten Codierers (312) des vorheri
gen Zeitabschnitts nachfolgen, wobei die Ausgangsdaten des
zweiten Codierers für den aktuellen Zeitabschnitt, auf den
sich der LATM-Header 306 bezieht, erst in einem Abstand in
Übertragungsrichtung hinter dem LATM-Header folgen, wobei
der Abstand durch die Differenz zwischen Max Bufferfullness
und Bufferfullness gegeben ist, wie es in Fig. 3 dargestellt
ist.
Im Gegensatz dazu wird gemäß der vorliegenden Erfindung, wie
es anhand von Fig. 2e dargestellt worden ist, der LATM-Hea
der 306 nicht mehr dann geschrieben, wenn er erzeugt worden
ist, sondern um eine Zeitspanne verzögert geschrieben, die
Max Bufferfullness entspricht. Der LATM-Header 306 würde
daher erfindungsgemäß je nach Wert von Bufferfullness hinter
einer Stelle 330 im Bitstrom stehen, und der Vorwärts-Zeiger
314 wird durch einen Rückwärtszeiger (260 in Fig. 2e) er
setzt.
Erfindungsgemäß wird ferner die in den Fig. 2c und 2d und
auch in Fig. 3 gewählte Anordnung aufgegeben, bei der ein
CELP-Block unmittelbar dem LATM-Header folgt.
Statt dessen wird bevorzugterweise folgende Prioritätsver
teilung beim Schreiben von Daten in den skalierbaren Bit
strom bevorzugt, um sowohl eine verzögerungsarme Decodierung
der ersten Skalierungsschicht als auch eine verzögerungsarme
Decodierung der zweiten Skalierungsschicht zu erreichen.
Hohe Priorität genießen die Ausgangsdatenblöcke des ersten
Codierers. Immer wenn ein Ausgangsdatenblock des ersten
Codierers fertig geschrieben ist, wird dieser Ausgangsda
tenblock in den Bitstrom geschrieben. Damit ergibt sich bei
Verwendung eines CELP-Codierers automatisch das äquidistante
Raster von Ausgangsdatenblöcken des ersten Codierers, die
ferner eine gleiche Länge haben.
Wenn gerade keine Ausgangsdaten des ersten Codierers zum
Schreiben vorhanden sind, werden Ausgangsdaten des AAC-Co
dierers für den vorausgehenden Zeitabschnitt des Eingangs
signals in den Bitstrom geschrieben, bis keine entsprechen
den Daten mehr vorhanden sind. Erst dann wird mit dem
Schreiben der Ausgangsdaten des AAC-Codierers für den ak
tuellen Abschnitt begonnen. Das Schreiben dieser Ausgangs
daten in den Bitstrom wird, wie es in Fig. 2e ersichtlich
ist, selbstverständlich immer dann unterbrochen, wenn wieder
Ausgangsdaten des ersten Codierers zur Verfügung stehen.
Das Schreiben der Ausgangsdaten des AAC-Codierers für den
aktuellen Zeitabschnitt wird ferner ebenfalls unterbrochen,
wenn ein LATM-Header fertig ist und derselbe um Max Buffer
fullness 250 (Fig. 2e) verzögert worden ist. Der skalierbare
Bitstrom ist fertig, wenn in den Bitstrom entweder separat
oder über den Bestimmungsdatenblock noch die entsprechenden
Werte für Bufferfullness 260 und Offset 270 eingetragen
sind.
Im nachfolgenden wird auf eine Decodierung eines solcher
maßen erzeugten Bitstroms eingegangen. Wenn der Decodierer
lediglich an der ersten Skalierungsschicht, also an den Aus
gangsdatenblöcken des ersten Codierers (CELP-Codierer) in
teressiert ist, so wird er ohne Rücksicht auf LATM-Header
oder AAC-Daten einfach einen CELP-Block nach dem anderen aus
dem Bitstrom holen und decodieren. Da die CELP-Blöcke vor
zugsweise unmittelbar nach ihrer Erzeugung in den Bitstrom
geschrieben werden, ist eine verzögerungsarme Decodierung
der CELP-Blöcke gewährleistet.
Wenn der Decodierer eine Decodierung sowohl der ersten als
auch der zweiten Skalierungsschicht wünscht, also ein Audio
signal mit hoher Qualität erhalten möchte, so muß er die Zu
ordnung zwischen den CELP-Blöcken und dem/den AAC-Blöcken
für einen Superframe, also für eine gewisse Anzahl von Ab
tastwerten, erreichen, wobei gegebenenfalls noch ein Core
Coder Delay (34 von Fig. 1a) zu berücksichtigen ist, wenn
der aktuelle zeitliche Abschnitt des Eingangssignals des
AAC-Codierers bezüglich eines Superframes vom aktuellen
zeitlichen Abschnitt des CELP-Codierers verschoben ist.
Dies geschieht dadurch, daß der Decodierer den Bitstrom zwi
schenspeichert, bis er auf einen LATM-Header, z. B. den
Header 200 von Fig. 2e, stößt. Unter Kenntnis des Offsets
270 kann der Decodierer dann ermitteln, welche Ausgangsda
tenblöcke des ersten Codierers zu dem LATM-Header 200 ge
hören. Unter Berücksichtigung der Variable Bufferfullness
weiß der Decodierer ferner, wo in den im Decodierer-Ein
gangspuffer gespeicherten Daten der AAC-Frame des Zeitab
schnitts beginnt, auf den sich der LATM-Header bezieht. Im
Falle von Bufferfullness gleich Max ist bereits der gesamte
interessierende AAC-Frame im Decodierer-Eingangspuffer ent
halten. Im Fall von Bufferfullness gleich 0 beginnt der in
teressierende AAC-Frame unmittelbar hinter dem LATM-Header,
so daß der Decodierer unter Verwendung der bereits im Ein
gangspuffer gespeicherten Daten oder aber unter Verwendung
eines Teils der im Eingangspuffer gespeicherten Daten und
unter Verwendung eines unmittelbar ankommenden Teils von
Daten, die in Übertragungsrichtung hinter dem LATM-Header
stehen, ohne Verzögerung beginnen kann, zu decodieren. Die
Bitsparkassengröße wird somit allein implizit durch die Lage
des Bestimmungsdatenblocks bezüglich der Nutzdaten im
Bitstrom signalisiert, ohne daß irgendwelche Seiteninforma
tionen erforderlich sind. In diesem Fall ist auch die Stufe
mit variabler Verzögerung im Decodierer (Block 68 von Fig.
1b) und die Leitung 70 von Fig. 1b hinfällig.
Claims (9)
1. Verfahren zum Erzeugen eines skalierbaren Datenstroms
aus zumindest einem Block von Ausgangsdaten eines er
sten Codierers (12) und zumindest einem Block von Aus
gangsdaten eines zweiten Codierers (14), wobei der
zweite Codierer eine Bitsparkasse umfaßt, die durch
eine maximale Größe und einen aktuellen Stand definiert
ist, wobei der zumindest eine Block von Ausgangsdaten
des ersten Codierers eine Anzahl von Abtastwerten des
Eingangssignals in den ersten Codierer darstellt, wobei
die Anzahl von Abtastwerten einen aktuellen Abschnitt
des Eingangssignals für den ersten Codierer definiert,
und wobei der zumindest eine Block von Ausgangsdaten
des zweiten Codierers eine Anzahl von Abtastwerten des
Eingangssignals in den zweiten Codierer darstellt, wo
bei die Anzahl von Abtastwerten einen aktuellen Ab
schnitt des Eingangssignals für den zweiten Codierer
darstellt, wobei die Anzahl von Abtastwerten für den
ersten Codierer und die Anzahl von Abtastwerten für den
zweiten Codierer gleich sind, und wobei die aktuellen
Abschnitte für den ersten und den zweiten Codierer
identisch sind oder um eine einstellbare Zeitdauer (34)
zueinander verschoben sind, mit folgenden Merkmalen:
wenn ein Block (11) von Ausgangsdaten des ersten Codie rers (12) vorliegt, Schreiben des zumindest einen Blocks von Ausgangsdaten des ersten Codierers in den skalierbaren Datenstrom;
falls Ausgangsdaten (0) des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer vorliegen, Schreiben der Ausgangsdaten des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer in Über tragungsrichtung hinter einem Block (11) von Ausgangs daten des ersten Codierers;
wenn Ausgangsdaten (1) des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers vorliegen, Schreiben der Ausgangsdaten des zweiten Codierers in Übertragungsrichtung hinter die Ausgangsdaten des zwei ten Codierers für einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer in den Bit strom;
Erzeugen eines Bestimmungsdatenblocks (200), wenn der Block von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers bereit ist, und Schreiben des Bestimmungsdatenblocks (200) um eine Zeitspanne (250) bezüglich der Erzeugung des Bestim mungsdatenblocks verzögert, wobei die Zeitspanne klei ner oder gleich einer Verzögerung ist, die der maxima len Größe der Bitsparkasse des zweiten Codierers (14) entspricht; und
Schreiben von Pufferinformationen (260) in den Bit strom, die anzeigen, wo der Beginn der Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer bezüglich des Bestimmungsdatenblocks (200) ist.
wenn ein Block (11) von Ausgangsdaten des ersten Codie rers (12) vorliegt, Schreiben des zumindest einen Blocks von Ausgangsdaten des ersten Codierers in den skalierbaren Datenstrom;
falls Ausgangsdaten (0) des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer vorliegen, Schreiben der Ausgangsdaten des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer in Über tragungsrichtung hinter einem Block (11) von Ausgangs daten des ersten Codierers;
wenn Ausgangsdaten (1) des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers vorliegen, Schreiben der Ausgangsdaten des zweiten Codierers in Übertragungsrichtung hinter die Ausgangsdaten des zwei ten Codierers für einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer in den Bit strom;
Erzeugen eines Bestimmungsdatenblocks (200), wenn der Block von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers bereit ist, und Schreiben des Bestimmungsdatenblocks (200) um eine Zeitspanne (250) bezüglich der Erzeugung des Bestim mungsdatenblocks verzögert, wobei die Zeitspanne klei ner oder gleich einer Verzögerung ist, die der maxima len Größe der Bitsparkasse des zweiten Codierers (14) entspricht; und
Schreiben von Pufferinformationen (260) in den Bit strom, die anzeigen, wo der Beginn der Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer bezüglich des Bestimmungsdatenblocks (200) ist.
2. Verfahren nach Anspruch 1,
bei dem die Zeitdauer (250) gleich einer Verzögerung ist, die der maximalen Größe der Bitsparkasse entspricht, und
bei dem die Pufferinformationen (260) dem aktuellen Stand der Bitsparkasse für den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer entsprechen.
bei dem die Zeitdauer (250) gleich einer Verzögerung ist, die der maximalen Größe der Bitsparkasse entspricht, und
bei dem die Pufferinformationen (260) dem aktuellen Stand der Bitsparkasse für den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer entsprechen.
3. Verfahren nach Anspruch 1 oder Anspruch 2,
bei dem der Bestimmungsdatenblock (200) mit hoher Pri orität geschrieben wird,
bei dem die Blöcke von Ausgangsdaten des ersten Codie rers mit geringerer Priorität geschrieben werden, und
bei dem der zumindest eine Block (0) von Ausgangsdaten des zweiten Codierers für einen vorhergehenden Ab schnitt des Eingangssignals mit höherer Priorität in den Bitstrom geschrieben wird, als der zumindest eine Block (1) von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt.
bei dem der Bestimmungsdatenblock (200) mit hoher Pri orität geschrieben wird,
bei dem die Blöcke von Ausgangsdaten des ersten Codie rers mit geringerer Priorität geschrieben werden, und
bei dem der zumindest eine Block (0) von Ausgangsdaten des zweiten Codierers für einen vorhergehenden Ab schnitt des Eingangssignals mit höherer Priorität in den Bitstrom geschrieben wird, als der zumindest eine Block (1) von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt.
4. Verfahren nach einem der vorhergehenden Ansprüche, bei
dem der erste Codierer für eine Anzahl von Abtastwerten
zumindest zwei Blöcke liefert, wobei das Verfahren
ferner folgenden Schritt aufweist:
Schreiben von Offset-Informationen (270) in den Bit strom, die anzeigen, wie viele Blöcke von Ausgangsdaten des ersten Codierers (12) in Übertragungsrichtung vor dem Bestimmungsdatenblock (200) zu dem aktuellen Ab schnitt des ersten Codierers (12) gehören.
Schreiben von Offset-Informationen (270) in den Bit strom, die anzeigen, wie viele Blöcke von Ausgangsdaten des ersten Codierers (12) in Übertragungsrichtung vor dem Bestimmungsdatenblock (200) zu dem aktuellen Ab schnitt des ersten Codierers (12) gehören.
5. Codierer (14) mit einer Bitsparkasse, wobei die Bit
sparkasse eine maximale Größe aufweist, mit folgenden
Merkmalen:
einer Einrichtung (50) zum Einstellen der maximalen Größe der Bitsparkasse abhängig von einer für einen Audiodecodierer vorgesehenen Verzögerung; und
einer Einrichtung (52, 20) zum Übertragen der einge stellten maximalen Größe der Bitsparkasse in einem aus gangsseitigen Datenstrom.
einer Einrichtung (50) zum Einstellen der maximalen Größe der Bitsparkasse abhängig von einer für einen Audiodecodierer vorgesehenen Verzögerung; und
einer Einrichtung (52, 20) zum Übertragen der einge stellten maximalen Größe der Bitsparkasse in einem aus gangsseitigen Datenstrom.
6. Skalierbarer Codierer mit folgenden Merkmalen:
einem ersten Codierer (12) zum Erzeugen eines Blocks von Ausgangsdaten für den ersten Codierer;
einem zweiten Codierer (14) mit einer Bitsparkasse, wo bei die Bitsparkasse eine maximale Größe aufweist, zum Erzeugen eines Blocks von Ausgangsdaten für den zweiten Codierer, wobei der zweite Codierer ferner eine Ein richtung (50) zum Einstellen der maximalen Größe der Bitsparkasse abhängig von einer für einen Audiodecodie rer vorgesehenen Anfangsverzögerung aufweist;
einem Bitstrommultiplexer (20) zum Erzeugen eines ska lierbaren Datenstroms, wobei der Bitstrommultiplexer (20) ausgebildet ist, um
den Block von Ausgangsdaten für den ersten Codie rer (12) in einen skalierbaren Datenstrom zu schreiben,
den Block von Ausgangsdaten für den zweiten Co dierer (14) in den skalierbaren Datenstrom zu schreiben;
einen Bestimmungsdatenblock (200) zu erzeugen, nachdem der Block von Ausgangsdaten des zweiten Codierers durch den zweiten Codierer ausgegeben ist,
den Bestimmungsdatenblock um eine Zeitdauer ver zögert, wobei die Zeitdauer der maximalen Größe der Bitsparkasse entspricht, in den skalierbaren Datenstrom zu schreiben, und
um Pufferinformationen (260) in den Bitstrom zu schreiben, die anzeigen, wie weit der Beginn der Ausgangsdaten des zweiten Codierers in Übertra gungsrichtung vor dem Bestimmungsdatenblock (200) liegt, wobei die Pufferinformationen einem aktuel len Stand der Bitsparkasse entsprechen.
einem ersten Codierer (12) zum Erzeugen eines Blocks von Ausgangsdaten für den ersten Codierer;
einem zweiten Codierer (14) mit einer Bitsparkasse, wo bei die Bitsparkasse eine maximale Größe aufweist, zum Erzeugen eines Blocks von Ausgangsdaten für den zweiten Codierer, wobei der zweite Codierer ferner eine Ein richtung (50) zum Einstellen der maximalen Größe der Bitsparkasse abhängig von einer für einen Audiodecodie rer vorgesehenen Anfangsverzögerung aufweist;
einem Bitstrommultiplexer (20) zum Erzeugen eines ska lierbaren Datenstroms, wobei der Bitstrommultiplexer (20) ausgebildet ist, um
den Block von Ausgangsdaten für den ersten Codie rer (12) in einen skalierbaren Datenstrom zu schreiben,
den Block von Ausgangsdaten für den zweiten Co dierer (14) in den skalierbaren Datenstrom zu schreiben;
einen Bestimmungsdatenblock (200) zu erzeugen, nachdem der Block von Ausgangsdaten des zweiten Codierers durch den zweiten Codierer ausgegeben ist,
den Bestimmungsdatenblock um eine Zeitdauer ver zögert, wobei die Zeitdauer der maximalen Größe der Bitsparkasse entspricht, in den skalierbaren Datenstrom zu schreiben, und
um Pufferinformationen (260) in den Bitstrom zu schreiben, die anzeigen, wie weit der Beginn der Ausgangsdaten des zweiten Codierers in Übertra gungsrichtung vor dem Bestimmungsdatenblock (200) liegt, wobei die Pufferinformationen einem aktuel len Stand der Bitsparkasse entsprechen.
7. Vorrichtung zum Erzeugen eines skalierbaren Datenstroms
aus zumindest einem Block von Ausgangsdaten eines er
sten Codierers (12) und zumindest einem Block von Aus
gangsdaten eines zweiten Codierers (14), wobei der
zweite Codierer eine Bitsparkasse umfaßt, die durch
eine maximale Größe und einen aktuellen Stand definiert
ist, wobei der zumindest eine Block von Ausgangsdaten
des ersten Codierers eine Anzahl von Abtastwerten des
Eingangssignals in den ersten Codierer darstellt, wobei
die Anzahl von Abtastwerten einen aktuellen Abschnitt
des Eingangssignals für den ersten Codierer definiert,
und wobei der zumindest eine Block von Ausgangsdaten
des zweiten Codierers eine Anzahl von Abtastwerten des
Eingangssignals in den zweiten Codierer darstellt, wo
bei die Anzahl von Abtastwerten einen aktuellen Ab
schnitt des Eingangssignals für den zweiten Codierer
darstellt, wobei die Anzahl von Abtastwerten für den
ersten Codierer und die Anzahl von Abtastwerten für den
zweiten Codierer gleich sind, und wobei die aktuellen
Abschnitte für den ersten und den zweiten Codierer
identisch sind oder um eine einstellbare Zeitdauer (34)
zueinander verschoben sind, mit folgenden Merkmalen:
einer Einrichtung zum Schreiben eines Blocks von Ausgangsdaten des ersten Codierers in den skalierbaren Datenstrom, wenn ein Block (11) von Ausgangsdaten des ersten Codierers (12) vorliegt,;
einer Einrichtung zum Schreiben von Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer in Über tragungsrichtung hinter einen Block (11) von Ausgangs daten des ersten Codierers, falls die Ausgangsdaten (0) des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer vorliegen;
einer Einrichtung zum Schreiben von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des Zeitsignals für den zweiten Codierer in Übertragungs richtung hinter den Ausgangsdaten des zweiten Codierers für einen vorausgehenden Abschnitt des Eingangssignals für den zweiten Codierer in den Bitstrom, wenn Aus gangsdaten (1) des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers vorliegen;
einer Einrichtung zum Erzeugen eines Bestimmungsdaten blocks (200), wenn der Block von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zwei ten Codierers vorhanden ist, und zum Schreiben des Bestimmungsdatenblocks (200) um eine Zeitspanne (250) bezüglich der Erzeugung des Bestimmungsdatenblocks verzögert, wobei die Zeitspanne kleiner oder gleich einer Verzögerung ist, die der maximalen Größe der Bitsparkasse des zweiten Codierers (14) entspricht; und
einer Einrichtung zum Schreiben von Pufferinformationen (260) in den Bitstrom, die anzeigen, wo der Beginn der Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers bezüglich des Bestim mungsdatenblocks (200) ist.
einer Einrichtung zum Schreiben eines Blocks von Ausgangsdaten des ersten Codierers in den skalierbaren Datenstrom, wenn ein Block (11) von Ausgangsdaten des ersten Codierers (12) vorliegt,;
einer Einrichtung zum Schreiben von Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer in Über tragungsrichtung hinter einen Block (11) von Ausgangs daten des ersten Codierers, falls die Ausgangsdaten (0) des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer vorliegen;
einer Einrichtung zum Schreiben von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des Zeitsignals für den zweiten Codierer in Übertragungs richtung hinter den Ausgangsdaten des zweiten Codierers für einen vorausgehenden Abschnitt des Eingangssignals für den zweiten Codierer in den Bitstrom, wenn Aus gangsdaten (1) des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers vorliegen;
einer Einrichtung zum Erzeugen eines Bestimmungsdaten blocks (200), wenn der Block von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zwei ten Codierers vorhanden ist, und zum Schreiben des Bestimmungsdatenblocks (200) um eine Zeitspanne (250) bezüglich der Erzeugung des Bestimmungsdatenblocks verzögert, wobei die Zeitspanne kleiner oder gleich einer Verzögerung ist, die der maximalen Größe der Bitsparkasse des zweiten Codierers (14) entspricht; und
einer Einrichtung zum Schreiben von Pufferinformationen (260) in den Bitstrom, die anzeigen, wo der Beginn der Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers bezüglich des Bestim mungsdatenblocks (200) ist.
8. Verfahren zum Decodieren eines skalierbaren Datenstroms
aus zumindest einem Block von Ausgangsdaten eines er
sten Codierers (12) und zumindest einem Block von Aus
gangsdaten eines zweiten Codierers (14), wobei der
zweite Codierer eine Bitsparkasse umfaßt, die durch
eine maximale Größe und einen aktuellen Stand definiert
ist, wobei der zumindest eine Block von Ausgangsdaten
des ersten Codierers eine Anzahl von Abtastwerten des
Eingangssignals in den ersten Codierer darstellt, wobei
die Anzahl von Abtastwerten einen aktuellen Abschnitt
des Eingangssignals für den ersten Codierer definiert,
und wobei der zumindest eine Block von Ausgangsdaten
des zweiten Codierers eine Anzahl von Abtastwerten des
Eingangssignals in den zweiten Codierer darstellt, wo
bei die Anzahl von Abtastwerten einen aktuellen Abschnitt
des Eingangssignals für den zweiten Codierer
darstellt, wobei die Anzahl von Abtastwerten für den
ersten Codierer und die Anzahl von Abtastwerten für den
zweiten Codierer gleich sind, und wobei die aktuellen
Abschnitte für den ersten und den zweiten Codierer
identisch sind oder um eine einstellbare Zeitdauer (34)
zueinander verschoben sind, wobei der skalierbare Da
tenstrom Ausgangsdaten (11) des ersten Codierers, Aus
gangsdaten des zweiten Codierers für einen vorhergehen
den Abschnitt, Ausgangsdaten des zweiten Codierers für
einen aktuellen Abschnitt, einen Bestimmungsdatenblock
(200) und Pufferinformationen (260) aufweist, mit fol
genden Schritten:
Zwischenspeichern (62) des skalierbaren Datenstroms;
Lesen des Blocks von Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers;
Lesen des Bestimmungsdatenblocks (200) und der Puffer informationen (260) aus dem zwischengespeicherten Da tenstrom;
Ermitteln des Beginns des Blocks von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zwei ten Codierers unter Verwendung der Pufferinformationen (260); und
Decodieren (64, 66) des Blocks von Ausgangsdaten des ersten Codierers und des Blocks von Ausgangsdaten des zweiten Codierers gegebenenfalls unter Berücksichtigung der einstellbaren Zeitdauer (34), um die der aktuelle Abschnitt des ersten Codierers und der aktuelle Ab schnitt des zweiten Codierers zeitlich zueinander ver schoben sind.
Zwischenspeichern (62) des skalierbaren Datenstroms;
Lesen des Blocks von Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers;
Lesen des Bestimmungsdatenblocks (200) und der Puffer informationen (260) aus dem zwischengespeicherten Da tenstrom;
Ermitteln des Beginns des Blocks von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zwei ten Codierers unter Verwendung der Pufferinformationen (260); und
Decodieren (64, 66) des Blocks von Ausgangsdaten des ersten Codierers und des Blocks von Ausgangsdaten des zweiten Codierers gegebenenfalls unter Berücksichtigung der einstellbaren Zeitdauer (34), um die der aktuelle Abschnitt des ersten Codierers und der aktuelle Ab schnitt des zweiten Codierers zeitlich zueinander ver schoben sind.
9. Vorrichtung zum Decodieren eines skalierbaren Daten
stroms aus zumindest einem Block von Ausgangsdaten eines
ersten Codierers (12) und zumindest einem Block von
Ausgangsdaten eines zweiten Codierers (14), wobei der
zweite Codierer eine Bitsparkasse umfaßt, die durch
eine maximale Größe und einen aktuellen Stand definiert
ist, wobei der zumindest eine Block von Ausgangsdaten
des ersten Codierers eine Anzahl von Abtastwerten des
Eingangssignals in den ersten Codierer darstellt, wobei
die Anzahl von Abtastwerten einen aktuellen Abschnitt
des Eingangssignals für den ersten Codierer definiert,
und wobei der zumindest eine Block von Ausgangsdaten
des zweiten Codierers eine Anzahl von Abtastwerten des
Eingangssignals in den zweiten Codierer darstellt, wo
bei die Anzahl von Abtastwerten einen aktuellen Ab
schnitt des Eingangssignals für den zweiten Codierer
darstellt, wobei die Anzahl von Abtastwerten für den
ersten Codierer und die Anzahl von Abtastwerten für den
zweiten Codierer gleich sind, und wobei die aktuellen
Abschnitte für den ersten und den zweiten Codierer
identisch sind oder um eine einstellbare Zeitdauer (34)
zueinander verschoben sind, wobei der skalierbare Da
tenstrom Ausgangsdaten (11) des ersten Codierers, Aus
gangsdaten des zweiten Codierers für einen vorhergehen
den Abschnitt, Ausgangsdaten des zweiten Codierers für
einen aktuellen Abschnitt, einen Bestimmungsdatenblock
(200) und Pufferinformationen (260) aufweist, mit fol
genden Merkmalen:
einer Einrichtung zum Zwischenspeichern (62) des ska lierbaren Datenstroms;
einer Einrichtung zum Lesen des Blocks von Ausgangs daten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers;
einer Einrichtung zum Lesen des Bestimmungsdatenblocks (200) und der Pufferinformationen (260) aus dem zwi schengespeicherten Datenstrom;
einer Einrichtung zum Ermitteln des Beginns des Blocks von Ausgangsdaten des zweiten Codierers für den aktuel len Abschnitt des zweiten Codierers unter Verwendung der Pufferinformationen (260); und
einer Einrichtung zum Decodieren (64, 66) des Blocks von Ausgangsdaten des ersten Codierers und des Blocks von Ausgangsdaten des zweiten Codierers gegebenenfalls unter Berücksichtigung der einstellbaren Zeitdauer (34), um die der aktuelle Abschnitt des ersten Codie rers und der aktuelle Abschnitt des zweiten Codierers zeitlich zueinander verschoben sind.
einer Einrichtung zum Zwischenspeichern (62) des ska lierbaren Datenstroms;
einer Einrichtung zum Lesen des Blocks von Ausgangs daten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers;
einer Einrichtung zum Lesen des Bestimmungsdatenblocks (200) und der Pufferinformationen (260) aus dem zwi schengespeicherten Datenstrom;
einer Einrichtung zum Ermitteln des Beginns des Blocks von Ausgangsdaten des zweiten Codierers für den aktuel len Abschnitt des zweiten Codierers unter Verwendung der Pufferinformationen (260); und
einer Einrichtung zum Decodieren (64, 66) des Blocks von Ausgangsdaten des ersten Codierers und des Blocks von Ausgangsdaten des zweiten Codierers gegebenenfalls unter Berücksichtigung der einstellbaren Zeitdauer (34), um die der aktuelle Abschnitt des ersten Codie rers und der aktuelle Abschnitt des zweiten Codierers zeitlich zueinander verschoben sind.
Priority Applications (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10102159A DE10102159C2 (de) | 2001-01-18 | 2001-01-18 | Verfahren und Vorrichtung zum Erzeugen bzw. Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkasse, Codierer und skalierbarer Codierer |
KR1020037009445A KR100576034B1 (ko) | 2001-01-18 | 2002-01-14 | 비트 세이빙 뱅크, 인코더 및 스케일러블 인코더를 제공하여 스케일러블 데이터 스트림을 생성 및/또는 디코딩하는 방법 및 장치 |
JP2002563470A JP3890300B2 (ja) | 2001-01-18 | 2002-01-14 | ビットセイビングバンク、エンコーダおよびスケーラブルエンコーダを備えたスケーラブルデータストリームを生成する方法と装置および復号化する方法と装置 |
CA002434882A CA2434882C (en) | 2001-01-18 | 2002-01-14 | Method and device for generating and/or decoding a scalable data stream with provision for a bit savings bank, encoder and scalable encoder |
AU2002249122A AU2002249122B2 (en) | 2001-01-18 | 2002-01-14 | Method and device for the generation or decoding of a scalable data stream with provision for a bit-store, encoder and scalable encoder |
AT02718023T ATE275751T1 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer |
DE50200953T DE50200953D1 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer |
PCT/EP2002/000294 WO2002063611A1 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer |
US10/466,781 US7516230B2 (en) | 2001-01-18 | 2002-01-14 | Method and device for the generation or decoding of a scalable data stream with provision for a bit-store, encoder and scalable encoder |
EP02718023A EP1338004B8 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer |
HK03108993A HK1056641A1 (en) | 2001-01-18 | 2003-12-11 | Method and device for the generation or decoding of a scalable data stream with provision for a bit-tore, encoder and scalable encoder. |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10102159A DE10102159C2 (de) | 2001-01-18 | 2001-01-18 | Verfahren und Vorrichtung zum Erzeugen bzw. Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkasse, Codierer und skalierbarer Codierer |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10102159A1 DE10102159A1 (de) | 2002-08-08 |
DE10102159C2 true DE10102159C2 (de) | 2002-12-12 |
Family
ID=7670988
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10102159A Expired - Lifetime DE10102159C2 (de) | 2001-01-18 | 2001-01-18 | Verfahren und Vorrichtung zum Erzeugen bzw. Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkasse, Codierer und skalierbarer Codierer |
DE50200953T Expired - Lifetime DE50200953D1 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE50200953T Expired - Lifetime DE50200953D1 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer |
Country Status (10)
Country | Link |
---|---|
US (1) | US7516230B2 (de) |
EP (1) | EP1338004B8 (de) |
JP (1) | JP3890300B2 (de) |
KR (1) | KR100576034B1 (de) |
AT (1) | ATE275751T1 (de) |
AU (1) | AU2002249122B2 (de) |
CA (1) | CA2434882C (de) |
DE (2) | DE10102159C2 (de) |
HK (1) | HK1056641A1 (de) |
WO (1) | WO2002063611A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10353793A1 (de) * | 2003-11-13 | 2005-06-09 | Deutsche Telekom Ag | Verfahren zur Verbesserung der Wiedergabequalität bei paketorientierter Übertragung von Audio-/Video-Daten |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3881943B2 (ja) | 2002-09-06 | 2007-02-14 | 松下電器産業株式会社 | 音響符号化装置及び音響符号化方法 |
DE10328777A1 (de) * | 2003-06-25 | 2005-01-27 | Coding Technologies Ab | Vorrichtung und Verfahren zum Codieren eines Audiosignals und Vorrichtung und Verfahren zum Decodieren eines codierten Audiosignals |
GB2403634B (en) * | 2003-06-30 | 2006-11-29 | Nokia Corp | An audio encoder |
US7756594B2 (en) * | 2004-06-14 | 2010-07-13 | Microsoft Corporation | Systems and methods for parsing flexible audio codec topologies |
US7590065B2 (en) * | 2004-08-04 | 2009-09-15 | Microsoft Corporation | Equal-opportunity bandwidth regulation |
US20060041895A1 (en) * | 2004-08-04 | 2006-02-23 | Microsoft Corporation | Systems and methods for interfacing with codecs across an architecture optimized for audio |
US7706901B2 (en) * | 2004-10-01 | 2010-04-27 | Microsoft Corporation | Low latency real-time audio streaming |
CN101044554A (zh) * | 2004-10-13 | 2007-09-26 | 松下电器产业株式会社 | 可扩展性编码装置、可扩展性解码装置以及可扩展性编码方法 |
WO2006070751A1 (ja) * | 2004-12-27 | 2006-07-06 | Matsushita Electric Industrial Co., Ltd. | 音声符号化装置および音声符号化方法 |
US8826093B2 (en) * | 2005-01-19 | 2014-09-02 | Qualcomm Incorporated | Power saving method for coded transmission |
WO2007068294A1 (en) * | 2005-12-16 | 2007-06-21 | Dolby Sweden Ab | Apparatus for generating and interpreting a data stream having a series of segments using data in subsequent data frames |
US7809018B2 (en) * | 2005-12-16 | 2010-10-05 | Coding Technologies Ab | Apparatus for generating and interpreting a data stream with segments having specified entry points |
US7590523B2 (en) * | 2006-03-20 | 2009-09-15 | Mindspeed Technologies, Inc. | Speech post-processing using MDCT coefficients |
EP1841072B1 (de) * | 2006-03-30 | 2016-06-01 | Unify GmbH & Co. KG | Verfahren und Einrichtung zum Dekodieren von schichtkodierten Daten |
US8190441B2 (en) * | 2006-09-11 | 2012-05-29 | Apple Inc. | Playback of compressed media files without quantization gaps |
JP4358215B2 (ja) * | 2006-09-27 | 2009-11-04 | 株式会社東芝 | 動画像符号化装置及びその方法 |
EP3373297B1 (de) | 2008-09-18 | 2023-12-06 | Electronics and Telecommunications Research Institute | Entschlüsselungsvorrichtung zur transformation zwischen einem codierer auf basis modifizierter cosinus-transformation und einem hetero-codierer |
CN101771417B (zh) * | 2008-12-30 | 2012-04-18 | 华为技术有限公司 | 信号编码、解码方法及装置、系统 |
ES2986126T3 (es) * | 2010-04-13 | 2024-11-08 | Fraunhofer Ges Zur Foerderungder Angewandten Forschung E V | Decodificación de la representación exacta de una señal de audio |
US8532804B2 (en) * | 2010-06-18 | 2013-09-10 | Microsoft Corporation | Predictive resampler scheduler algorithm |
US8433823B2 (en) * | 2010-09-03 | 2013-04-30 | Tibco Software Inc. | Random access data compression |
KR20120084234A (ko) * | 2011-01-19 | 2012-07-27 | 삼성전자주식회사 | Mpeg media transport(mmt)에서 mmt au를 전송하는 방법 |
TWI476761B (zh) * | 2011-04-08 | 2015-03-11 | Dolby Lab Licensing Corp | 用以產生可由實施不同解碼協定之解碼器所解碼的統一位元流之音頻編碼方法及系統 |
WO2013142650A1 (en) | 2012-03-23 | 2013-09-26 | Dolby International Ab | Enabling sampling rate diversity in a voice communication system |
TWI505262B (zh) | 2012-05-15 | 2015-10-21 | Dolby Int Ab | 具多重子流之多通道音頻信號的有效編碼與解碼 |
US10199043B2 (en) * | 2012-09-07 | 2019-02-05 | Dts, Inc. | Scalable code excited linear prediction bitstream repacked from a higher to a lower bitrate by discarding insignificant frame data |
US9564136B2 (en) * | 2014-03-06 | 2017-02-07 | Dts, Inc. | Post-encoding bitrate reduction of multiple object audio |
US10283091B2 (en) * | 2014-10-13 | 2019-05-07 | Microsoft Technology Licensing, Llc | Buffer optimization |
US12001680B2 (en) * | 2022-08-24 | 2024-06-04 | Micron Technology, Inc. | Utilizing last successful read voltage level in memory access operations |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3912605A1 (de) * | 1989-04-17 | 1990-10-25 | Fraunhofer Ges Forschung | Digitales codierverfahren |
WO1997014229A1 (de) * | 1995-10-06 | 1997-04-17 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Verfahren und vorrichtung zur skalierbaren codierung von audiosignalen |
EP0884850A2 (de) * | 1997-04-02 | 1998-12-16 | Samsung Electronics Co., Ltd. | Komprimierende Audio-Kodier- und Dekodier-Methode und dafür geeignetes Gerät |
WO1999033274A1 (en) * | 1997-12-19 | 1999-07-01 | Kenneth Rose | Scalable predictive coding method and apparatus |
US6092041A (en) * | 1996-08-22 | 2000-07-18 | Motorola, Inc. | System and method of encoding and decoding a layered bitstream by re-applying psychoacoustic analysis in the decoder |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4218695A1 (de) * | 1992-06-09 | 1993-12-16 | Thomson Brandt Gmbh | Verfahren, Coder und Decoder zur Datenübertragung und/oder -speicherung |
US5365552A (en) * | 1992-11-16 | 1994-11-15 | Intel Corporation | Buffer fullness indicator |
US5835033A (en) * | 1994-11-08 | 1998-11-10 | Canon Kabushiki Kaisha | Decoding apparatus and method for coded data |
US5896099A (en) * | 1995-06-30 | 1999-04-20 | Sanyo Electric Co., Ltd. | Audio decoder with buffer fullness control |
US5758092A (en) * | 1995-11-14 | 1998-05-26 | Intel Corporation | Interleaved bitrate control for heterogeneous data streams |
US5768537A (en) | 1996-02-22 | 1998-06-16 | International Business Machines Corporation | Scalable MPEG2 compliant video encoder |
JP3246715B2 (ja) | 1996-07-01 | 2002-01-15 | 松下電器産業株式会社 | オーディオ信号圧縮方法,およびオーディオ信号圧縮装置 |
JP3344944B2 (ja) * | 1997-05-15 | 2002-11-18 | 松下電器産業株式会社 | オーディオ信号符号化装置,オーディオ信号復号化装置,オーディオ信号符号化方法,及びオーディオ信号復号化方法 |
KR100335609B1 (ko) * | 1997-11-20 | 2002-10-04 | 삼성전자 주식회사 | 비트율조절이가능한오디오부호화/복호화방법및장치 |
EP1018220B1 (de) * | 1998-08-06 | 2007-07-25 | Samsung Electronics Co., Ltd. | Kanalkodierung und -dekodierung für ein kommunikationssystem |
US6553086B1 (en) * | 1998-10-02 | 2003-04-22 | Lg Electronics, Inc. | Method and apparatus for recording time information for digital data streams |
US6904089B1 (en) | 1998-12-28 | 2005-06-07 | Matsushita Electric Industrial Co., Ltd. | Encoding device and decoding device |
JP2000307661A (ja) | 1999-04-22 | 2000-11-02 | Matsushita Electric Ind Co Ltd | 符号化装置および復号化装置 |
FR2791167B1 (fr) * | 1999-03-17 | 2003-01-10 | Matra Nortel Communications | Procedes de codage, de decodage et de transcodage audio |
US6195989B1 (en) | 1999-05-04 | 2001-03-06 | Caterpillar Inc. | Power control system for a machine |
KR100349329B1 (ko) * | 1999-06-23 | 2002-08-21 | 한국전자통신연구원 | 엠펙-2 고품질 오디오 처리 알고리즘의 병렬 처리 방법 |
DE19959156C2 (de) * | 1999-12-08 | 2002-01-31 | Fraunhofer Ges Forschung | Verfahren und Vorrichtung zum Verarbeiten eines zu codierenden Stereoaudiosignals |
US6369722B1 (en) * | 2000-03-17 | 2002-04-09 | Matra Nortel Communications | Coding, decoding and transcoding methods |
US6675148B2 (en) * | 2001-01-05 | 2004-01-06 | Digital Voice Systems, Inc. | Lossless audio coder |
US6926526B2 (en) * | 2002-05-24 | 2005-08-09 | Kenneth G. Hudak | Endodontic adapter for a sonic scaler |
-
2001
- 2001-01-18 DE DE10102159A patent/DE10102159C2/de not_active Expired - Lifetime
-
2002
- 2002-01-14 AU AU2002249122A patent/AU2002249122B2/en not_active Expired
- 2002-01-14 US US10/466,781 patent/US7516230B2/en not_active Expired - Lifetime
- 2002-01-14 AT AT02718023T patent/ATE275751T1/de active
- 2002-01-14 CA CA002434882A patent/CA2434882C/en not_active Expired - Lifetime
- 2002-01-14 JP JP2002563470A patent/JP3890300B2/ja not_active Expired - Lifetime
- 2002-01-14 WO PCT/EP2002/000294 patent/WO2002063611A1/de active IP Right Grant
- 2002-01-14 EP EP02718023A patent/EP1338004B8/de not_active Expired - Lifetime
- 2002-01-14 DE DE50200953T patent/DE50200953D1/de not_active Expired - Lifetime
- 2002-01-14 KR KR1020037009445A patent/KR100576034B1/ko active IP Right Grant
-
2003
- 2003-12-11 HK HK03108993A patent/HK1056641A1/xx not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3912605A1 (de) * | 1989-04-17 | 1990-10-25 | Fraunhofer Ges Forschung | Digitales codierverfahren |
WO1997014229A1 (de) * | 1995-10-06 | 1997-04-17 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Verfahren und vorrichtung zur skalierbaren codierung von audiosignalen |
US6092041A (en) * | 1996-08-22 | 2000-07-18 | Motorola, Inc. | System and method of encoding and decoding a layered bitstream by re-applying psychoacoustic analysis in the decoder |
EP0884850A2 (de) * | 1997-04-02 | 1998-12-16 | Samsung Electronics Co., Ltd. | Komprimierende Audio-Kodier- und Dekodier-Methode und dafür geeignetes Gerät |
WO1999033274A1 (en) * | 1997-12-19 | 1999-07-01 | Kenneth Rose | Scalable predictive coding method and apparatus |
Non-Patent Citations (1)
Title |
---|
BALAKRISHNAN, M.: Buffer Constraints in a variable-rate packetized video system. In: ISBN 0-7803-3122-2. Proceedings International Conference on image processing, IEEE Comput.Soc. Press, 1995, p. 29-32, Vol. 1 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10353793A1 (de) * | 2003-11-13 | 2005-06-09 | Deutsche Telekom Ag | Verfahren zur Verbesserung der Wiedergabequalität bei paketorientierter Übertragung von Audio-/Video-Daten |
Also Published As
Publication number | Publication date |
---|---|
CA2434882A1 (en) | 2002-08-15 |
WO2002063611A1 (de) | 2002-08-15 |
ATE275751T1 (de) | 2004-09-15 |
CA2434882C (en) | 2008-04-15 |
KR100576034B1 (ko) | 2006-05-02 |
EP1338004B1 (de) | 2004-09-08 |
DE50200953D1 (de) | 2004-10-14 |
US20040162911A1 (en) | 2004-08-19 |
US7516230B2 (en) | 2009-04-07 |
AU2002249122B2 (en) | 2005-06-23 |
DE10102159A1 (de) | 2002-08-08 |
JP3890300B2 (ja) | 2007-03-07 |
EP1338004B8 (de) | 2005-08-31 |
JP2004523790A (ja) | 2004-08-05 |
EP1338004A1 (de) | 2003-08-27 |
HK1056641A1 (en) | 2004-02-20 |
KR20030076611A (ko) | 2003-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10102159C2 (de) | Verfahren und Vorrichtung zum Erzeugen bzw. Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkasse, Codierer und skalierbarer Codierer | |
DE3688980T2 (de) | Verfahren zur Multigeschwindigkeitskodierung von Signalen und Einrichtung zur Durchführung dieses Verfahrens. | |
DE60121592T2 (de) | Kodierung und dekodierung eines digitalen signals | |
DE19549621B4 (de) | Vorrichtung zum Codieren von Audiosignalen | |
DE69333394T2 (de) | Hochwirksames Kodierverfahren und -gerät | |
DE60012860T2 (de) | Verfahren zur Verarbeitung mehrerer digitaler Audiodatenströme | |
DE69229773T2 (de) | Statistischer Multiplexer für ein Multikanal-Bildkomprimierungssystem und Demultiplexer | |
EP0910927B1 (de) | Verfahren zum codieren und decodieren von stereoaudiospektralwerten | |
EP0954909B1 (de) | Verfahren zum codieren eines audiosignals | |
EP1647010B1 (de) | Audiodateiformatumwandlung | |
DE60319590T2 (de) | Verfahren zur codierung und decodierung von audio mit variabler rate | |
EP1327243B1 (de) | Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms | |
DE19742655C2 (de) | Verfahren und Vorrichtung zum Codieren eines zeitdiskreten Stereosignals | |
WO2006114368A1 (de) | Verfahren und vorrichtung zur geräuschunterdrückung | |
EP1023777B1 (de) | Verfahren und vorrichtung zur erzeugung eines bitratenskalierbaren audio-datenstroms | |
DE69716365T2 (de) | Vorrichtung zur datenmultiplexierung | |
DE4430864C2 (de) | Verfahren zum unbemerktem Übertragen und/oder Speichern von Zusatzinformationen innerhalb eines quellencodierten, datenreduzierten Audiosignals | |
EP1354314B1 (de) | Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion | |
DE112021005067T5 (de) | Codec mit hierarchischer räumlicher auflösung | |
EP2245622B1 (de) | Verfahren und mittel zur dekodierung von hintergrundrauschinformationen | |
DE69700837T2 (de) | System zur kodierung und dekodierung eines signals, insbesondere eines digitalen audiosignals | |
DE2303497C2 (de) | Verfahren zur Übertragung von Sprachsignalen | |
DE10339498B4 (de) | Audiodateiformatumwandlung | |
DE2855395C2 (de) | Nachrichtenübertragungssystem | |
DE69700274T2 (de) | Verfahren und Apparat zur Kodierung eines digitalen Audiosignals |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8381 | Inventor (new situation) |
Inventor name: LUTZKY, MANFRED, 90427 NUERNBERG, DE Inventor name: TEICHMANN, BODO, 90427 NUERNBERG, DE Inventor name: GRILL, BERNHARD, 91207 LAUF, DE Free format text: SPERSCHNEIDER, RALPH, 91056 ERLANGEN, DE TEICHMANN, BODO, 90427 NUERNBERG, DE LUTZKY, MANFRED, 90427 NUERNBERG, DE GRILL, BERNHARD, 91207 LAUF, DE Inventor name: SPERSCHNEIDER, RALPH, 91056 ERLANGEN, DE |
|
8364 | No opposition during term of opposition | ||
R071 | Expiry of right |