The invention relates to digital signal processing, and more particularly to the computation of an MDCT.
Many audio and video codecs like MPEG ½ Layer III, ATRAC, AAC and others use the MDCT. Performing an MDCT is quite expensive both in terms of the required computing power as well as the required storage space. This is particularly disadvantageous for consumer devices as a relatively expensive central processing unit (CPU) and a large memory are required to calculate the required MDCTs. Various attempts have been made in the prior art to reduce the computational complexity of an MDCT. Such methods are disclosed for example in WO-A-O1/59603 and in V. Britanak, K. R. Rao, “A new fast algorithm for the unified forward and inverse MDCT/MDST computation”, Signal Processing 82 (2002), 433-459.
The MDCT can be calculated either directly in a double loop or using an FFT. Since the latter involves transformation of a signal length that is the double of the original length N, and some data copying, the former is—dependent on the processor used—faster for shorter MDCT block lengths. Especially the MDCT of MPEG ½ Layer III has a length of ‘18’, which cannot be easily calculated with an FFT since ‘18’ it is not a power of ‘2’.
A problem to be solved by the invention is performing an MDCT that requires a reduced amount of computing power and memory. This problem is solved by the method disclosed in claim 1. A corresponding computer program product implementing such method is disclosed in claim 5. An electronic circuit that utilises this method is disclosed in claim 6, and a corresponding codec is disclosed in claim 10.
Advantageously the invention facilitates reducing the number of multiplications and additions in the loop of the direct calculation of the MDCT by a factor of ‘2’, for the expense of N/2 additional additions, with N being the length of a processing or transform block for sample values of the input signal. N can be a number that is not a power of ‘2’, for example N=18.
The invention enables to calculate an MDCT by performing only N2/4 multiplications for transforming a digital input signal of length N. This is accomplished by first generating an intermediate signal based on the input signal. For the generation of the intermediate signal, additions and subtractions only are required, which are far less computationally expensive than multiplications.
In accordance with a further embodiment of the invention a cosine table is used for calculating the MDCT. The cosine table requires a number of N2/2 cosine values only such that a relatively small memory can be used for the implementation of the invention.
The invention is particularly advantageous for audio and/or video codecs, such as MPEG ½ layer III, ATRAC, AAC and others. The invention enables to construct an audio and/or video consumer device, such as an MPEG player or a DVD player, with reduced processing power and memory requirements.
In principle, the inventive method is suited for performing a modified discrete cosine transform of a digital input signal of length N, the method including the steps of:
In principle the inventive electronic circuit performs a modified discrete cosine transform of a digital input signal of length N, the electronic circuit including:
Advantageous additional embodiments of the invention are disclosed in the respective dependent claims.
Exemplary embodiments of the invention are described with reference to the accompanying drawings, which show in:
In accordance with the flow chart of
A direct calculation of the MDCT can carried out as follows:
The inventive calculation of the intermediate signal in step 102 can be performed as follows:
It is to be noted that the calculation of the intermediate signal does not require multiplications and is therefore very fast.
On the basis of this intermediate signal xx the MDCT can be calculated as follows:
It is particularly advantageous that the calculation of the MDCT requires a number of only N2/4 multiplications with the cosine values.
Program code for performing the calculation of the intermediate signal (cf. step 102 of
Cosine table 208 has a number of N2/2 cosine value entries which are used by the processing unit 202 when the program code of program memory 208 is executed in order to perform the required multiplications with the cosine values to obtain the MDCT transformed output signal y.
| Number | Date | Country | Kind |
|---|---|---|---|
| 03090016.1 | Jan 2003 | EP | regional |
| Filing Document | Filing Date | Country | Kind | 371c Date |
|---|---|---|---|---|
| PCT/EP03/14930 | 12/29/2003 | WO | 7/15/2005 |