DE10102154A1 - Verfahren und Vorrichtung zum Erzeugen eines skalierbaren Datenstroms und Verfahren und Vorrichtung zum Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkassenfunktion - Google Patents
Verfahren und Vorrichtung zum Erzeugen eines skalierbaren Datenstroms und Verfahren und Vorrichtung zum Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer BitsparkassenfunktionInfo
- Publication number
- DE10102154A1 DE10102154A1 DE10102154A DE10102154A DE10102154A1 DE 10102154 A1 DE10102154 A1 DE 10102154A1 DE 10102154 A DE10102154 A DE 10102154A DE 10102154 A DE10102154 A DE 10102154A DE 10102154 A1 DE10102154 A1 DE 10102154A1
- Authority
- DE
- Germany
- Prior art keywords
- encoder
- output data
- input signal
- blocks
- data
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000005540 biological transmission Effects 0.000 claims abstract description 23
- 230000011664 signaling Effects 0.000 description 5
- 230000005236 sound signal Effects 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 238000005070 sampling Methods 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 230000036651 mood Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000002349 favourable 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
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000003595 spectral effect Effects 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)
- Human Computer Interaction (AREA)
- Computational Linguistics (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Quality & Reliability (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
Abstract
In einem Verfahren zum Erzeugen eines skalierbaren Datenstroms aus einem oder mehreren Blöcken von Ausgangsdaten eines ersten Codierers und aus einem oder mehreren Blöcken von Ausgangsdaten eines zweiten Codierers, wird ein Bestimmungsdatenblock für einen aktuellen Abschnitt eines Eingangssignals geschrieben. Darüber hinaus werden Ausgangsdaten des zweiten Codierers, die einen vorhergehenden Abschnitt des Eingangssignals darstellen, in Übertragungsrichtung von einem Codierer zu einem Decodierer hinter den Bestimmungsdatenblock geschrieben. Wenn die Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals geschrieben sind, werden die Ausgangsdaten des zweiten Codierers, die den aktuellen Abschnitt des Eingangssignals darstellen, geschrieben. Um zu signalisieren, wo die Ausgangsdaten des zweiten Codierers für den vorhergehenden Abschnitt enden und die Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt beginnen, werden Pufferinformationen in den skalierbaren Datenstrom geschrieben. Dadurch, daß Ausgangsdaten eines vorhergehenden Abschnitts einem Bestimungsdatenblock für den aktuellen Abschnitt folgen, kann eine Bitsparkassenfunktion im skalierbaren Codierer implementiert und im Bitstrom einfach signalisiert werden.
Description
Die vorliegende Erfindung bezieht sich auf skalierbare Co
dierer und Decodierer und insbesondere auf das Erzeugen von
skalierbaren Datenströmen, durch die eine Bitsparkasse si
gnalisiert werden kann.
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
Standards (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 einge
speist. 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 hoch
qualitative Audiocodierung liefert und im Standard MPEG-2
AAC (ISO/IEC 13818) definiert ist. Der Celp-Codierer 12 lie
fert über eine Ausgangsleitung 16 eine erste Skalierungs
schicht, während der AAC-Codierer 14 über eine zweite Ausgangsleitung
18 eine zweite Skalierungsschicht zu einem Bit
strom-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änzung 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 14 und der zweite Codierer 16 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 deco
dierten 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/Deco
dierer 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 zeitlichen
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.
übertragen, 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 gewä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 Codie
rers in äquidistanten Abständen geschrieben bzw. übertragen
werden. Der Ausgangsdatenblock 1 des zweiten Codierers wird
während der Übertragung in die verbleibenden Lücken einge
füllt. Dann ist ein LATM-Frame fertig geschrieben, d. h.
fertig übertragen.
Nachteilig an den in den Fig. 4 bis 6 dargestellten be
kannten Bitstromformaten ist die Tatsache, daß dieselben
nicht für skalierbare Datenströme geeignet sind.
Ein weiterer Nachteil der bekannten Bitstromformate besteht
darin, daß kein Bitstromformat für einen skalierbaren Daten
strom existiert, so daß die Bitsparkassenfunktion für ska
lierbare Datenströme mit Ausgangsdaten von Codierern mit un
terschiedlicher Zeitbasis, insbesondere für die Kombination
AAC-Codierer und CELP-Codierer einer skalierbaren Codier
vorrichtung derzeit nicht nutzbar gemacht werden kann. Da
jedoch eine konstante Übertragungsrate gefordert wird, der
AAC-Codierer jedoch Blöcke unterschiedlicher Länge abhängig
von den Eigenschaften des codierten Signals ausgibt, kann
durchaus der Fall auftreten, daß der AAC-Codierer zur
Codierung eines Abschnitts des Zeitsignals mehr Bits als
durch die Übertragungsrate vorgegeben, benötigt, während er
für einen anderen Abschnitt wieder weniger Bits als durch
die Ausgangsdatenrate vorgegeben fordert. Damit werden im
letzteren Fall dem AAC-Codierer der skalierbaren
Codiervorrichtung die Bits ausgehen, während der
AAC-Codierer der skalierbaren Codiervorrichtung im ersteren
Fall, um die konstante Ausgangsdatenrate einzuhalten, nicht
umhin kommt, hörbare Störungen in das codierte und wieder
decodierte Signal einzuführen.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein
Verfahren und eine Vorrichtung zum Erzeugen eines skalierba
ren Datenstroms zu schaffen, das dazu geeignet ist, daß eine
Bitsparkassenfunktion für eine Skalierungsschicht eingesetzt
werden kann.
Diese Aufgabe wird durch ein Verfahren nach Patentanspruch 1
oder durch eine Vorrichtung nach Patentanspruch 9 gelöst.
Eine weitere Aufgabe der vorliegenden Erfindung besteht dar
in, ein Verfahren zum Decodieren eines skalierbaren Daten
stroms zu schaffen.
Diese Aufgabe wird durch ein Verfahren nach Patentanspruch
10 oder durch eine Vorrichtung nach Patentanspruch 11 ge
löst.
Der vorliegenden Erfindung liegt die Erkenntnis zugrunde,
daß von dem bekannten, in Fig. 2c dargelegten Konzept wegge
gangen werden muß, das darin besteht, daß sämtliche Daten
eines Ausgangsdatenblocks des zweiten Codierers zwischen
zwei aufeinanderfolgenden LATM-Headern angeordnet sind.
Statt dessen wird es zugelassen, daß auch Ausgangsdaten des
zweiten Codierers, die einen vorausgehenden Zeitabschnitt
des Eingangssignals darstellen, nach einem Bestimmungsdaten
block für den aktuellen Zeitabschnitt geschrieben werden,
wobei diese Tatsache bzw. wieviel Daten noch in Übertra
gungsrichtung hinter dem Bestimmungsdatenblock geschrieben
werden, durch spezielle ebenfalls zu übertragende Pufferin
formationen einem Decodierer signalisiert werden.
Der Decodierer kann dann ohne weiteres, ausgehend von einem
Bestimmungsdatenblock und unter Verwendung der Pufferinfor
mationen feststellen, wo die Ausgangsdaten des zweiten Co
dierers enden, und wo dann die Ausgangsdaten des zweiten
Codierers für den aktuellen Zeitabschnitt beginnen, so daß
der Decodierer in der Lage ist, die korrespondierenden Aus
gangsdatenblöcke des ersten Codierers mit korrespondierenden
Ausgangsdatenblöcken des zweiten Codierers in Verbindung zu
bringen, um das Signal in allen Schichten wieder zu deco
dieren, wobei sich der Ausdruck "korrespondierend" darauf
bezieht, daß die entsprechenden Daten des ersten und des
zweiten Codierers auf den selben Abschnitt des Eingangssi
gnals im Falle von CoreCoderDelay gleich Null (siehe Fig. 1)
oder auf um Core Coder Delay verschobenen aktuelle Abschnit
te für den ersten und den zweiten Codierer bezogen sind.
Bei einem erfindungsgemäßen Verfahren zum Erzeugen eines
skalierbaren Datenstroms aus einem oder mehreren Blöcken von
Ausgangsdaten eines ersten Codierers und aus einem oder meh
reren Blöcken von Ausgangsdaten eines zweiten Codierers wird
daher ein Bestimmungsdatenblock für einen aktuellen Ab
schnitt des Eingangssignals geschrieben. Darüber hinaus wer
den die Ausgangsdaten des zweiten Codierers, die einen vor
hergehenden Abschnitt des Eingangssignals darstellen, in
Übertragungsrichtung von einem Codierer zu einem Decodierer
hinter den Bestimmungsdatenblock geschrieben. Die Ausgangs
daten des zweiten Codierers, die sich auf den aktuellen
Abschnitt des Eingangssignals beziehen, also die zu dem
Bestimmungsdatenblock eigentlich gehören, können dann
geschrieben werden, wenn die Ausgangsdaten des zweiten
Codierers für den vorhergehenden Abschnitt vollständig
geschrieben sind. Darüber hinaus werden Pufferinformationen
in den skalierbaren Datenstrom geschrieben, wobei die Puf
ferinformationen anzeigen, wie weit sich die Ausgangsdaten
des zweiten Codierer für den vorausgehenden Abschnitt hinter
dem Bestimmungsdatenblock für den aktuellen Abschnitt er
strecken. Die Ausgangsdaten des ersten Codierers können
entweder äquidistant oder nicht in den skalierbaren Daten
strom geschrieben werden, wobei es jedoch, aus Delaygründen,
um eine verzögerungsarme Decodierung der ersten Skalierungs
schicht alleine, also lediglich der Ausgangsdatenblöcke des
ersten Codierers zu ermöglichen, wünschenswert ist, diese
Datenblöcke äquidistant und delayoptimiert zu schreiben.
Üblicherweise wird eine Bitsparkasse u. a. durch die maxi
male Größe der Bitsparkasse definiert, wobei dieser Wert in
Fig. 3 mit "Max Bufferfullness" bezeichnet wird. Dieser Wert
ist fest und dem Decodierer bekannt. Darüber hinaus wird im
Datenstrom der aktuelle Wert der Belegung der Bitsparkasse,
der mit "Bufferfullness" bezeichnet wird, übertragen. Die
Differenz aus der Variablen Max Bufferfullness und Buffer
fullness liefert dann, wenn die vorliegende Erfindung auf
einen MPEG 4-Codierer angewendet wird, die Pufferinformatio
nen, wobei, wie es später dargelegt werden wird, in diesem
Fall zu berücksichtigen ist, daß unter Umständen in den
AAC-Blöcken eingestreute Celp-Blöcke oder Daten anderer Ska
lierungsschichten nicht berücksichtigt werden dürfen, um den
genauen Wert des Beginns der Ausgangsdaten des zweiten Da
tenblocks hinter dem LATM-Bestimmungsdatenblock zu finden.
Unabhängig von der Funktionalität der Bitsparkasse ermög
licht es das erfindungsgemäße Format jedoch auch, in einem
äquidistanten Raster von Bestimmungsdatenblöcken, Ausgangs
datenblöcke variierender Länge des zweiten Codierers zu
übertragen. So kann es sinnvoll sein, das Raster für die Be
stimmungsdatenblöcke und das Raster für die Ausgangsdaten
blöcke des ersten Codierers äquidistant zu wählen, und ins
besondere so zu wählen, daß einem Bestimmungsdatenblock im
mer ein Ausgangsdatenblock des ersten Codierers folgt. Der
Ausgangsdatenblock des zweiten Codierers wird dann in die
verbleibenden Lücken geschrieben, wobei durch die Pufferin
formationen signalisiert wird, wieviel Daten des zweiten Co
dierers hinter einem Bestimmungsdatenblock zu dem Zeitab
schnitt, auf den der Bestimmungsdatenblock hinweist, gehö
ren, oder noch zu dem vorausgehenden zeitlichen Abschnitt
des Eingangssignals zu zählen sind, damit der Decodierer
eindeutig und zweifelsfrei eine Zuordnung zwischen Ausgangs
datenblöcken des ersten Codierers und einem Ausgangsdaten
block des zweiten Codierers für einen Zeitabschnitt des Ein
gangssignals schaffen kann.
Ein Vorteil der vorliegenden Erfindung besteht ferner darin,
daß das Signalisieren des Ausgangsdatenblocks hinter dem Be
stimmungsdatenblock ohne weiteres mit einem Signalisieren
von Ausgangsdatenblöcken des ersten Codierers vor dem Be
stimmungsdatenblock für den aktuellen Zeitabschnitt kombi
niert werden kann, um eine verzögerungsarme Decodierung le
diglich der ersten Skalierungsschicht zu ermöglichen.
Der erfindungsgemäße skalierbare Datenstrom ist besonders
für Echtzeitanwendungen von Nutzen, kann jedoch genauso auch
für Nicht-Echtzeitanwendungen eingesetzt werden.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend bezugnehmend auf die beiliegenden Zeich
nungen detailliert erläutert. Es zeigen:
Fig. 1 einen skalierbaren Codierer gemäß MPEG 4;
Fig. 2a eine schematische Darstellung eines Eingangs
signals, das in aufeinanderfolgende Zeitabschnitte
eingeteilt ist;
Fig. 2b eine schematische Darstellung eines Eingangssig
nals, 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 Decodie
rung der ersten Skalierungsschicht;
Fig. 2d eine schematische Darstellung eines skalierbaren
Datenstroms mit niedriger Verzögerung bei der
Decodierung der ersten Skalierungsschicht;
Fig. 2e ein Bitstromformat gemäß der vorliegenden Erfindung,
in dem hinter dem Bestimmungsdatenblock für
einen aktuellen Abschnitt noch Ausgangsdaten des
zweiten Codierers aus einem vorhergehenden Zeitab
schnitt angeordnet sind;
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 einen Bitstrom mit niedriger Verzögerung für
die erste Skalierungsschicht zu erläutern. Genauso wie in
Fig. 2c enthält der skalierbare Datenstrom aufeinanderfol
gende Bestimmungsdatenblöcke, die als Header 1 und Header 2
bezeichnet sind. Bei MPEG 4 sind die Bestimmungsdatenblöcke
LATM-Header. In Übertragungsrichtung von einem Encoder zu
einem Decodierer, die in Fig. 2d mit einem Pfeil 202 dar
gestellt ist, findet sich hinter dem LATM-Header 200 die von
links oben nach rechts unten schraffierten Teile des Aus
gangsdatenblocks des AAC-Codierers, die in verbleibende
Lücken zwischen Ausgangsdatenblöcken des ersten Codierers
eingetragen sind.
Ferner finden sich im Unterschied zu Fig. 2c 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 (Blocklä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-
Codierer den erzeugten Celp-Block unmittelbar nach dem Co
dieren übertragen kann. In diesem Fall wird dem Celp-Codie
rer 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
hinzugefü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, wobei Verhältnisse größer oder kleiner Eins
auftreten können.
Dies heißt im Extremfall (1 : 12 für MPEG 4 CELP/AAC), daß für
denselben Zeitabschnitt des Eingangssignals, für den der
AAC-Codierer einen Ausgangsdatenblock erzeugt, der Celp-Co
dierer zwölf Ausgangsdatenblöcke erzeugt. Der Verzögerungs-
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 Block
länge des zweiten Codierers und Blocklänge des ersten Codie
rers wird, wobei im Falle des AAC-Codierers als zweiter Co
dierer eine möglichst große Blocklänge aufgrund des dann
günstigeren Verhältnisses zwischen Nutzinformationen zu
Seiteninformationen angestrebt wird, wenn es das zu codie
rende Signal zuläßt.
Im nachfolgenden wird auf Fig. 2e Bezug genommen. Im Un
terschied zu Fig. 2d, in der bereits die Offset-Funktion,
also die Verschiebung der Ausgangsdatenblöcke des ersten Co
dierers bezüglich eines Bestimmungsdatenblocks dargestellt
sind, wird in Fig. 2e die erfindungsgemäße Verschiebung der
Ausgangsdatenblöcke des zweiten Codierers bezüglich des
durch die Bestimmungsdatenblöcke gegebenen Rasters darge
stellt. Die Anordnung der Ausgangsdatenblöcke des ersten Co
dierers, die mit 11, 12, 13, 14, 21, 22, 23, 24, 31 in Fig.
2e bezeichnet sind, ist gegenüber Fig. 2d unverändert. Wäh
rend in Fig. 2d keine Bitsparkassenfunktion möglich ist,
bzw., wenn die Bestimmungsdatenblöcke in einem festen Raster
sein sollen, keine Ausgangsdatenblöcke veränderlicher Länge
für den zweiten Codierer eingesetzt werden können, ist dies
bei Fig. 2e nunmehr gemäß der vorliegenden Erfindung mög
lich.
Hierzu werden die Daten des Ausgangsdatenblocks des zweiten
Codierers des vorausgehenden Abschnitts, der mit "0" in den
Fig. 2a bis 2e bezeichnet ist, in Übertragungsrichtung
von einem Codierer zu einem Decodierer hinter den LATM-
Header 200 geschrieben, bis der skalierbare Codierer
sämtliche Daten des vorausgehenden Abschnitts in den Bit
strom geschrieben hat. Erst dann wird an einer Übergangs
grenze 220 damit begonnen, die Ausgangsdaten des zweiten Co
dierers für den aktuellen Abschnitt des Eingangssignals in
den Bitstrom zu schreiben. So kann die Übergangsgrenze 220
mit einer Grenze eines Celp-Datenblocks zusammenfallen oder
auch nicht. Je nach Signalisierung kann entweder der Abstand
vom Ende des Bestimmungsdatenblocks bis zur Übergangsgrenze
220 oder der Abstand vom Anfang des Bestimmungsdatenblocks
bis zur Übergangsgrenze 220 oder aber der Abstand von der
hinteren Grenze des Celp-Blocks 13 bis zur Übergangsgrenze
220 mit oder ohne Länge der Celp-Blöcke 13, 14 und/oder der
Länge des Bestimmungsdatenblocks als Pufferinformationen
signalisiert werden. Die letztere Variante wird bezugnehmend
auf Fig. 3 noch näher dargestellt.
Erfindungsgemäß wird es im Fall der Anwendung auf einen ska
lierbaren Codierer bevorzugt, keine eigenen Seiteninfor
mationen zur Signalisierung der Pufferinformationen vorzuse
hen, sondern hierzu den bereits ohnehin im Bitstrom übertra
genen Wert Bufferfullness zu verwenden, wobei die Länge des
mit "Pufferinformationen" in Fig. 2e bezeichneten Zeigers,
der in Fig. 3 mit dem Bezugszeichen 314 gekennzeichnet ist,
genau gleich der Differenz zwischen Max Bufferfullness und
Bufferfullness ist, wenn die Länge der Bestimmungsdaten
blöcke und die Länge eventuell vorhandener Celp-Blöcke sowie
evtl. vorhandener weiterer Skalierungsschichten unberück
sichtigt bleiben, wie es bezugnehmend auf Fig. 3 durch den
unterbrochen gezeichneten Pfeil dargestellt ist.
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. Dies
resultiert in einer Gesamtbitrate von 32 kBit/s.
Wie es aus Fig. 3 ersichtlich ist, entsprechen die Ausgangs
datenblöcke Null und Eins des Celp-Codierers dem aktuellen
Zeitabschnitt des ersten Codierers. Der Ausgangsdatenblock
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ögerung
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
vorliegen, 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 erzeugt 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 Bitsparkassen
funktion 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 Ausgangs
datenblock oder die Ausgangsdatenblöcke des AAC-Codierers
aus vorhergehenden Zeitabschnitten in den Bitstrom geschrie
ben werden müssen, bevor mit dem Schreiben des Ausgangsda
tenblocks 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 Bitsparkassenfunktion 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 Bitsparkassenstand des AAC-Codierers
verschiebt sich somit die Anfangsposition des AAC-Frames.
Der Bitsparkassenstand wird gemäß MPEG 4 im Element
StreamMuxConfig durch die Variable "Bufferfullness" übertra
gen. Die Variable Bufferfullness berechnet sich aus der
Variablen Bitreservoir geteilt durch das 32fache der gerade
vorhandenen 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 gewissermaß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 un
mittelbar vorhergehenden Zeitabschnitt zusammen mit den für
denselben vorhandenen Celp-Datenblöcken mit voller Audio
qualitä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 Codie
rers 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 unmittelbar vorhergehenden Zeitab
schnitten stammen (hinsichtlich des AAC-Frames), wobei die
jeweiligen Verschiebungen jedoch durch die zwei im Bitstrom
zusätzlich zu übertragenden Variablen einem Decodierer mit
geteilt werden.
Claims (11)
1. Verfahren zum Erzeugen eines skalierbaren Datenstroms aus
einem oder mehreren Blöcken von Ausgangsdaten eines er
sten Codierers (12) und aus einem oder mehreren Blöcken
von Ausgangsdaten eines zweiten Codierers (14), wobei der
eine oder die mehreren Blöcke von Ausgangsdaten des er
sten Codierers (12) zusammen eine Anzahl von Abtastwerten
des Eingangssignals für den ersten Codierer darstellen,
die einen aktuellen Abschnitt des Eingangssignals für den
ersten Codierer bilden, und wobei der eine Block oder die
mehreren Blöcke von Ausgangsdaten des zweiten Codierers
(14) zusammen eine Anzahl von Abtastwerten des Eingangs
signals für den zweiten Codierer darstellen, wobei die
Anzahl von Abtastwerten für den zweiten Codierer einen
aktuellen Abschnitt des Eingangssignals für den zweiten
Codierer bildet, 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 Zeitdauer (34) zueinander
verschoben sind, mit folgenden Schritten:
Schreiben eines Bestimmungsdatenblocks (306) für den ak tuellen Abschnitt des Eingangssignals für den ersten oder den zweiten Codierer;
Schreiben von Ausgangsdaten (312) des zweiten Codierers, die einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer darstellen, in Übertragungsrich tung von einem Codierer zu einem Decodierer hinter den Bestimmungsdatenblock (306);
Schreiben von Ausgangsdaten (310) des zweiten Codierers, die den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellen, wenn die Ausgangsdaten des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals geschrieben sind;
Schreiben von Pufferinformationen (314) in den skalierba ren Datenstrom, wobei die Pufferinformationen anzeigen, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorausgehenden Abschnitt für den zweiten Codierer hinter den Bestimmungsdatenblock erstrecken; und
Schreiben des einen oder der mehreren Blöcke der Aus gangsdaten des ersten Codierers (12) in den skalierbaren Datenstrom.
Schreiben eines Bestimmungsdatenblocks (306) für den ak tuellen Abschnitt des Eingangssignals für den ersten oder den zweiten Codierer;
Schreiben von Ausgangsdaten (312) des zweiten Codierers, die einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer darstellen, in Übertragungsrich tung von einem Codierer zu einem Decodierer hinter den Bestimmungsdatenblock (306);
Schreiben von Ausgangsdaten (310) des zweiten Codierers, die den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellen, wenn die Ausgangsdaten des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals geschrieben sind;
Schreiben von Pufferinformationen (314) in den skalierba ren Datenstrom, wobei die Pufferinformationen anzeigen, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorausgehenden Abschnitt für den zweiten Codierer hinter den Bestimmungsdatenblock erstrecken; und
Schreiben des einen oder der mehreren Blöcke der Aus gangsdaten des ersten Codierers (12) in den skalierbaren Datenstrom.
2. Verfahren nach Anspruch 1,
bei dem die Längen der Blöcke von Ausgangsdaten des zwei ten Codierers für gleichlange Abschnitte des Eingangssi gnals unterschiedlich sind, wobei die Längen der Blöcke von Ausgangsdaten von Signaleigenschaften des Eingangs signals abhängen,
bei dem der eine oder die mehreren Blöcke der Ausgangs daten des ersten Codierers für gleichlange Abschnitte des Eingangssignals gleich lang sind, und
bei dem die Übertragungsrate des Bitstroms konstant ist.
bei dem die Längen der Blöcke von Ausgangsdaten des zwei ten Codierers für gleichlange Abschnitte des Eingangssi gnals unterschiedlich sind, wobei die Längen der Blöcke von Ausgangsdaten von Signaleigenschaften des Eingangs signals abhängen,
bei dem der eine oder die mehreren Blöcke der Ausgangs daten des ersten Codierers für gleichlange Abschnitte des Eingangssignals gleich lang sind, und
bei dem die Übertragungsrate des Bitstroms konstant ist.
3. Verfahren nach Anspruch 1 oder 2,
bei dem der zweite Codierer (14) eine Bitsparkassenfunk tion aufweist, wobei die maximale Größe der Bitsparkasse durch Maximal-Puffergrößeninformationen gegeben ist, und wobei der aktuelle Stand der Bitsparkasse durch Aktuell- Pufferinformationen gegeben ist,
bei dem die Pufferinformationen (314) die Aktuell-Puffer informationen sind, und
bei dem die Größe, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorhergehenden Zeitabschnitt hinter den Bestimmungsdatenblock (306) erstrecken, aus der Differenz zwischen den Maximal-Puffergrößeninforma tionen und den Aktuell-Pufferinformationen ableitbar ist.
bei dem der zweite Codierer (14) eine Bitsparkassenfunk tion aufweist, wobei die maximale Größe der Bitsparkasse durch Maximal-Puffergrößeninformationen gegeben ist, und wobei der aktuelle Stand der Bitsparkasse durch Aktuell- Pufferinformationen gegeben ist,
bei dem die Pufferinformationen (314) die Aktuell-Puffer informationen sind, und
bei dem die Größe, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorhergehenden Zeitabschnitt hinter den Bestimmungsdatenblock (306) erstrecken, aus der Differenz zwischen den Maximal-Puffergrößeninforma tionen und den Aktuell-Pufferinformationen ableitbar ist.
4. Verfahren nach einem der vorhergehenden Ansprüche,
bei dem das Schreiben von Ausgangsdaten des ersten Codie rers so durchgeführt wird, daß ein Block von Ausgangsda ten des ersten Codierers unmittelbar hinter einem Bestim mungsdatenblock (306) angeordnet ist, und
bei dem die Länge dieses Bestimmungsdatenblocks (306) sowie die Länge von vorhandenen Ausgangsdatenblöcken des ersten Codierers sowie gegebenenfalls vorhandene Daten weiterer Skalierungsschichten bei der Bestimmung der Größe, wie weit sich die Ausgangsdaten des zweiten Codie rers hinter den Bestimmungsdatenblock erstrecken, unter Verwendung der Aktuell-Pufferinformationen und der Maxi mal-Puffergrößeninformationen ignoriert werden.
bei dem das Schreiben von Ausgangsdaten des ersten Codie rers so durchgeführt wird, daß ein Block von Ausgangsda ten des ersten Codierers unmittelbar hinter einem Bestim mungsdatenblock (306) angeordnet ist, und
bei dem die Länge dieses Bestimmungsdatenblocks (306) sowie die Länge von vorhandenen Ausgangsdatenblöcken des ersten Codierers sowie gegebenenfalls vorhandene Daten weiterer Skalierungsschichten bei der Bestimmung der Größe, wie weit sich die Ausgangsdaten des zweiten Codie rers hinter den Bestimmungsdatenblock erstrecken, unter Verwendung der Aktuell-Pufferinformationen und der Maxi mal-Puffergrößeninformationen ignoriert werden.
5. Verfahren nach einem der vorhergehenden Ansprüche,
bei dem die Einrichtung (20) zum Schreiben des einen oder
der mehreren Blöcke von Ausgangsdaten des ersten Codie
rers ausgebildet ist, um die Blöcke von Ausgangsdaten des
ersten Codierers äquidistant in den skalierbaren Daten
strom zu schreiben.
6. Verfahren nach einem der vorhergehenden Ansprüche,
bei dem der erste Codierer (12) ein Celp-Codierer ist,
bei dem der zweite Codierer (14) ein AAC-Codierer ist, und
bei dem der Bestimmungsdatenblock ein LATM-Header gemäß MPEG 4 ist.
bei dem der erste Codierer (12) ein Celp-Codierer ist,
bei dem der zweite Codierer (14) ein AAC-Codierer ist, und
bei dem der Bestimmungsdatenblock ein LATM-Header gemäß MPEG 4 ist.
7. Verfahren nach einem der vorhergehenden Ansprüche, bei
dem der zumindest eine Block von Ausgangsdaten des zwei
ten Codierers (14) und der zumindest einen Block von Aus
gangsdaten des ersten Codierers (12) Nutzdaten in einem
Superframe sind, der neben den Nutzdaten genau einen Be
stimmungsdatenblock aufweist.
8. Verfahren nach einem der vorhergehenden Ansprüche,
bei dem im Schritt des Schreibens der Blöcke von Aus
gangsdaten des ersten Codierers zumindest ein Block von
Ausgangsdaten des ersten Codierers für den aktuellen
Abschnitt des Eingangssignals für den ersten Codierer in
Übertragungsrichtung vor dem Bestimmungsdatenblock für
den aktuellen Zeitabschnitt geschrieben wird.
9. Vorrichtung zum Erzeugen eines skalierbaren Datenstroms
aus einem oder mehreren Blöcken von Ausgangsdaten eines
ersten Codierers (12) und aus einem oder mehreren Blöcken
von Ausgangsdaten eines zweiten Codierers (14), wobei der
eine oder die mehreren Blöcke von Ausgangsdaten des er
sten Codierers (12) zusammen eine Anzahl von Abtastwerten
des Eingangssignals für den ersten Codierer darstellen,
die einen aktuellen Abschnitt des Eingangssignals für den
ersten Codierer bilden, und wobei der eine Block oder die
mehreren Blöcke von Ausgangsdaten des zweiten Codierers
(14) zusammen eine Anzahl von Abtastwerten des Eingangs
signals für den zweiten Codierer darstellen, wobei die
Anzahl von Abtastwerten für den zweiten Codierer einen
aktuellen Abschnitt des Eingangssignals für den zweiten
Codierer bildet, 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 iden
tisch sind oder um eine Zeitdauer (34) zueinander ver
schoben sind, mit folgenden Merkmalen:
einer Einrichtung zum Schreiben eines Bestimmungsdaten blocks (306) für den aktuellen Abschnitt des Eingangssi gnals für den ersten oder den zweiten Codierer;
einer Einrichtung zum Schreiben von Ausgangsdaten (312) des zweiten Codierers, die einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer darstellen, in Übertragungsrichtung von einem Codierer zu einem Deco dierer hinter den Bestimmungsdatenblock (306);
einer Einrichtung zum Schreiben von Ausgangsdaten (310) des zweiten Codierers, die den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellen, wenn die Ausgangsdaten des zweiten Codierers für den vorherge henden Abschnitt des Eingangssignals geschrieben sind;
einer Einrichtung zum Schreiben von Pufferinformationen (314) in den skalierbaren Datenstrom, wobei die Pufferin formationen anzeigen, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorausgehenden Abschnitt für den zweiten Codierer hinter den Bestimmungsdatenblock erstrecken; und
einer Einrichtung zum Schreiben des einen oder der meh reren Blöcke der Ausgangsdaten des ersten Codierers (12) in den skalierbaren Datenstrom.
einer Einrichtung zum Schreiben eines Bestimmungsdaten blocks (306) für den aktuellen Abschnitt des Eingangssi gnals für den ersten oder den zweiten Codierer;
einer Einrichtung zum Schreiben von Ausgangsdaten (312) des zweiten Codierers, die einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer darstellen, in Übertragungsrichtung von einem Codierer zu einem Deco dierer hinter den Bestimmungsdatenblock (306);
einer Einrichtung zum Schreiben von Ausgangsdaten (310) des zweiten Codierers, die den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellen, wenn die Ausgangsdaten des zweiten Codierers für den vorherge henden Abschnitt des Eingangssignals geschrieben sind;
einer Einrichtung zum Schreiben von Pufferinformationen (314) in den skalierbaren Datenstrom, wobei die Pufferin formationen anzeigen, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorausgehenden Abschnitt für den zweiten Codierer hinter den Bestimmungsdatenblock erstrecken; und
einer Einrichtung zum Schreiben des einen oder der meh reren Blöcke der Ausgangsdaten des ersten Codierers (12) in den skalierbaren Datenstrom.
10. Verfahren zum Decodieren eines skalierbaren Datenstroms
aus einem oder mehreren Blöcken von Ausgangsdaten eines
ersten Codierers (12) und aus einem oder mehreren
Blöcken von Ausgangsdaten eines zweiten Codierers (14),
wobei der eine oder die mehreren Blöcke von Ausgangs
daten des ersten Codierers (12) zusammen eine Anzahl von
Abtastwerten des Eingangssignals für den ersten Codierer
darstellen, die einen aktuellen Abschnitt des Eingangs
signals für den ersten Codierer bilden, und wobei der
eine Block oder die mehreren Blöcke von Ausgangsdaten
des zweiten Codierers (14) zusammen eine Anzahl von Abtastwerten
des Eingangssignals für den zweiten Codierer
darstellen, wobei die Anzahl von Abtastwerten für den
zweiten Codierer einen aktuellen Abschnitt des Eingangs
signals für den zweiten Codierer bildet, wobei die An
zahl 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
Zeitdauer (34) zueinander verschoben sind, wobei der
skalierbare Datenstrom einen Bestimmungsdatenblock für
den aktuellen Abschnitt für den ersten oder zweiten
Codierer, Ausgangsdaten des zweiten Codierers für einen
vorhergehenden Abschnitt des Eingangssignals in Übertra
gungsrichtung hinter dem Bestimmungsdatenblock und Puf
ferinformationen aufweist, die anzeigen, wie weit sich
die Ausgangsdaten des zweiten Codierers für den voraus
gehenden Abschnitt hinter den Bestimmungsdatenblock er
strecken, mit folgenden Schritten:
Lesen des Bestimmungsdatenblocks (306) für den aktuellen Abschnitt des Eingangssignals für den ersten oder zwei ten Codierer;
Lesen der Ausgangsdaten des ersten Codierers für den ak tuellen Abschnitt des ersten Codierers (12);
Lesen der Pufferinformationen (314);
Lesen der Ausgangsdaten (310) des zweiten Codierers für den aktuellen Abschnitt ausgehend von einer durch die Pufferinformationen (314) angezeigten Stelle im skalier baren Datenstrom; und
Decodieren der Ausgangsdaten (310) des zweiten Codierers und der Ausgangsdaten des ersten Codierers, um ein deco diertes Signal zu erhalten.
Lesen des Bestimmungsdatenblocks (306) für den aktuellen Abschnitt des Eingangssignals für den ersten oder zwei ten Codierer;
Lesen der Ausgangsdaten des ersten Codierers für den ak tuellen Abschnitt des ersten Codierers (12);
Lesen der Pufferinformationen (314);
Lesen der Ausgangsdaten (310) des zweiten Codierers für den aktuellen Abschnitt ausgehend von einer durch die Pufferinformationen (314) angezeigten Stelle im skalier baren Datenstrom; und
Decodieren der Ausgangsdaten (310) des zweiten Codierers und der Ausgangsdaten des ersten Codierers, um ein deco diertes Signal zu erhalten.
11. Vorrichtung zum Decodieren eines skalierbaren Datenstroms
aus einem oder mehreren Blöcken von Ausgangsdaten
eines ersten Codierers (12) und aus einem oder mehreren
Blöcken von Ausgangsdaten eines zweiten Codierers (14),
wobei der eine oder die mehreren Blöcke von Ausgangsda
ten des ersten Codierers (12) zusammen eine Anzahl von
Abtastwerten des Eingangssignals für den ersten Codierer
darstellen, die einen aktuellen Abschnitt des Eingangs
signals für den ersten Codierer bilden, und wobei der
eine Block oder die mehreren Blöcke von Ausgangsdaten
des zweiten Codierers (14) zusammen eine Anzahl von Ab
tastwerten des Eingangssignals für den zweiten Codierer
darstellen, wobei die Anzahl von Abtastwerten für den
zweiten Codierer einen aktuellen Abschnitt des Eingangs
signals für den zweiten Codierer bildet, wobei die An
zahl 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
Zeitdauer (34) zueinander verschoben sind, wobei der
skalierbare Datenstrom einen Bestimmungsdatenblock für
den aktuellen Abschnitt für den ersten oder zweiten
Codierer, Ausgangsdaten des zweiten Codierers für einen
vorhergehenden Abschnitt des Eingangssignals in Übertra
gungsrichtung hinter dem Bestimmungsdatenblock und Puf
ferinformationen aufweist, die anzeigen, wie weit sich
die Ausgangsdaten des zweiten Codierers für den voraus
gehenden Abschnitt hinter den Bestimmungsdatenblock er
strecken, mit folgenden Merkmalen:
einem Bitstromdemultiplexer, der ausgebildet ist, um folgende Schritte durchführen zu können:
Lesen des Bestimmungsdatenblocks (306) für den ak tuellen Abschnitt des Eingangssignals für den ersten oder zweiten Codierer;
Lesen der Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers (12);
Lesen der Pufferinformationen (314);
Lesen der Ausgangsdaten (310) des zweiten Codierers für den aktuellen Abschnitt ausgehend von einer durch die Pufferinformationen (314) angezeigten Stelle im skalierbaren Datenstrom; und
einer Einrichtung zum Decodieren der Ausgangsdaten (310) des zweiten Codierers und der Ausgangsdaten des ersten Codierers, um ein decodiertes Signal zu erhalten.
einem Bitstromdemultiplexer, der ausgebildet ist, um folgende Schritte durchführen zu können:
Lesen des Bestimmungsdatenblocks (306) für den ak tuellen Abschnitt des Eingangssignals für den ersten oder zweiten Codierer;
Lesen der Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers (12);
Lesen der Pufferinformationen (314);
Lesen der Ausgangsdaten (310) des zweiten Codierers für den aktuellen Abschnitt ausgehend von einer durch die Pufferinformationen (314) angezeigten Stelle im skalierbaren Datenstrom; und
einer Einrichtung zum Decodieren der Ausgangsdaten (310) des zweiten Codierers und der Ausgangsdaten des ersten Codierers, um ein decodiertes Signal zu erhalten.
Priority Applications (11)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10102154A DE10102154C2 (de) | 2001-01-18 | 2001-01-18 | Verfahren und Vorrichtung zum Erzeugen eines skalierbaren Datenstroms und Verfahren und Vorrichtung zum Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkassenfunktion |
AU2002242667A AU2002242667B2 (en) | 2001-01-18 | 2002-01-14 | Method and device for producing a scalable data stream, and method and device for decoding a scalable data stream while taking a bit bank function into account |
US10/466,866 US7496517B2 (en) | 2001-01-18 | 2002-01-14 | Method and device for generating a scalable data stream and method and device for decoding a scalable data stream with provision for a bit saving bank function |
JP2002558258A JP3890298B2 (ja) | 2001-01-18 | 2002-01-14 | スケーラブルデータストリームを生成する方法と装置およびスケーラブルデータストリームを復号化する方法と装置 |
EP02708282A EP1354314B1 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion |
PCT/EP2002/000295 WO2002058051A2 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion |
CA002434783A CA2434783C (en) | 2001-01-18 | 2002-01-14 | Method and device for generating a scalable data stream and method and device for decoding a scalable data stream with provision for a bit savings bank function |
AT02708282T ATE272884T1 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion |
KR10-2003-7009508A KR100516985B1 (ko) | 2001-01-18 | 2002-01-14 | 비트 세이빙 뱅크 기능을 제공하여 스케일러블 데이터스트림을 생성하는 방법 및 장치와 스케일러블 데이터스트림을 디코딩하는 방법 및 장치 |
DE50200750T DE50200750D1 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion |
HK03109020A HK1056790A1 (en) | 2001-01-18 | 2003-12-11 | Method and device for producing a scalable data stream, and method and device for decoding a scalable data stream while taking a bit bank function into account. |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10102154A DE10102154C2 (de) | 2001-01-18 | 2001-01-18 | Verfahren und Vorrichtung zum Erzeugen eines skalierbaren Datenstroms und Verfahren und Vorrichtung zum Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkassenfunktion |
Publications (2)
Publication Number | Publication Date |
---|---|
DE10102154A1 true DE10102154A1 (de) | 2002-08-08 |
DE10102154C2 DE10102154C2 (de) | 2003-02-13 |
Family
ID=7670983
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10102154A Expired - Lifetime DE10102154C2 (de) | 2001-01-18 | 2001-01-18 | Verfahren und Vorrichtung zum Erzeugen eines skalierbaren Datenstroms und Verfahren und Vorrichtung zum Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkassenfunktion |
DE50200750T Expired - Lifetime DE50200750D1 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE50200750T Expired - Lifetime DE50200750D1 (de) | 2001-01-18 | 2002-01-14 | Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion |
Country Status (10)
Country | Link |
---|---|
US (1) | US7496517B2 (de) |
EP (1) | EP1354314B1 (de) |
JP (1) | JP3890298B2 (de) |
KR (1) | KR100516985B1 (de) |
AT (1) | ATE272884T1 (de) |
AU (1) | AU2002242667B2 (de) |
CA (1) | CA2434783C (de) |
DE (2) | DE10102154C2 (de) |
HK (1) | HK1056790A1 (de) |
WO (1) | WO2002058051A2 (de) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844727B2 (en) * | 2003-04-24 | 2010-11-30 | Nokia Corporation | Method and device for proactive rate adaptation signaling |
KR100647336B1 (ko) * | 2005-11-08 | 2006-11-23 | 삼성전자주식회사 | 적응적 시간/주파수 기반 오디오 부호화/복호화 장치 및방법 |
EP1841072B1 (de) * | 2006-03-30 | 2016-06-01 | Unify GmbH & Co. KG | Verfahren und Einrichtung zum Dekodieren von schichtkodierten Daten |
FR2911228A1 (fr) * | 2007-01-05 | 2008-07-11 | France Telecom | Codage par transformee, utilisant des fenetres de ponderation et a faible retard. |
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 (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5365552A (en) * | 1992-11-16 | 1994-11-15 | Intel Corporation | Buffer fullness indicator |
US5758092A (en) * | 1995-11-14 | 1998-05-26 | Intel Corporation | Interleaved bitrate control for heterogeneous data streams |
KR100261254B1 (ko) * | 1997-04-02 | 2000-07-01 | 윤종용 | 비트율 조절이 가능한 오디오 데이터 부호화/복호화방법 및 장치 |
KR100335609B1 (ko) * | 1997-11-20 | 2002-10-04 | 삼성전자 주식회사 | 비트율조절이가능한오디오부호화/복호화방법및장치 |
KR100354531B1 (ko) * | 1998-05-06 | 2005-12-21 | 삼성전자 주식회사 | 실시간 복호화를 위한 무손실 부호화 및 복호화 시스템 |
US6182031B1 (en) * | 1998-09-15 | 2001-01-30 | Intel Corp. | Scalable audio coding system |
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 | 符号化装置および復号化装置 |
US6446037B1 (en) * | 1999-08-09 | 2002-09-03 | Dolby Laboratories Licensing Corporation | Scalable coding method for high quality audio |
DE60204039T2 (de) * | 2001-11-02 | 2006-03-02 | Matsushita Electric Industrial Co., Ltd., Kadoma | Vorrichtung zur kodierung und dekodierung von audiosignalen |
-
2001
- 2001-01-18 DE DE10102154A patent/DE10102154C2/de not_active Expired - Lifetime
-
2002
- 2002-01-14 KR KR10-2003-7009508A patent/KR100516985B1/ko active IP Right Grant
- 2002-01-14 WO PCT/EP2002/000295 patent/WO2002058051A2/de active IP Right Grant
- 2002-01-14 AT AT02708282T patent/ATE272884T1/de active
- 2002-01-14 EP EP02708282A patent/EP1354314B1/de not_active Expired - Lifetime
- 2002-01-14 CA CA002434783A patent/CA2434783C/en not_active Expired - Lifetime
- 2002-01-14 DE DE50200750T patent/DE50200750D1/de not_active Expired - Lifetime
- 2002-01-14 AU AU2002242667A patent/AU2002242667B2/en not_active Expired
- 2002-01-14 JP JP2002558258A patent/JP3890298B2/ja not_active Expired - Lifetime
- 2002-01-14 US US10/466,866 patent/US7496517B2/en not_active Expired - Lifetime
-
2003
- 2003-12-11 HK HK03109020A patent/HK1056790A1/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 * |
Also Published As
Publication number | Publication date |
---|---|
KR100516985B1 (ko) | 2005-09-26 |
CA2434783C (en) | 2008-04-15 |
KR20030076614A (ko) | 2003-09-26 |
WO2002058051A3 (de) | 2002-09-19 |
DE10102154C2 (de) | 2003-02-13 |
US20040107289A1 (en) | 2004-06-03 |
CA2434783A1 (en) | 2002-07-25 |
JP3890298B2 (ja) | 2007-03-07 |
HK1056790A1 (en) | 2004-02-27 |
DE50200750D1 (de) | 2004-09-09 |
EP1354314B1 (de) | 2004-08-04 |
US7496517B2 (en) | 2009-02-24 |
WO2002058051A2 (de) | 2002-07-25 |
ATE272884T1 (de) | 2004-08-15 |
AU2002242667B2 (en) | 2004-11-25 |
JP2004520739A (ja) | 2004-07-08 |
EP1354314A2 (de) | 2003-10-22 |
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 | |
DE19628292B4 (de) | Verfahren zum Codieren und Decodieren von Stereoaudiospektralwerten | |
DE19549621B4 (de) | Vorrichtung zum Codieren von Audiosignalen | |
DE60121592T2 (de) | Kodierung und dekodierung eines digitalen signals | |
DE60012860T2 (de) | Verfahren zur Verarbeitung mehrerer digitaler Audiodatenströme | |
DE69833834T2 (de) | Skalierbares Audiokodier-und Dekodierverfahren und Gerät | |
EP1647010B1 (de) | Audiodateiformatumwandlung | |
DE69932958T2 (de) | Verlustfreies Dekodierungsverfahren | |
DE602004005197T2 (de) | Vorrichtung und verfahren zum kodieren eines audiosignals und vorrichtung und verfahren zum dekodieren eines kodierten audiosignals | |
DE19742655C2 (de) | Verfahren und Vorrichtung zum Codieren eines zeitdiskreten Stereosignals | |
DE10102155C2 (de) | Verfahren und Vorrichtung zum Erzeugen eines skalierbaren Datenstroms und Verfahren und Vorrichtung zum Decodieren eines skalierbaren Datenstroms | |
WO2002103695A2 (de) | Vorrichtung und verfahren zum einbetten eines wasserzeichens in ein audiosignal | |
DE19811039A1 (de) | Verfahren und Vorrichtungen zum Codieren und Decodieren von Audiosignalen | |
DE19730129A1 (de) | Verfahren zum Signalisieren einer Rauschsubstitution beim Codieren eines Audiosignals | |
DE19730130A1 (de) | Verfahren zum Codieren eines Audiosignals | |
DE10200653A1 (de) | Skalierbarer Codierer und Decodierer für einen skalierten Datenstrom | |
EP1023777B1 (de) | Verfahren und vorrichtung zur erzeugung eines bitratenskalierbaren audio-datenstroms | |
DE60022837T2 (de) | Vorrichtung zur Teilbandcodierung | |
DE60217612T2 (de) | Verfahren und Vorrichtung zur Kodierung und Dekodierung von Sprachsignalen | |
DE10102154C2 (de) | Verfahren und Vorrichtung zum Erzeugen eines skalierbaren Datenstroms und Verfahren und Vorrichtung zum Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkassenfunktion | |
EP1277346B1 (de) | Vorrichtung und Verfahren zum Analysieren der spektralen Darstellung eines decodierten Zeitsignales | |
DE2303497C2 (de) | Verfahren zur Übertragung von Sprachsignalen | |
DE10339498B4 (de) | Audiodateiformatumwandlung | |
DE102008009720A1 (de) | Verfahren und Mittel zur Dekodierung von Hintergrundrauschinformationen | |
EP0905918A2 (de) | Verfahren und Vorrichtung zum Kodieren von Audiosignalen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8181 | Inventor (new situation) |
Inventor name: LUTZKY, MANFRED, 90427 NUERNBERG, DE Inventor name: TEICHMANN, BODO, 90427 NUERNBERG, 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: GRILL, BERNHARD, 91207 LAUF, DE Inventor name: SPERSCHNEIDER, RALPH, 91056 ERLANGEN, DE |
|
8304 | Grant after examination procedure | ||
8364 | No opposition during term of opposition | ||
R071 | Expiry of right |