EP1338004B1 - Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer - Google Patents

Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer Download PDF

Info

Publication number
EP1338004B1
EP1338004B1 EP02718023A EP02718023A EP1338004B1 EP 1338004 B1 EP1338004 B1 EP 1338004B1 EP 02718023 A EP02718023 A EP 02718023A EP 02718023 A EP02718023 A EP 02718023A EP 1338004 B1 EP1338004 B1 EP 1338004B1
Authority
EP
European Patent Office
Prior art keywords
encoder
output data
block
data
samples
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
EP02718023A
Other languages
English (en)
French (fr)
Other versions
EP1338004A1 (de
EP1338004B8 (de
Inventor
Ralph Sperschneider
Bodo Teichmann
Manfred Lutzky
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Publication of EP1338004A1 publication Critical patent/EP1338004A1/de
Application granted granted Critical
Publication of EP1338004B1 publication Critical patent/EP1338004B1/de
Publication of EP1338004B8 publication Critical patent/EP1338004B8/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/18Vocoders using multiple modes
    • G10L19/24Variable rate codecs, e.g. for generating different qualities using a scalable representation such as hierarchical encoding or layered encoding
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/08Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters
    • G10L19/12Determination or coding of the excitation function; Determination or coding of the long-term prediction parameters the excitation function being a code excitation, e.g. in code excited linear prediction [CELP] vocoders

Definitions

  • the present invention relates to scalable encoders and decoders, and in particular for generating scalable data streams.
  • 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 standard (ISO / IEC 14496-3: 1999 Subpart 4) is defined in Fig. 1 shown.
  • An audio signal s (t) to be encoded is fed into the scalable encoder on the input side.
  • the A scalable encoder shown in Figure 1 includes a first one Encoder 12, which is an MPEG-Celp encoder.
  • the second Encoder 14 is an AAC encoder that is a high quality Audio coding delivers and in the standard MPEG-2 AAC (ISO / IEC 13818) is defined.
  • the Celp encoder 12 provides one Output line 16 a first scaling layer while the AAC encoder 14 via a second output line 18 second scaling layer to a bitstream multiplexer (BitMux) 20 returns.
  • the LATM format is in Section 6.5 of Part 3 (Audio) of the first addition to the MPEG-4 standard (ISO / IEC 14496-3: 1999 / AMD1: 2000) described.
  • 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 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 performed. 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. transfer, become. It usually gets smaller (considering that required signaling information) for further An equidistant write or transfer of the bit stream Distance of the output data blocks of the first encoder selected, as shown in Fig. 2c.
  • bit stream formats shown in FIGS. 4 to 6 are only for simple coders are known, but not for scalable ones Encoder and especially not for scalable encoders Bit savings bank.
  • the bit savings bank is used to that the variable output data rate that a psychoacoustic Encoder inherently generated at a constant output data rate can be adjusted.
  • the bit savings bank depends on the number of bits that an audio encoder required, depending on the signal properties. Is the signal in such a way that it can be quantized relatively roughly, so a relatively small amount of bits are used for coding this signal needed.
  • the signal is such that very fine quantization is required in order to avoid any introduce audible interference, so will a larger number of bits needed to encode this signal.
  • bit savings bank In order to achieve a constant output data rate, a average number of bits for a section of a code to be encoded Signal set. Is the one actually needed Amount of bits to encode a section smaller than that fixed number of bits, so the not needed Bits are inserted into the bit savings bank.
  • the bit savings bank so fills up.
  • is a section of a code to be encoded Obtain signals so that they are larger than the specified Number of bits needed to encode to none introduce audible interference into the signal, so the additional bits required are taken from the bit savings bank become. This will empty the bit savings bank. So that can ensure that a constant output data rate is obtained, and yet no audible interference in that Audio signal are introduced. The prerequisite for this is that the bit savings bank is chosen sufficiently large.
  • bit savings bank In the standard MPEG AAC (13818-7: 1997) the bit savings bank referred to as a "bit reservoir".
  • the maximum size of the bit savings bank for channels with constant data rate can be calculated by the average number of bits per block from the maximum decoder input buffer size is subtracted. Its value is according to the MPEG AAC standard at a transmission rate of 96 kbit / s for a stereo signal with a Sampling rate of 48 kHz to a value of 10,240 bits preset.
  • the maximum value of the bit savings bank i.e.
  • bit savings bank is dimensioned so large, so too under bad circumstances, even if the signal is many Contains sections that are not with the specified number can be encoded by bits, no audible interference in that Audio signal must be introduced to the constant output data rate observed. This is only possible if the Bit savings bank is dimensioned sufficiently large so that it never becomes empty.
  • the size of the bit savings bank is 10,240 bits. This leads to an inherent initial delay due to the bit savings bank of about 0.1 s. The delay the larger the maximum size of the Bit savings bank is selected, and the lower the transmission rate is chosen.
  • the object of the present invention is a To create encoders with a bit savings bank function a lower transmission delay can be achieved.
  • Another object of the present invention is a method and an apparatus for generating a to create scalable data stream in which a bit savings function can be signaled.
  • Another object of the present invention is a method and an apparatus for decoding a to create scalable data stream in which a bit savings function is signaled.
  • the present invention is based on the finding that that of the previous concept of the fixed bit savings bank size must be left to a lower delay To achieve decoding. According to the invention this is achieved by the maximum size of the bit savings bank an encoder is made adjustable, depending on the application and depending on the intended decoder function a certain setting of the bit savings bank is reached. In the case of only unidirectional data transmission can, to meet the highest audio quality standards, a large bit savings bank can be chosen while in case a bidirectional communication in which a common Change of sender and receiver or a frequent change the speaker takes place, a smaller bit savings bank size is to be set. So that the decoder from a smaller one Bit savings bank size setting can benefit, the Bit savings bank size somehow transmitted to the decoder become. This can be done by transmitting additional ones However, information in the data stream can be reached also, as is especially the case with the scalable case is shown implicitly without transferring additional Side information or signaling information is provided.
  • An advantage of the present invention is that now about setting the maximum size of the bit savings bank directly affects the decoder delay can be taken. Becomes the maximum size of the bit savings bank chosen smaller, the decoder can also one insert smaller delay before starting decoding begins without running the risk that during the Decoding output data run out, which in any case is to avoid.
  • the "price" to be paid for it exists in that one or the other section of the audio signal has not been encoded with 100% audio quality because the Bit savings bank was empty and no extra bits left Were available.
  • An audio encoder usually responds in such a case that he is in the quantization violates the psychoacoustic masking threshold, and, um manage with the number of bits available, chooses a coarser quantization than is actually necessary.
  • the inventive variability of the bit savings bank and the associated variability in decoder-side delay is especially in the case of a scalable audio encoder an advantage because now there is also a lower deceleration Decoding not only the first lowest scaling layer can be achieved, but also a lower deceleration Decoding of higher scaling layers, which are generated, for example, by an AAC encoder.
  • scalable encoders and scalable data streams can be an adjustable bit savings bank size without additional page information simply by positioning of a determination data block in the scalable data stream can be achieved.
  • the determination data block positioned in the bit stream so that the decoder, so many bits when it receives the destination data block for the corresponding layer as received by the average block length is specified.
  • the decoder can do without calculation or insert a delay to start decoding.
  • the destination data block no longer, as in the prior art, to the first possible Point in time, i.e. delay-optimized, but at the last possible time without closing the AAC block delay.
  • the current status of the Bitsparkasse can then be signaled by a so-called back pointer where the dates of a previous section stop, and where the dates of the current section begin.
  • a major advantage of this arrangement is that the decoder, when it receives a data stream according to the invention, does not have to calculate and insert a delay, but that the delay already on the coding side alone by positioning the determination data block has been taken into account.
  • the decoder can therefore output a frame immediately after receipt. This also opens up the possibility of simple and Way, namely without additional bits, a set maximum To signal bit savings bank size. Because the signaling can be carried out easily and without effort, namely by the position of the determination data block it easily and in particular without access to the Decoders possible to vary the bit savings bank size set the transmission delay as required can.
  • the scalable contains Data stream of successive determination data blocks that are referred to as Header 1 and Header 2.
  • the determination data blocks LATM header Just like in the prior art is found in the direction of transmission from an encoder a decoder, represented by an arrow 202 in FIG. 2d behind the LATM header 200 is from the top left parts of the output data block shaded to the bottom right of the AAC encoder that breaks into remaining gaps between Output data blocks of the first encoder entered are.
  • 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 the 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 by the bit stream multiplexer (20) added.
  • the celp delay does not added delay through the scalable combination, 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.
  • FIG. 2c is a scalable data stream according to the LATM format shown, in which the data blocks of the first Encoder must be buffered, so delayed Need to become. This affects how it has been done the format of Fig. 2c so that the header is only written then can be when the output data of the second Coders exist because the header information about the Length or the number of bits in the output data block of the second encoder.
  • Fig. 2e is now, compared to Fig. 2c, the invention scalable data stream represented, in which the Determination data block (header 1 200) is no longer immediate is written when it is available, i.e. before the Output data block of the first encoder, which has an "11" but in which the determination data block 200 by a period of time compared to the case of Fig. 2c is written to the data stream with a delay. That period of time is in a preferred embodiment present invention equal to the maximum size of the bit savings bank (Max buffer fullness 250).
  • This starts the output data block of the second encoder for the current section of the input signal through the determination data block 200 is denoted by a number of bits that is equal to buffer fullness 260, in the transmission direction of an encoder to a decoder before the determination data block, while when looking at Fig. 2c, the AAC data started behind the determination data block.
  • pointer 260 When viewed from the decoder, pointer 260 is thus on Back Pointer.
  • the ratio four blocks of output data from the first Encoder to a block of output data of the second Encoder for the same number of samples only is exemplary, starting from the determination data block now also a core, as in the case of FIG. 2d Frame offset signals so that a decoder knows which Blocks of output data from the first encoder, for example a block of output data from the second encoder belong or are related to each other via core encoder delay.
  • FIG. 2d is compared with FIG. 2e, then too see that an offset 204 is also present in FIG. 2d.
  • the Offset 204 of FIG. 2d which has a value of 2 in FIG. 2d, would refer to a value in relation to the case of FIG. 2e of 5 as the determination data block 200 in FIG. 2e compared to FIG. 2d by 3 output data blocks of the first Encoder has moved backwards.
  • Fig. 1a is a block of savings bank control 50 and one Control line 52 from AAC encoder 14 to bitstream multiplexer 20, about the maximum size of the bit savings bank, by the bit savings bank control 50 has been set, the Bitstream multiplexer can be communicated to the same perform the bitstream formatting required in Fig. 2e can.
  • a schematic block diagram can be found in FIG. 1b a scalable decoder that goes to the scalable encoder 1a is complementary.
  • the scalable bitstream which is fed to the decoder via a line 60, is in an input buffer / bitstream demultiplexer 62 of the Decoderers fed.
  • the bitstream is divided, for a CELP decoder 64 and an AAC decoder Extract 66 required blocks.
  • the invention Decoder also includes an AAC delay stage 68 which is there for a size corresponding to the bit savings bank To introduce delay so the AAC decoder 66 never Output data out.
  • this AAC delay stage now designed variable, the Delay controlled depending on bit savings bank information which are from the bitstream demultiplexer 62 from the Bitstream can be extracted and sent via a bit savings bank information line 70 fed to the AAC delay stage 68 become.
  • the AAC delay stage 68 delay set. Becomes by the bit savings bank control device 50 of FIG. 1a set a small bit savings bank, so can the AAG delay stage 68 set to a smaller delay be, so that a lower delay decoding the second scaling layer can be achieved.
  • the scalable decoder of Fig. 1b further includes an MDCT 72 to transform the time domain output signals of the CELP decoder 64 to the frequency domain and an up-sampling stage upstream thereof.
  • the spectrum is delayed by a delay stage 74, which compensates for the time differences between the two branches, so that the same conditions are present at a device 76, which is designated by adder / FSS -1 .
  • the device 66 essentially performs the analog function as the subtractor 40 and the FSS 44 of FIG.
  • the spectral values are transformed by a device 78 for performing a reverse transformation from the frequency domain into the time domain, so that either only the second scaling layer or else the first and second scaling layers are present in the time domain at an output 80.
  • only the first scaling layer in the time domain which is generated by the CELP decoder 64, is present at an output 82.
  • 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. The The total bit rate is then 32 kbit / s.
  • the output data blocks zero and one of the Celp encoder correspond to the current time period for 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 time 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 that at least the first an output data block of the AAC encoder from one or several previous periods in the bit stream must be written before writing the Output data blocks of the AAC encoder for the current one Period can be started. From the comparison of the last two lines of Fig.
  • bit savings bank function immediately also to a delay in the encoder for the AAC frame.
  • the bit savings bank level of the AAC encoder thus shifts Starting position of the AAC frame.
  • the bit savings bank level should be in the LATM element StreamMuxConfig are transmitted by the "Bufferfullness" variable.
  • the Variable buffer fullness is calculated from the variable Bit reservoir divided by 32 times that currently available 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.
  • the last line of FIG. 3 is the case in which the LATM header 306 immediately after it is generated is written into the bit stream so that the LATM header 306 output data of the second encoder (312) of the previous one Follow period, with the output data of second encoder for the current period to which the LATM header 306 relates only at a distance in Follow the transmission direction behind the LATM header, whereby the distance by the difference between Max Bufferfullness and buffer fullness is given, as shown in FIG. 3 is.
  • the LATM header 306 no longer written when it was created is written, but delayed by a period of time that Max buffer fullness corresponds.
  • the LATM header 306 would therefore according to the invention depending on the value of buffer fullness behind a location 330 in the bit stream, and the forward pointer 314 is replaced by a backward pointer (260 in Fig. 2e).
  • FIGS. 2c and 2d and also abandoned in Fig. 3 selected arrangement in which a CELP block immediately follows the LATM header.
  • the following priority distribution is preferred when writing data to the scalable bit stream preferred to both low-delay decoding the first scaling layer as well as a low delay To achieve decoding of the second scaling layer.
  • the output data blocks of the first are given high priority Encoder. Whenever an output data block of the first Encoder is finished writing, this output data block written in the bitstream. This results in Using a CELP encoder automatically the equidistant Grid of output data blocks of the first encoder, the also have the same length.
  • the writing of the output data of the AAC encoder for the current time period is also also interrupted, when a LATM header is done and the same at Max Bufferfullness 250 (Fig. 2e) has been delayed.
  • the scalable Bitstream is done when in the bitstream either separately or the corresponding ones via the determination data block Buffer fullness 260 and offset 270 values entered are.
  • the following is a decoding of one such generated bit stream received. If the decoder only on the first scaling layer, i.e. on the output data blocks of the first encoder (CELP encoder) interested is so regardless of the LATM header or AAC data just one CELP block at a time fetch and decode the bitstream. Because the CELP blocks are preferred immediately after their creation in the bit stream is written is a low-delay decoding of the CELP blocks guaranteed.
  • the decoder decodes both the first and also wants the second scaling layer, i.e. an audio signal want to get with high quality, so he must assign between the CELP blocks and the AAC blocks for a superframe, i.e. for a certain number of samples, achieve, if necessary still a core Coder Delay (34 of Fig. La) must be taken into account when the current time segment of the input signal of the AAC encoder regarding a superframe from the current one temporal section of the CELP encoder is shifted.
  • the decoder buffers the bit stream, until it clicks on a LATM header, e.g. B. the Header 200 of Fig. 2e. Knowing the offset 270, the decoder can then determine which output data blocks of the first encoder belong to the LATM header 200. Taking into account the variable buffer fullness the decoder also knows where in the in the decoder input buffer stored data the AAC frame of the time period to which the LATM header refers. in the In the case of buffer fullness equal to Max, the total is already AAC frame of interest contained in the decoder input buffer.
  • the person of interest begins AAC frame immediately after the LATM header, so the decoder is using the one already in the input buffer stored data or using part of the data stored in the input buffer and using an immediately arriving part of Data in the transmission direction behind the LATM header can decode without delay.
  • the Bit savings bank size is implicitly determined solely by the location of the determination data block with regard to the user data in Bitstream signals without any side information required are.
  • the level is also with variable delay in the decoder (block 68 of Fig. 1b) and the line 70 from FIG. 1b lapse.

Description

Die vorliegende Erfindung bezieht sich auf skalierbare Codierer und Decodierer und insbesondere auf das Erzeugen von skalierbaren Datenströmen.
Skalierbare Codierer sind in der EP 0 846 375 B1 gezeigt. Allgemein versteht man unter der Skalierbarkeit die Mö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 durchgefü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 Fig. 4 bis 6 dargestellten Bitstromformaten ist die Tatsache, daß dieselben lediglich für einfache Codierer bekannt sind, jedoch nicht für skalierbare Codierer und insbesondere nicht für skalierbare Codierer mit Bitsparkassenfunktion.
Wie es bekannt ist, wird die Bitsparkasse dazu verwendet, daß die variable Ausgangsdatenrate, die ein psychoakustischer Codierer inhärent erzeugt, an eine konstante Ausgangsdatenrate angepaßt werden kann. Mit anderen Worten ausgedrückt hängt die Anzahl von Bits, die ein Audiocodierer benötigt, von den Signaleigenschaften ab. Ist das Signal derart beschaffen, daß relativ grob quantisiert werden kann, so wird eine relativ geringe Menge an Bits zur Codierung dieses Signals benötigt. Ist das Signal jedoch derart beschaffen, daß sehr fein quantisiert werden muß, um keine hörbaren Störungen einzuführen, so wird eine größere Anzahl an Bits zum Codieren dieses Signals benötigt.
Um eine konstante Ausgangsdatenrate zu erreichen, wird eine mittlere Anzahl von Bits für einen Abschnitt eines zu codierenden Signals festgesetzt. Ist die tatsächlich benötigte Menge an Bits zum Codieren eines Abschnitts kleiner als die festgesetzte Anzahl an Bits, so können die nicht benötigten Bits in die Bitsparkasse gesteckt werden. Die Bitsparkasse füllt sich also. Ist dagegen ein Abschnitt eines zu codierenden Signals so beschaffen, daß eine größere als die festgesetzte Anzahl an Bits zum Codieren benötigt wird, um keine hörbaren Störungen in das Signal einzuführen, so können die zusätzlich benötigten Bits aus der Bitsparkasse entnommen werden. Die Bitsparkasse entleert sich dadurch. Damit kann sichergestellt werden, daß eine konstante Ausgangsdatenrate erhalten wird, und dennoch keine hörbaren Störungen in das Audiosignal eingeführt werden. Voraussetzung dafür ist, daß die Bitsparkasse ausreichend groß gewählt wird.
Im Standard MPEG AAC (13818-7:1997) wird die Bitsparkasse als "Bitreservoir" bezeichnet. Die maximale Größe der Bitsparkasse für Kanäle mit konstanter Datenrate kann berechnet werden, indem die mittlere Anzahl von Bits pro Block von der maximalen Decodierereingangspuffergröße subtrahiert wird. Deren Wert ist gemäß dem Standard MPEG AAC bei einer Übertragungsrate von 96 kBit/s für ein Stereosignal mit einer Abtastrate von 48 kHz auf einen Wert von 10.240 Bits fest voreingestellt. Der maximale Wert der Bitsparkasse, also die Größe der Bitsparkasse ist so groß dimensioniert, damit auch unter schlechten Umständen, also auch wenn das Signal viele Abschnitte enthält, die nicht mit der festgesetzten Anzahl von Bits codiert werden können, keine hörbare Störungen in das Audiosignal eingeführt werden müssen, um die konstante Ausgangsdatenrate einzuhalten. Dies ist nur möglich, wenn die Bitsparkasse ausreichend groß dimensioniert ist, so daß sie zu keinem Zeitpunkt leer wird.
Auf der Decodiererseite hat dies folgende Konsequenz. Nachdem der Decodierer damit rechnen muß, daß sowohl der Fall einer vollen Bitsparkasse als auch der Fall einer leeren Bitsparkasse im Laufe des Decodierens eines Audiosignals auftreten kann, muß der Decodierer, bevor er überhaupt mit dem Decodieren beginnt, eine Anzahl von Bits zwischenspeichern, die der Größe der Bitsparkasse entspricht. Damit wird sichergestellt, daß beim Decodieren des Audiosignals dem Decodierer die Bits nicht ausgehen. Würde nämlich der Decodierer ein mit Bitsparkassenfunktion codiertes Signal unmittelbar sofort decodieren, wenn er es empfangen hat, so würden bereits die Bits zur Ausgabe ausgehen, wenn der erste zu decodierende Block zufälligerweise eine geringere Anzahl als die festgesetzte Anzahl zum Codieren benötigt hatte, also wenn durch den ersten Block die Bitsparkasse angefüllt worden ist. In anderen Worten ausgedrückt führt die Bitsparkassenfunktion unweigerlich zu einer Verzögerung (Delay) im Decodierer, wobei dieses Delay mit der Größe der Bitsparkasse korrespondiert.
Für das vorherige Beispiel beträgt die Größe der Bitsparkasse 10.240 Bits. Dies führt zu einer inhärenten Anfangsverzögerung aufgrund der Bitsparkasse von etwa 0,1 s. Die Verzögerung wird um so größer, je größer die maximale Größe der Bitsparkasse gewählt wird, und je kleiner die Übertragungsrate gewählt wird.
Wenn an Echtzeitübertragungen beispielsweise eines Telefongesprächs gedacht wird, bei dem ständig ein Wechsel der Sprecher stattfindet, so tritt bereits aufgrund der Bitsparkassenfunktion bei jedem Wechsel des Sprechers eine Verzögerung in der genannten Größe auf. Eine solche Verzögerung ist für beide Kommunikationsteilnehmer außerordentlich störend und führt typischerweise dazu, daß ein Sprecher, da er nicht unmittelbar eine Reaktion des anderen Sprechers hört, daß der eine Sprecher noch einmal nachfragt, was zu einer weiteren Verwirrung beiträgt. Damit bleibt festzustellen, daß ein solchermaßen ausgestaltetes Produkt für Echtzeitanwendungen nicht geeignet ist bzw. am Markt keine Durchsetzungschance hätte.
Die Aufgabe der vorliegenden Erfindung besteht darin, einen Codierer mit Bitsparkassenfunktion zu schaffen, durch den eine geringere Übertragungsverzögerung erreichbar ist.
Diese Aufgabe wird durch einen Codierer nach Patentanspruch 5 oder durch einen skalierbaren Codierer nach Patentanspruch 6 gelöst.
Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren und eine Vorrichtung zum Erzeugen eines skalierbaren Datenstroms zu schaffen, in dem eine Bitsparkassenfunktion signalisiert werden kann.
Diese Aufgabe wird durch ein Verfahren nach Patentanspruch 1 oder durch eine Vorrichtung nach Patentanspruch 7 gelöst.
Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren und eine Vorrichtung zum Decodieren eines skalierbaren Datenstroms zu schaffen, in dem eine Bitsparkassenfunktion signalisiert ist.
Diese Aufgabe wird durch ein Verfahren nach Patentanspruch 8 oder 10 oder durch eine Vorrichtung nach Patentanspruch 9 oder 11 gelöst.
Der vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß von dem bisherigen Konzept der fest eingestellten Bitsparkassengröße weggegangen werden muß, um eine verzögerungsärmere Decodierung zu erreichen. Erfindungsgemäß wird dies erreicht, indem die maximale Größe der Bitsparkasse eines Codierers einstellbar gemacht wird, wobei je nach Anwendungsfall und je nach beabsichtigter Decodiererfunktion eine bestimmte Einstellung der Bitsparkasse erreicht wird. Für den Fall einer lediglich unidirektionalen Datenübertragung kann, um höchste Audioqualitätsansprüche zu erfüllen, eine große Bitsparkasse gewählt werden, während für den Fall einer bidirektionalen Kommunikation, in der ein häufiger Wechsel von Sender und Empfänger bzw. ein häufiger Wechsel der Sprecher stattfindet, eine kleinere Bitsparkassengröße einzustellen ist. Damit der Decodierer von einer kleineren Bitsparkassengrößeneinstellung profitieren kann, muß die Bitsparkassengröße irgendwie dem Decodierer übermittelt werden. Dies kann einerseits durch Übertragung zusätzlicher Informationen in dem Datenstrom erreicht werden, kann jedoch auch, wie es insbesondere anhand des skalierbaren Falls dargestellt wird, implizit ohne Übertragung zusätzlicher Seiteninformationen bzw. Signalisierungsinformationen erfolgen.
Ein Vorteil der vorliegenden Erfindung besteht darin, daß nunmehr über die Einstellung der maximalen Größe der Bitsparkasse unmittelbar Einfluß auf die Decodiererverzögerung genommen werden kann. Wird die maximale Größe der Bitsparkasse kleiner gewählt, so kann der Decodierer auch eine kleinere Verzögerung einfügen, bevor er mit dem Decodieren beginnt, ohne in die Gefahr zu kommen, daß ihm während der Decodierung Ausgabedaten ausgehen, was in jedem Fall zu vermeiden ist. Der "Preis", der dafür zu zahlen ist, besteht darin, daß der eine oder andere Abschnitt des Audiosignals nicht mit 100%iger Audioqualität codiert worden ist, da die Bitsparkasse leer war und keine überzähligen Bits mehr zur Verfügung standen. Üblicherweise reagiert ein Audiocodierer in einem solchen Fall damit, daß er bei der Quantisierung die psychoakustische Maskierungsschwelle verletzt, und, um mit der zur Verfügung stehenden Anzahl von Bits auszukommen, eine gröbere Quantisierung als eigentlich notwendig wählt. Dafür wird jedoch der wesentliche Vorteil der geringeren Verzögerung des Decodierers gewährleistet. Die Reduzierung der Größe der Bitsparkasse, um auch eine kleinere decodiererseitige Verzögerung zu erreichen, wird somit mit einer geringeren Audioqualität erreicht, wobei diese geringere Audioqualität jedoch nur ab und an im Audiosignal auftritt, und, wenn das Audiosignal einfach zu codieren ist, vielleicht sogar überhaupt nicht auftritt. Damit wird die im Stand der Technik vorhandene Unflexibilität hinsichtlich der Bitsparkasse, die für viele Anwendungen überdimensioniert sein dürfte, um alle möglichen Fälle mit hoher Audioqualität zu codieren, überwunden, so daß ein Einsatz von Codierern für eine bidirektionale Kommunikation mit häufig wechselnden Sprechern möglich wird, an den in Anbetracht der großen fest eingestellten Bitsparkasse bisher nicht zu denken war.
Die erfindungsgemäße Variabilität der Bitsparkasse und die damit einhergehende Variabilität der decodiererseitigen Verzögerung ist insbesondere im Falle eines skalierbaren Audiocodierers von Vorteil, da nunmehr auch dort eine verzögerungsärmere Decodierung nicht nur der ersten untersten Skalierungsschicht erreicht werden kann, sondern auch eine verzögerungsärmere Decodierung höherer Skalierungsschichten, welche beispielsweise durch einen AAC-Codierer erzeugt werden. Insbesondere im skalierbaren Fall wird durch die variable Einstellung der Bitsparkassengröße lediglich eine Skalierungsschicht beeinflußt, während die andere bzw. die anderen Skalierungsschichten unbeeinflußt bleiben. Damit kann gezielt auf einzelne Skalierungsschichten eingewirkt werden, während keine Veränderungen in den anderen Skalierungsschichten herbeigeführt werden.
Wie es bereits ausgeführt worden ist, besteht die Notwendigkeit, die frei wählbare bzw. frei gewählte Bitsparkassengröße dem Decodierer mitzuteilen. Dies war im Stand der Technik nicht erforderlich, da immer eine fest eingestellte Bitsparkassengröße vereinbart war, so daß ein Decodierer in Kenntnis dieser fest vereinbarten Bitsparkassengröße die derselben entsprechende Verzögerung beispielsweise durch Dimensionierung seines Eingangspuffers ("Input Puffer") eingeführt hat.
Insbesondere für skalierbare Codierer und skalierbare Datenströme kann eine einstellbare Bitsparkassengröße ohne zusätzliche Seiteninformationen einfach durch die Positionierung eines Bestimmungsdatenblocks im skalierbaren Datenstrom erreicht werden. Erfindungsgemäß wird der Bestimmungsdatenblock so im Bitstrom positioniert, daß der Decodierer, wenn er den Bestimmungsdatenblock empfängt, so viele Bits für den entsprechenden Layer empfangen muß, wie es durch die mittlere Blocklänge vorgegeben ist.
Nach Empfang eines Frames kann der Decodierer ohne Berechnung oder Einfügung eines Delays mit dem Decodieren beginnen. Dies wird dadurch erreicht, daß bereits im skalierbaren Datenstrom der Bestimmungsdatenblock bezüglich der Nutzdaten der ersten und zweiten Skalierungsschicht verzögert geschrieben wird, und zwar vorzugsweise um eine Zeitdauer verzögert, die der Einstellung der Bitsparkassengröße entspricht. Damit wird erreicht, daß der Codierer je nach Anforderung eine beliebige Bitsparkassengröße wählen kann und die gewählte Bitsparkassengröße einfach dadurch gewissermaßen implizit dem Decodierer signalisiert, daß er den Bestimmungsdatenblock im Bitstrom bezüglich der Nutzdaten verzögert einträgt.
Anders ausgedrückt führt dies dazu, daß der Bestimmungsdatenblock nicht mehr, wie im Stand der Technik, zum erst-möglichen Zeitpunkt, also delay-optimiert geschrieben wird, sondern zum letztmöglichen Zeitpunkt, ohne den AAC-Block zu verzögern. Der aktuelle Stand der Bitsparkasse kann dann durch einen sogenannten Backpointer signalisiert werden, wo die Daten eines vorausgehenden Abschnitts aufhören, und wo die Daten des aktuellen Abschnitts beginnen.
Dies gilt sowohl für den skalierbaren Fall, bei dem nur Ausgangsdaten eines einzigen Codierers im Bitstrom stehen, als auch für den skalierbaren Fall, in dem Daten von zumindest zwei unterschiedlichen Codierern im skalierbaren Bitstrom stehen. Falls ein Superframe, also ein Abschnitt im Bitstrom, der eine erste Anzahl von Ausgangsdatenblöcken eines ersten Codierers und eine zweite Anzahl von Ausgangsdatenblöcken eines zweiten Codierers, die sich auf die gleiche Anzahl von Abtastwerten eines Eingangssignals beziehen, eine Mehrzahl von Blöcken eines Codierers aufweist, so kann die Anzahl von Blöcken des einen Codierers, die einem Bestimmungsdatenblock zugeordnet sind, einfach dadurch signalisiert werden, daß Offsetinformationen mit dem Bitstrom übertragen werden. Die Offset-Informationen kann der Decodierer ebenfalls als Backpointer interpretieren, um zu wissen, welche Daten des Bitstroms nunmehr zu einem Bestimmungsdatenblock gehören, und damit einem Zeitabschnitt des Eingangssignals gegebenenfalls unter Berücksichtigung der Variable Core Coder Delay entsprechen.
Ein wesentlicher Vorteil dieser Anordnung ist, daß der Decodierer, wenn er einen erfindungsgemäßen Datenstrom empfängt, kein Delay berechnen und einfügen muß, sondern daß das Delay bereits codierseitig allein durch die Positionierung des Bestimmungsdatenblocks berücksichtigt worden ist. Der Decodierer kann daher einen Frame sofort nach Empfang ausgeben. Dies eröffnet auch die Möglichkeit, auf einfache Art und Weise, nämlich ohne zusätzliche Bits, eine eingestellte maximale Bitsparkassengröße zu signalisieren. Da die Signalisierung einfach und ohne Aufwand durchgeführt werden kann, nämlich durch die Position des Bestimmungsdatenblocks, ist es auch ohne weiteres und insbesondere ohne Zugriff auf den Decodierer möglich, die Bitsparkassengröße zu variieren, um die Übertragungsverzögerung je nach Bedarf einstellen zu können.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Zeichnungen detailliert erläutert. Es zeigen:
Fig. 1a
einen skalierbaren Codierer gemäß MPEG 4, der die vorliegende Erfindung aufweist;
Fig. 1b
einen Decodierer gemäß der vorliegenden Erfindung;
Fig. 2a
eine schematische Darstellung eines 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
zeigt eine schematische Darstellung eines erfindungsgemäßen skalierbaren Datenstroms, bei dem der Bestimmungsdatenblock gegenüber den Nutzdaten verzögert ist;
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 zu Vergleichszwecken einen Bitstrom mit geringer Verzögerung der ersten Skalierungsschicht zu erläutern. Genauso wie in Fig. 2c enthält der skalierbare Datenstrom aufeinanderfolgende Bestimmungsdatenblöcke, die als Header 1 und Header 2 bezeichnet sind. Beim bevorzugten Ausführungsbeispiel der vorliegenden Erfindung, das gemäß dem MPEG 4-Standard ausgeführt ist, sind die Bestimmungsdatenblöcke LATM-Header. Genauso wie im Stand der Technik findet sich in Übertragungsrichtung von einem Encoder zu einem Decodierer, die in Fig. 2d mit einem Pfeil 202 dargestellt ist, 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.
Im Unterschied zum Stand der Technik finden sich nun jedoch in dem durch den LATM-Header 200 begonnenen Frame nicht mehr nur Ausgangsdatenblöcke des ersten Codierers, die in diesen Frame gehören, wie z.B. die Ausgangsdatenblöcke 13 und 14, sondern auch die Ausgangsdatenblöcke 21 und 22 des 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.
Dies heißt im Extremfall (1:12 für MPEG 4 AAC/CELP), daß für denselben Zeitabschnitt des Eingangssignals, für den der AAC-Codierer einen Ausgangsdatenblock erzeugt, der Celp-Codierer zwölf Ausgangsdatenblöcke erzeugt. Der Verzö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.
In Fig. 2c ist ein skalierbarer Datenstrom nach dem LATM-Format dargestellt, bei dem die Datenblöcke des ersten Codierers zwischengespeichert werden müssen, also verzögert werden müssen. Dies rührt, wie es ausgeführt worden ist, bei dem Format von Fig. 2c daher, daß der Header erst dann geschrieben werden kann, wenn die Ausgangsdaten des zweiten Codierers vorliegen, da der Header Informationen über die Länge bzw. die Anzahl der Bits im Ausgangsdatenblock des zweiten Codierers umfaßt.
So ist in Fig. 2d zu Illustrationszwecken bereits eine Verbesserung dahingehend gezeigt, daß die Ausgangsdatenblöcke des ersten Codierers bereits früher in den Bitstrom geschrieben werden, um die Verzögerung zu verringern, wenn ein Decodierer lediglich die unterste Skalierungsschicht decodieren möchte. Nichtsdestoweniger steht jedoch der Bestimmungsdatenblock immer noch vor dem Ausgangsdatenblock des .zweiten Codierers, der in Fig. 2d mit, "1" bezeichnet ist.
In Fig. 2e ist nunmehr, im Vergleich zu Fig. 2c der erfindungsgemäße skalierbare Datenstrom dargestellt, bei dem der Bestimmungsdatenblock (Header 1 200) nicht mehr unmittelbar dann geschrieben wird, wenn er verfügbar ist, also vor dem Ausgangsdatenblock des ersten Codierers, der mit einer "11" bezeichnet ist, sondern bei dem der Bestimmungsdatenblock 200 um eine Zeitspanne gegenüber dem Fall von Fig. 2c verzögert in den Datenstrom geschrieben wird. Diese Zeitspanne ist bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung gleich der maximalen Größe der Bitsparkasse (Max Bufferfullness 250). Damit beginnt der Ausgangsdatenblock des zweiten Codierers für den aktuellen Abschnitt des Eingangssignals, der durch den Bestimmungsdatenblock 200 bezeichnet wird, um eine Anzahl von Bits, die gleich Bufferfullness 260 ist, in Übertragungsrichtung von einem Codierer zu einem Decodierer vor dem Bestimmungsdatenblock, während, wenn Fig. 2c betrachtet wird, die AAC-Daten hinter dem Bestimmungsdatenblock begonnen haben.
Vom Decodierer aus betrachtet ist der Zeiger 260 somit ein Backpointer.
Für den Fall, daß der erste Codierer für eine Anzahl von Abtastwerten eine größere Anzahl von Blöcken liefert als der zweite Codierer, wobei bei dem in Fig. 2e gezeichneten Beispiel das Verhältnis vier Blöcke von Ausgangsdaten des ersten Codierers zu einem Block von Ausgangsdaten des zweiten Codierers für dieselbe Anzahl von Abtastwerten lediglich beispielhaft ist, wird ausgehend von dem Bestimmungsdatenblock nunmehr ebenfalls wie im Fall von Fig. 2d ein Core Frame Offset signalisiert, damit ein Decodierer weiß, welche Blöcke von Ausgangsdaten des ersten Codierers zu beispielsweise einem Block von Ausgangsdaten des zweiten Codierers gehören bzw. über Core Coder Delay aufeinander bezogen sind.
Wenn nunmehr Fig. 2d mit Fig. 2e verglichen wird, so ist zu sehen, daß auch in Fig. 2d ein Offset 204 vorhanden ist. Der Offset 204 von Fig. 2d, der in Fig. 2d einen Wert von 2 hat, würde sich, bezogen auf den Fall von Fig. 2e auf einen Wert von 5 erhöhen, da sich der Bestimmungsdatenblock 200 in Fig. 2e im Vergleich von Fig. 2d um 3 Ausgangsdatenblöcke des ersten Codierers nach hinten verschoben hat.
Im nachfolgenden wird noch einmal auf Fig. 1a Bezug genommen. Zusätzlich zu dem bereits in der Beschreibungseinleitung beschriebenen skalierbaren Codierer enthält der erfindungsgemäße skalierbare Codierer, der in Fig. 1a dargestellt ist, einen Block Bitsparkassensteuerung 50 sowie eine Steuerleitung 52 vom AAC-Codierer 14 zum Bitstrommultiplexer 20, über die die maximale Größe der Bitsparkasse, die durch die Bitsparkassensteuerung 50 eingestellt worden ist, dem Bitstrommultiplexer mitgeteilt werden kann, damit derselbe die in Fig. 2e erforderliche Bitstromformatierung durchführen kann.
In Fig. 1b findet sich ein schematisches Blockschaltbild eines skalierbaren Decodierers, der zu dem skalierbaren Codierer in Fig. 1a komplementär ist. Der skalierbare Bitstrom, der dem Decodierer über eine Leitung 60 zugeführt wird, wird in einen Eingangspuffer/Bitstrom-Demultiplexer 62 des Decodierers eingespeist. Hier wird der Bitstrom aufgeteilt, um die für einen CELP-Decodierer 64 und einen AAC-Decodierer 66 benötigten Blöcke zu extrahieren. Der erfindungsgemäße Decodierer umfaßt ferner eine AAC-Verzögerungsstufe 68, die dafür da ist, um eine der Bitsparkassengröße entsprechende Verzögerung einzuführen, damit dem AAC-Decodierer 66 niemals Daten zur Ausgabe ausgehen. Erfindungsgemäß ist diese AAC-Verzögerungsstufe nunmehr variabel ausgestaltet, wobei die Verzögerung abhängig von Bitsparkasseninformationen gesteuert werden, welche vom Bitstrom-Demultiplexer 62 aus dem Bitstrom extrahiert werden und über eine Bitsparkassen-Informationen-Leitung 70 der AAC-Verzögerungsstufe 68 zugeführt werden. Je nach Bitsparkassenstand wird nunmehr die Verzögerung der AAC-Verzögerungsstufe 68 eingestellt. Wird durch die Bitsparkassensteuerungseinrichtung 50 von Fig. 1a eine kleine Bitsparkasse eingestellt, so kann auch die AAG-Verzögerungsstufe 68 auf eine kleinere Verzögerung eingestellt werden, so daß eine verzögerungsärmere Decodierung der zweiten Skalierungsschicht erreicht werden kann.
Der skalierbare Decodierer von Fig. 1b umfaßt ferner eine MDCT-Einrichtung 72, um die Zeitbereichsausgangssignale des CELP-Decodierers 64 in den Frequenzbereich zu transformieren, und ein derselben vorgeschaltete Upsampling-Stufe. Das Spektrum wird durch eine Verzögerungsstufe 74 verzögert, die zwischen den beiden Zweigen vorhandene Zeitunterschiede ausgleicht, so daß an einer Einrichtung 76, die mit Addierer/FSS-1 bezeichnet ist, gleiche Verhältnisse vorliegen. Die Einrichtung 66 vollführt im wesentlichen die analoge Funktion wie der Subtrahierer 40 und die FSS 44 von Fig. la. Nach dem Block 76 werden die Spektralwerte durch eine Einrichtung 78 zum Durchführen einer Rücktransformation vom Frequenzbereich in den Zeitbereich transformiert, so daß an einem Ausgang 80 entweder lediglich die zweite Skalierungsschicht oder aber die erste und die zweite Skalierungsschicht im Zeitbereich vorliegen. An einem Ausgang 82 liegt dagegen lediglich die erste Skalierungsschicht im Zeitbereich vor, die vom CELP-Decodierer 64 erzeugt wird.
Im nachfolgenden wird auf Fig. 3 eingegangen, welche zu Fig. 2 ähnlich ist, jedoch die besondere Implementierung am 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. Die Gesamtbitrate beträgt dann 32 kBit/s.
Wie es aus Fig. 3 ersichtlich ist, entsprechen die Ausgangsdatenblöcke Null und Eins des Celp-Codierers dem aktuellen Zeitabschnitt für den ersten Codierer. 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 zumindest eine Ausgangsdatenblock des AAC-Codierers aus einem oder mehreren vorhergehenden Zeitabschnitten in den Bitstrom geschrieben werden muß, bevor mit dem Schreiben des Ausgangsdatenblocks des AAC-Codierers für den aktuellen Zeitabschnitt begonnen werden kann. Aus dem Vergleich der beiden letzten Zeilen von Fig. 3, die mit "1" und "2" gekennzeichnet sind, ist zu sehen, daß die 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 soll im LATM-Element StreamMuxConfig durch die Variable "Bufferfullness" übertragen werden. Die Variable Bufferfullness berechnet sich aus der Variablen Bitreservoir geteilt durch das 32fache der gerade 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 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.
Zu Illustrationszwecken beschreibt, wie es ausgeführt worden ist, die letzte Zeile von Fig. 3 den Fall, bei dem der LATM-Header 306 unmittelbar, nachdem er erzeugt worden ist, in den Bitstrom geschrieben wird, so daß dem LATM-Header 306 noch Ausgangsdaten des zweiten Codierers (312) des vorherigen Zeitabschnitts nachfolgen, wobei die Ausgangsdaten des zweiten Codierers für den aktuellen Zeitabschnitt, auf den sich der LATM-Header 306 bezieht, erst in einem Abstand in Übertragungsrichtung hinter dem LATM-Header folgen, wobei der Abstand durch die Differenz zwischen Max Bufferfullness und Bufferfullness gegeben ist, wie es in Fig. 3 dargestellt ist.
Im Gegensatz dazu wird gemäß der vorliegenden Erfindung, wie es anhand von Fig. 2e dargestellt worden ist, der LATM-Header 306 nicht mehr dann geschrieben, wenn er erzeugt worden ist, sondern um eine Zeitspanne verzögert geschrieben, die Max Bufferfullness entspricht. Der LATM-Header 306 würde daher erfindungsgemäß je nach Wert von Bufferfullness hinter einer Stelle 330 im Bitstrom stehen, und der Vorwärts-Zeiger 314 wird durch einen Rückwärtszeiger (260 in Fig. 2e) ersetzt.
Erfindungsgemäß wird ferner die in den Fig. 2c und 2d und auch in Fig. 3 gewählte Anordnung aufgegeben, bei der ein CELP-Block unmittelbar dem LATM-Header folgt.
Statt dessen wird bevorzugterweise folgende Prioritätsverteilung beim Schreiben von Daten in den skalierbaren Bitstrom bevorzugt, um sowohl eine verzögerungsarme Decodierung der ersten Skalierungsschicht als auch eine verzögerungsarme Decodierung der zweiten Skalierungsschicht zu erreichen.
Hohe Priorität genießen die Ausgangsdatenblöcke des ersten Codierers. Immer wenn ein Ausgangsdatenblock des ersten Codierers fertig geschrieben ist, wird dieser Ausgangsdatenblock in den Bitstrom geschrieben. Damit ergibt sich bei Verwendung eines CELP-Codierers automatisch das äquidistante Raster von Ausgangsdatenblöcken des ersten Codierers, die ferner eine gleiche Länge haben.
Wenn gerade keine Ausgangsdaten des ersten Codierers zum Schreiben vorhanden sind, werden Ausgangsdaten des AAC-Codierers für den vorausgehenden Zeitabschnitt des Eingangssignals in den Bitstrom geschrieben, bis keine entsprechenden Daten mehr vorhanden sind. Erst dann wird mit dem Schreiben der Ausgangsdaten des AAC-Codierers für den aktuellen Abschnitt begonnen. Das Schreiben dieser Ausgangsdaten in den Bitstrom wird, wie es in Fig. 2e ersichtlich ist, selbstverständlich immer dann unterbrochen, wenn wieder Ausgangsdaten des ersten Codierers zur Verfügung stehen.
Das Schreiben der Ausgangsdaten des AAC-Codierers für den aktuellen Zeitabschnitt wird ferner ebenfalls unterbrochen, wenn ein LATM-Header fertig ist und derselbe um Max Bufferfullness 250 (Fig. 2e) verzögert worden ist. Der skalierbare Bitstrom ist fertig, wenn in den Bitstrom entweder separat oder über den Bestimmungsdatenblock noch die entsprechenden Werte für Bufferfullness 260 und Offset 270 eingetragen sind.
Im nachfolgenden wird auf eine Decodierung eines solchermaßen erzeugten Bitstroms eingegangen. Wenn der Decodierer lediglich an der ersten Skalierungsschicht, also an den Ausgangsdatenblöcken des ersten Codierers (CELP-Codierer) interessiert ist, so wird er ohne Rücksicht auf LATM-Header oder AAC-Daten einfach einen CELP-Block nach dem anderen aus dem Bitstrom holen und decodieren. Da die CELP-Blöcke vorzugsweise unmittelbar nach ihrer Erzeugung in den Bitstrom geschrieben werden, ist eine verzögerungsarme Decodierung der CELP-Blöcke gewährleistet.
Wenn der Decodierer eine Decodierung sowohl der ersten als auch der zweiten Skalierungsschicht wünscht, also ein Audiosignal mit hoher Qualität erhalten möchte, so muß er die Zuordnung zwischen den CELP-Blöcken und dem/den AAC-Blöcken für einen Superframe, also für eine gewisse Anzahl von Abtastwerten, erreichen, wobei gegebenenfalls noch ein Core Coder Delay (34 von Fig. la) zu berücksichtigen ist, wenn der aktuelle zeitliche Abschnitt des Eingangssignals des AAC-Codierers bezüglich eines Superframes vom aktuellen zeitlichen Abschnitt des CELP-Codierers verschoben ist.
Dies geschieht dadurch, daß der Decodierer den Bitstrom zwischenspeichert, bis er auf einen LATM-Header, z. B. den Header 200 von Fig. 2e, stößt. Unter Kenntnis des Offsets 270 kann der Decodierer dann ermitteln, welche Ausgangsdatenblöcke des ersten Codierers zu dem LATM-Header 200 gehören. Unter Berücksichtigung der Variable Bufferfullness weiß der Decodierer ferner, wo in den im Decodierer-Eingangspuffer gespeicherten Daten der AAC-Frame des Zeitabschnitts beginnt, auf den sich der LATM-Header bezieht. Im Falle von Bufferfullness gleich Max ist bereits der gesamte interessierende AAC-Frame im Decodierer-Eingangspuffer enthalten. Im Fall von Bufferfullness gleich 0 beginnt der interessierende AAC-Frame unmittelbar hinter dem LATM-Header, so daß der Decodierer unter Verwendung der bereits im Eingangspuffer gespeicherten Daten oder aber unter Verwendung eines Teils der im Eingangspuffer gespeicherten Daten und unter Verwendung eines unmittelbar ankommenden Teils von Daten, die in Übertragungsrichtung hinter dem LATM-Header stehen, ohne Verzögerung beginnen kann, zu decodieren. Die Bitsparkassengröße wird somit allein implizit durch die Lage des Bestimmungsdatenblocks bezüglich der Nutzdaten im Bitstrom signalisiert, ohne daß irgendwelche Seiteninformationen erforderlich sind. In diesem Fall ist auch die Stufe mit variabler Verzögerung im Decodierer (Block 68 von Fig. 1b) und die Leitung 70 von Fig. 1b hinfällig.

Claims (11)

  1. Verfahren zum Erzeugen eines skalierbaren Datenstroms aus zumindest einem Block von Ausgangsdaten eines ersten Codierers (12) und zumindest einem Block von Ausgangsdaten eines zweiten Codierers (14), wobei der zweite Codierer eine Bitsparkasse umfaßt, die durch eine maximale Größe und einen aktuellen Stand definiert ist, wobei der zumindest eine Block von Ausgangsdaten des ersten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den ersten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den ersten Codierer definiert, und wobei der zumindest eine Block von Ausgangsdaten des zweiten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eirigangssignals für den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine einstellbare Zeitdauer (34) zueinander verschoben sind, mit folgenden Merkmalen:
    wenn ein Block (11) von Ausgangsdaten des ersten Codierers (12) vorliegt, Schreiben des zumindest einen Blocks von Ausgangsdaten des ersten Codierers in den skalierbaren Datenstrom;
    falls Ausgangsdaten (0) des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer vorliegen, Schreiben der Ausgangsdaten des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer in Übertragungsrichtung hinter einem Block (11) von Ausgangsdaten des ersten Codierers;
    wenn Ausgangsdaten (1) des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers vorliegen, Schreiben der Ausgangsdaten des zweiten Codierers in Übertragungsrichtung hinter die Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer in den Bitstrom;
    Erzeugen eines Bestimmungsdatenblocks (200), wenn der Block von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers bereit ist, und Schreiben des Bestimmungsdatenblocks (200) um eine Zeitspanne (250) bezüglich der Erzeugung des Bestimmungsdatenblocks verzögert, wobei die Zeitspanne kleiner oder gleich einer Verzögerung ist, die der maximalen Größe der Bitsparkasse des zweiten Codierers (14) entspricht; und
    Schreiben von Pufferinformationen (260) in den Bitstrom, die anzeigen, wo der Beginn der Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer bezüglich des Bestimmungsdatenblocks (200) ist.
  2. Verfahren nach Anspruch 1,
    bei dem die Zeitdauer (250) gleich einer Verzögerung ist, die der maximalen Größe der Bitsparkasse entspricht, und
    bei dem die Pufferinformationen (260) dem aktuellen Stand der Bitsparkasse für den aktuellen Abschnitt des Eingangssignals für den zweiten Codierer entsprechen.
  3. Verfahren nach Anspruch 1 oder Anspruch 2,
    bei dem der Bestimmungsdatenblock (200) mit hoher Priorität geschrieben wird,
    bei dem die Blöcke von Ausgangsdaten des ersten Codierers mit geringerer Priorität geschrieben werden, und
    bei dem der zumindest eine Block (0) von Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals mit höherer Priorität in den Bitstrom geschrieben wird, als der zumindest eine Block (1) von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt.
  4. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der erste Codierer für eine Anzahl von Abtastwerten zumindest zwei Blöcke liefert, wobei das Verfahren ferner folgenden Schritt aufweist:
    Schreiben von Offset-Informationen (270) in den Bitstrom, die anzeigen, wie viele Blöcke von Ausgangsdaten des ersten Codierers (12) in Übertragungsrichtung vor dem Bestimmungsdatenblock (200) zu dem aktuellen Abschnitt des ersten Codierers (12) gehören.
  5. Codierer (14) mit einer Bitsparkasse, wobei die Bitsparkasse eine maximale Größe aufweist, mit folgenden Merkmalen:
    einer Einrichtung (50) zum Einstellen der maximalen Größe der Bitsparkasse abhängig von einer für einen Audiodecodierer vorgesehenen Verzögerung; und
    einer Einrichtung (52, 20) zum Übertragen der eingestellten maximalen Größe der Bitsparkasse in einem ausgangsseitigen Datenstrom.
  6. Skalierbarer Codierer mit folgenden Merkmalen:
    einem ersten Codierer (12) zum Erzeugen eines Blocks von Ausgangsdaten für den ersten Codierer;
    einem zweiten Codierer (14) mit einer Bitsparkasse, wobei die Bitsparkasse eine maximale Größe aufweist, zum Erzeugen eines Blocks von Ausgangsdaten für den zweiten Codierer, wobei der zweite Codierer ferner eine Einrichtung (50) zum Einstellen der maximalen Größe der Bitsparkasse abhängig von einer für einen Audiodecodierer vorgesehenen Anfangsverzögerung aufweist;
    einem Bitstrommultiplexer (20) zum Erzeugen eines skalierbaren Datenstroms, wobei der Bitstrommultiplexer (20) ausgebildet ist, um
    den Block von Ausgangsdaten für den ersten Codierer (12) in einen skalierbaren Datenstrom zu schreiben,
    den Block von Ausgangsdaten für den zweiten Codierer (14) in den skalierbaren Datenstrom zu schreiben;
    einen Bestimmungsdatenblock (200) zu erzeugen, nachdem der Block von Ausgangsdaten des zweiten Codierers durch den zweiten Codierer ausgegeben ist,
    den Bestimmungsdatenblock um eine Zeitdauer verzögert, wobei die Zeitdauer der maximalen Größe der Bitsparkasse entspricht, in den skalierbaren Datenstrom zu schreiben, und
    um Pufferinformationen (260) in den Bitstrom zu schreiben, die anzeigen, wie weit der Beginn der Ausgangsdaten des zweiten Codierers in Übertragungsrichtung vor dem Bestimmungsdatenblock (200) liegt, wobei die Pufferinformationen einem aktuellen Stand der Bitsparkasse entsprechen.
  7. Vorrichtung zum Erzeugen eines skalierbaren Datenstroms aus zumindest einem Block von Ausgangsdaten eines ersten Codierers (12) und zumindest einem Block von Ausgangsdaten eines zweiten Codierers (14), wobei der zweite Codierer eine Bitsparkasse umfaßt, die durch eine maximale Größe und einen aktuellen Stand definiert ist, wobei der zumindest eine Block von Ausgangsdaten des ersten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den ersten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den ersten Codierer definiert, und wobei der zumindest eine Block von Ausgangsdaten des zweiten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine einstellbare Zeitdauer (34) zueinander verschoben sind, mit folgenden Merkmalen:
    einer Einrichtung zum Schreiben eines Blocks von Ausgangsdaten des ersten Codierers in den skalierbaren Datenstrom, wenn ein Block (11) von Ausgangsdaten des ersten Codierers (12) vorliegt;
    einer Einrichtung zum Schreiben von Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer in Übertragungsrichtung hinter einen Block (11) von Ausgangsdaten des ersten Codierers, falls Ausgangsdaten (O) des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer vorliegen;
    einer Einrichtung zum Schreiben von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des Zeitsignals für den zweiten Codierer in Übertragungsrichtung hinter den Ausgangsdaten des zweiten Codierers für einen vorausgehenden Abschnitt des Eingangssignals für den zweiten Codierer in den Bitstrom, wenn Ausgangsdaten (1) des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers vorliegen;
    einer Einrichtung zum Erzeugen eines Bestimmungsdatenblocks (200), wenn der Block von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers vorhanden ist, und zum Schreiben des Bestimmungsdatenblocks (200) um eine Zeitspanne (250) bezüglich der Erzeugung des Bestimmungsdatenblocks verzögert, wobei die Zeitspanne kleiner oder gleich einer Verzögerung ist, die der maximalen Größe der Bitsparkasse des zweiten Codierers (14) entspricht; und
    einer Einrichtung zum Schreiben von Pufferinformationen (260) in den Bitstrom, die anzeigen, wo der Beginn der Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers bezüglich; des Bestimmungsdatenblocks (200) ist.
  8. Verfahren zum Decodieren eines skalierbaren Datenstroms aus zumindest einem Block von Ausgangsdaten eines ersten Codierers (12) und zumindest einem Block von Ausgangsdaten eines zweiten Codierers (14), wobei der zweite codierer eine Bitsparkasse umfaßt, die durch eine maximale Größe und einen aktuellen Stand definiert ist, wobei der zumindest eine Block von Ausgangsdaten des ersten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den ersten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den ersten Codierer definiert, und wobei der zumindest eine Block von Ausgangsdaten des zweiten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine einstellbare Zeitdauer (34) zueinander verschoben sind, wobei der skalierbare Datenstrom Ausgangsdaten (11) des ersten Codierers, Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt, Ausgangsdaten des zweiten Codierers für einen aktuellen Abschnitt, einen Bestimmungsdatenblock (200) und Pufferinformationen (260) aufweist, mit folgenden Schritten:
    Zwischenspeichern (62) des skalierbaren Datenstroms;
    Lesen des Blocks von Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers;
    Lesen des Bestimmungsdatenblocks (200) und der Pufferinformationen (260) aus dem zwischengespeicherten Datenstrom;
    Ermitteln des Beginns des Blocks von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers unter Verwendung der Pufferinformationen (260); und
    Decodieren (64, 66) des Blocks von Ausgangsdaten des ersten Codierers und des Blocks von Ausgangsdaten des zweiten Codierers gegebenenfalls unter Berücksichtigung der einstellbaren Zeitdauer (34), um die der aktuelle Abschnitt des ersten Codierers und der aktuelle Abschnitt des zweiten Codierers zeitlich zueinander verschoben sind.
  9. Vorrichtung zum Decodieren eines skalierbaren Datenstroms aus zumindest einem Block von Ausgangsdaten eines ersten Codierers (12) und zumindest einem Block von Ausgangsdaten eines zweiten Codierers (14), wobei der zweite Codierer eine Bitsparkasse umfaßt, die durch eine maximale Größe und einen aktuellen Stand definiert ist, wobei der zumindest eine Block von Ausgangsdaten des ersten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den ersten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den ersten Codierer definiert, und wobei der zumindest eine Block von Ausgangsdaten des zweiten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine einstellbare Zeitdauer (34) zueinander verschoben sind, wobei der skalierbare Datenstrom Ausgangsdaten (11) des ersten Codierers, Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt, Ausgangsdaten des zweiten Codierers für einen aktuellen Abschnitt, einen Bestimmungsdatenblock (200) und Pufferinformationen (260) aufweist, mit folgenden Merkmalen:
    einer Einrichtung zum Zwischenspeichern (62) des skalierbaren Datenstroms;
    einer Einrichtung zum Lesen des Blocks von Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers;
    einer Einrichtung zum Lesen des Bestimmungsdatenblocks (200) und der Pufferinformationen (260) aus dem zwischengespeicherten Datenstrom;
    einer Einrichtung zum Ermitteln des Beginns des Blocks von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers unter Verwendung der Pufferinformationen (260); und
    einer Einrichtung zum Decodieren (64, 66) des Blocks von Ausgangsdaten des ersten Codierers und des Blocks von Ausgangsdaten des zweiten Codierers gegebenenfalls unter Berücksichtigung der einstellbaren Zeitdauer (34), um die der aktuelle Abschnitt des ersten Codierers und der aktuelle Abschnitt des zweiten Codierers zeitlich zueinander verschoben sind.
  10. Verfahren zum Decodieren eines skalierbaren Datenstroms aus zumindest einem Block von Ausgangsdaten eines ersten Codierers (12) und zumindest einem Block von Ausgangsdaten eines zweiten Codierers (14), wobei der zweite Codierer eine Bitsparkasse umfaßt, die durch eine maximale Größe und einen aktuellen Stand definiert ist, wobei der zumindest eine Block von Ausgangsdaten des ersten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den ersten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den ersten Codierer definiert, und wobei der zumindest eine Block von Ausgangsdaten des zweiten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine einstellbare Zeitdauer (34) zueinander verschoben sind, wobei der skalierbare Datenstrom Ausgangsdaten (11) des ersten Codierers, Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt, Ausgangsdaten des zweiten Codierers für einen aktuellen Abschnitt, einen Bestimmungsdatenblock (200) und Pufferinformationen (260) aufweist, mit folgenden Schritten:
    Zwischenspeichern (62) des skalierbaren Datenstroms;
    Lesen des Blocks von Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers;
    Lesen des Bestimmungsdatenblocks (200) und der Pufferinformationen (260) aus dem zwischengespeicherten Datenstrom; und
    Ermitteln des Beginns des Blocks von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers unter Verwendung der Pufferinformationen (260) , um aus dem skalierten Datenstrom extrahierte Blöcke für einen ersten Decodierer (64) und einen zweiten Decodierer (66) zu erhalten.
  11. Vorrichtung zum Decodieren eines skalierbaren Datenstroms aus zumindest einem Block von Ausgangsdaten eines ersten Codierers (12) und zumindest einem Block von Ausgangsdaten eines zweiten Codierers (14), wobei der zweite Codierer eine Bitsparkasse umfaßt, die durch eine maximale Größe und einen aktuellen Stand definiert ist, wobei der zumindest eine Block von Ausgangsdaten des ersten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den ersten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den ersten Codierer definiert, und wobei der zumindest eine Block von Ausgangsdaten des zweiten Codierers eine Anzahl von Abtastwerten des Eingangssignals in den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten einen aktuellen Abschnitt des Eingangssignals für den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine einstellbare Zeitdauer (34) zueinander verschoben sind, wobei der skalierbare Datenstrom Ausgangsdaten (11) des ersten Codierers, Ausgangsdaten des zweiten Codierers für einen vorhergehenden Abschnitt, Ausgangsdaten des zweiten Codierers für einen aktuellen Abschnitt, einen Bestimmungsdatenblock (200) und Pufferinformationen (260) aufweist, mit folgenden Merkmalen:
    einer Einrichtung zum Zwischenspeichern (62) des skalierbaren Datenstroms;
    einer Einrichtung zum Lesen des Blocks von Ausgangsdaten des ersten Codierers für den aktuellen Abschnitt des ersten Codierers;
    einer Einrichtung zum Lesen des Bestimmungsdatenblocks (200) und der Pufferinformationen (260) aus dem zwischengespeicherten Datenstrom;
    einer Einrichtung zum Ermitteln des Beginns des Blocks von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des zweiten Codierers unter Verwendung der Pufferinformationen (260) , um aus dem skalierten Datenstrom extrahierte Blöcke für einen ersten Decodierer (64) und einen zweiten Decodierer (66) zu erhalten.
EP02718023A 2001-01-18 2002-01-14 Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer Expired - Lifetime EP1338004B8 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10102159A DE10102159C2 (de) 2001-01-18 2001-01-18 Verfahren und Vorrichtung zum Erzeugen bzw. Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkasse, Codierer und skalierbarer Codierer
DE10102159 2001-01-18
PCT/EP2002/000294 WO2002063611A1 (de) 2001-01-18 2002-01-14 Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer

Publications (3)

Publication Number Publication Date
EP1338004A1 EP1338004A1 (de) 2003-08-27
EP1338004B1 true EP1338004B1 (de) 2004-09-08
EP1338004B8 EP1338004B8 (de) 2005-08-31

Family

ID=7670988

Family Applications (1)

Application Number Title Priority Date Filing Date
EP02718023A Expired - Lifetime EP1338004B8 (de) 2001-01-18 2002-01-14 Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer

Country Status (10)

Country Link
US (1) US7516230B2 (de)
EP (1) EP1338004B8 (de)
JP (1) JP3890300B2 (de)
KR (1) KR100576034B1 (de)
AT (1) ATE275751T1 (de)
AU (1) AU2002249122B2 (de)
CA (1) CA2434882C (de)
DE (2) DE10102159C2 (de)
HK (1) HK1056641A1 (de)
WO (1) WO2002063611A1 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3881943B2 (ja) * 2002-09-06 2007-02-14 松下電器産業株式会社 音響符号化装置及び音響符号化方法
DE10328777A1 (de) 2003-06-25 2005-01-27 Coding Technologies Ab Vorrichtung und Verfahren zum Codieren eines Audiosignals und Vorrichtung und Verfahren zum Decodieren eines codierten Audiosignals
GB2403634B (en) * 2003-06-30 2006-11-29 Nokia Corp An audio encoder
DE10353793B4 (de) * 2003-11-13 2012-12-06 Deutsche Telekom Ag Verfahren zur Verbesserung der Wiedergabequalität bei paketorientierter Übertragung von Audio-/Video-Daten
US7756594B2 (en) * 2004-06-14 2010-07-13 Microsoft Corporation Systems and methods for parsing flexible audio codec topologies
US20060041895A1 (en) * 2004-08-04 2006-02-23 Microsoft Corporation Systems and methods for interfacing with codecs across an architecture optimized for audio
US7590065B2 (en) * 2004-08-04 2009-09-15 Microsoft Corporation Equal-opportunity bandwidth regulation
US7706901B2 (en) * 2004-10-01 2010-04-27 Microsoft Corporation Low latency real-time audio streaming
CN101044554A (zh) 2004-10-13 2007-09-26 松下电器产业株式会社 可扩展性编码装置、可扩展性解码装置以及可扩展性编码方法
KR20070092240A (ko) * 2004-12-27 2007-09-12 마츠시타 덴끼 산교 가부시키가이샤 음성 부호화 장치 및 음성 부호화 방법
US8826093B2 (en) * 2005-01-19 2014-09-02 Qualcomm Incorporated Power saving method for coded transmission
US7809018B2 (en) * 2005-12-16 2010-10-05 Coding Technologies Ab Apparatus for generating and interpreting a data stream with segments having specified entry points
KR100969731B1 (ko) * 2005-12-16 2010-07-13 돌비 스웨덴 에이비 데이터의 중요도에 따라 변형된 데이터 스트림을 생성하는장치 및 그 데이터 스트림을 해석하는 장치
US7590523B2 (en) * 2006-03-20 2009-09-15 Mindspeed Technologies, Inc. Speech post-processing using MDCT coefficients
EP1841072B1 (de) * 2006-03-30 2016-06-01 Unify GmbH & Co. KG Verfahren und Einrichtung zum Dekodieren von schichtkodierten Daten
US8190441B2 (en) * 2006-09-11 2012-05-29 Apple Inc. Playback of compressed media files without quantization gaps
JP4358215B2 (ja) * 2006-09-27 2009-11-04 株式会社東芝 動画像符号化装置及びその方法
EP2339577B1 (de) * 2008-09-18 2018-03-21 Electronics and Telecommunications Research Institute Kodierungsvorrichtung und dekodierungsvorrichtung zur transformation zwischen einem modifizierten cosinus-transformation kodierer und einem heterokodierer
CN101771417B (zh) * 2008-12-30 2012-04-18 华为技术有限公司 信号编码、解码方法及装置、系统
AU2011240024B2 (en) * 2010-04-13 2014-09-25 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and encoder and decoder for gap - less playback of an audio signal
US8532804B2 (en) * 2010-06-18 2013-09-10 Microsoft Corporation Predictive resampler scheduler algorithm
WO2012031269A1 (en) * 2010-09-03 2012-03-08 Loglogic, Inc. Random access data compression
KR20120084234A (ko) 2011-01-19 2012-07-27 삼성전자주식회사 Mpeg media transport(mmt)에서 mmt au를 전송하는 방법
TWI476761B (zh) * 2011-04-08 2015-03-11 Dolby Lab Licensing Corp 用以產生可由實施不同解碼協定之解碼器所解碼的統一位元流之音頻編碼方法及系統
WO2013142650A1 (en) 2012-03-23 2013-09-26 Dolby International Ab Enabling sampling rate diversity in a voice communication system
TWI505262B (zh) 2012-05-15 2015-10-21 Dolby Int Ab 具多重子流之多通道音頻信號的有效編碼與解碼
US10199043B2 (en) * 2012-09-07 2019-02-05 Dts, Inc. Scalable code excited linear prediction bitstream repacked from a higher to a lower bitrate by discarding insignificant frame data
US9564136B2 (en) * 2014-03-06 2017-02-07 Dts, Inc. Post-encoding bitrate reduction of multiple object audio
US10283091B2 (en) * 2014-10-13 2019-05-07 Microsoft Technology Licensing, Llc Buffer optimization

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3943879B4 (de) * 1989-04-17 2008-07-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Digitales Codierverfahren
DE4218695A1 (de) * 1992-06-09 1993-12-16 Thomson Brandt Gmbh Verfahren, Coder und Decoder zur Datenübertragung und/oder -speicherung
US5365552A (en) * 1992-11-16 1994-11-15 Intel Corporation Buffer fullness indicator
US5835033A (en) * 1994-11-08 1998-11-10 Canon Kabushiki Kaisha Decoding apparatus and method for coded data
US5896099A (en) * 1995-06-30 1999-04-20 Sanyo Electric Co., Ltd. Audio decoder with buffer fullness control
DE19537338C2 (de) * 1995-10-06 2003-05-22 Fraunhofer Ges Forschung Verfahren und Vorrichtung zum Codieren von Audiosignalen
US5758092A (en) * 1995-11-14 1998-05-26 Intel Corporation Interleaved bitrate control for heterogeneous data streams
US5768537A (en) * 1996-02-22 1998-06-16 International Business Machines Corporation Scalable MPEG2 compliant video encoder
JP3246715B2 (ja) 1996-07-01 2002-01-15 松下電器産業株式会社 オーディオ信号圧縮方法,およびオーディオ信号圧縮装置
JP3344944B2 (ja) * 1997-05-15 2002-11-18 松下電器産業株式会社 オーディオ信号符号化装置,オーディオ信号復号化装置,オーディオ信号符号化方法,及びオーディオ信号復号化方法
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 윤종용 비트율 조절이 가능한 오디오 부호화/복호화 방법및 장치
KR100335609B1 (ko) * 1997-11-20 2002-10-04 삼성전자 주식회사 비트율조절이가능한오디오부호화/복호화방법및장치
AU1928999A (en) * 1997-12-19 1999-07-12 Kenneth Rose Scalable predictive coding method and apparatus
DE69936626T2 (de) * 1998-08-06 2008-05-21 Samsung Electronics Co., Ltd., Suwon Kanalkodierung und -dekodierung für ein kommunikationssystem
US6553086B1 (en) * 1998-10-02 2003-04-22 Lg Electronics, Inc. Method and apparatus for recording time information for digital data streams
JP2000307661A (ja) 1999-04-22 2000-11-02 Matsushita Electric Ind Co Ltd 符号化装置および復号化装置
US6904089B1 (en) * 1998-12-28 2005-06-07 Matsushita Electric Industrial Co., Ltd. Encoding device and decoding device
FR2791167B1 (fr) * 1999-03-17 2003-01-10 Matra Nortel Communications Procedes de codage, de decodage et de transcodage audio
US6195989B1 (en) 1999-05-04 2001-03-06 Caterpillar Inc. Power control system for a machine
KR100349329B1 (ko) * 1999-06-23 2002-08-21 한국전자통신연구원 엠펙-2 고품질 오디오 처리 알고리즘의 병렬 처리 방법
DE19959156C2 (de) * 1999-12-08 2002-01-31 Fraunhofer Ges Forschung Verfahren und Vorrichtung zum Verarbeiten eines zu codierenden Stereoaudiosignals
US6369722B1 (en) * 2000-03-17 2002-04-09 Matra Nortel Communications Coding, decoding and transcoding methods
US6675148B2 (en) * 2001-01-05 2004-01-06 Digital Voice Systems, Inc. Lossless audio coder
US6926526B2 (en) * 2002-05-24 2005-08-09 Kenneth G. Hudak Endodontic adapter for a sonic scaler

Also Published As

Publication number Publication date
EP1338004A1 (de) 2003-08-27
CA2434882C (en) 2008-04-15
CA2434882A1 (en) 2002-08-15
JP2004523790A (ja) 2004-08-05
US20040162911A1 (en) 2004-08-19
HK1056641A1 (en) 2004-02-20
ATE275751T1 (de) 2004-09-15
WO2002063611A1 (de) 2002-08-15
DE50200953D1 (de) 2004-10-14
KR20030076611A (ko) 2003-09-26
DE10102159A1 (de) 2002-08-08
US7516230B2 (en) 2009-04-07
JP3890300B2 (ja) 2007-03-07
KR100576034B1 (ko) 2006-05-02
AU2002249122B2 (en) 2005-06-23
DE10102159C2 (de) 2002-12-12
EP1338004B8 (de) 2005-08-31

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
DE19549621B4 (de) Vorrichtung zum Codieren von Audiosignalen
DE60012860T2 (de) Verfahren zur Verarbeitung mehrerer digitaler Audiodatenströme
DE60121592T2 (de) Kodierung und dekodierung eines digitalen signals
DE69333394T2 (de) Hochwirksames Kodierverfahren und -gerät
DE60117471T2 (de) Breitband-signalübertragungssystem
DE10200653B4 (de) Skalierbarer Codierer, Verfahren zum Codieren, Decodierer und Verfahren zum Decodieren für einen skalierten Datenstrom
EP1327243B1 (de) Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms
EP1647010B1 (de) Audiodateiformatumwandlung
EP0978172B1 (de) Verfahren zum verschleiern von fehlern in einem audiodatenstrom
EP2245621B1 (de) Verfahren und mittel zur enkodierung von hintergrundrauschinformationen
DE19742655C2 (de) Verfahren und Vorrichtung zum Codieren eines zeitdiskreten Stereosignals
EP1953739A2 (de) Verfahren und Vorrichtung zur Geräuschunterdrückung
EP1230827A2 (de) Verfahren und vorrichtung zum verarbeiten eines stereoaudiosignals
EP1023777B1 (de) Verfahren und vorrichtung zur erzeugung eines bitratenskalierbaren audio-datenstroms
DE60224005T2 (de) Verfahren und vorrichtung zur verarbeitung von mehreren audiobitströmen
EP1354314B1 (de) Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion
DE102008009720A1 (de) Verfahren und Mittel zur Dekodierung von Hintergrundrauschinformationen
DE10339498B4 (de) Audiodateiformatumwandlung
EP1390947B1 (de) Verfahren zum signalempfang in einem digitalen kommunikationssystem
DE19804584A1 (de) Verfahren und Vorrichtung zum Codieren und Decodieren von Audiosignalen
DE10065363B4 (de) Vorrichtung und Verfahren zum Decodieren eines codierten Datensignals
WO2005034091A1 (de) Verfahren und anordnung zur audioübertragung
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

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

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

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

Owner name: FRAUNHOFER-GESELLSCHAFT ZUR FOERDERUNG DERANGEWAND

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: 20040908

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: 50200953

Country of ref document: DE

Date of ref document: 20041014

Kind code of ref document: P

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

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: 20041208

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: 20041208

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: 20041219

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

Effective date: 20041201

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: 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

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

REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1056641

Country of ref document: HK

LTIE Lt: invalidation of european patent or patent extension

Effective date: 20040908

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

RIN2 Information on inventor provided after grant (corrected)

Inventor name: SPERSCHNEIDER, RALPH

Inventor name: GRILL, BERNHARD

Inventor name: TEICHMANN, BODO

Inventor name: LUTZKY, MANFRED

26N No opposition filed

Effective date: 20050609

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: 20050208

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: FR

Payment date: 20210120

Year of fee payment: 20

Ref country code: FI

Payment date: 20210119

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: DE

Payment date: 20210120

Year of fee payment: 20

Ref country code: SE

Payment date: 20210122

Year of fee payment: 20

Ref country code: AT

Payment date: 20210119

Year of fee payment: 20

Ref country code: BE

Payment date: 20210120

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: 50200953

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: 275751

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