EP1354314B1 - Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion - Google Patents

Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion Download PDF

Info

Publication number
EP1354314B1
EP1354314B1 EP02708282A EP02708282A EP1354314B1 EP 1354314 B1 EP1354314 B1 EP 1354314B1 EP 02708282 A EP02708282 A EP 02708282A EP 02708282 A EP02708282 A EP 02708282A EP 1354314 B1 EP1354314 B1 EP 1354314B1
Authority
EP
European Patent Office
Prior art keywords
encoder
output data
input signal
data
block
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
EP02708282A
Other languages
English (en)
French (fr)
Other versions
EP1354314A2 (de
Inventor
Ralph Sperschneider
Bodo Teichmann
Manfred Lutzky
Bernhard Grill
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
Application filed by Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Publication of EP1354314A2 publication Critical patent/EP1354314A2/de
Application granted granted Critical
Publication of EP1354314B1 publication Critical patent/EP1354314B1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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 TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; 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

Definitions

  • the present invention relates to scalable encoders and decoders, and in particular for generating scalable data streams through which a bit savings bank signals can be.
  • Scalable encoders are shown in EP 0 846 375 B1.
  • scalability means the possibility a subset of a bit stream containing an encoded Data signal, e.g. an audio signal or a video signal, represents to decode into a usable signal. This attribute is particularly desirable when e.g. on Data transmission channel does not have the required full bandwidth for the transmission of a complete bit stream for Provides.
  • an encoded Data signal e.g. an audio signal or a video signal
  • Scalability layers defined.
  • FIG. 1 An example of a scalable encoder like the one in the subpart 4 (General Audio) of Part 3 (Audio) of the MPEG-4 Standards (ISO / IEC 14496-3: 1999 Subpart 4) is defined, is shown in Fig. 1.
  • An audio signal s (t) to be encoded is fed into the scalable encoder on the input side.
  • the scalable encoder shown in Fig. 1 contains a first encoder 12, which is an MPEG-Celp encoder.
  • the second encoder 14 is an AAC encoder that is of high quality Audio coding delivers and in the standard MPEG-2 AAC (ISO / IEC 13818) is defined.
  • LATM Low-Overhead MPEG-4 Audio Transport Multiplex
  • the LATM format is in Section 6.5 of Part 3 (Audio) first addition to the MPEG-4 standard (ISO / IEC 14496-3: 1999 / AMD1: 2000).
  • the scalable audio encoder also includes several others Elements.
  • a delay stage 24 in AAC branch and a delay stage 26 in the Celp branch.
  • the delay stage 26 of the celp branch is a downsampling stage 28 downstream to the sampling rate of the input signal s (t) to match the sampling rate required by the Celp encoder.
  • the Celp encoder 12 is followed by an inverse Celp decoder 30, the Celp encoded / decoded Signal an upsampling stage 32 is supplied. That sampled up The signal then becomes a further delay stage 34, referred to in the MPEG-4 standard as "Core Coder Delay" is fed.
  • the CoreDoderDelay 34 stage has the following function. Is the Delay set to zero, so process the first one Encoder 14 and the second encoder 16 in a so-called Superframe exactly the same samples of the audio input signal.
  • a superframe can consist of three AAC frames consist of a certain number of samples Represent no. X to no. Y of the audio signal.
  • a CoreCoderDelay D is a non-zero time variable set
  • the three blocks of AAC frames nevertheless represent the same samples No. x through No. y.
  • the eight Blocks of CELP frames represent sample values No. x - Fs D to No. y - Fs D, where Fs is the sampling frequency of the Input signal.
  • a CoreCoderDelay 0 assumed so that the current period of the input signal for the first coder and the current time period are identical for the second encoder.
  • the AAC block (s) and the CELP block (s) in one Superframes represent the same number of samples, the samples themselves are not necessarily the same must be, but also to CoreCoderDelay to each other may have been moved.
  • the Celp encoder is a portion of the Input signal s (t) processed faster depending on the configuration than the AAC encoder 14.
  • the AAC branch is the Optional delay stage 24 a block decision stage 26 downstream, the u. a. determines whether to window the Input signal s (t) to use short or long windows are short windows for strongly transient signals are choosing while long for less transient signals Windows are preferred because they have the relationship between Amount of user data and page information better than at short windows.
  • the block decision stage 26 in the present Example a fixed delay by e.g. B. 5/8 times one Blocks performs. This is called the look-ahead function in technology designated.
  • the output signals of the MDCT blocks 36, 38 are then fed to a subtractor 40.
  • the subsequent block 44 determines whether it is cheaper is to supply the input signal per se to the AAC encoder 14. This is made possible by the bypass branch 42. However, if it is determined that the difference signal is on Output of subtractor 40 e.g. is smaller in energy than the signal output from the MDCT block 38, so not the original signal, but the difference signal taken to be encoded by the AAC encoder 14 to finally to form the second scaling layer 18. This comparison can be done in bands, what by a frequency selective switching device (FSS) 44 is indicated.
  • FSS frequency selective switching device
  • An essential feature of the MPEG-4 standard or at Another encoder standard is that the transmission of the compressed Data signal over a channel with constant bit rate should be done.
  • All high quality audio codecs work block-based, i.e. they process blocks of audio data (Order of magnitude 480-1024 samples) to pieces of a compressed Bit streams, which are also called frames.
  • the bit stream format must be constructed so that a decoder without a priori information where a frame begins, is able to recognize the beginning of a frame around with the output of the decoded with as little delay as possible Audio signal data to begin. Therefore everyone starts Header or destination data block of a frame with a particular one Synchronization word, after which in a continuous Bitstream can be searched.
  • Other common ingredients in the data stream next to the determination data block are the main data or "payload data" of the individual layers, which contain the actual compressed audio data are.
  • bit stream format with a fixed frame length.
  • the header or destination data blocks become this bitstream format inserted equidistantly in the bit stream.
  • the too side information associated with this header and main data follow immediately behind.
  • the length, i.e. Number of bits, for the main data is in every frame the same.
  • Such a bitstream format, as in 4 is shown, for example, in MPEG layer 2 or MPEG-CELP is used.
  • FIG. 5 shows another fixed bitstream format Frame length and a back pointer or backward pointer.
  • This bitstream format is the header and the page information as with the format shown in Figure 4 arranged equidistant.
  • the start of the associated main data only takes place immediately in exceptional cases Connection to a header. In most cases it is Start in one of the previous frames.
  • the number of bits by which the start of the main data is shifted in the bit stream, is backpointer through the page information variable transfer.
  • the end of this main data can be in this frame or in a previous frame.
  • the length of the Main data is no longer constant.
  • the Number of bits used to encode a block to which Properties of the signal can be adjusted.
  • a constant bit rate can be achieved.
  • This technique is called "Bitsparkasse” and increases the theoretical Delay in the transmission chain.
  • Such a bitstream format is used for example with MPEG Layer 3 (MP3).
  • MP3 MPEG Layer 3
  • the Bit savings bank technology is also in the standard MPEG Layer
  • the bit savings bank provides a buffer of Bits that can be used to encode of a block of temporal samples, more bits are available than actually due to the constant output data rate allowed are.
  • the technology of the Bitsparkasse takes into account the fact that some blocks of audio samples with fewer bits than through the constant transfer rate can be predetermined coded so that through these blocks the bit savings bank fills up while again other blocks of audio samples psychoacoustic properties have that do not allow such a large compression, so that for these blocks for trouble-free or trouble-free Do not actually code the available bits would suffice. The extra bits needed will be taken out of the bit savings bank, so that the bit savings bank empties with such blocks.
  • bitstream format “variable frame length”
  • bitstream format “variable frame length”
  • the fixed order of the bitstream elements header, page information and main data as with the "fixed frame length”. Since the Length of the main data is not constant, can also here Bit savings bank technology can be used, however no back pointer as required in FIG. 5.
  • An example for is a bitstream format as shown in FIG. 6 the transport format ADTS (Audio Data Transport Stream), such as it is defined in the MPEG 2 AAC standard.
  • ADTS Audio Data Transport Stream
  • MPEG 4 is the combination of different encoders / decoders to a scalable encoder / decoder. So it is possible and useful to have a Celp speech encoder as the first encoder with an AAC encoder for the others or to combine the other scaling layers and in to pack a bitstream.
  • the purpose of this combination is in that the possibility is open, either all Decode scaling layers or layers and thus a to achieve the best possible audio quality, or parts of which, possibly only the first scaling layer with the corresponding limited audio quality. reasons for the sole decoding of the lowest scaling layer may be that because of too small a bandwidth of the Transmission channel of the decoder only the first scaling layer of the bit stream.
  • a decoder is a wants to achieve the lowest possible codec delay and therefore only the first scaling layer is decoded. It was on it noted that the codec delay is a Celp codec in general is significantly smaller than the delay of the AAC codec.
  • the transport format LATM is standardized in MPEG 4 version 2, which among other things also scalable data streams can transmit.
  • FIG. 2a is a schematic representation of the samples of the input signal s (t).
  • the input signal can be in different successive sections 0, 1, 2, 3 are divided, where each section has a certain fixed number of temporal Has samples.
  • the AAC encoder 14 (FIG. 1) an entire section 0, 1, 2 or 3 to provide a coded data signal for this section deliver.
  • the Celp encoder 12 (Fig. 1) processes usually a smaller amount of temporal samples per coding step. So is exemplary in Fig. 2b shown that the Celp encoder or, generally speaking, the first encoder or coder 1 has a block length which is a Is a quarter of the block length of the second encoder.
  • the block length of the first encoder could also be half as much large, but could also be one eleventh of the block length of the second encoder.
  • the first encoder generate four blocks from the section of the input signal (11, 12, 13, 14), from which the second encoder is a block of data supplies.
  • 2c is a common LATM bitstream format shown.
  • a superframe can have different ratios of number of AAC frames have number of CELP frames, as in MPEG 4 is tabulated. So a Superframe z. B. an AAC block and 1 to 12 CELP blocks, 3 AAC blocks and 8 CELP blocks but also e.g. B. more AAC blocks than CELP blocks depending on the configuration.
  • a LATM frame that one LATM determination data block includes a superframe or also several superframes.
  • the generation of the header 1 opened LATM frames.
  • the Output data blocks 11, 12, 13, 14 of the Celp encoder 12 (Fig. 1) generated and cached.
  • the output data block of the AAC encoder which is shown in FIG "1" is generated.
  • the determination data block Header 1 written.
  • the header 1 of the first generated output data block of the first encoder which in Fig. 2c is designated 11, written, i. H. be transmitted. It is usually (considering less required signaling information) to further writing or transmission of the bit stream equidistant distance of the output data blocks of the first Encoder selected, as shown in Fig. 2c.
  • bitstream formats Another disadvantage of the known bitstream formats is in that no bitstream format for a scalable data stream exists so that the bit savings bank function for scalable Data streams with output data from encoders with different Time base, especially for the combination AAC encoder and CELP encoder of a scalable encoder cannot currently be used. There however, a constant transfer rate is required which AAC coders, however, depend on blocks of different lengths outputs from the properties of the encoded signal quite the case occur that the AAC encoder for Coding a portion of the time signal more bits than given by the transfer rate, needed while he for another section fewer bits than through the output data rate specified.
  • the AAC encoder the scalable Encoder runs out of bits during the AAC encoder of the scalable coding device in the former Case to keep the constant output data rate, not comes around, audible interference in the coded and again to introduce decoded signal.
  • the object of the present invention is a Method and device for generating a scalable To create data stream that is suitable for a Bit savings bank function used for a scaling layer can be.
  • Another object of the present invention is a method for decoding a scalable data stream to accomplish.
  • the present invention is based on the finding that that departed from the known concept set out in Fig. 2c must be, that is that all data an output data block of the second encoder between two successive LATM headers are arranged. Instead, it is permitted that output data of the second encoder, which is a previous period represent the input signal, according to a determination data block be written for the current period, this fact or how much data is still in the direction of transmission written after the determination data block through special buffer information that is also to be transmitted be signaled to a decoder.
  • the decoder can then easily proceed from one Determination data block and using the buffer information determine where the output data of the second encoder for the previous period, and then where the output data of the second Encoder for the current period begin so that the decoder is able to generate the corresponding output data blocks of the first encoder with corresponding ones Output data blocks of the second encoder in connection with bring to decode the signal in all layers again, with the expression "corresponding" on it relates that the corresponding data of the first and the second encoder on the same section of the input signal in the case of CoreCoderDelay zero (see Fig. 1) or to current sections shifted by Core Coder Delay are related to the first and the second encoder.
  • a method for generating a scalable data stream from one or more blocks of Output data from a first encoder and from one or more Blocks of output data from a second encoder hence a determination data block for a current section of the input signal.
  • the output data of the second encoder which is a previous one Represent section of the input signal in Direction of transmission from an encoder to a decoder written behind the determination data block.
  • the output data of the second encoder based on the current one Relate section of the input signal, that is to say to the Determination data block can actually belong then be written when the output data of the second Encoder for the previous section completely are written.
  • the output data of the first encoder can either equidistant or not in the scalable data stream written, however, for delay reasons, a low-delay decoding of the first scaling layer alone, i.e. only the output data blocks of the it is desirable to enable the first encoder, this Write data blocks equidistant and delay optimized.
  • a bit savings bank u. a. by the maximum fines the size of the bit savings bank, whereby this value is in Fig. 3 is referred to as "Max Bufferfullness". This value is fixed and known to the decoder.
  • the current value of the bit savings bank occupancy which is referred to as “buffer fullness”.
  • Max Bufferfullness and Bufferfullness delivers when the present invention an MPEG 4 encoder is used, the buffer information, being, as will be explained later, in this In this case it should be taken into account that AAC blocks scattered celp blocks or data from other scaling layers may not be taken into account by the exact value of the start of the output data of the second data block to be found behind the LATM determination data block.
  • the Output data block of the second encoder is then in the remaining gaps are written, passing through the buffer information how much data is signaled by the second encoder behind a determination data block at the time period, to which the determination data block points out, or to the previous period of the input signal are counted so that the decoder an assignment between output data blocks is clear and unequivocal of the first encoder and an output data block of the second encoder for a period of the input signal can create.
  • Another advantage of the present invention is that the signaling of the output data block after the determination data block easily with a signaling output data blocks of the first encoder before the determination data block combined for the current period can be used for low-delay decoding only to enable the first scaling layer.
  • the scalable data stream according to the invention is special useful for real-time applications, but can also be for non-real-time applications.
  • Determination data blocks called Header 1 and Header 2 are designated.
  • the determination data blocks are LATM header.
  • a decoder represented by an arrow 202 in FIG. 2d is behind the LATM header 200 that of parts of the output data block hatched in the top left to bottom right of the AAC encoder, which is in remaining Gaps between output data blocks of the first encoder are registered.
  • the offset information 204 indicates an offset the output data blocks of the first encoder of two Output data blocks. If Fig. 2d compared to Fig.
  • core frame offset zero
  • the result is in Fig. 2c designated bit stream.
  • core frame offset is>
  • the corresponding output data block of the first becomes zero Encoder 11 by the number of core frame offset of output data blocks of the first encoder transmitted earlier.
  • the delay is between the first Output data block of the first encoder after the LATM header and the first AAC frame from core encoder delay (FIG. 1) + Core frame offset x core block length (block length of encoder 1 in Fig. 2b).
  • core frame offset zero (Fig. 2c) after the LATM header 200, the output data blocks 11 and 12 of the first encoder.
  • an offset of three blocks would be optimal.
  • an offset of one or two blocks brings also a delay advantage.
  • This bitstream structure makes it possible for the Celp encoder the generated celp block immediately after coding can transmit.
  • the celp encoder no additional delay through the bitstream multiplexer (20) added.
  • the celp delay becomes no additional delay due to the scalable combination added so that the delay becomes minimal.
  • Fig. 2d is only exemplary. So are different relationships the block length of the first encoder to the block length of the second encoder possible, the z. B. from 1: 2 to 1:12 can vary or take other ratios can, with ratios greater or less than one may occur.
  • the data of the output data block of the second Encoder of the previous section which is marked with "0" in the Figures 2a to 2e is designated in the direction of transmission from an encoder to a decoder behind the LATM header 200 written until the scalable encoder all the data from the previous section into the bit stream wrote. Only then will there be a transition border 220 started the output data of the second encoder for the current section of the input signal in to write the bitstream.
  • the transition limit 220 coincide with a boundary of a celp data block or neither.
  • the latter variant becomes referential shown in more detail in FIG. 3.
  • the invention becomes scalable in the case of application Encoder preferred, no own page information provide for signaling the buffer information, but instead the one already transmitted in the bit stream Value to use bufferfullness, the length of the with the pointer designated "buffer information" in FIG. 2e, which is identified in FIG. 3 by the reference symbol 314, exactly the difference between Max Bufferfullness and Bufferfullness is when the length of the determination data blocks and the length of any celp blocks as well as any other scaling layers that may exist are not taken into account remain as it is referring to Fig. 3 by the broken arrow is shown.
  • FIG. 3 which relates to FIG. 2 is similar, but the special implementation using the example of MPEG 4.
  • the first line is again a current time period is shown hatched.
  • the second line is the windowing that is used with the AAC encoder is used, shown schematically.
  • an overlap-and-add of 50% is used, so that a Windows usually double the length of time Has samples like the current time period in the The top line of Fig. 3 is shown hatched.
  • FIG. 3 also shows the delay tdip corresponds to block 26 of FIG. 1 and the one selected Example has a size of 5/8 of the block length.
  • the AAC encoder delivers a bit stream of 24 kbit / s while the Celp encoder shown schematically below provides a bit stream at a rate of 8 kbit / s. This results in a total bit rate of 32 kbit / s.
  • the output data blocks zero and one of the Celp encoder correspond to the current time period of the first encoder.
  • the output data block with number 2 of the Celp encoder already corresponds to the next time period.
  • the delay of the downsampling stage 28 and of the celp encoder 12 is also shown by an arrow, which is represented by the reference symbol 302. From this, the delay, which must be set by the stage 34 so that the same conditions are present at the subtracting point 40 of FIG. 1, results in the delay, which is denoted by the core encoder or delay and is illustrated by an arrow 304 in FIG. 3 , Alternatively, this delay can also be generated by block 26.
  • LATM header 306 is no longer the output data block of the Celp encoder with the number "0", but the output data block of the Celp encoder the number "one", especially since the output data block with the number "Zero" has already been transferred to the decoder.
  • the grid spacing then follows celp block 1 and celp block 2 for the next period, then to completion one frame the rest of the data of the output data block of the AAC encoder is written into the data stream until another LATM header 308 for the next period follows.
  • the present invention can, as in the last line 3, simply with the bit savings bank function be combined.
  • the variable "Bufferfullness" which shows the filling of the bit savings bank, is less than the maximum value, it means that the AAC frame for the immediately preceding period needed more bits than actually allowed.
  • the celp frames like be written beforehand, but first the output data block or the output data blocks of the AAC encoder written into the bit stream from previous periods must be done before writing the output data block of the AAC encoder for the current time period can be started. From the comparison of the last two Rows of Fig. 3 labeled "1" and "2" it can be seen that the bit savings bank function also immediately leads to a delay in the encoder for the AAC frame.
  • bit savings bank level is according to MPEG 4 in the element Transfer StreamMuxConfig through the "Bufferfullness" variable.
  • the variable buffer fullness is calculated from the Variable bit reservoir divided by 32 times the straight existing number of channels of audio channels.
  • the LATM header is written to the bitstream after the current time period processed by the AAC encoder has been used, although possibly AAC data from previous ones Periods are to be written in the bit stream.
  • pointer 314 is intentional drawn underneath the Celp block 2 is because it is the length of Celp block 2 just like that Length of celp block 1 is not taken into account as this data of course nothing with the bit savings bank of the AAC encoder have to do. Furthermore, no header data is used and bits of any further layers that may be present considered.
  • the bit stream is first extracted the celp frames, which is easily possible, since they are arranged equidistantly, for example, and have a fixed length.
  • CELP blocks are signaled so that a immediate decoding is possible.

Landscapes

  • Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Physics & Mathematics (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)

Description

Die vorliegende Erfindung bezieht sich auf skalierbare Codierer und Decodierer und insbesondere auf das Erzeugen von skalierbaren Datenströmen, durch die eine Bitsparkasse signalisiert werden kann.
Skalierbare Codierer sind in der EP 0 846 375 B1 gezeigt. Allgemein versteht man unter der Skalierbarkeit die Möglichkeit, einen Teilsatz eines Bitstroms, der ein codiertes Datensignal, wie z.B. ein Audiosignal oder ein Videosignal, darstellt, in ein nutzbares Signal zu decodieren. Diese Eigenschaft ist insbesondere dann gewünscht, wenn z.B. ein Datenübertragungskanal nicht die nötige vollständige Bandbreite zur Übertragung eines vollständigen Bitstroms zur Verfügung stellt. Andererseits ist eine unvollständige Decodierung auf einem Decodierer mit niedrigerer Komplexität möglich. Allgemein werden in der Praxis verschiedene diskrete Skalierbarkeitsschichten definiert.
Ein Beispiel für einen skalierbaren Codierer, wie er im Subpart 4 (General Audio) des Parts 3 (Audio) des MPEG-4 Standards (ISO/IEC 14496-3:1999 Subpart 4) definiert ist, ist in Fig. 1 gezeigt. Ein zu codierendes Audiosignal s(t) wird eingangsseitig in den skalierbaren Codierer 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änzung zum MPEG-4 Standard (ISO/IEC 14496-3:1999/AMD1:2000) beschrieben.
Der skalierbare Audiocodierer umfaßt ferner einige weitere Elemente. Zunächst existiert eine Verzögerungsstufe 24 im AAC-Zweig und eine Verzögerungsstufe 26 im Celp-Zweig. Durch beide verzögerungsstufen kann eine optionale Verzögerung für den jeweiligen Zweig eingestellt werden. Der Verzögerungsstufe 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 anzupassen. 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 upgesampelte Signal wird dann einer weiteren Verzögerungsstufe 34, die im MPEG-4-Standard mit "Core Coder Delay" bezeichnet ist, zugeführt.
Die Stufe CoreDoderDelay 34 hat folgende Funktion. Ist die Verzögerung auf Null eingestellt, so verarbeiten der erste Codierer 14 und der zweite Codierer 16 in einem sogenannten Superframe exakt dieselben Abtastwerte des Audioeingangssignals. Ein Superframe kann beispielsweise aus drei AAC-Frames bestehen, die zusammen eine gewisse Anzahl von Abtastwerten 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 dennoch 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 nachfolgenden Ausführungen wird jedoch aus Einfachheitsgründen ohne Einschränkung der Allgemeinheit ein CoreCoderDelay = 0 angenommen, so daß der aktuelle Zeitabschnitt des Eingangssignals 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 identischen 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 verarbeitet 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 zwischen 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 sowohl das entsprechende Signal im Celp-Zweig als auch das Signal im AAC-Zweig einer Einrichtung zum Umsetzen der zeitlichen 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 Abtastwerte vorliegen, d. h. das Delay muß in beiden Zweigen identisch sein.
Der darauffolgende Block 44 stellt fest, ob es günstiger ist, das Eingangssignal an sich dem AAC-Codierer 14 zuzufü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 Elemente sind in der Technik bekannt und beispielsweise im MPEG-4-Standard sowie in weiteren MPEG-Standards beschrieben.
Ein wesentliches Merkmal beim MPEG-4-Standard bzw. auch bei anderen Codierer-Standards ist, daß die Übertragung des komprimierten Datensignals über einen Kanal mit konstanter Bitrate 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 komprimierten Bitstroms, welche auch als Frames bezeichnet werden. Das Bitstromformat muß dabei so aufgebaut sein, daß ein Decodierer 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 bestimmten Synchronisationswort, nach dem in einem kontinuierlichen Bitstrom gesucht werden kann. Weitere übliche Bestandteile 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 Bestimmungsdatenblöcke äquidistant in den Bitstrom eingefügt. Die zu diesem Header zugehörigen Seiteninformationen ("Side Information") und Hauptdaten (Main Data) folgen unmittelbar dahinter. 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 Seiteninformationen wie bei dem Format, das in Fig. 4 gezeigt ist, äquidistant angeordnet. Der Beginn der zugehörigen Hauptdaten 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 Verfügung zu stellen, als eigentlich durch die konstante Ausgangsdatenrate erlaubt sind. Die Technik der Bitsparkasse trägt der Tatsache Rechnung, daß manche Blöcke von Audioabtastwerten mit weniger Bits als durch die konstante Übertragungsrate 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 Eigenschaften 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 übertragen werden. Bei dem Bitstromformat "Variable Framelänge", wie es in Fig. 6 dargestellt ist, wird die feste Reihenfolge der Bitstromelemente Header, Seiteninformationen und Hauptdaten 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 einen 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 besteht 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 Skalierungsschicht können sein, daß wegen zu kleiner Bandbreite des Übertragungskanals der Decodierer nur die erste Skalierungsschicht des Bitstroms erhalten hat. Deswegen werden bei der Übertragung die Anteile der ersten Skalierungsschicht im Bitstrom gegenüber der zweiten und den weiteren Skalierungsschichten bevorrechtigt, wodurch bei Kapazitätsengpässen im Übertragungsnetz die Übertragung der ersten Skalierungsschicht sichergestellt wird, während die zweite Skalierungsschicht 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 allgemeinen signifikant kleiner als das Delay des AAC-Codecs ist.
In MPEG 4 Version 2 ist das Transportformat LATM standardisiert, 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 Eingangssignals s(t). Das Eingangssignal kann in verschiedene aufeinanderfolgende Abschnitte 0, 1, 2, 3 eingeteilt werden, wobei jeder Abschnitt eine bestimmte feste Anzahl von zeitlichen Abtastwerten hat. Üblicherweise verarbeitet der AAC-Codierer 14 (Fig. 1) einen gesamten Abschnitt 0, 1, 2 oder 3, um für diesen Abschnitt ein codiertes Datensignal zu liefern. Der Celp-Codierer 12 (Fig. 1) verarbeitet jedoch üblicherweise eine geringere Menge an zeitlichen Abtastwerten 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-Bitstromformat 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 Ausgangsdatenblock des AAC-Codierers erzeugt ist, wird erst der Bestimmungsdatenblock (Header 1) geschrieben. Je nach Konvention kann dann unmittelbar hinter den Header 1 der als erstes erzeugte Ausgangsdatenblock des ersten Codierers, der in Fig. 2c mit 11 bezeichnet ist, geschrieben, d. h. übertragen, werden. Es wird üblicherweise (in Anbetracht geringer erforderlicher Signalisierungsinformationen) zum weiteren Schreiben bzw. Übertragen des Bitstroms ein äquidistanter Abstand der Ausgangsdatenblöcke des ersten Codierers gewählt, wie es in Fig. 2c dargestellt ist. Dies bedeutet, daß nach dem Schreiben bzw. Übertragen des Blocks 11 der zweite Ausgangsdatenblock 12 des ersten Codierers, dann der dritte Ausgangsdatenblock 13 des ersten Codierers und dann der vierte Ausgangsdatenblock 14 des ersten Codierers in äquidistanten 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 Figuren 4 bis 6 dargestellten bekannten Bitstromformaten ist die Tatsache, daß dieselben nicht für skalierbare Datenströme geeignet sind.
Ein weiterer Nachteil der bekannten Bitstromformate besteht darin, daß kein Bitstromformat für einen skalierbaren Datenstrom existiert, so daß die Bitsparkassenfunktion für skalierbare Datenströme mit Ausgangsdaten von Codierern mit unterschiedlicher Zeitbasis, insbesondere für die Kombination AAC-Codierer und CELP-Codierer einer skalierbaren Codiervorrichtung derzeit nicht nutzbar gemacht werden kann. Da jedoch eine konstante Übertragungsrate gefordert wird, der AAC-Codierer jedoch Blöcke unterschiedlicher Länge abhängig von den Eigenschaften des codierten Signals ausgibt, kann durchaus der Fall auftreten, daß der AAC-Codierer zur Codierung eines Abschnitts des Zeitsignals mehr Bits als durch die übertragungsrate vorgegeben, benötigt, während er für einen anderen Abschnitt wieder weniger Bits als durch die Ausgangsdatenrate vorgegeben fordert. Damit werden im letzteren Fall dem AAC-Codierer der skalierbaren Codiervorrichtung die Bits ausgehen, während der AAC-Codierer der skalierbaren Codiervorrichtung im ersteren Fall, um die konstante Ausgangsdatenrate einzuhalten, nicht umhin kommt, hörbare Störungen in das codierte und wieder decodierte Signal einzuführen.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren und eine Vorrichtung zum Erzeugen eines skalierbaren Datenstroms zu schaffen, das dazu geeignet ist, daß eine Bitsparkassenfunktion für eine Skalierungsschicht eingesetzt werden kann.
Diese Aufgabe wird durch ein Verfahren nach Patentanspruch 1 oder durch eine Vorrichtung nach Patentanspruch 9 gelöst.
Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren zum Decodieren eines skalierbaren Datenstroms zu schaffen.
Diese Aufgabe wird durch ein Verfahren nach Patentanspruch 10 oder durch eine Vorrichtung nach Patentanspruch 11 gelöst.
Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß von dem bekannten, in Fig. 2c dargelegten Konzept weggegangen werden muß, das darin besteht, daß sämtliche Daten eines Ausgangsdatenblocks des zweiten Codierers zwischen zwei aufeinanderfolgenden LATM-Headern angeordnet sind. Statt dessen wird es zugelassen, daß auch Ausgangsdaten des zweiten Codierers, die einen vorausgehenden Zeitabschnitt des Eingangssignals darstellen, nach einem Bestimmungsdatenblock für den aktuellen Zeitabschnitt geschrieben werden, wobei diese Tatsache bzw. wieviel Daten noch in Übertragungsrichtung hinter dem Bestimmungsdatenblock geschrieben werden, durch spezielle ebenfalls zu übertragende Pufferinformationen einem Decodierer signalisiert werden.
Der Decodierer kann dann ohne weiteres, ausgehend von einem Bestimmungsdatenblock und unter Verwendung der Pufferinformationen feststellen, wo die Ausgangsdaten des zweiten Codierers für den vorangegangen Zeitabschnitt enden, und wo dann die Ausgangsdaten des zweiten Codierers für den aktuellen Zeitabschnitt beginnen, so daß der Decodierer in der Lage ist, die korrespondierenden Ausgangsdatenblöcke des ersten Codierers mit korrespondierenden Ausgangsdatenblöcken des zweiten Codierers in Verbindung zu bringen, um das Signal in allen Schichten wieder zu decodieren, wobei sich der Ausdruck "korrespondierend" darauf bezieht, daß die entsprechenden Daten des ersten und des zweiten Codierers auf den selben Abschnitt des Eingangssignals im Falle von CoreCoderDelay gleich Null (siehe Fig. 1) oder auf um Core Coder Delay verschobenen aktuelle Abschnitte für den ersten und den zweiten Codierer bezogen sind.
Bei einem erfindungsgemäßen Verfahren zum Erzeugen eines skalierbaren Datenstroms aus einem oder mehreren Blöcken von Ausgangsdaten eines ersten Codierers und aus einem oder mehreren Blöcken von Ausgangsdaten eines zweiten Codierers wird daher ein Bestimmungsdatenblock für einen aktuellen Abschnitt des Eingangssignals geschrieben. Darüber hinaus werden die Ausgangsdaten des zweiten Codierers, die einen vorhergehenden Abschnitt des Eingangssignals darstellen, in Übertragungsrichtung von einem Codierer zu einem Decodierer hinter den Bestimmungsdatenblock geschrieben. Die Ausgangsdaten des zweiten Codierers, die sich auf den aktuellen Abschnitt des Eingangssignals beziehen, also die zu dem Bestimmungsdatenblock eigentlich gehören, können dann geschrieben werden, wenn die Ausgangsdaten des zweiten Codierers für den vorhergehenden Abschnitt vollständig geschrieben sind. Darüber hinaus werden Pufferinformationen in den skalierbaren Datenstrom geschrieben, wobei die Pufferinformationen anzeigen, wie weit sich die Ausgangsdaten des zweiten Codierer für den vorausgehenden Abschnitt hinter dem Bestimmungsdatenblock für den aktuellen Abschnitt erstrecken. Die Ausgangsdaten des ersten Codierers können entweder äquidistant oder nicht in den skalierbaren Datenstrom geschrieben werden, wobei es jedoch, aus Delaygründen, um eine verzögerungsarme Decodierung der ersten Skalierungsschicht alleine, also lediglich der Ausgangsdatenblöcke des ersten Codierers zu ermöglichen, wünschenswert ist, diese Datenblöcke äquidistant und delayoptimiert zu schreiben.
Üblicherweise wird eine Bitsparkasse u. a. durch die maximale Größe der Bitsparkasse definiert, wobei dieser Wert in Fig. 3 mit "Max Bufferfullness" bezeichnet wird. Dieser Wert ist fest und dem Decodierer bekannt. Darüber hinaus wird im Datenstrom der aktuelle Wert der Belegung der Bitsparkasse, der mit "Bufferfullness" bezeichnet wird, übertragen. Die Differenz aus der Variablen Max Bufferfullness und Bufferfullness liefert dann, wenn die vorliegende Erfindung auf einen MPEG 4-Codierer angewendet wird, die Pufferinformationen, wobei, wie es später dargelegt werden wird, in diesem Fall zu berücksichtigen ist, daß unter Umständen in den AAC-Blöcken eingestreute Celp-Blöcke oder Daten anderer Skalierungsschichten nicht berücksichtigt werden dürfen, um den genauen Wert des Beginns der Ausgangsdaten des zweiten Datenblocks hinter dem LATM-Bestimmungsdatenblock zu finden.
Unabhängig von der Funktionalität der Bitsparkasse ermöglicht es das erfindungsgemäße Format jedoch auch, in einem äquidistanten Raster von Bestimmungsdatenblöcken, Ausgangsdatenblöcke variierender Länge des zweiten Codierers zu übertragen. So kann es sinnvoll sein, das Raster für die Bestimmungsdatenblöcke und das Raster für die Ausgangsdatenblöcke des ersten Codierers äquidistant zu wählen, und insbesondere so zu wählen, daß einem Bestimmungsdatenblock immer ein Ausgangsdatenblock des ersten Codierers folgt. Der Ausgangsdatenblock des zweiten Codierers wird dann in die verbleibenden Lücken geschrieben, wobei durch die Pufferinformationen signalisiert wird, wieviel Daten des zweiten Codierers hinter einem Bestimmungsdatenblock zu dem Zeitabschnitt, auf den der Bestimmungsdatenblock hinweist, gehören, oder noch zu dem vorausgehenden zeitlichen Abschnitt des Eingangssignals zu zählen sind, damit der Decodierer eindeutig und zweifelsfrei eine Zuordnung zwischen Ausgangsdatenblöcken des ersten Codierers und einem Ausgangsdatenblock des zweiten Codierers für einen Zeitabschnitt des Eingangssignals schaffen kann.
Ein Vorteil der vorliegenden Erfindung besteht ferner darin, daß das Signalisieren des Ausgangsdatenblocks hinter dem Bestimmungsdatenblock ohne weiteres mit einem Signalisieren von Ausgangsdatenblöcken des ersten Codierers vor dem Bestimmungsdatenblock für den aktuellen Zeitabschnitt kombiniert werden kann, um eine verzögerungsarme Decodierung lediglich der ersten Skalierungsschicht zu ermöglichen.
Der erfindungsgemäße skalierbare Datenstrom ist besonders für Echtzeitanwendungen von Nutzen, kann jedoch genauso auch für Nicht-Echtzeitanwendungen eingesetzt werden.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Zeichnungen detailliert erläutert. Es zeigen:
Fig. 1
einen skalierbaren Codierer gemäß MPEG 4;
Fig. 2a
eine schematische Darstellung eines Eingangssignals, das in aufeinanderfolgende Zeitabschnitte eingeteilt ist;
Fig. 2b
eine schematische Darstellung eines Eingangssignals, 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
ein Bitstromformat gemäß der vorliegenden Erfindung, in dem hinter dem Bestimmungsdatenblock für einen aktuellen Abschnitt noch Ausgangsdaten des zweiten Codierers aus einem vorhergehenden Zeitabschnitt angeordnet sind;
Fig. 3
eine detaillierte Darstellung des erfindungsgemäßen skalierbaren Datenstromes am Beispiel eines Celp-Codierers als erster Codierer und eines AAC-Codierers als zweiter Codierer mit Bitsparkassenfunktion.
Fig. 4
ein Beispiel für ein Bitstromformat mit fester Framelänge;
Fig. 5
ein Beispiel für ein Bitstromformat mit fester Framelänge und Back-Pointer; und
Fig. 6
ein Beispiel eines Bitstromformats mit variabler Framelänge.
Im nachfolgenden wird auf Fig. 2d im Vergleich zu Fig. 2c eingegangen, um einen Bitstrom mit niedriger Verzögerung für die erste Skalierungsschicht zu erläutern. Genauso wie in Fig. 2c enthält der skalierbare Datenstrom aufeinanderfolgende Bestimmungsdatenblöcke, die als Header 1 und Header 2 bezeichnet sind. Bei MPEG 4 sind die Bestimmungsdatenblöcke LATM-Header. In Übertragungsrichtung von einem Encoder zu einem Decodierer, die in Fig. 2d mit einem Pfeil 202 dargestellt ist, findet sich hinter dem LATM-Header 200 die von links oben nach rechts unten schraffierten Teile des Ausgangsdatenblocks des AAC-Codierers, die in verbleibende Lücken zwischen Ausgangsdatenblöcken des ersten Codierers eingetragen sind.
Ferner finden sich im Unterschied zu Fig. 2c nun jedoch in dem durch den LATM-Header 200 begonnenen Frame nicht mehr nur Ausgangsdatenblöcke des ersten Codierers, die in diesen Frame gehören, wie z.B. die Ausgangsdatenblöcke 13 und 14, sondern auch die Ausgangsdatenblöcke 21 und 22 des nachfolgenden Abschnitts von Eingangsdaten. Anders ausgedrückt sind bei dem in Fig. 2d gezeigten Beispiel die beiden Ausgangsdatenblöcke des ersten Codierers, die mit 11 und 12 bezeichnet sind, in Übertragungsrichtung (Pfeil 202) vor dem LATM-Header 200 im Bitstrom vorhanden. Bei dem in Fig. 2d gezeigten Beispiel deuten die Offset-Informationen 204 auf einen Offset der Ausgangsdatenblöcke des ersten Codierers von zwei Ausgangsdatenblöcken hin. Wenn Fig. 2d mit Fig. 2c verglichen 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 Skalierungsschicht interessiert ist. Die Offset-Informationen, die z. B. in Form eines "Core Frame Offset" signalisiert werden können, dienen dazu, die Position des ersten Ausgangsdatenblocks 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 ersten Codierers 11 um die Anzahl Core Frame Offset an Ausgangsdatenblö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 x Core-Blocklänge (Blocklänge des Coders 1 in Fig. 2b). Wie aus dem Vergleich von Fig. 2c und 2d deutlich wird, werden für Core Frame Offset = Null (Fig. 2c) nach dem LATM-Header 200 die Ausgangsdatenblöcke 11 und 12 des ersten Codierers übertragen. Durch die Übertragung von Core Frame Offset = 2 können die Ausgangsdatenblöcke 13 und 14 nach dem LATM-Header 200 folgen, wodurch die Verzögerung bei reiner Celp-Decodierung, also Decodierung der ersten Skalierungsschicht, um zwei Celp-Blocklängen verringert wird. Optimal wäre im Beispiel ein Offset von drei Blöcken. Ein Offset von einem oder zwei Blöcken bringt jedoch ebenfalls bereits einen Delayvorteil.
Durch diesen Bitstromaufbau ist es möglich, daß der Celp-Codierer den erzeugten Celp-Block unmittelbar nach dem Codieren ü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 hinzugefügt, so daß das Delay minimal wird.
Es wird darauf hingewiesen, daß der in Fig. 2d gezeigte Fall lediglich beispielhaft ist. So sind verschiedene Verhältnisse 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 einnehmen können, wobei Verhältnisse größer oder kleiner Eins auftreten können.
Dies heißt im Extremfall (1:12 für MPEG 4 CELP/AAC), daß für denselben Zeitabschnitt des Eingangssignals, für den der AAC-Codierer einen Ausgangsdatenblock erzeugt, der Celp-Codierer zwölf Ausgangsdatenblöcke erzeugt. Der Verzögerungs-Vorteil durch den Datenstrom, der in Fig. 2d gezeigt ist, gegenüber dem Datenstrom, der in Fig. 2c gezeigt ist, kann in diesem Fall durchaus in Größenordnungen von einer viertel bis zu einer halben Sekunde kommen. Dieser Vorteil wird sich um so mehr erhöhen, je größer das Verhältnis zwischen 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.
Im nachfolgenden wird auf Fig. 2e Bezug genommen. Im Unterschied zu Fig. 2d, in der bereits die Offset-Funktion, also die Verschiebung der Ausgangsdatenblöcke des ersten Codierers bezüglich eines Bestimmungsdatenblocks dargestellt sind, wird in Fig. 2e die erfindungsgemäße Verschiebung der Ausgangsdatenblöcke des zweiten Codierers bezüglich des durch die Bestimmungsdatenblöcke gegebenen Rasters dargestellt. Die Anordnung der Ausgangsdatenblöcke des ersten Codierers, die mit 11, 12, 13, 14, 21, 22, 23, 24, 31 in Fig. 2e bezeichnet sind, ist gegenüber Fig. 2d unverändert. Während in Fig. 2d keine Bitsparkassenfunktion möglich ist, bzw., wenn die Bestimmungsdatenblöcke in einem festen Raster sein sollen, keine Ausgangsdatenblöcke veränderlicher Länge für den zweiten Codierer eingesetzt werden können, ist dies bei Fig. 2e nunmehr gemäß der vorliegenden Erfindung möglich.
Hierzu werden die Daten des Ausgangsdatenblocks des zweiten Codierers des vorausgehenden Abschnitts, der mit "0" in den Figuren 2a bis 2e bezeichnet ist, in Übertragungsrichtung von einem Codierer zu einem Decodierer hinter den LATM-Header 200 geschrieben, bis der skalierbare Codierer sämtliche Daten des vorausgehenden Abschnitts in den Bitstrom geschrieben hat. Erst dann wird an einer Übergangsgrenze 220 damit begonnen, die Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des Eingangssignals in den Bitstrom zu schreiben. So kann die Übergangsgrenze 220 mit einer Grenze eines Celp-Datenblocks zusammenfallen oder auch nicht. Je nach Signalisierung kann entweder der Abstand vom Ende des Bestimmungsdatenblocks bis zur Übergangsgrenze 220 oder der Abstand vom Anfang des Bestimmungsdatenblocks bis zur Übergangsgrenze 220 oder aber der Abstand von der hinteren Grenze des Celp-Blocks 13 bis zur Übergangsgrenze 220 mit oder ohne Länge der Celp-Blöcke 13, 14 und/oder der Länge des Bestimmungsdatenblocks als Pufferinformationen signalisiert werden. Die letztere Variante wird bezugnehmend auf Fig. 3 noch näher dargestellt.
Erfindungsgemäß wird es im Fall der Anwendung auf einen skalierbaren Codierer bevorzugt, keine eigenen Seiteninformationen zur Signalisierung der Pufferinformationen vorzusehen, sondern hierzu den bereits ohnehin im Bitstrom übertragenen Wert Bufferfullness zu verwenden, wobei die Länge des mit "Pufferinformationen" in Fig. 2e bezeichneten Zeigers, der in Fig. 3 mit dem Bezugszeichen 314 gekennzeichnet ist, genau gleich der Differenz zwischen Max Bufferfullness und Bufferfullness ist, wenn die Länge der Bestimmungsdatenblöcke und die Länge eventuell vorhandener Celp-Blöcke sowie evtl. vorhandener weiterer Skalierungsschichten unberücksichtigt bleiben, wie es bezugnehmend auf Fig. 3 durch den unterbrochen gezeichneten Pfeil dargestellt ist.
Im nachfolgenden wird auf Fig. 3 eingegangen, welche zu Fig. 2 ähnlich ist, jedoch die besondere Implementierung am Beispiel 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. Typischerweise 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ährend der darunter schematisch dargestellte Celp-Codierer einen Bitstrom mit einer Rate von 8 kBit/s liefert. Dies resultiert in einer Gesamtbitrate von 32 kBit/s.
Wie es aus Fig. 3 ersichtlich ist, entsprechen die Ausgangsdatenblöcke Null und Eins des Celp-Codierers dem aktuellen Zeitabschnitt des ersten Codierers. Der Ausgangsdatenblock mit der Nummer 2 des Celp-Codierers entspricht bereits dem nächsten Zeitabschnitt. Dasselbe trifft für den Celp-Block mit der Nummer 3 zu. In Fig. 3 ist ferner die Verzögerung der Downsampling-Stufe 28 und des Celp-Codierers 12 durch einen Pfeil eingezeichnet, der mit dem Bezugszeichen 302 dargestellt ist. Daraus ergibt sich als die Verzögerung, die durch die Stufe 34 eingestellt werden muß, damit an der Subtrahierstelle 40 von Fig. 1 gleiche Verhältnisse vorliegen, die Verzögerung, die durch Core Coder Delay bezeichnet ist und mit einem Pfeil 304 in Fig. 3 veranschaulicht ist. Diese Verzögerung kann alternativ auch durch Block 26 erzeugt werden. So gilt beispielsweise: Core Coder Delay = = tdip - Celp Encoder Delay - Downsampling Delay = = 600 - 120 - 117 = 363 Abtastwerte.
Für den Fall ohne Bitsparkassenfunktion bzw. für den Fall, daß die Bitsparkasse (Bit Mux Outputbuffer) voll ist, was durch die Variable Bufferfullness = Max angezeigt ist, ergibt sich der in Fig. 2d gezeichnete Fall. Im Unterschied zu Fig. 2d, bei der vier Ausgangsdatenblöcke des ersten Codierers entsprechend einem Ausgangsdatenblock des zweiten Codierers erzeugt werden, wird bei Fig. 3 für einen Ausgangsdatenblock des zweiten Codierers, welcher in den beiden letzten Zeilen von Fig. 3 schwarz gezeichnet ist, zwei Ausgangsdatenblöcke des Celp-Codierers, die mit "0" und "1" bezeichnet sind, erzeugt. Erfindungsgemäß wird nun jedoch hinter einen ersten LATM-Header 306 nicht mehr der Ausgangsdatenblock des Celp-Codierers mit der Nummer "0" geschrieben, sondern der Ausgangsdatenblock des Celp-Codierers mit der Nummer "Eins", zumal der Ausgangsdatenblock mit der Nummer "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 Fertigstellung 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 Zeitabschnitt 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 bedeutet, daß hinter dem LATM-Header 306 die Celp-Frames wie vorher geschrieben werden, daß jedoch zunächst der Ausgangsdatenblock oder die Ausgangsdatenblöcke des AAC-Codierers aus vorhergehenden Zeitabschnitten in den Bitstrom geschrieben werden müssen, 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 Bitsparkassenfunktion unmittelbar auch zu einer Verzögerung im Codierer für den AAC-Frame führt. So sind die Daten für den AAC-Frame des aktuellen Zeitabschnitts, die in Fig. 3 mit 310 bezeichnet sind, zwar genau zum gleichen Zeitpunkt wie im Fall "1" vorhanden, können jedoch erst dann in den Bitstrom geschrieben werden, nachdem die AAC-Daten 312 für den unmittelbar vorhergehenden Zeitabschnitt in den Bitstrom geschrieben worden sind. In Abhängigkeit von dem Bitsparkassenstand des AAC-Codierers verschiebt sich somit die Anfangsposition des AAC-Frames.
Der Bitsparkassenstand wird gemäß MPEG 4 im Element StreamMuxConfig durch die Variable "Bufferfullness" übertragen. Die Variable Bufferfullness berechnet sich aus der Variablen Bitreservoir geteilt durch das 32fache der gerade vorhandenen Kanalanzahl der Audiokanäle.
Es sei darauf hingewiesen, daß es sich bei dem Zeiger, der in Fig. 3 mit dem Bezugszeichen 314 gekennzeichnet ist, und dessen Länge = max Bufferfullness - Bufferfullness ist, um einen Vorwärtszeiger handelt, der gewissermaßen in die Zukunft zeigt, während es sich bei dem in Fig. 5 gezeichneten Zeiger um einen Rückwärtszeiger handelt, der gewissermaßen in die Vergangenheit zeigt. Dies liegt daran, daß gemäß vorliegendem Ausführungsbeispiel der LATM-Header immer dann in den Bitstrom geschrieben wird, nachdem der aktuelle Zeitabschnitt durch den AAC-Codierer verarbeitet worden ist, obgleich ggf. noch AAC-Daten aus vorherigen Zeitabschnitten in den Bitstrom zu schreiben sind.
Es sei ferner darauf hingewiesen, daß der Zeiger 314 absichtlich unterhalb des Celp-Blocks 2 unterbrochen gezeichnet 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-Codierers 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 getrennten Teile der Ausgangsdaten des AAC-Codierers des unmittelbar vorhergehenden Zeitabschnitts wieder aneinandergefü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 Verschiebung des Ausgangsdatenblocks des zweiten Codierers nach hinten im skalierbaren Datenstrom erreicht werden kann, so daß die Bitsparkassenfunktion auch im skalierbaren Datenstrom 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-Codierer einen Zeitabschnitt codiert hat, und die daher als Bezugspunkt dienen können, auch wenn, wie es in Fig. 3 in der letzten Zeile gezeigt ist, ein Großteil der Daten in dem durch einen LATM-Header bezeichneten Frame einerseits vom nächsten Zeitabschnitt stammen (hinsichtlich der Celp-Frames) oder aber von unmittelbar vorhergehenden Zeitabschnitten stammen (hinsichtlich des AAC-Frames), wobei die jeweiligen Verschiebungen jedoch durch die zwei im Bitstrom zusätzlich zu übertragenden Variablen einem Decodierer mitgeteilt werden.

Claims (11)

  1. Verfahren zum Erzeugen eines skalierbaren Datenstroms aus einem oder mehreren Blöcken von Ausgangsdaten eines ersten Codierers (12) und aus einem oder mehreren Blöcken von Ausgangsdaten eines zweiten Codierers (14), wobei der eine oder die mehreren Blöcke von Ausgangsdaten des ersten Codierers (12) zusammen eine Anzahl von Abtastwerten des Eingangssignals für den ersten Codierer darstellen, die einen aktuellen Abschnitt des Eingangssignals für den ersten Codierer bilden, und wobei der eine Block oder die mehreren Blöcke von Ausgangsdaten des zweiten Codierers (14) zusammen eine Anzahl von Abtastwerten des Eingangssignals für den zweiten Codierer darstellen, wobei die Anzahl von Abtastwerten für den zweiten Codierer einen aktuellen Abschnitt des Eingangssignals für den zweiten Codierer bildet, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine Zeitdauer (34) zueinander verschoben sind, mit folgenden Schritten:
    Schreiben eines Bestimmungsdatenblocks (306) für den aktuellen Abschnitt des Eingangssignals für den ersten oder den zweiten Codierer;
    Schreiben von Ausgangsdaten (312) des zweiten Codierers, die einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer darstellen, in Übertragungsrichtung von einem Codierer zu einem Decodierer hinter den Bestimmungsdatenblock (306);
    Schreiben von Ausgangsdaten (310) des zweiten Codierers, die den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellen, wenn die Ausgangsdaten des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals geschrieben sind;
    Schreiben von Pufferinformationen (314) in den skalierbaren Datenstrom, wobei die Pufferinformationen anzeigen, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorausgehenden Abschnitt für den zweiten Codierer hinter den Bestimmungsdatenblock erstrecken; und
    Schreiben des einen oder der mehreren Blöcke der Ausgangsdaten des ersten Codierers (12) in den skalierbaren Datenstrom.
  2. Verfahren nach Anspruch 1,
    bei dem die Längen der Blöcke von Ausgangsdaten des zweiten Codierers für gleichlange Abschnitte des Eingangssignals unterschiedlich sind, wobei die Längen der Blöcke von Ausgangsdaten von Signaleigenschaften des Eingangssignals abhängen,
    bei dem der eine oder die mehreren Blöcke der Ausgangsdaten des ersten Codierers für gleichlange Abschnitte des Eingangssignals gleich lang sind, und
    bei dem die Übertragungsrate des Bitstroms konstant ist.
  3. Verfahren nach Anspruch 1 oder 2,
    bei dem der zweite Codierer (14) eine Bitsparkassenfunktion aufweist, wobei die maximale Größe der Bitsparkasse durch Maximal-Puffergrößeninformationen gegeben ist, und wobei der aktuelle Stand der Bitsparkasse durch Aktuell-Pufferinformationen gegeben ist,
    bei dem die Pufferinformationen (314) die Aktuell-Pufferinformationen sind, und
    bei dem die Größe, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorhergehenden Zeitabschnitt hinter den Bestimmungsdatenblock (306) erstrecken, aus der Differenz zwischen den Maximal-Puffergrößeninformationen und den Aktuell-Pufferinformationen ableitbar ist.
  4. Verfahren nach einem der vorhergehenden Ansprüche,
    bei dem das Schreiben von Ausgangsdaten des ersten Codierers so durchgeführt wird, daß ein Block von Ausgangsdaten des ersten Codierers unmittelbar hinter einem Bestimmungsdatenblock (306) angeordnet ist, und
    bei dem die Länge dieses Bestimmungsdatenblocks (306) sowie die Länge von vorhandenen Ausgangsdatenblöcken des ersten Codierers sowie gegebenenfalls vorhandene Daten weiterer Skalierungsschichten bei der Bestimmung der Größe, wie weit sich die Ausgangsdaten des zweiten Codierers hinter den Bestimmungsdatenblock erstrecken, unter Verwendung der Aktuell-Pufferinformationen und der Maximal-Puffergrößeninformationen ignoriert werden.
  5. Verfahren nach einem der vorhergehenden Ansprüche,
    bei dem die Einrichtung (20) zum Schreiben des einen oder der mehreren Blöcke von Ausgangsdaten des ersten Codierers ausgebildet ist, um die Blöcke von Ausgangsdaten des ersten Codierers äquidistant in den skalierbaren Datenstrom zu schreiben.
  6. Verfahren nach einem der vorhergehenden Ansprüche,
    bei dem der erste Codierer (12) ein Celp-Codierer ist,
    bei dem der zweite Codierer (14) ein AAC-Codierer ist, und
    bei dem der Bestimmungsdatenblock ein LATM-Header gemäß MPEG 4 ist.
  7. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der zumindest eine Block von Ausgangsdaten des zweiten Codierers (14) und der zumindest einen Block von Ausgangsdaten des ersten Codierers (12) Nutzdaten in einem Superframe sind, der neben den Nutzdaten genau einen Bestimmungsdatenblock aufweist.
  8. Verfahren nach einem der vorhergehenden Ansprüche,
    bei dem im Schritt des Schreibens der Blöcke von Ausgangsdaten des ersten Codierers zumindest ein Block von Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des Eingangssignals für den ersten Codierer in Übertragungsrichtung vor dem Bestimmungsdatenblock für den aktuellen Zeitabschnitt geschrieben wird.
  9. Vorrichtung zum Erzeugen eines skalierbaren Datenstroms aus einem oder mehreren Blöcken von Ausgangsdaten eines ersten Codierers (12) und aus einem oder mehreren Blöcken von Ausgangsdaten eines zweiten Codierers (14), wobei der eine oder die mehreren Blöcke von Ausgangsdaten des ersten Codierers (12) zusammen eine Anzahl von Abtastwerten des Eingangssignals für den ersten Codierer darstellen, die einen aktuellen Abschnitt des Eingangssignals für den ersten Codierer bilden, und wobei der eine Block oder die mehreren Blöcke von Ausgangsdaten des zweiten Codierers (14) zusammen eine Anzahl von Abtastwerten des Eingangssignals für den zweiten Codierer darstellen, wobei die Anzahl von Abtastwerten für den zweiten Codierer einen aktuellen Abschnitt des Eingangssignals für den zweiten Codierer bildet, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine Zeitdauer (34) zueinander verschoben sind, mit folgenden Merkmalen:
    einer Einrichtung zum Schreiben eines Bestimmungsdatenblocks (306) für den aktuellen Abschnitt des Eingangssignals für den ersten oder den zweiten Codierer;
    einer Einrichtung zum Schreiben von Ausgangsdaten (312) des zweiten Codierers, die einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer darstellen, in Übertragungsrichtung von einem Codierer zu einem Decodierer hinter den Bestimmungsdatenblock (306);
    einer Einrichtung zum Schreiben von Ausgangsdaten (310) des zweiten Codierers, die den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellen, wenn die Ausgangsdaten des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals geschrieben sind;
    einer Einrichtung zum Schreiben von Pufferinformationen (314) in den skalierbaren Datenstrom, wobei die Pufferinformationen anzeigen, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorausgehenden Abschnitt für den zweiten Codierer hinter den Bestimmungsdatenblock erstrecken; und
    einer Einrichtung zum Schreiben des einen oder der mehreren Blöcke der Ausgangsdaten des ersten Codierers (12) in den skalierbaren Datenstrom.
  10. Verfahren zum Decodieren eines skalierbaren Datenstroms aus einem oder mehreren Blöcken von Ausgangsdaten eines ersten Codierers (12) und aus einem oder mehreren Blöcken von Ausgangsdaten eines zweiten Codierers (14), wobei der eine oder die mehreren Blöcke von Ausgangsdaten des ersten Codierers (12) zusammen eine Anzahl von Abtastwerten des Eingangssignals für den ersten Codierer darstellen, die einen aktuellen Abschnitt des Eingangssignals für den ersten Codierer bilden, und wobei der eine Block oder die mehreren Blöcke von Ausgangsdaten des zweiten Codierers (14) zusammen eine Anzahl von Abtastwerten des Eingangssignals für den zweiten Codierer darstellen, wobei die Anzahl von Abtastwerten für den zweiten Codierer einen aktuellen Abschnitt des Eingangssignals für den zweiten Codierer bildet, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine Zeitdauer (34) zueinander verschoben sind, wobei der skalierbare Datenstrom einen Bestimmungsdatenblock für den aktuellen Abschnitt für den ersten oder zweiten Codierer, Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals in Übertragungsrichtung hinter dem Bestimmungsdatenblock und Pufferinformationen aufweist, die anzeigen, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorausgehenden Abschnitt hinter den Bestimmungsdatenblock erstrecken, mit folgenden Schritten:
    Lesen des Bestimmungsdatenblocks (306) für den aktuellen Abschnitt des Eingangssignals für den ersten oder zweiten Codierer;
    Lesen der Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers (12);
    Lesen der Pufferinformationen (314);
    Lesen der Ausgangsdaten (310) des zweiten Codierers für den aktuellen Abschnitt ausgehend von einer durch die Pufferinformationen (314) angezeigten Stelle im skalierbaren Datenstrom; und
    Decodieren der Ausgangsdaten (310) des zweiten Codierers und der Ausgangsdaten des ersten Codierers, um ein decodiertes Signal zu erhalten.
  11. Vorrichtung zum Decodieren eines skalierbaren Datenstroms aus einem oder mehreren Blöcken von Ausgangsdaten eines ersten Codierers (12) und aus einem oder mehreren Blöcken von Ausgangsdaten eines zweiten Codierers (14), wobei der eine oder die mehreren Blöcke von Ausgangsdaten des ersten Codierers (12) zusammen eine Anzahl von Abtastwerten des Eingangssignals für den ersten Codierer darstellen, die einen aktuellen Abschnitt des Eingangssignals für den ersten Codierer bilden, und wobei der eine Block oder die mehreren Blöcke von Ausgangsdaten des zweiten Codierers (14) zusammen eine Anzahl von Abtastwerten des Eingangssignals für den zweiten Codierer darstellen, wobei die Anzahl von Abtastwerten für den zweiten Codierer einen aktuellen Abschnitt des Eingangssignals für den zweiten Codierer bildet, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine Zeitdauer (34) zueinander verschoben sind, wobei der skalierbare Datenstrom einen Bestimmungsdatenblock für den aktuellen Abschnitt für den ersten oder zweiten Codierer, Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals in Übertragungsrichtung hinter dem Bestimmungsdatenblock und Pufferinformationen aufweist, die anzeigen, wie weit sich die Ausgangsdaten des zweiten Codierers für den vorausgehenden Abschnitt hinter den Bestimmungsdatenblock erstrecken, mit folgenden Merkmalen:
    einem Bitstromdemultiplexer, der ausgebildet ist, um folgende Schritte durchführen zu können:
    Lesen des Bestimmungsdatenblocks (306) für den aktuellen Abschnitt des Eingangssignals für den ersten oder zweiten Codierer;
    Lesen der Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers (12);
    Lesen der Pufferinformationen (314);
    Lesen der Ausgangsdaten (310) des zweiten Codierers für den aktuellen Abschnitt ausgehend von einer durch die Pufferinformationen (314) angezeigten Stelle im skalierbaren Datenstrom; und
    einer Einrichtung zum Decodieren der Ausgangsdaten (310) des zweiten Codierers und der Ausgangsdaten des ersten Codierers, um ein decodiertes Signal zu erhalten.
EP02708282A 2001-01-18 2002-01-14 Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion Expired - Lifetime EP1354314B1 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10102154A DE10102154C2 (de) 2001-01-18 2001-01-18 Verfahren und Vorrichtung zum Erzeugen eines skalierbaren Datenstroms und Verfahren und Vorrichtung zum Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkassenfunktion
DE10102154 2001-01-18
PCT/EP2002/000295 WO2002058051A2 (de) 2001-01-18 2002-01-14 Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion

Publications (2)

Publication Number Publication Date
EP1354314A2 EP1354314A2 (de) 2003-10-22
EP1354314B1 true EP1354314B1 (de) 2004-08-04

Family

ID=7670983

Family Applications (1)

Application Number Title Priority Date Filing Date
EP02708282A Expired - Lifetime EP1354314B1 (de) 2001-01-18 2002-01-14 Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion

Country Status (10)

Country Link
US (1) US7496517B2 (de)
EP (1) EP1354314B1 (de)
JP (1) JP3890298B2 (de)
KR (1) KR100516985B1 (de)
AT (1) ATE272884T1 (de)
AU (1) AU2002242667B2 (de)
CA (1) CA2434783C (de)
DE (2) DE10102154C2 (de)
HK (1) HK1056790A1 (de)
WO (1) WO2002058051A2 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7844727B2 (en) * 2003-04-24 2010-11-30 Nokia Corporation Method and device for proactive rate adaptation signaling
KR100647336B1 (ko) * 2005-11-08 2006-11-23 삼성전자주식회사 적응적 시간/주파수 기반 오디오 부호화/복호화 장치 및방법
EP1841072B1 (de) * 2006-03-30 2016-06-01 Unify GmbH & Co. KG Verfahren und Einrichtung zum Dekodieren von schichtkodierten Daten
FR2911228A1 (fr) * 2007-01-05 2008-07-11 France Telecom Codage par transformee, utilisant des fenetres de ponderation et a faible retard.

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3943880B4 (de) * 1989-04-17 2008-07-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Digitales Codierverfahren
US5365552A (en) * 1992-11-16 1994-11-15 Intel Corporation Buffer fullness indicator
DE19549621B4 (de) * 1995-10-06 2004-07-01 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung zum Codieren von Audiosignalen
US5758092A (en) * 1995-11-14 1998-05-26 Intel Corporation Interleaved bitrate control for heterogeneous data streams
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
KR100261253B1 (ko) * 1997-04-02 2000-07-01 윤종용 비트율 조절이 가능한 오디오 부호화/복호화 방법및 장치
KR100261254B1 (ko) * 1997-04-02 2000-07-01 윤종용 비트율 조절이 가능한 오디오 데이터 부호화/복호화방법 및 장치
KR100335609B1 (ko) * 1997-11-20 2002-10-04 삼성전자 주식회사 비트율조절이가능한오디오부호화/복호화방법및장치
AU1928999A (en) * 1997-12-19 1999-07-12 Kenneth Rose Scalable predictive coding method and apparatus
KR100354531B1 (ko) * 1998-05-06 2005-12-21 삼성전자 주식회사 실시간 복호화를 위한 무손실 부호화 및 복호화 시스템
US6182031B1 (en) * 1998-09-15 2001-01-30 Intel Corp. Scalable audio coding system
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
US6446037B1 (en) * 1999-08-09 2002-09-03 Dolby Laboratories Licensing Corporation Scalable coding method for high quality audio
DE60204039T2 (de) * 2001-11-02 2006-03-02 Matsushita Electric Industrial Co., Ltd., Kadoma Vorrichtung zur kodierung und dekodierung von audiosignalen

Also Published As

Publication number Publication date
WO2002058051A3 (de) 2002-09-19
DE10102154A1 (de) 2002-08-08
DE50200750D1 (de) 2004-09-09
CA2434783A1 (en) 2002-07-25
US20040107289A1 (en) 2004-06-03
KR20030076614A (ko) 2003-09-26
KR100516985B1 (ko) 2005-09-26
JP3890298B2 (ja) 2007-03-07
ATE272884T1 (de) 2004-08-15
WO2002058051A2 (de) 2002-07-25
AU2002242667B2 (en) 2004-11-25
HK1056790A1 (en) 2004-02-27
EP1354314A2 (de) 2003-10-22
US7496517B2 (en) 2009-02-24
DE10102154C2 (de) 2003-02-13
JP2004520739A (ja) 2004-07-08
CA2434783C (en) 2008-04-15

Similar Documents

Publication Publication Date Title
EP1338004B1 (de) Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer
DE60121592T2 (de) Kodierung und dekodierung eines digitalen signals
DE19628292B4 (de) Verfahren zum Codieren und Decodieren von Stereoaudiospektralwerten
EP2057625B1 (de) Kodierung eines informationssignals
EP1647010B1 (de) Audiodateiformatumwandlung
DE60012860T2 (de) Verfahren zur Verarbeitung mehrerer digitaler Audiodatenströme
DE19549621B4 (de) Vorrichtung zum Codieren von Audiosignalen
DE3688980T2 (de) Verfahren zur Multigeschwindigkeitskodierung von Signalen und Einrichtung zur Durchführung dieses Verfahrens.
EP0954909B1 (de) Verfahren zum codieren eines audiosignals
EP1327243B1 (de) Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms
DE10200653B4 (de) Skalierbarer Codierer, Verfahren zum Codieren, Decodierer und Verfahren zum Decodieren für einen skalierten Datenstrom
DE19742655C2 (de) Verfahren und Vorrichtung zum Codieren eines zeitdiskreten Stereosignals
WO2002103695A2 (de) Vorrichtung und verfahren zum einbetten eines wasserzeichens in ein audiosignal
EP1953739A2 (de) Verfahren und Vorrichtung zur Geräuschunterdrückung
EP1023777B1 (de) Verfahren und vorrichtung zur erzeugung eines bitratenskalierbaren audio-datenstroms
EP1354314B1 (de) Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion
DE2303497C2 (de) Verfahren zur Übertragung von Sprachsignalen
DE10339498B4 (de) Audiodateiformatumwandlung
DE102008009720A1 (de) Verfahren und Mittel zur Dekodierung von Hintergrundrauschinformationen
DE69836454T2 (de) Kommunikationsnetzwerk zur übertragung von sprachsignalen
DE19804584A1 (de) Verfahren und Vorrichtung zum Codieren und Decodieren von Audiosignalen
DE102005032079A1 (de) Verfahren und Vorrichtung zur Geräuschunterdrückung

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20030626

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR

AX Request for extension of the european patent

Extension state: AL LT LV MK RO SI

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DERANGEWAND

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

RIC1 Information provided on ipc code assigned before grant

Ipc: 7G 10L 19/14 B

Ipc: 7G 10L 19/00 A

GRAS Grant fee paid

Free format text: ORIGINAL CODE: EPIDOSNIGR3

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

AK Designated contracting states

Kind code of ref document: B1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: TR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20040804

REG Reference to a national code

Ref country code: GB

Ref legal event code: FG4D

Free format text: NOT ENGLISH

REG Reference to a national code

Ref country code: CH

Ref legal event code: EP

REG Reference to a national code

Ref country code: IE

Ref legal event code: FG4D

Free format text: GERMAN

REF Corresponds to:

Ref document number: 50200750

Country of ref document: DE

Date of ref document: 20040909

Kind code of ref document: P

GBT Gb: translation of ep patent filed (gb section 77(6)(a)/1977)

Effective date: 20040907

REG Reference to a national code

Ref country code: SE

Ref legal event code: TRGR

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: GR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20041104

Ref country code: DK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20041104

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: ES

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20041115

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: CY

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20050114

REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1056790

Country of ref document: HK

LTIE Lt: invalidation of european patent or patent extension

Effective date: 20040804

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: MC

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20050131

ET Fr: translation filed
PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

26N No opposition filed

Effective date: 20050506

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: PT

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20050104

REG Reference to a national code

Ref country code: FR

Ref legal event code: PLFP

Year of fee payment: 15

REG Reference to a national code

Ref country code: FR

Ref legal event code: PLFP

Year of fee payment: 16

REG Reference to a national code

Ref country code: FR

Ref legal event code: PLFP

Year of fee payment: 17

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: LU

Payment date: 20210120

Year of fee payment: 20

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: FI

Payment date: 20210119

Year of fee payment: 20

Ref country code: FR

Payment date: 20210120

Year of fee payment: 20

Ref country code: CH

Payment date: 20210122

Year of fee payment: 20

Ref country code: IE

Payment date: 20210120

Year of fee payment: 20

Ref country code: NL

Payment date: 20210120

Year of fee payment: 20

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: BE

Payment date: 20210120

Year of fee payment: 20

Ref country code: DE

Payment date: 20210120

Year of fee payment: 20

Ref country code: AT

Payment date: 20210119

Year of fee payment: 20

Ref country code: SE

Payment date: 20210122

Year of fee payment: 20

Ref country code: GB

Payment date: 20210122

Year of fee payment: 20

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: IT

Payment date: 20210129

Year of fee payment: 20

REG Reference to a national code

Ref country code: DE

Ref legal event code: R071

Ref document number: 50200750

Country of ref document: DE

Ref country code: CH

Ref legal event code: PL

REG Reference to a national code

Ref country code: NL

Ref legal event code: MK

Effective date: 20220113

REG Reference to a national code

Ref country code: GB

Ref legal event code: PE20

Expiry date: 20220113

REG Reference to a national code

Ref country code: BE

Ref legal event code: MK

Effective date: 20220114

REG Reference to a national code

Ref country code: FI

Ref legal event code: MAE

REG Reference to a national code

Ref country code: IE

Ref legal event code: MK9A

REG Reference to a national code

Ref country code: AT

Ref legal event code: MK07

Ref document number: 272884

Country of ref document: AT

Kind code of ref document: T

Effective date: 20220114

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IE

Free format text: LAPSE BECAUSE OF EXPIRATION OF PROTECTION

Effective date: 20220114

Ref country code: GB

Free format text: LAPSE BECAUSE OF EXPIRATION OF PROTECTION

Effective date: 20220113