WO2002063611A1 - 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
WO2002063611A1
WO2002063611A1 PCT/EP2002/000294 EP0200294W WO02063611A1 WO 2002063611 A1 WO2002063611 A1 WO 2002063611A1 EP 0200294 W EP0200294 W EP 0200294W WO 02063611 A1 WO02063611 A1 WO 02063611A1
Authority
WO
WIPO (PCT)
Prior art keywords
encoder
output data
block
data
bit
Prior art date
Application number
PCT/EP2002/000294
Other languages
English (en)
French (fr)
Inventor
Ralph Sperschneider
Bernhard Grill
Bodo Teichmann
Manfred Lutzky
Original Assignee
Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e. V.
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 Förderung der angewandten Forschung e. V. filed Critical Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e. V.
Priority to CA002434882A priority Critical patent/CA2434882C/en
Priority to DE50200953T priority patent/DE50200953D1/de
Priority to KR1020037009445A priority patent/KR100576034B1/ko
Priority to US10/466,781 priority patent/US7516230B2/en
Priority to EP02718023A priority patent/EP1338004B8/de
Priority to AU2002249122A priority patent/AU2002249122B2/en
Priority to AT02718023T priority patent/ATE275751T1/de
Priority to JP2002563470A priority patent/JP3890300B2/ja
Publication of WO2002063611A1 publication Critical patent/WO2002063611A1/de
Priority to HK03108993A priority patent/HK1056641A1/xx

Links

Classifications

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

Definitions

  • the present invention relates to scalable encoders and decoders, and more particularly to the generation of scalable data streams.
  • Scalable encoders are shown in EP 0 846 375 B1.
  • scalability is understood to mean the possibility of a subset of a bit stream that contains an encoded data signal, e.g. represents an audio signal or a video signal to be decoded into a usable signal. This property is particularly desirable when e.g. a data transmission channel does not provide the full bandwidth required to transmit a full bit stream.
  • incomplete decoding on a decoder with lower complexity is possible.
  • different discrete scalability layers are defined in practice.
  • FIG. 1 An example of a scalable encoder as defined in subpart 4 (general audio) of part 3 (audio) of the MPEG-4 standard (ISO / IEC 14496-3: 1999 subpart 4) is shown in FIG. 1 .
  • An audio signal s (t) to be coded is fed into the scalable encoder on the input side.
  • the scalable encoder shown in Fig. 1 includes a first encoder 12, which is an MPEG-Celp encoder.
  • the second encoder 14 is an AAC encoder that provides high quality audio coding and is defined in the MPEG-2 AAC (ISO / IEC 13818) standard.
  • the Celp encoder 12 supplies a first scaling layer via an output line 16, while the AAC encoder 14 supplies a second scaling layer to a bit stream multiplexer (BitMux) 20 via a second output line 18.
  • the LATM format is described in Section 6.5 of Part 3 (Audio) of the first addition to the MPEG-4 standard (ISO / IEC 14496-3: 1999 / AMD1: 2000).
  • the scalable audio encoder also includes some other elements. First there is a delay stage 24 in the AAC branch and a delay stage 26 in the Celp branch. An optional delay can be set for each branch using both delay levels.
  • the delay stage 26 of the Celp branch is followed by a downsampling stage 28 in order to adapt the sampling rate of the input signal s (t) to the sampling rate required by the Celp encoder.
  • An inverse celp decoder 30 is connected downstream of the celp encoder 12, the celp-coded / decoded signal being fed to an upsampling stage 32.
  • the sampled up signal is then fed to a further delay stage 34, which is referred to in the MPEG-4 standard as "core encoder or delay".
  • the CoreDoderDelay 34 level has the following function. If the delay is set to zero, the first encoder 14 and the second encoder 16 process exactly the same samples of the audio input signal in a so-called superframe.
  • a superframe can consist, for example, of three AAC fraraes, which together have a certain number of samples H. Represent x to number y of the audio signal.
  • a CoreCoderDelay D is set as a time variable other than zero, the three blocks of AAC frames nevertheless represent the same sample values No. x to 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 is assumed for the following explanations without restricting generality, so that the current time period of the input signal for the first encoder and the current time period for the second encoder are identical.
  • the only requirement for a superframe is that the AAC block (s) and the CELP blocks (s) in a superframe represent the same number of samples, the samples themselves not necessarily being identical, but also around CoreCoderDelay can be shifted to each other.
  • the Celp encoder processes a section of the input signal s (t) faster than the AAC encoder 14.
  • the optional delay stage 24 is followed by a block decision stage 26, which may be used. a. determines whether short or long windows should be used to window the input signal s (t), whereby short windows should be selected for strongly transient signals, while long windows are preferred for less transient signals, since the relationship between the amount of user data and side information is better for them than with short windows.
  • a fixed delay of z. B. performs 5/8 times a block. This is referred to in technology as the look-ahead function.
  • the output signals of the MDCT blocks 36, 38 are then fed to a subtractor 40.
  • the subsequent block 44 determines whether it is more favorable to feed 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 at the output of the subtractor 40 is e.g. is lower in energy than the signal output by the MDCT block 38, the difference signal is not taken, but the difference signal, in order to be encoded by the AAC encoder 14 in order to finally form the second scaling layer 18. This comparison can be carried out in bands, which is indicated by a frequency-selective switching device (FSS) 44.
  • FSS frequency-selective switching device
  • An essential feature of the MPEG-4 standard and also of other encoder standards is that the transmission of the compressed data signal should take place over a channel with a constant bit rate.
  • All high-quality audio codecs work block-based, ie they process blocks of audio data (order of magnitude 480-1024 samples) to pieces of a compressed bit stream, which are also referred to as frames.
  • the bitstream format must be constructed in such a way that a decoder without a priori information, where a frame begins, is able to recognize the beginning of a frame in order to delay the output of the deco with the least possible delay. audio signal data. Therefore, each header or destination data block of a frame begins with a particular synchronization word that can be searched for in a continuous bit stream.
  • Other common components in the data stream in addition to the determination data block are the main data or "payload data" of the individual layers, in which the actual compressed audio data are contained.
  • bit stream format shows a bit stream format with a fixed frame length, in this bit stream format the headers or determination data blocks are inserted equidistantly into the bit stream.
  • the side information and main data associated with this header follow immediately behind.
  • the length, i.e. Number of bits, for the main data is the same in every frame.
  • Such a bit stream format is used for example in MPEG Layer 2 or MPEG-CELP.
  • Fig. 5 shows another bit stream format with a fixed frame length and a back pointer or backward pointer.
  • the header and page information are arranged equidistantly as in the format shown in FIG. 4.
  • the start of the associated main data only occurs in exceptional cases immediately after a header. In most cases, the start is in one of the previous frames.
  • the number of bits by which the start of the main data in the bit stream is shifted is transmitted by the side information variable back pointer.
  • 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.
  • This technique is called "bit savings bank” and increases the theoretical delay in the transmission chain.
  • Such a bitstream format is used for example in MPEG Layer 3 (MP3).
  • MP3 MPEG Layer 3
  • the Bit savings bank technology is also described in the MPEG Layer 3 standard.
  • the bit savings bank represents a buffer of bits that can be used to provide more bits for coding a block of temporal samples than are actually permitted by the constant output data rate.
  • the technology of the bit savings bank takes into account the fact that some blocks of audio samples can be coded with fewer bits than specified by the constant transmission rate, so that these blocks fill the bit bank, while still other blocks of audio samples have psychoacoustic properties that are not so allow large compression, so that the available bits would not be sufficient for these blocks for low-interference or interference-free coding.
  • the required surplus bits are taken from the bit savings bank, so that the bit savings bank is emptied in such blocks.
  • Such an audio signal could also be transmitted in a format with a variable frame length.
  • bit stream format “variable frame length”
  • the fixed order of the bit stream elements header, page information and main data is maintained as with the "fixed frame length”. Since the length of the main data is not constant, the bit savings bank technique can also be used here, but no back pointers as in FIG. 5 are required.
  • An example of a bit stream format, as shown in FIG. 6, is the transport format ADTS (Audio Data Transport Stream), as defined in the MPEG 2 AAC standard.
  • encoders are not all scalable encoders, but only comprise a single audio encoder.
  • the portions of the first scaling layer in the bit stream are given priority over the second and further scaling layers during transmission, which ensures the transmission of the first scaling layer in the event of capacity bottlenecks in the transmission network, while the second scaling layer may be lost in whole or in part.
  • the MPEG 4 version 2 standardizes the LATM transport format, which can also transmit scalable data streams.
  • FIG. 2a is a schematic representation of the samples of the input signal s (t).
  • the input signal can be divided into different successive sections 0, 1, 2, 3, each section having a certain fixed number of temporal samples.
  • the AAC encoder 14 (FIG. 1) usually processes an entire section 0, 1, 2 or 3 to provide an encoded data signal for that section.
  • the celp encoder 12 (FIG. 1) usually processes a smaller amount of temporal samples per coding step.
  • FIG. 2b it is shown in FIG. 2b that the celp encoder, or generally speaking the first encoder or coder 1, has a block length which is one quarter of the block length of the second encoder. It should be noted that this division is completely arbitrary.
  • the block length of the first encoder could also be half as long, but could also be one eleventh of the block length of the second encoder.
  • the first encoder will generate four blocks (11, 12, 13, 14) from the section of the input signal, from which the second encoder supplies a block of data.
  • a conventional LATM bitstream format is shown in FIG. 2c.
  • a superframe can have different ratios of the number of AAC frames to the number of CELP frames, as is tabulated in MPEG 4. So a superframe z. B. an AAC block and 1 to 12 CELP blocks, 3 AAC blocks and 8 CELP blocks but also z. B. have more AAC blocks than CELP blocks depending on the configuration.
  • a LATM frame that has a LATM determination data block comprises one or more superframes.
  • the generation of the LATM frame opened by header 1 is described as an example.
  • the output data blocks 11, 12, 13, 14 of the Celp encoder 12 (FIG. 1) are generated and buffered.
  • the output data block of the AAC encoder which is labeled "1" in FIG. 2c, is generated.
  • the determination data block (header 1) is only written.
  • the output data block of the first encoder which is generated first and is designated 11 in FIG. 2c, can then be written, ie transmitted, directly after the header 1.
  • bit stream formats shown in FIGS. 4 to 6 are known only for simple encoders, but not for scalable encoders and in particular not for scalable encoders with a bit savings bank function.
  • the bit savings bank is used so that the variable output data rate that a psychoacoustic encoder inherently generates can be adapted to a constant output data rate.
  • the number of bits an audio encoder requires depends on the signal properties. If the signal is such that it can be quantized relatively roughly, a relatively small amount of bits is required to encode this signal. However, if the signal is such that it has to be quantized very finely in order not to introduce audible interference, a larger number of bits are required to encode this signal.
  • an average number of bits is set for a section of a signal to be encoded. If the amount of bits actually required for coding a section is smaller than the specified number of bits, the bits that are not required can be inserted into the bit savings bank. The bit savings bank is filling up. If, on the other hand, a section of a If the signal is obtained in such a way that a larger number of bits than the specified number is required for coding so that no audible interference is introduced into the signal, the additional bits required can be taken from the bit savings bank. This will empty the bit savings bank. This can ensure that a constant output data rate is obtained and that no audible interference is introduced into the audio signal. The prerequisite for this is that the bit savings bank is chosen to be sufficiently large.
  • bit savings bank In the MPEG AAC standard (13818-7: 1997), the bit savings bank is referred to as a "bit reservoir".
  • the maximum size of the bit savings bank for constant data rate channels can be calculated by subtracting the average number of bits per block from the maximum decoder input buffer size. According to the MPEG AAC standard, its value is fixed 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.
  • the maximum value of the bit savings bank i.e.
  • the size of the bit savings bank is dimensioned so large that audible interference is introduced into the audio signal even under bad circumstances, that is to say even if the signal contains many sections which cannot be coded with the specified number of bits to maintain the constant output data rate. This is only possible if the bit savings bank is of a sufficiently large size that it will never become empty.
  • the size of the bit savings bank is 10,240 bits. This leads to an inherent initial delay of about 0.1 s due to the bit savings bank. The longer the maximum size of the bit savings bank is chosen, and the smaller the transmission rate is, the greater the delay.
  • the object of the present invention is to provide an encoder with a bit savings bank function, by means of which a lower transmission delay can be achieved.
  • Another object of the present invention is to provide a method and an apparatus for generating a scalable data stream in which a bit savings bank function can be signaled.
  • Another object of the present invention is to provide a method and an apparatus for decoding a scalable data stream in which a bit savings bank function is signaled.
  • the present invention is based on the finding that the previous concept of the fixed bit savings bank size has to be abandoned in order to achieve deceleration with less delay.
  • This is achieved according to the invention by making the maximum size of the bit savings bank of an encoder adjustable, a specific setting of the bit savings bank being achieved depending on the application and depending on the intended decoder function.
  • a large bit savings bank can be selected to meet the highest audio quality requirements, while in the case of bidirectional communication in which there is a frequent change of transmitter and receiver or a frequent change of speakers, a smaller bit savings bank size is to be set.
  • the bit savings size In order for the decoder to benefit from a smaller bit savings size setting, the bit savings size must somehow be communicated to the decoder. This can be achieved on the one hand by transmitting additional information in the data stream, but it can also, as is shown in particular on the basis of the scalable case, implicitly without transmitting additional information Side information or signaling information is provided.
  • An advantage of the present invention is that the decoder delay can now be influenced directly by setting the maximum size of the bit savings bank. If the maximum size of the bit savings bank is chosen to be smaller, the decoder can also insert a smaller delay before it begins decoding, without the risk that it will run out of output data during decoding, which is to be avoided in any case.
  • the "price" to be paid for this is that one or the other section of the audio signal has not been encoded with 100% audio quality, since the bit savings bank was empty and no extra bits were available. In such a case, an audio encoder usually reacts by violating the psychoacoustic masking threshold during the quantization and by choosing a coarser quantization than is actually necessary in order to manage with the number of bits available.
  • the variability of the bit savings bank according to the invention and the associated variability of the decoder-side connections Delay is particularly advantageous in the case of a scalable audio encoder, since decoder with less delay can now be achieved not only in the first lowest scaling layer, but also decoder with lower delay and higher scaling layers, which are generated, for example, by an AAC encoder.
  • only one scaling layer is influenced by the variable setting of the bit savings bank size, while the other or the other scaling layers remain unaffected. This means that individual scaling layers can be targeted, while no changes are brought about in the other scaling layers.
  • an adjustable bit savings bank size can be achieved simply by positioning a determination data block in the scalable data stream without additional page information.
  • the determination data block is positioned in the bit stream such that the decoder, when it receives the determination data block, must receive as many bits for the corresponding layer as is predetermined by the average block length.
  • the decoder can start decoding without calculating or inserting a delay. This is achieved in that the determination data block with regard to the useful data is already in the scalable data stream the first and second scaling layers are written with a delay, preferably with a delay that corresponds to the setting of the bit savings bank size. This ensures that the encoder can select any size of the bit savings bank, depending on the requirement, and simply implicitly signals the selected bit savings size to the decoder to the effect that it enters the determination data block in the bit stream with a delay with respect to the useful data.
  • the current status of the bit savings bank can then be signaled by a so-called back pointer, where the data of a previous section ends and where the data of the current section begin.
  • the decoder can also interpret the offset information as a backpointer in order to know which data of the bit stream now belong to a determination data block and thus correspond to a time segment of the input signal, taking into account the variable core encoder delay, if necessary.
  • An important advantage of this arrangement is that the decoder does not have to calculate and insert a delay when it receives a data stream according to the invention, but that the delay has already been taken into account on the coding side solely by the positioning of the determination data block.
  • the decoder can therefore output a frame immediately upon receipt. This also opens up the possibility of signaling a set maximum bit savings bank size in a simple manner, namely without additional bits.
  • the signaling can be carried out simply and without effort, namely by the position of the determination data block, it is also possible without further ado and in particular without access to the decoder to vary the size of the bit savings bank in order to be able to set the transmission delay as required.
  • Fig. La shows a scalable encoder according to MPEG 4, which has the present invention
  • 2a shows a schematic representation of an input signal which is divided into successive time segments
  • 2b shows a schematic representation of an input signal which is divided into successive time segments, the ratio of the block length of the first encoder to the block length of the second encoder being shown;
  • 2c is a schematic representation of a scalable data stream with high delay in decoding. tion of the first scaling layer;
  • 2d shows a schematic illustration of a scalable data stream with low delay in the decoding of the first scaling layer
  • 2e shows a schematic representation of a scalable data stream according to the invention, in which the determination data block is delayed compared to the user data;
  • FIG. 3 shows a detailed illustration of the scalable data stream according to the invention using the example of a Celp encoder as the first encoder and an AAC encoder as the second encoder with bit savings bank function.
  • FIG. 5 shows an example of a bit stream format with a fixed frame length and back pointer
  • FIG. 6 shows an example of a bit stream format with a variable frame length.
  • the scalable data stream contains successive determination data blocks, which are designated as header 1 and header 2.
  • the determination data blocks are LATM headers.
  • the LATM header 200 is that from the top left parts of the output data block of the AAC encoder hatched to the lower right, which are entered in remaining gaps between output data blocks of the first encoder.
  • the frame started by the LATM header 200 no longer only contains output data blocks of the first encoder which belong to this frame, such as the output data blocks 13 and 14, but also the output data blocks 21 and 22 of the subsequent section of input data.
  • the two output data blocks of the first encoder which are designated by 11 and 12, are present in the transmission direction (arrow 202) in front of the LATM header 200 in the bit stream.
  • the offset information 204 indicate an offset of the output data blocks of the first encoder from two output data blocks. If FIG. 2d is compared with FIG.
  • the decoder can already decode the lowest scaling layer earlier by a time corresponding to this offset than in the case of FIG. 2c if the decoder is only interested in the first scaling layer is.
  • the offset information e.g. B. can be signaled in the form of a "core frame offset" are used to determine the position of the first output data block 11 in the bit stream.
  • the bit stream designated in FIG. 2c results.
  • the core frame offset is> zero
  • the corresponding output data block of the first encoder 11 is transmitted earlier by the number of core frame offset of output data blocks of the first encoder.
  • the delay between the first output data block of the first encoder after the LATM header and the first AAC frame results from the core encoder delay (FIG. 1) + core frame offset x core block length (block oil 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 are transmitted.
  • the output data blocks 13 and 14 can follow the LATM header 200, whereby the delay in the case of pure celp decoding, that is to say decoding of the first scaling layer, is reduced by two celp block lengths.
  • an offset of three blocks would be optimal.
  • an offset of one or two blocks also brings a delay advantage.
  • This bitstream structure enables the celp encoder to transmit the generated celp block immediately after encoding.
  • no additional delay is added to the Celp encoder by the bit stream multiplexer (20).
  • no additional delay is added to the celp delay by the scalable combination, so that the delay becomes minimal.
  • the case shown in FIG. 2d is only exemplary. So different ratios of the block length of the first encoder to the block length of the second encoder are possible, the z. B. can vary from 1: 2 to 1:12 or can take other ratios.
  • FIG. 2c shows a scalable data stream according to the LATM format, in which the data blocks of the first encoder have to be buffered, that is to say have to be delayed.
  • this is due to the fact that the header can only be written when the output data of the second encoder are present, since the header provides information about the length or the number of bits in the output data block of the second encoder.
  • FIG. 2d an improvement is already shown in that the output data blocks of the first encoder are written earlier in the bit stream in order to reduce the delay if a decoder only wants to decode the lowest scaling layer. Nevertheless, the determination data block still precedes the output data block of the second encoder, which is labeled "1" in Fig. 2d.
  • Fig. 2e compared to Fig. 2c, the scalable data stream according to the invention is now shown, in which the determination data block (header 1 200) is no longer written immediately when it is available, that is to say before the output data block of the first encoder which is associated with is designated "11", but in which the determination data block 200 is written into the data stream with a delay compared to the case of FIG. 2c.
  • this time period is equal to the maximum size of the bit savings bank (Max Bufferfullness 250).
  • the output encoder block of the second encoder for the current portion of the input signal designated by the destination data block 200 begins a number of bits equal to buffer fullness 260 in the direction of transmission from an encoder to a decoder before the destination data. block, while when looking at Fig. 2c, the AAC data has started after the determination data block.
  • the pointer 260 is thus a back pointer.
  • the ratio of four blocks of output data of the first encoder to one block of output data of the second encoder in the example shown in FIG. 2e For the same number of samples only as an example, starting from the determination data block, a core frame offset is now also signaled, as in the case of FIG. 2d, so that a decoder knows which blocks of output data of the first encoder form, for example, a block of output data of the belong to the second encoder or are related to one another via a core encoder or delay.
  • FIG. 2d is now compared with FIG. 2e, it can be seen 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 increase to a value of 5 in relation to the case of FIG. 2e, since the determination data block 200 in FIG. 2e increases in comparison with FIG 2d has shifted 3 output data blocks of the first encoder backwards.
  • the scalable encoder according to the invention which is shown in FIG. 1 a, contains a block of bit savings bank controller 50 and a control line 52 from the AAC encoder 14 to the bit stream multiplexer 20, via which the maximum size of the bit bank savings bank, the has been set by the bit savings bank controller 50, can be communicated to the bit stream multiplexer so that it can carry out the bit stream formatting required in FIG. 2e.
  • Fig. 1b there is a schematic block diagram of a scalable decoder which is complementary to the scalable encoder in Fig. La.
  • the scalable bit stream which is supplied to the encoder via line 60, is fed into an input buffer / bit stream demultiplexer 62 of the decoder.
  • the bit stream is split to extract the blocks needed for a CELP decoder 64 and an AAC decoder 66.
  • the decoder according to the invention further comprises an AAC delay stage 68 which is there to introduce a delay corresponding to the size of the bit savings bank so that the AAC decoder 66 never runs out of data for output.
  • this AAC delay stage is now designed to be variable, the delay being controlled as a function of bit savings bank information, which are extracted from the bit stream by bit stream demultiplexer 62 and fed to AAC delay stage 68 via a bit savings bank information line 70.
  • the delay of the AAC delay stage 68 is now set. If a small bit savings bank is set by the bit savings bank control device 50 from FIG. 1 a, the AAC delay stage 68 can also be set to a smaller delay, so that a deceleration of the second scaling layer with less delay 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 in a device 76, which is designated with 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 processed by a device 78 for performing a reverse transformation Frequency range transformed into the time domain, so that at output 80 either only the second scaling layer or else the first and second scaling layers are present in the time domain. In contrast, 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 is similar to FIG. 2, but represents the special implementation using the example of MPEG 4.
  • a current time period is shown hatched in the first line.
  • the windowing used in the AAC encoder is shown schematically. As is known, an overlap-and-add of 50% is used, so that a window is usually twice the length of time samples as the current time period, which is hatched in the top line of FIG. 3.
  • FIG. 3 also shows the delay tdip, which corresponds to block 26 of FIG. 1 and which in the selected example has a size of 5/8 of the block length.
  • a block length of the current time segment of 960 samples is typically used, so that the delay tdip of 5/8 of the block length is 600 samples.
  • the AAC encoder delivers a bit stream of 24 kbit / s
  • the Celp encoder shown schematically below delivers a bit stream at a rate of 8 kbit / s.
  • 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. This results in the delay that must be set by the stage 34 in order for the Subtracting point 40 from FIG. 1 has the same conditions, the delay, which is denoted by core code or delay and is illustrated by an arrow 304 in FIG. 3. Alternatively, this delay can also be generated by block 26. For example:
  • FIG. 3 In contrast to FIG. 2d, in which four output data blocks of the first encoder are generated in accordance with an output data block of the second encoder, in FIG. 3 two for an output data block of the second encoder, which is drawn in black in the last two lines of FIG. 3 Output data blocks of the Celp encoder, designated "0" and "1", are generated.
  • the output data block of the Celp encoder with the number "0" is no longer written behind a first LATM header 306, but rather the output data block of the Celp encoder with the number "one", especially since the output data block with the number "zero" has already been transmitted to the decoder.
  • the celp block 1 is followed by the celp block 2 for the next period of time, with the rest of the data of the output data block of the AAC encoder being written into the data stream until a frame is completed until another LATM header 308 follows for the next time period.
  • the present invention can, as shown in the last line of FIG. 3, simply with the bit savings bank function can be combined.
  • the variable "Bufferfullness" which indicates the filling of the bit savings bank, is less than the maximum value, this means that the AAC frame required more bits than actually permitted for the immediately preceding period of time.
  • the at least one output data block of the AAC encoder from one or more previous time segments must first be written into the bit stream before writing the output data block of the AAC encoder can be started for the current period. From the comparison of the last two lines of FIG.
  • bit savings bank function also leads directly to a delay in the encoder for the AAC frame.
  • the data for the AAC frame of the current time period which is designated by 310 in FIG. 3, is present at exactly the same time as in the case "1”, but can only be written into the bit stream after the AAC Data 312 for the immediately preceding period of time has been written into the bit stream. The starting position of the AAC frame is thus shifted depending on the bit savings bank level of the AAC encoder.
  • the bit savings bank status should be transferred in the LATM element StreamMuxConfig by the variable "Bufferfullness".
  • the variable buffer fullness is calculated from the variable bit reservoir divided by 32 times the currently existing number of channels of the audio channels.
  • pointer 314 is deliberately drawn interrupted below the celp block 2, since it does not take into account the length of the celp block 2 or the length of the celp block 1, since this data naturally has nothing to do with the bit savings bank of the AAC encoder. Furthermore, no header data and bits from any other layers that may be present are taken into account.
  • the celp frames are first extracted from the bit stream, which is readily possible since, for example, they are arranged equidistantly and have a fixed length.
  • the length and spacing of all CELP blocks can be signaled in the LATM header anyway, so that immediate decoding is possible in any case.
  • variable core frame offset can now be used to shift output data blocks of the first encoder forward in the bitstream, while arrow 314 (max bufferfullness - bufferfullness) can shift the output data block of the second encoder can be reached backwards in the scalable data stream, so that the bit savings bank function can also be implemented in the scalable data stream in a simple and safe manner, while the basic grid of the bit stream is maintained by the successive LATM determination data blocks which are written whenever the AAC encoder has encoded a time period, and which can therefore serve as a reference point, even if, as shown in the last line in FIG.
  • a large part of the data in the frame designated by a LATM header originates on the one hand from the next time period (regarding the C elp frames) or from previous time segments (with regard to the AAC frame), the respective shifts, however, being communicated to a decoder by the two variables additionally to be transmitted in the bit stream.
  • the last line of FIG. 3 describes the case in which the LATM header 306 is written to the bit stream immediately after it is generated, so that the LATM header 306 still has output data of the second encoder (312) of the previous period, the output data of the second encoder for the current period to which the LATM header 306 relates only follow the LATM header at a distance in the direction of transmission, the distance being determined by the There is a difference between Max Bufferfullness and Bufferfullness, as shown in FIG. 3.
  • the LATM header 306 is no longer written when it is created is written, but delayed by a time period that corresponds to Max Bufferfullness. Depending on the value of buffer fullness, the LATM header 306 would therefore be located after a position 330 in the bit stream, and the forward pointer 314 is replaced by a backward pointer (260 in FIG. 2e).
  • the following priority distribution is preferably preferred when writing data into the scalable bit stream, in order to achieve both low-delay decoding of the first scaling layer and low-delay decoding of the second scaling layer.
  • the output data blocks of the first encoder enjoy high priority. Whenever an output data block of the first encoder has been completely written, this output data block is written into the bit stream. Thus, when using a CELP encoder, the equidistant grid of output data blocks of the first encoder, which also have the same length, is automatically obtained.
  • the writing of the output data of the AAC encoder for the current time period is also interrupted, when a LATM header is ready and has been delayed by Max Bufferfullness 250 (Fig. 2e).
  • the scalable bit stream is ready when the corresponding values for buffer fullness 260 and offset 270 are entered in the bit stream either separately or via the determination data block.
  • a decoding of a bit stream generated in this way is discussed below. If the decoder is only interested in the first scaling layer, i.e. in the output data blocks of the first encoder (CELP encoder), it will simply fetch one CELP block after the other from the bit stream and regardless of LATM header or AAC data decode. Since the CELP blocks are preferably written into the bit stream immediately after they have been generated, deceleration of the CELP blocks is ensured with little delay.
  • the decoder wants to decode both the first and the second scaling layer, i.e. if it wants to receive an audio signal with high quality, it must assign the CELP blocks and the AAC blocks for a superframe, i.e. for a certain number of sample values, with a core encoder delay (34 from FIG. 1 a) possibly also having to be taken into account if the current time segment of the input signal of the AAC encoder is shifted with respect to a superframe from the current time segment of the CELP encoder.
  • the decoder buffering the bit stream until it hits a LATM header, e.g. B. 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 the variable buffer fullness into account, the decoder also knows where in the data stored in the decoder input buffer the AAC frame of the time period to which the LATM header refers.
  • the entire AAC frame of interest is already contained in the decoder input buffer; in the case of buffer fullness equal to 0, the AAC frame of interest begins immediately after the LATM header, so that the decoder uses the data already stored in the input buffer or decode using a portion of the data stored in the input buffer and using an immediately arriving portion of data that is behind the LATM header in the direction of transmission without delay.
  • the bit savings bank size is thus implicitly signaled solely by the position of the determination data block with respect to the useful data in the bit stream, without any side information being required.
  • the variable delay stage in the decoder block 68 of FIG. 1b
  • the line 70 of FIG. 1b also become obsolete.

Abstract

Bei einem Verfahren zum Erzeugen eines skalierbaren Datenstroms wird, wenn ein Block (11) von Ausgangsdaten eines ersten Codierers vorliegt, dieser Block von Ausgangsdaten in den skalierbaren Datenstrom geschrieben. Falls Ausgangsdaten (0) eines zweiten Codierers für einen vorhergehenden Zeitabschnitt vorliegen, werden diese Ausgangsdaten für den vorhergehenden Abschnitt in Übertragungsrichtung hinter dem Block (11) von Ausgangsdaten des ersten Codierers in den Datenstrom geschrieben. Wenn Ausgangsdaten (1) des zweiten Codierers für den aktuellen Abschnitt vorliegen, werden die Ausgangsdaten des zweiten Codierers im Anschluß an die Ausgangsdaten des ersten Codierers in den Bitstrom geschrieben. Ein Bestimmungsdatenblock (200) wird erzeugt und um eine Zeitdauer (250) verzögert in den Bitstrom geschrieben, die der Größe der Bitsparkasse des zweiten Codierers entspricht. Schließlich werden Pufferinformationen (260) in den Bitstrom geschrieben, die anzeigen, wo der Beginn der Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt bezüglich des Bestimmungsdatenblocks ist, wobei die Pufferinformationen (260) dem Bitsparkassenstand entsprechen. Damit ist es möglich, auf einfache Art und Weise eine Bitsparkasse in einem skalierbaren Datenstrom zu signalisieren. Es kann ferner die maximale Größe der Bitsparkasse je nach beabsichtigter Decodiererverzögerung eingestellt werden und durch Positionieren des Bestimmungsdatenblocks im skalierbaren Datenstrom ohne einen Aufwand an zusätzlichen Bits einem Decodierer mitgeteilt werden, um die Anfangsverzögerung des Decodierers zu verkleinern.

Description

Verfahren und Vorrichtung zum Erzeugen bzw. Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkasse, Codierer und Skalierbarer Codierer
Beschreibung
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 Bl 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 De- codierung 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 Sub- part 4 (General Audio) des Parts 3 (Audio) des MPEG-4 Standards (ISO/IEC 14496-3:1999 Subpart 4) definiert ist, ist in Fig. 1 gezeigt. Ein zu codierendes Audiosignal s(t) wird eingangsseitig in den skalierbaren Codierer 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-Multi- plexer dann einen MPEG-4-LATM-Bitstrom 22 aus ( ATM = ow- 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 Downsa pling-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 upge- sampelte Signal wird dann einer weiteren Verzögerungsstufe 34, die im MPEG-4-Standard mit "Core Coder Delay" bezeichnet ist, zugeführt.
Die Stufe CoreDoderDelay 34 hat folgende Funktion. Ist die Verzögerung auf Null eingestellt, so verarbeiten der erste Codierer 14 und der zweite Codierer 16 in einem sogenannten Superframe exakt dieselben Abtastwerte des Audioeingangs- signals. Ein Superframe kann beispielsweise aus drei AAC- Fraraes bestehen, die zusammen eine gewisse Anzahl von Abtastwerten H . 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 Optionaive zögerungsstufe 24 eine Blockentscheidungsstufe 26 nachgeschaltet, die u. a. feststellt, ob zum Fenstern des Eingangssignals s(t) kurze oder lange Fenster zu verwenden sind, wobei für stark transiente Signale kurze Fenster zu wählen sind, während für weniger transiente Signale lange Fenster vorgezogen werden, da bei ihnen das Verhältnis zwischen Nutzdatenmenge und Seiteninformationen besser als bei kurzen Fenstern ist.
Durch die Blockentscheidungsstufe 26 wird im vorliegenden Beispiel eine feste Verzögerung um z. B. das 5/8-fache eines Blocks durchführt. Dies wird in der Technik als Look-Ahead- Funktion bezeichnet. Die Blockentscheidungsstufe muß bereits um eine gewisse Zeit vorausschauen, um überhaupt feststellen zu können, ob in der Zukunft transiente Signale sind, die mit kurzen Fenstern codiert werden müssen. Hierauf wird sowohl das entsprechende Signal im Celp-Zweig als auch das Signal im AAC-Zweig einer Einrichtung zum Umsetzen der zeitlichen Darstellung in eine spektrale Darstellung zugeführt, welche in Fig. l 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 ümgehungszweig 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 Sa ples) 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 deco- dierten 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/Deco- dierer zu einem skalierbaren Codierer/Decodierer vorgesehen. So ist es möglich und sinnvoll, einen Celp-Sprachcodierer als ersten Codierer mit einem AAC-Codierer für die weitere bzw. die weiteren Skalierungsschichten zu kombinieren und in einem Bitstrom zu verpacken. Der Sinn dieser Kombination 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 Skalierungsschiebt 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-Bit- stromformat gezeigt.
Ein Superframe kann verschiedene Verhältnisse von Anzahl von AAC-Frames zu Anzahl von CELP-Frames haben, wie es in MPEG 4 tabellarisch dargelegt ist. So kann ein Superframe z. B. einen AAC Block und 1 bis 12 CELP-Blöcke, 3 AAC-Blöcke und 8 CELP-Blöcke aber auch z. B. mehr AAC-Blöcke als CELP-Blöcke je nach Konfiguration aufweisen. Ein LATM-Frame, der einen LATM-Bestimmungsdatenblock hat, umfaßt einen Superframe oder auch mehrere Superframes.
Es wird beispielhaft die Erzeugung des durch den Header 1 eröffneten LATM-Frames beschrieben. Zunächst werden die Ausgangsdatenblöcke 11, 12, 13, 14 des Celp-Codierers 12 (Fig. 1) erzeugt und zwischengespeichert. Parallel dazu wird der Ausgangsdatenblock des AAC-Codierers , der in Fig. 2c mit "1" bezeichnet ist, erzeugt. Dann, wenn der 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 äquidi- stanten Abständen geschrieben bzw. übertragen werden. Der Ausgangsdatenblock 1 des zweiten Codierers wird während der Übertragung in die verbleibenden Lücken eingefüllt. Dann ist ein LATM-Frame fertig geschrieben, d. h. fertig übertragen.
Nachteilig an den in den Fig. 4 bis 6 dargestellten 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 psychoakusti- scher 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 codie- renden 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, 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 unmittel- bar 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 Bitspar- kassenfunktion 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 durch eine Vorrichtung nach Patentanspruch 9 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 Ver- zögerung ist insbesondere im Falle eines skalierbaren Audio- codierers 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 enpfangen 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 erstmöglichen Zeitpunkt, also d lay-opti irt 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-lnformationen 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. la einen skalierbaren Codierer gemäß MPEG 4, der die vorliegende Erfindung aufweist;
Fig. lb 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 Decodie- rung der ersten Skalierungsschicht;
Fig. 2d eine schematische Darstellung eines skalierbaren Datenstroms mit niedriger Verzögerung bei der Decodierung der ersten Skalierungsschicht;
Fig. 2e 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 Bitsparkassenfunk- tion.
Fig. 4 ein Beispiel für ein Bitstromformat mit fester Framelänge;
Fig. 5 ein Beispiel für ein Bitstromformat mit fester Framelänge und Back-Pointer; und
Fig. 6 ein Beispiel eines Bitstromformats mit variabler Framelänge.
Im nachfolgenden wird auf Fig. 2d im Vergleich zu Fig. 2c eingegangen, um zu Vergleichszwecken einen Bitstrom mit geringer Verzögerung der ersten Skalierungsschicht zu erläutern. Genauso wie in Fig. 2c enthält der skalierbare Datenstrom aufeinanderfolgende Bestimmungsdatenblöcke, die als Header 1 und Header 2 bezeichnet sind. Beim bevorzugten Ausführungsbeispiel der vorliegenden Erfindung, das gemäß dem MPEG 4-Standard ausgeführt ist, sind die 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 Off- set 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 (Blockölänge des Coders 1 in Fig. 2b). Wie aus dem vergleich von Fig. 2c und 2d deutlich wird, werden für Core Frame Offset = Null (Fig. 2c) nach dem LATM-Header 200 die Ausgangsdatenblöcke 11 und 12 des ersten Codierers übertragen. Durch die Übertragung von Core Frame Offset = 2 können die Ausgangsdatenblöcke 13 und 14 nach dem LATM-Header 200 folgen, wodurch die Verzögerung bei reiner Celp-Decodierung, also Decodierung der ersten Skalierungsschicht, um zwei Celp-Blocklängen verringert wird. Optimal wäre im Beispiel ein Offset von drei Blöcken. Ein Offset von einem oder zwei Blöcken bringt jedoch ebenfalls bereits einen Delayvorteil.
Durch diesen Bitstromaufbau ist es möglich, daß der Celp-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 Nutzinfor a- tionen 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 Bestimmungsdaten- block, 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 Bestimmungsdaten- block nunmehr ebenfalls wie im Fall von Fig. 2d ein Core Frame Offset signalisiert, damit ein Decodierer weiß, welche Blöcke von Ausgangsdaten des ersten Codierers zu 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. la Bezug genommen. Zusätzlich zu dem bereits in der Beschreibungseinleitung beschriebenen skalierbaren Codierer enthält der erfindungsgemäße skalierbare Codierer, der in Fig. la 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. lb findet sich ein schematisches Blockschaltbild eines skalierbaren Decodierers, der zu dem skalierbaren Codierer in Fig. la komplementär ist. Der skalierbare Bitstrom, der dem Codierer über eine Leitung 60 zugeführt wird, wird in einen Eingangspuffer/Bitstrom-Demultiplexer 62 des Decodierers eingespeist. Hier wird der Bitstrom aufgeteilt, um die für einen CELP-Decodierer 64 und einen AAC-Decodierer 66 benötigten Blöcke zu extrahieren. Der erfindungsgemäße Decodierer umfaßt ferner eine AAC-Verzögerungsstufe 68, die dafür da ist, um eine der Bitsparkassengröße entsprechende Verzögerung einzuführen, damit dem AAC-Decodierer 66 niemals Daten zur Ausgabe ausgehen. Erfindungsgemäß ist diese AAC- Verzögerungsstufe nunmehr variabel ausgestaltet, wobei die Verzögerung abhängig von Bitsparkasseninformationen 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. la eine kleine Bitsparkasse eingestellt, so kann auch die AAC- 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. lb 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 Addie- rer/FSS-1 bezeichnet ist, gleiche Verhältnisse vorliegen. Die Einrichtung 66 vollführt im wesentlichen die analoge Funktion wie der Subtrahierer 40 und die FSS 44 von Fig. 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 Skalierungs- Schicht 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 Bitsparkassen- funktion kombiniert werden. Für den Fall, daß die Variable "Bufferfullness", die die Füllung der Bitsparkasse anzeigt, kleiner als der maximale Wert ist, bedeutet dies, daß der AAC-Frame für den unmittelbar vorhergehenden Zeitabschnitt mehr Bits als eigentlich zulässig benötigt hat. Dies 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 Codie- rers als auch der Ausgangsdatenblock des zweiten Codierers folgt, kann nun einerseits durch die Variable Core Frame Offset eine Verschiebung von Ausgangsdatenblöcken des ersten Codierers nach vorne im Bitström 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-Ein- gangspuffer 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. lb) und die Leitung 70 von Fig. lb hinfällig.

Claims

Patentansprüche
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 iλbtastwerten 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:
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 Besti mungsdatenblocks (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 aus- gangsseitigen Datenstrom.
6. Skalierbarer Codierer mit folgenden Merkmalen:
einem ersten Codierer (12) zum Erzeugen eines Blocks von Ausgangsdaten für den ersten Codierer; einem zweiten Codierer (14) mit einer Bitsparkasse, 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 Audiodecodie- rer 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 Pu ferinformationen einem aktuellen Stand der Bitsparkasse entsprechen. 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 die Ausgangsdaten (0) des zweiten Codierers für den vorhergehenden Abschnitt des Eingangssignals für den zweiten Codierer vorliegen;
einer Einrichtung zum Schreiben von Ausgangsdaten des zweiten Codierers für den aktuellen Abschnitt des Zeitsignals für den zweiten Codierer in Ü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 Besti mungsdatenblocks 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 Cσdierers (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 Ab- schnitt des Eingangssignals für den zweiten Codierer darstellt, wobei die Anzahl von Abtastwerten für den ersten Codierer und die Anzahl von Abtastwerten für den zweiten Codierer gleich sind, und wobei die aktuellen Abschnitte für den ersten und den zweiten Codierer identisch sind oder um eine einstellbare Zeitdauer (34) zueinander verschoben sind, wobei der skalierbare 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 ei- nes 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.
PCT/EP2002/000294 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 WO2002063611A1 (de)

Priority Applications (9)

Application Number Priority Date Filing Date Title
CA002434882A CA2434882C (en) 2001-01-18 2002-01-14 Method and device for generating and/or decoding a scalable data stream with provision for a bit savings bank, encoder and scalable encoder
DE50200953T DE50200953D1 (de) 2001-01-18 2002-01-14 Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer
KR1020037009445A KR100576034B1 (ko) 2001-01-18 2002-01-14 비트 세이빙 뱅크, 인코더 및 스케일러블 인코더를 제공하여 스케일러블 데이터 스트림을 생성 및/또는 디코딩하는 방법 및 장치
US10/466,781 US7516230B2 (en) 2001-01-18 2002-01-14 Method and device for the generation or decoding of a scalable data stream with provision for a bit-store, encoder and scalable encoder
EP02718023A EP1338004B8 (de) 2001-01-18 2002-01-14 Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer
AU2002249122A AU2002249122B2 (en) 2001-01-18 2002-01-14 Method and device for the generation or decoding of a scalable data stream with provision for a bit-store, encoder and scalable encoder
AT02718023T ATE275751T1 (de) 2001-01-18 2002-01-14 Verfahren und vorrichtung zum erzeugen bzw. decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkasse, codierer und skalierbarer codierer
JP2002563470A JP3890300B2 (ja) 2001-01-18 2002-01-14 ビットセイビングバンク、エンコーダおよびスケーラブルエンコーダを備えたスケーラブルデータストリームを生成する方法と装置および復号化する方法と装置
HK03108993A HK1056641A1 (en) 2001-01-18 2003-12-11 Method and device for the generation or decoding of a scalable data stream with provision for a bit-tore, encoder and scalable encoder.

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10102159.3 2001-01-18
DE10102159A DE10102159C2 (de) 2001-01-18 2001-01-18 Verfahren und Vorrichtung zum Erzeugen bzw. Decodieren eines skalierbaren Datenstroms unter Berücksichtigung einer Bitsparkasse, Codierer und skalierbarer Codierer

Publications (1)

Publication Number Publication Date
WO2002063611A1 true WO2002063611A1 (de) 2002-08-15

Family

ID=7670988

Family Applications (1)

Application Number Title Priority Date Filing Date
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

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
WO2006041055A1 (ja) * 2004-10-13 2006-04-20 Matsushita Electric Industrial Co., Ltd. スケーラブル符号化装置、スケーラブル復号装置及びスケーラブル符号化方法
KR20070092240A (ko) * 2004-12-27 2007-09-12 마츠시타 덴끼 산교 가부시키가이샤 음성 부호화 장치 및 음성 부호화 방법
US8826093B2 (en) * 2005-01-19 2014-09-02 Qualcomm Incorporated Power saving method for coded transmission
US7809018B2 (en) * 2005-12-16 2010-10-05 Coding Technologies Ab Apparatus for generating and interpreting a data stream with segments having specified entry points
WO2007068296A1 (en) * 2005-12-16 2007-06-21 Dolby Sweden Ab Apparatuses, methods and computer program for generating and interpreting a data stream with a series of segments having specified entry points
US7590523B2 (en) * 2006-03-20 2009-09-15 Mindspeed Technologies, Inc. Speech post-processing using MDCT coefficients
EP1841072B1 (de) * 2006-03-30 2016-06-01 Unify GmbH & Co. KG Verfahren und Einrichtung zum Dekodieren von schichtkodierten Daten
US8190441B2 (en) * 2006-09-11 2012-05-29 Apple Inc. Playback of compressed media files without quantization gaps
JP4358215B2 (ja) * 2006-09-27 2009-11-04 株式会社東芝 動画像符号化装置及びその方法
ES2671711T3 (es) * 2008-09-18 2018-06-08 Electronics And Telecommunications Research Institute Aparato de codificación y aparato de decodificación para transformar entre codificador basado en transformada de coseno discreta modificada y hetero codificador
CN101771417B (zh) * 2008-12-30 2012-04-18 华为技术有限公司 信号编码、解码方法及装置、系统
BR112012026326B1 (pt) * 2010-04-13 2021-05-04 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V método e codificador e decodificador para representação com amostragem precisa de um sinal de áudio
US8532804B2 (en) * 2010-06-18 2013-09-10 Microsoft Corporation Predictive resampler scheduler algorithm
US8433823B2 (en) * 2010-09-03 2013-04-30 Tibco Software Inc. Random access data compression
KR20120084234A (ko) 2011-01-19 2012-07-27 삼성전자주식회사 Mpeg media transport(mmt)에서 mmt au를 전송하는 방법
TWI476761B (zh) * 2011-04-08 2015-03-11 Dolby Lab Licensing Corp 用以產生可由實施不同解碼協定之解碼器所解碼的統一位元流之音頻編碼方法及系統
US9905236B2 (en) 2012-03-23 2018-02-27 Dolby Laboratories Licensing Corporation Enabling sampling rate diversity in a voice communication system
TWI505262B (zh) 2012-05-15 2015-10-21 Dolby Int Ab 具多重子流之多通道音頻信號的有效編碼與解碼
US10199043B2 (en) * 2012-09-07 2019-02-05 Dts, Inc. Scalable code excited linear prediction bitstream repacked from a higher to a lower bitrate by discarding insignificant frame data
US9564136B2 (en) * 2014-03-06 2017-02-07 Dts, Inc. Post-encoding bitrate reduction of multiple object audio
US10283091B2 (en) * 2014-10-13 2019-05-07 Microsoft Technology Licensing, Llc Buffer optimization

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0918401A2 (de) * 1997-11-20 1999-05-26 Samsung Electronics Co., Ltd. Skalierbares Audiokodier und Dekodierverfahren und Gerät

Family Cites Families (24)

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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0918401A2 (de) * 1997-11-20 1999-05-26 Samsung Electronics Co., Ltd. Skalierbares Audiokodier und Dekodierverfahren und Gerät

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BRANDENBURG K ET AL: "MPEG-4 NATURAL AUDIO CODING", SIGNAL PROCESSING. IMAGE COMMUNICATION, ELSEVIER SCIENCE PUBLISHERS, AMSTERDAM, NL, vol. 15, January 2000 (2000-01-01), pages 423 - 444, XP000885372, ISSN: 0923-5965 *

Also Published As

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

Similar Documents

Publication Publication Date Title
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
DE19628292B4 (de) Verfahren zum Codieren und Decodieren von Stereoaudiospektralwerten
EP1647010B1 (de) Audiodateiformatumwandlung
EP2119078B1 (de) Vorrichtung und verfahren zum erzeugen eines zu sendenden signals oder eines decodierten signals
DE60117471T2 (de) Breitband-signalübertragungssystem
EP1382038A2 (de) Vorrichtung und verfahren zum einbetten eines wasserzeichens in ein audiosignal
EP2245621B1 (de) Verfahren und mittel zur enkodierung von hintergrundrauschinformationen
EP1327243B1 (de) Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms
DE19742655C2 (de) Verfahren und Vorrichtung zum Codieren eines zeitdiskreten Stereosignals
EP1953739A2 (de) Verfahren und Vorrichtung zur Geräuschunterdrückung
EP1023777B1 (de) Verfahren und vorrichtung zur erzeugung eines bitratenskalierbaren audio-datenstroms
DE102006055737A1 (de) Verfahren zur skalierbaren Codierung von Stereo-Signalen
DE60217612T2 (de) Verfahren und Vorrichtung zur Kodierung und Dekodierung von Sprachsignalen
DE4430864C2 (de) Verfahren zum unbemerktem Übertragen und/oder Speichern von Zusatzinformationen innerhalb eines quellencodierten, datenreduzierten Audiosignals
EP1354314B1 (de) Verfahren und vorrichtung zum erzeugen eines skalierbaren datenstroms und verfahren und vorrichtung zum decodieren eines skalierbaren datenstroms unter berücksichtigung einer bitsparkassenfunktion
EP2245622B1 (de) Verfahren und mittel zur dekodierung von hintergrundrauschinformationen
DE2303497C2 (de) Verfahren zur Übertragung von Sprachsignalen
DE10339498B4 (de) Audiodateiformatumwandlung
WO2005034091A1 (de) Verfahren und anordnung zur audioübertragung
DE102005032079A1 (de) Verfahren und Vorrichtung zur Geräuschunterdrückung

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2002718023

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2002249122

Country of ref document: AU

WWE Wipo information: entry into national phase

Ref document number: 2434882

Country of ref document: CA

Ref document number: 1020037009445

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 2002563470

Country of ref document: JP

WWP Wipo information: published in national office

Ref document number: 2002718023

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1020037009445

Country of ref document: KR

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWE Wipo information: entry into national phase

Ref document number: 10466781

Country of ref document: US

WWG Wipo information: grant in national office

Ref document number: 2002718023

Country of ref document: EP

WWG Wipo information: grant in national office

Ref document number: 2002249122

Country of ref document: AU

WWG Wipo information: grant in national office

Ref document number: 1020037009445

Country of ref document: KR