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 Codierer

Info

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
Application number
DE10102159A
Other languages
English (en)
Other versions
DE10102159A1 (de
Inventor
Ralph Sperschneider
Bodo Teichmann
Manfred Lutzky
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to DE10102159A priority Critical patent/DE10102159C2/de
Application filed by Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Priority to EP02718023A priority patent/EP1338004B8/de
Priority to AU2002249122A priority patent/AU2002249122B2/en
Priority to DE50200953T priority patent/DE50200953D1/de
Priority to KR1020037009445A priority patent/KR100576034B1/ko
Priority to PCT/EP2002/000294 priority patent/WO2002063611A1/de
Priority to US10/466,781 priority patent/US7516230B2/en
Priority to JP2002563470A priority patent/JP3890300B2/ja
Priority to CA002434882A priority patent/CA2434882C/en
Priority to AT02718023T priority patent/ATE275751T1/de
Publication of DE10102159A1 publication Critical patent/DE10102159A1/de
Application granted granted Critical
Publication of DE10102159C2 publication Critical patent/DE10102159C2/de
Priority to HK03108993A priority patent/HK1056641A1/xx
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech 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/04Speech 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/16Vocoder architecture
    • G10L19/18Vocoders using multiple modes
    • G10L19/24Variable rate codecs, e.g. for generating different qualities using a scalable representation such as hierarchical encoding or layered encoding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech 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/04Speech 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/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/12Determination 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

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.
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.
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.
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.
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.
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.
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.
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.
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.
DE10102159A 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 Expired - Lifetime DE10102159C2 (de)

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
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
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
KR1020037009445A KR100576034B1 (ko) 2001-01-18 2002-01-14 비트 세이빙 뱅크, 인코더 및 스케일러블 인코더를 제공하여 스케일러블 데이터 스트림을 생성 및/또는 디코딩하는 방법 및 장치
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
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
JP2002563470A JP3890300B2 (ja) 2001-01-18 2002-01-14 ビットセイビングバンク、エンコーダおよびスケーラブルエンコーダを備えたスケーラブルデータストリームを生成する方法と装置および復号化する方法と装置
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)

* Cited by examiner, † Cited by third party
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 (28)

* Cited by examiner, † Cited by third party
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
US20060041895A1 (en) * 2004-08-04 2006-02-23 Microsoft Corporation Systems and methods for interfacing with codecs across an architecture optimized for audio
US7590065B2 (en) * 2004-08-04 2009-09-15 Microsoft Corporation Equal-opportunity bandwidth regulation
US7706901B2 (en) * 2004-10-01 2010-04-27 Microsoft Corporation Low latency real-time audio streaming
WO2006041055A1 (ja) * 2004-10-13 2006-04-20 Matsushita Electric Industrial Co., Ltd. スケーラブル符号化装置、スケーラブル復号装置及びスケーラブル符号化方法
KR20070092240A (ko) * 2004-12-27 2007-09-12 마츠시타 덴끼 산교 가부시키가이샤 음성 부호화 장치 및 음성 부호화 방법
US8826093B2 (en) * 2005-01-19 2014-09-02 Qualcomm Incorporated Power saving method for coded transmission
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
WO2007068296A1 (en) * 2005-12-16 2007-06-21 Dolby Sweden Ab Apparatuses, methods and computer program for generating and interpreting a data stream with a series of 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 株式会社東芝 動画像符号化装置及びその方法
ES2671711T3 (es) * 2008-09-18 2018-06-08 Electronics And Telecommunications Research Institute Aparato de codificación y aparato de decodificación para transformar entre codificador basado en transformada de coseno discreta modificada y hetero codificador
CN101771417B (zh) * 2008-12-30 2012-04-18 华为技术有限公司 信号编码、解码方法及装置、系统
BR112012026326B1 (pt) * 2010-04-13 2021-05-04 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V método e codificador e decodificador para representação com amostragem precisa de um sinal de áudio
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 用以產生可由實施不同解碼協定之解碼器所解碼的統一位元流之音頻編碼方法及系統
US9905236B2 (en) 2012-03-23 2018-02-27 Dolby Laboratories Licensing Corporation 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

Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
JP3344944B2 (ja) * 1997-05-15 2002-11-18 松下電器産業株式会社 オーディオ信号符号化装置,オーディオ信号復号化装置,オーディオ信号符号化方法,及びオーディオ信号復号化方法
JP3246715B2 (ja) 1996-07-01 2002-01-15 松下電器産業株式会社 オーディオ信号圧縮方法,およびオーディオ信号圧縮装置
KR100335609B1 (ko) * 1997-11-20 2002-10-04 삼성전자 주식회사 비트율조절이가능한오디오부호화/복호화방법및장치
US6487693B1 (en) * 1998-08-06 2002-11-26 Samsung Electronics, Co., Ltd. Channel encoding/decoding in communication system
US6553086B1 (en) * 1998-10-02 2003-04-22 Lg Electronics, Inc. Method and apparatus for recording time information for digital data streams
JP2000307661A (ja) 1999-04-22 2000-11-02 Matsushita Electric Ind Co Ltd 符号化装置および復号化装置
US6904089B1 (en) 1998-12-28 2005-06-07 Matsushita Electric Industrial Co., Ltd. Encoding device and decoding device
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
DE50200953D1 (de) 2004-10-14
EP1338004A1 (de) 2003-08-27
DE10102159A1 (de) 2002-08-08
AU2002249122B2 (en) 2005-06-23
EP1338004B8 (de) 2005-08-31
ATE275751T1 (de) 2004-09-15
JP3890300B2 (ja) 2007-03-07
US7516230B2 (en) 2009-04-07
CA2434882C (en) 2008-04-15
JP2004523790A (ja) 2004-08-05
US20040162911A1 (en) 2004-08-19
HK1056641A1 (en) 2004-02-20
EP1338004B1 (de) 2004-09-08
KR20030076611A (ko) 2003-09-26
KR100576034B1 (ko) 2006-05-02

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
DE19549621B4 (de) Vorrichtung zum Codieren von Audiosignalen
DE60121592T2 (de) Kodierung und dekodierung eines digitalen signals
DE69333394T2 (de) Hochwirksames Kodierverfahren und -gerät
DE60012860T2 (de) Verfahren zur Verarbeitung mehrerer digitaler Audiodatenströme
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
EP1382038A2 (de) Vorrichtung und verfahren zum einbetten eines wasserzeichens in ein audiosignal
WO2006114368A1 (de) Verfahren und vorrichtung zur geräuschunterdrückung
EP1023777B1 (de) Verfahren und vorrichtung zur erzeugung eines bitratenskalierbaren audio-datenstroms
DE60224005T2 (de) Verfahren und vorrichtung zur verarbeitung von mehreren audiobitströmen
EP0635177B1 (de) Verfahren zum übertragen und/oder speichern digitalisierter, datenreduzierter audiosignale
EP1354314B1 (de) Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion
EP2245622B1 (de) Verfahren und mittel zur dekodierung von hintergrundrauschinformationen
DE10339498B4 (de) Audiodateiformatumwandlung
DE2855395C2 (de) Nachrichtenübertragungssystem
DE19804584A1 (de) Verfahren und Vorrichtung zum Codieren und Decodieren von Audiosignalen
DE112021005067T5 (de) Codec mit hierarchischer räumlicher auflösung
WO2005034091A1 (de) Verfahren und anordnung zur audioübertragung
WO1994010682A1 (de) Verfahren zur sprachcodierung
DE10138532A1 (de) Verfahren zum dynamischen, priorisierbaren und wahlfreien Zugriff auf Bildbereiche in JPEG2000-komprimierten Bildern sowie darauf aufbauende Client-Server-Architektur

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