The present disclosure relates generally to computers and computer-related technology. More specifically, the present disclosure relates to audio processing techniques that may be utilized in computing devices, including mobile computing devices, portable media players, mp3 players, PDAs, etc.
The term audio processing may refer to the processing of audio signals. Audio signals are electrical signals that represent audio, i.e., sounds that are within the range of human hearing. Audio signals may be either
A unified filter bank for performing signal conversions is disclosed. The unified filter bank may include an interface that receives signal conversion commands and accompanying data in relation to multiple types of compressed audio bitstreams. The unified filter bank may also include a reconfigurable transform component that performs a transform as part of signal conversion for the multiple types of compressed audio bitstreams. The unified filter bank may also include complementary modules that perform complementary processing as part of the signal conversion for the multiple types of compressed audio bitstreams. The unified filter bank may also include an interface command controller that controls the configuration of the reconfigurable transform component, the configuration of the complementary modules, and the order in which the complementary modules are connected and executed.
A method for implementing a unified filter bank that performs signal conversions is also disclosed. The method may include receiving signal conversion commands and accompanying data in relation to multiple types of compressed audio bitstreams. The method may also include performing at least one transform as part of signal conversion for the multiple types of compressed audio bitstreams. The method may also include performing complementary processing as part of the signal conversion for the multiple types of compressed audio bitstreams. The method may also include controlling the configuration of a reconfigurable transform component that performs the at least one transform, the configuration of complementary modules that perform the complementary processing, and the order in which the complementary modules are connected and executed.
An apparatus for implementing a unified filter bank that performs signal conversions is also disclosed. The apparatus may include means for receiving signal conversion commands and accompanying data in relation to multiple types of compressed audio bitstreams. The apparatus may also include means for performing at least one transform as part of signal conversion for the multiple types of compressed audio bitstreams. The apparatus may also include means for performing complementary processing as part of the signal conversion for the multiple types of compressed audio bitstreams. The apparatus may also include means for controlling the configuration of a reconfigurable transform component that performs the at least one transform, the configuration of complementary modules that perform the complementary processing, and the order in which the complementary modules are connected and executed.
A computer-readable medium for implementing a unified filter bank is also disclosed. The computer-readable medium may include instructions which, when executed by a processor, cause the processor to receive signal conversion commands and accompanying data in relation to multiple types of compressed audio bitstreams. The instructions may also cause the processor to perform at least one transform as part of signal conversion for the multiple types of compressed audio bitstreams. The instructions may also cause the processor to perform complementary processing as part of the signal conversion for the multiple types of compressed audio bitstreams. The instructions may also cause the processor to control the configuration of a reconfigurable transform component that performs the at least one transform, the configuration of complementary modules that perform the complementary processing, and the order in which the complementary modules are connected and executed.
An integrated circuit for implementing a unified filter bank is also disclosed. The integrated circuit may be configured to receive signal conversion commands and accompanying data in relation to multiple types of compressed audio bitstreams. The integrated circuit may also be configured to perform at least one transform as part of signal conversion for the multiple types of compressed audio bitstreams. The integrated circuit may also be configured to perform complementary processing as part of the signal conversion for the multiple types of compressed audio bitstreams. The integrated circuit may also be configured to control the configuration of a reconfigurable transform component that performs the at least one transform, the configuration of complementary modules that perform the complementary processing, and the order in which the complementary modules are connected and executed.
The core decoding processor 104 may be configured to decode compressed audio of a variety of different formats. Some examples of compressed audio formats that may be supported by the core decoding processor 104 include MPEG-1 Audio Layer 3 (MP3), Advanced Audio Coding (AAC), High Efficiency AAC (HE-AAC), HE-AAC version 2 (HE-AAC v2), Windows Media Audio (WMA), WMA Pro, Dolby AC-3, Dolby eAC-3, Digital Theater System (DTS), etc. This list of audio formats is provided for purposes of example only. The methods described herein may be used in the decoding of other audio formats in addition to those specifically listed here.
The decoding steps for some compressed audio formats are shown in
As another example, decoding a WMA bitstream 102b may involve Huffman decoding 108, inverse quantization 110, spectral processing 112, and frequency-to-time conversion 114a, resulting in decoded PCM samples 106b.
As another example, decoding an AAC bitstream 102c may involve Huffman decoding 108, inverse quantization 110, spectral processing 112, and frequency-to-time conversion 114a, resulting in decoded PCM samples 106c.
As another example, decoding an HE-AAC bitstream 102d may involve Huffman decoding 108, inverse quantization 110, spectral processing 112, frequency-to-time conversion 114a, time-to-frequency conversion 114b, spectral band replication processing 120, and another frequency-to-time conversion 114a, resulting in decoded PCM samples 106d.
As another example, decoding an HE-AAC v2 bitstream 102e may involve Huffman decoding 108, inverse quantization 110, spectral processing 112, frequency-to-time conversion 114a, time-to-frequency conversion 114b, spectral band replication processing 120, parametric stereo processing 122, and another frequency-to-time conversion 114a, resulting in decoded PCM samples 106e.
As another example, decoding an MP3 bitstream 102f may involve Huffman decoding 108, inverse quantization 110, and frequency-to-time conversion 114a, resulting in decoded PCM samples 106f.
The decoding steps other than frequency-to-time and/or time-to-frequency conversions 114 may be performed by the core decoding processor 104. The frequency-to-time and/or time-to-frequency conversions 114 may be performed by the unified filter bank block 124. In other words, whenever a time-to-frequency conversion or a frequency-to time conversion is to be performed as part of the process of decoding an input audio bitstream 102, the core decoding processor 104 may make a call to the unified filter bank block 124, which may perform the corresponding conversion. The unified filter bank block 124 may be able to perform all the conversions 114 regardless of the format of the audio bitstream 102 that is being decoded. In other words, the unified filter bank block 124 may be configured to perform the conversions 114 for different types of compressed audio formats.
An interface 115 is shown between the core decoding processor 104 and the unified filter bank block 124. The interface 115 facilitates communication between the core decoding processor 104 and the unified filter bank block 124. The core decoding processor 104 may send time-to-frequency or time-to-frequency conversion command(s) 117 to the unified filter bank block 124 via the interface 115. The unified filter bank block 124 may perform the corresponding conversion(s) in response to receiving the conversion command(s) 117 from the core decoding processor 104. Once the unified filter bank block 124 performs conversions, it may send a message back to the core decoding processor 104 indicating that it is done with the conversion process. The message may be sent via the interface 115.
Referring to
There may be a separate firmware image 209 stored in non-volatile memory 217 for each type of decoder. For example, there may be a firmware image 209a corresponding to a WMA Pro decoder, a firmware image 209b corresponding to a WMA decoder, a firmware image 209c corresponding to an AAC decoder, a firmware image 209d corresponding to an HE-AAC decoder, a firmware image 209e corresponding to an HE-AAC v2 decoder, a firmware image 209f corresponding to an mp3 decoder, etc.
When an audio bitstream 102 is being decoded, the processor 205 may load the firmware image 209 that corresponds to the appropriate decoder into the memory space 207. For example, if an MP3 bitstream 102f is being decoded, then the processor 205 may load the MP3 firmware image 209f into the memory space 207.
The memory space 207 may be used to store various kinds of information during decoding. For example, audio bitstreams 202 may be stored in the memory space 207. As another example, PCM samples 213 (which may be the end result of the decoding process, and/or which may be produced during intermediate stages of the decoding process) may be stored in the memory space 207. As another example, coefficients 215 that may be utilized during the decoding process may be stored in the memory space 207.
Alternatively, referring to
As used herein, the term “processor” may refer to any general purpose single- or multi-chip microprocessor, such as an ARM, or any special purpose microprocessor such as a digital signal processor (DSP), a microcontroller, a programmable gate array, etc. In some configurations, a combination of processors (e.g., an ARM and DSP) could be used to perform the functions of the unified filter bank 224.
The unified filter bank block 324 is shown with a transform component 328. The transform component 328 may be reconfigurable, i.e., it may be configured in different ways to implement different types of transforms. Some examples of transforms that may be implemented by the reconfigurable transform component 328 include the type-I discrete cosine transform (DCT-I transform), the type-II discrete cosine transform (DCT-II transform), the type-III discrete cosine transform (DCT-III transform), the type-IV discrete cosine transform (DCT-IV transform), the Fast Fourier transform (FFT), etc.
The unified filter bank block 324 is also shown with various complementary modules 330. These complementary modules 330 may perform various complementary processing operations, such as permutations. The specific configuration of at least some of the complementary modules 330 (e.g., the complementary modules 330 that implement permutations) may change depending on the type of transform that is being implemented by the reconfigurable transform component 328.
As shown, an interface command controller 329 may send control signal(s) 331 to the reconfigurable transform component 328 and to at least some of the complementary modules 330. The transform that is implemented by the reconfigurable transform component 328 at any given time may depend on the control signal(s) 331 received from the interface command controller 329. In addition, the configuration of at least some of the complementary modules 330 (e.g., the complementary modules 330 that implement permutations) may depend on the control signal(s) 331 received from the interface command controller 329. The control signals 331 may also cause appropriate data path connections to be established between the various components. The control signals 331 may also specify the order in which the components are executed.
In
Referring again to the unified filter bank 324 that is shown in
The complementary modules 330 may include a component 330a that performs an optimized overlap/add operation. This component 330a may be referred to as an optimized overlap/add operation component 330a. The optimized overlap/add operation will be described below.
The complementary modules 330 may also include a component 330b that performs a permutation that may be relevant to the modified discrete cosine transform (MDCT transform). This type of permutation may be referred to as an MDCT permutation, and the component 330b that performs this permutation may be referred to as an MDCT permutation component 330b. The MDCT permutation will be described below.
The complementary modules 330 may also include a component 330c that performs analysis polyphase filtering. This component 330c may be referred to as an analysis polyphase filtering component 330c. Analysis polyphase filtering will be described below.
The complementary modules 330 may also include a component 330d that performs a permutation that may be relevant to implementing an analysis filter bank. This type of permutation may be referred to as an analysis filter bank permutation, and the component 330d that implements this permutation may be referred to as an analysis filter bank permutation component 330d. The analysis filter bank permutation will be described below.
The complementary modules 330 may also include a component 330e that performs a permutation that may be relevant to implementing a synthesis filter bank. This type of permutation may be referred to as a synthesis filter bank permutation, and the component 330e that implements this permutation may be referred to as a synthesis filter bank permutation component 330e. The synthesis filter bank permutation will be described below.
The complementary modules 330 may also include a component 330f that performs the DCT-II transform. This component 330f may be referred to as a DCT-II transform component 330f.
The complementary modules 330 may also include a component 330g that performs a permutation that may be relevant to implementing a synthesis filter bank when an MP3 bitstream is being decoded. This type of permutation may be referred to as an MP3 permutation, and the component 330g that implements this permutation may be referred to as an MP3 permutation component 330g. The MP3 permutation will be described below.
The complementary modules 330 may also include a component 330h that performs synthesis polyphase filtering. This component 330h may be referred to as a synthesis polyphase filtering component 330h. Synthesis polyphase filtering will be described below.
The various functional blocks within the unified filter bank block 324 may be implemented in hardware. Alternatively, these functional blocks may be implemented in a software module executed by a processor. Alternatively still, these functional blocks may be executed by a combination of hardware and software.
Referring to
A configurable memory space 307 and/or non-volatile memory 317 may be shared between the first processor 305a and the second processor 305b. The configurable memory space 307 may be similar to the configurable memory space 207 shown in
The first and second processors 305a-b, configurable memory space 307, and non-volatile memory 317 may be coupled by one or more buses. A single bus 319 is shown in
Several examples will now be described showing how a unified filter bank block (such as the unified filter bank block 324 that is shown in
The first example relates to performing a frequency-to-time conversion as part of decoding an AAC bitstream. This may involve performing an inverse modified discrete cosine transform (IMDCT transform) followed by an overlap/add operation. This was discussed in a paper titled “Information Technology—Generic coding of moving pictures and associated audio,” published in ISO/IEC JTC1/SC29 WG11 MPEG, International Standard ISO/IEC IS13818-7, Part 7: advanced audio coding (AAC), 1997.
The overlap/add operation may involve multiplying the first half of the IMDCT transform result by the rising part of a synthesis window, multiplying the second half of the IMDCT transform result from the previous frame (i.e., samples that have been delayed by one frame) by the tailing part of the synthesis window, and adding these products together. The second part of the IMDCT transform result from the current frame may be saved for the next frame reconstruction.
This approach for the frequency-to-time conversion as part of decoding an AAC bitstream is shown in
The IMDCT transform may be implemented by performing the DCT-IV transform, and then performing a permutation that may be referred to as an IMDCT permutation. This was discussed in a paper titled “Signal processing with lapped transforms,” by H. S. Malvar, published in 1992. The DCT-IV transform may be performed in accordance with equation (1):
where X(k) and u(n) are the DCT-IV input and output respectively, and N is order of the DCT-IV.
The IMDCT permutation is illustrated in relation to
The 2N-point time samples y(n) 554 are shown being provided as input to an overlap/add component 550. The output of the overlap/add component 550 is shown as N-point PCM samples x(n) 556.
As indicated above, the IMDCT transform may be implemented by performing a DCT-IV transform followed by the IMDCT permutation.
The IMDCT permutation and the overlap/add operation may be combined together. This was discussed in 3GPP TS 26.410: “General audio codec audio processing functions; Enhanced aacPlus general audio codec; Floating-point ANSI-C code,” published in January 2005. The resulting combination may be referred to as an optimized overlap/add operation. The optimized overlap/add operation may involve converting the N-point time samples u(n) 558 into the N-point PCM samples x(n) 556 without storing the 2N-point time samples y(n) 554. Thus, the optimized overlap/add operation may result in a fifty-percent memory savings compared to the overlap/add operation.
As discussed above, performing the frequency-to-time conversion for an AAC bitstream may involve performing the IMDCT transform followed by performing an overlap/add operation. This may be accomplished by performing the DCT-IV transform and then performing an optimized overlap/add operation. An example showing how the unified filter bank block 624 may be used to perform these operations will now be described.
An interface command controller 629 may send control signal(s) 631 to the reconfigurable transform component 628. The control signals 631 are shown in dotted lines in
The interface command controller 629 may also send control signal(s) 631 to the optimized overlap/add component 630a, the MDCT permutation component 630b, the analysis filter bank permutation component 630d, the synthesis filter bank permutation component 630e, and the MP3 permutation component 630g. The control signal(s) 631 may cause these complementary modules 630a, 630b, 630d, 630e, 630g to become configured to implement permutations that depend on the specific transform that is being implemented by the reconfigurable transform component 628 (e.g., the DCT-IV transform). The control signals 631 may also cause the execution of the components in a specific order. The data path connections, and the order in which the execution of the components occurs, will be described in greater detail immediately below.
MDCT coefficients 652 may be provided as input to the reconfigurable transform component 628 (which, as indicated above, may be configured for the DCT-IV transform). The MDCT coefficients 652 may be received via an interface 615. The MDCT coefficients 652 may be sent to the unified filter bank block 624, or fetched by the unified filter bank block 624. The interface 615 may be the interface 115 in the audio playback system 100 of
The method 700 may include receiving 702 MDCT coefficients 652 and performing 704 the IMDCT transform and an overlap/add operation. As discussed above, performing 704 the IMDCT transform and the overlap/add operation may be accomplished by performing 706 the DCT-IV transform and performing 708 an optimized overlap/add operation. The method 700 may also include outputting 710 PCM samples 656.
The method 700 of
The next example relates to performing a frequency-to-time conversion as part of decoding an MP3 bitstream. This may involve performing the IMDCT, performing the overlap/add operation, and then implementing a synthesis filter bank. This was discussed in ISO/IEC JTC1/SC29 WG11 MPEG, International Standard ISO/IEC IS13818-3, “Information technology—Generic coding of moving pictures and associated audio,” Part 3: Audio, published in 1994.
This approach for frequency-to-time conversion as part of decoding an MP3 bitstream is shown in
One possible implementation of the synthesis filter bank 976 will now be described. Implementing the synthesis filter bank 976 may involve performing a buffer shifting operation, which may be represented by the following pseudo code:
for (i=1023; i<64; i−−)
V[i]=V[i−64];
Implementing the synthesis filter bank 976 may also involve performing a matrix operation for subband samples Sk, which may be represented by the following pseudo code:
This matrix operation may be implemented by performing the DCT-II transform and then performing a permutation that may be referred to as an MP3 permutation. This was discussed in an article titled “Fast subband filtering in MPEG audio coding,” by K. Konstantinides, published in the IEEE Signal Processing Letter, vol. 1, pp. 26-28, 1994. The DCT-II transform may be performed in accordance with equation (2) below, and the permutation may be performed in accordance with equation (3) below.
Implementing the synthesis filter bank 976 may also involve performing synthesis polyphase filtering. Synthesis polyphase filtering may involve building a samples vector U 1078 from the given samples buffer V 1079 as shown in
As discussed above, performing the frequency-to-subband and then subband-to-time conversions for an MP3 bitstream may involve performing the IMDCT followed by performing an overlap/add operation. This may be accomplished by performing a DCT-IV transform and then performing an optimized overlap/add operation. An example showing how the unified filter bank block 1124 may be used to perform these operations will now be described.
An interface command controller 1129 may send control signal(s) 1131 to the reconfigurable transform component 1128. The control signals 1131 are shown in dotted lines in
The interface command controller 1129 may also send control signal(s) 1131 to the optimized overlap/add component 1130a, the MDCT permutation component 1130b, the analysis filter bank permutation component 1130d, the synthesis filter bank permutation component 1130e, and the MP3 permutation component 1130g. The control signal(s) 1131 may cause these complementary modules 1130a, 1130b, 1130d, 1130e, 1130g to become configured to implement permutations that depend on the DCT-IV. The control signals 1131 may also cause appropriate data path connections to be established between the various components. The control signals 1131 may also cause the execution of the components in a specific order. The data path connections, and the order in which the execution of the components occurs, will be described in greater detail immediately below.
MDCT coefficients 1152 may be provided as input to the reconfigurable transform component 1128 (which, as indicated above, may be configured for the DCT-IV). The MDCT coefficients 1152 may be received via an interface 1115. The MDCT coefficients 1152 may be sent to the unified filter bank block 1124, or fetched by the unified filter bank block 1124. The interface 1115 may be the interface 115 in the audio playback system 100 of
As discussed above, implementing a synthesis filter bank may involve performing a matrix operation that may be implemented by the DCT-II transform and a permutation that may be referred to as an MP3 permutation. Thus, the subband samples 1180 may be fed back as input to the DCT-II transform component 1130f. The DCT-II transform component 1130f may perform the DCT-II transform with respect to the subband samples 1180, as described above. The DCT-II transform may be performed in accordance with equation (2) above. As shown in
The output of the DCT-II transform component 1130f is shown being provided to the MP3 permutation component 1130g. The MP3 permutation component 1130g may perform the MP3 permutation, as described above. The MP3 permutation may be performed in accordance with equation (3) above.
As discussed above, implementing the synthesis filter bank may also involve performing synthesis polyphase filtering. Thus, the output of the MP3 permutation component 1130g is shown being provided to the synthesis polyphase filtering component 1130h. Synthesis polyphase filtering may be performed as described above. PCM samples 1156 are shown being output from the synthesis polyphase filtering component 1130h.
The method 1200 may include receiving 1202 MDCT coefficients 1152 and performing 1204 the IMDCT and an overlap/add operation. As discussed above, performing 1204 the IMDCT and the overlap/add operation may be accomplished by performing 1206 the DCT-IV transform and performing 1208 an optimized overlap/add operation.
The method 1200 may also include implementing 1210 a synthesis filter bank 976. Implementing 1210 the synthesis filter bank 976 may also involve performing a matrix operation, which may be implemented by performing 1212 the DCT-II transform and then performing 1214 a permutation that may be referred to as an MP3 permutation. Implementing 1210 the synthesis filter bank 976 may also involve performing 1216 synthesis polyphase filtering. The method 1200 may also include outputting 1218 PCM samples 1156.
The method 1200 of
The next example relates to performing frequency-to-time and time-to-frequency conversions as part of decoding an HE-AAC or an HE-AAC v2 bitstream. In this discussion, the term “HE-AAC type bitstream” refers to either an HE-AAC bitstream or an HE-AAC v2 bitstream.
Performing frequency-to-time and time-to-frequency conversions as part of decoding an HE-AAC type bitstream may involve performing the IMDCT, performing the overlap/add operation, implementing an analysis filter bank, and implementing a synthesis filter bank. This was discussed in ISO/IEC JTC1/SC29 WG11 MPEG, “Text of ISO/IEC 14496-3:2001/AMD 1:2003, bandwidth extension,” published in November 2003. Referring to
The PCM samples 1456a are shown being provided as input to an analysis filter bank component 1482. The analysis filter bank component 1482 is shown outputting a subband matrix 1480a.
The subband matrix 1480a is shown being processed by a spectral band replication component 1484. The spectral band replication component 1484 is shown outputting a subband matrix 1480b.
The subband matrix 1480b is shown being provided as input to a synthesis filter bank component 1486. The synthesis filter bank component 1486 is shown outputting PCM samples 1456b.
One possible implementation of the analysis filter bank may comprise analysis buffer shifting, analysis polyphase filtering, and a matrix operation. Analysis buffer shifting may involve making room for new samples, and adding new samples in the reverse order. This may be done in accordance with equations (4) and (5) below:
x[n+32]=x[n] for n=0 to 319-32 (4)
x[31−n]=(next sample) for n=0 to 31 (5)
Analysis polyphase filtering may involve applying a windowing operation by prototype low-pass filter coefficients to the samples stored in the analysis buffer, and performing a partial sum. This may be done in accordance with equations (6) and (7) below:
Implementing the analysis filter bank may then be accomplished by performing a matrix operation, which may be represented by equation (8) below:
The matrix operation may be implemented by performing a permutation, which may be referred to as an analysis filter bank permutation, and then performing a DCT-IV transform. The analysis filter bank permutation may be performed in accordance with equations (9), (10), and (11) below:
The DCT-IV transform may be performed in accordance with equation (12) below. The subband samples shown in equation (8) may be obtained by equation (13).
The synthesis filter bank may be implemented similarly to the synthesis filter bank that was described above in reference to decoding an MP3 bitstream. As described above, implementing the synthesis filter bank may involve a matrix operation followed by synthesis polyphase filtering. However, certain differences may exist between the synthesis filter bank implementation for an MP3 bitstream and the synthesis filter bank implementation for an HE-AAC type bitstream. For example, for an HE-AAC type bitstream the buffer size may be 1280 (it may be 1024 for an MP3 bitstream), the polyphase filter order may be 640 (it may be 512 for an MP3 bitstream), and 64×32 PCM samples may be output (for an MP3 bitstream, 32×18 PCM samples may be output).
Also, the synthesis filter bank implementation for an HE-AAC type bitstream may utilize a different matrix operation than the synthesis filter bank implementation for an MP3 bitstream. The matrix operation for an HE-AAC type bitstream may be represented by equation (14) below:
The matrix operation corresponding to equation (14) may be implemented as two DCT-IV transforms followed by a permutation, which may be referred to as a synthesis filter bank permutation. The DCT-IV transforms may be represented by equations (15) and (16):
The synthesis filter bank permutation may be represented by equation (17):
For n=0, 1, . . . , 63,
x(n)=(−1)nui(n)−ur(n)
x(127−n)=(−1)nui(n)+ur(n) (17)
As discussed above, performing frequency-to-time and time-to-frequency conversions for an HE-AAC type bitstream may involve performing the IMDCT followed by performing an overlap/add operation. This may be accomplished by performing a DCT-IV transform and then performing an optimized overlap/add operation. Performing frequency-to-time and time-to-frequency conversions for an HE-AAC type bitstream may also involve implementing an analysis filter bank. This may be accomplished by performing analysis polyphase filtering, followed by an analysis filter bank permutation, followed by a DCT-IV transform. Performing frequency-to-time and time-to-frequency conversions for an HE-AAC type bitstream may also involve implementing a synthesis filter bank. As discussed above, this may be accomplished by performing two DCT-IV transforms, followed by a synthesis filter bank permutation, followed by synthesis polyphase filtering. An example showing how the unified filter bank block 1524 may be used to perform these operations will now be described.
An interface command controller 1529 may send control signal(s) 1531 to the reconfigurable transform component 1528. The control signals 1531 are shown in dotted lines in
The interface command controller 1529 may also send control signal(s) 1531 to the optimized overlap/add component 1530a, the MDCT permutation component 1530b, the analysis filter bank permutation component 1530d, the synthesis filter bank permutation component 1530e, and the MP3 permutation component 1530g. The control signal(s) 1531 may cause these complementary modules 1530a, 1530b, 1530d, 1530e, 1530g to become configured to implement permutations that depend on the DCT-IV. The control signals 1531 may also cause appropriate data path connections to be established between the various components. The control signals 1531 may also cause the execution of the components in a specific order. The data path connections, and the order in which the execution of the components occurs, will be described in greater detail immediately below.
MDCT coefficients 1552 may be provided as input to the reconfigurable transform component 1528 (which, as indicated above, may be configured for the DCT-IV). The MDCT coefficients 1552 may be received via an interface 1515. The MDCT coefficients 1552 may be sent to the unified filter bank block 1524, or fetched by the unified filter bank block 1524. The interface 1515 may be the interface 115 in the audio playback system 100 of
The PCM samples 1556a output from the optimized overlap/add component 1530a may be fed back and provided as input to the analysis polyphase filtering component 1530c. The output of the analysis polyphase filtering component 1530c is shown being provided as input to the analysis filter bank permutation component 1530d, and the output of the analysis filter bank permutation component 1530d is shown being provided as input to the reconfigurable transform component 1528 (which, as indicated above, may be configured for the DCT-IV). Subband samples 1580 are shown being output from the reconfigurable transform component 1528.
The subband samples 1580 output from the reconfigurable transform component 1528 may be fed back to the core decoding processor 1504 that performs the spectral band replication to produce extended subband samples 1557. These extended subband samples 1557 may be provided as input to the unified filter bank block 1524. The core decoding processor 1504 may also send a command to make the connections required in the unified filter bank block 1524 to perform the required operations for the synthesis filter bank. The command may make the input to the unified filter bank block 1524 as the input to the reconfigurable transform component 1528. The output of the reconfigurable transform component 1528 may be provided as input to the synthesis filter bank permutation component 1530e. The output of the synthesis filter bank permutation component 1530e is shown being provided as input to the synthesis polyphase filtering component 1530h. PCM samples 1556b are shown being output by the synthesis polyphase filtering component 1530h.
The method 1600 may include receiving 1602 MDCT coefficients 1552 and performing 1604 the IMDCT and an overlap/add operation. As discussed above, performing 1604 the IMDCT and the overlap/add operation may be accomplished by performing 1606 the DCT-IV transform and performing 1608 an optimized overlap/add operation.
The method 1600 may also involve implementing 1610 an analysis filter bank. As discussed above, implementing an analysis filter bank may involve performing 1612 analysis polyphase filtering, performing 1614 an analysis filter bank permutation, and performing 1616 a DCT-IV transform. Analysis polyphase filtering may be performed in accordance with equations (6) and (7) above. The analysis filter bank permutation may be performed in accordance with equations (9), (10), and (11) above. The DCT-IV transform may be performed in accordance with equation (12) above. Subband samples 1580 produced by the analysis filter bank may be returned 1617 to the core decoding processor 1504.
The unified filter bank block 1524 may receive 1619 extended subband samples 1557. The method 1600 may also involve implementing 1618 a synthesis filter bank. As discussed above, implementing 1618 a synthesis filter bank may involve performing 1620 two DCT-IV transforms, performing 1622 a synthesis filter bank permutation, and performing 1624 synthesis polyphase filtering. The DCT-IV transforms may be performed in accordance with equations (15) and (16) above. The synthesis filter bank permutation may be performed in accordance with equation (17) above. Synthesis polyphase filtering may be performed in the manner described above. The method 1600 may also include outputting 1526 PCM samples 1556b.
The method 1600 of
The next example relates to performing domain conversions as part of decoding a WMA or a WMA Pro bitstream. In this discussion, the term “WMA type bitstream” refers to either a WMA bitstream or a WMA Pro bitstream.
Performing frequency-to-time and/or time-to-frequency conversions as part of decoding a WMA type bitstream may involve performing the IMDCT, performing the overlap/add operation, and performing the MDCT. This is shown in
The PCM samples 1856a are shown being provided as input to a component 1892 that performs the MDCT. The MDCT component 1892 is shown outputting MDCT coefficients 1852b.
The MDCT coefficients 1852b are shown being provided as input to a component 1816 that performs frequency extension processing. The output of the frequency extension processing component 1816 is shown being provided as input to a component 1818 that performs channel extension processing. The channel extension processing component 1818 is shown outputting MDCT coefficients 1852c.
The MDCT coefficients 1852c are shown being provided as input to another IMDCT/OLA component 1872b. The IMDCT/OLA component 1872b is shown outputting PCM samples 1856b.
The MDCT may be implemented by performing a permutation (which may be referred to as an MDCT permutation) and then performing a DCT-IV transform. The MDCT permutation may be performed in accordance with equation (18):
For n=0, 1, . . . , 127,
u(n+128)=x(n)−x(255−n)
u(127−n)=−x(511−n)−x(n+256) (18)
The DCT-IV transform may be performed in accordance with equation (19):
As discussed above, performing frequency-to-time and/or time-to-frequency conversion(s) for a WMA type bitstream may involve performing the IMDCT followed by performing an overlap/add operation. This may be accomplished by a performing a DCT-IV transform and then performing an optimized overlap/add operation. Performing frequency-to-time and/or time-to-frequency conversion(s) for a WMA type bitstream may also involve performing the MDCT. This may be accomplished by performing an MDCT permutation and then performing the DCT-IV transform. Performing frequency-to-time and/or time-to-frequency conversion(s) for a WMA type bitstream may also involve performing the IMDCT a second time followed by performing an overlap/add operation a second time. An example showing how the unified filter bank block 1924 may be used to perform these operations will now be described.
An interface command controller 1929 may send control signal(s) 1931 to the reconfigurable transform component 1928. The control signals 1931 are shown in dotted lines in
The interface command controller 1929 may also send control signal(s) 1931 to the optimized overlap/add component 1930a, the MDCT permutation component 1930b, the analysis filter bank permutation component 1930d, the synthesis filter bank permutation component 1930e, and the MP3 permutation component 1930g. The control signal(s) 1931 may cause these complementary modules 1930a, 1930b, 1930d, 1930e, 1930g to become configured to implement permutations that depend on the DCT-IV. The control signals 1931 may also cause appropriate data path connections to be established between the various components. The control signals 1931 may also cause the execution of the components in a specific order. The data path connections, and the order in which the execution of the components occurs, will be described in greater detail immediately below.
MDCT coefficients 1952a may be provided as input to the reconfigurable transform component 1928 (which, as indicated above, may be configured for the DCT-IV transform). The MDCT coefficients 1952a may be received via an interface 1915. The MDCT coefficients 1952a may be sent to the unified filter bank block 1924, or fetched by the unified filter bank block 1924. The interface 1915 may be the interface 115 in the audio playback system 100 of
The PCM samples 1956a output by the optimized overlap/add component 1930a may be fed back and provided as input to the MDCT permutation component 1930b. The output of the MDCT permutation component 1930b may be provided as input to the reconfigurable transform component 1928 (which, as indicated above, may be configured for the DCT-IV transform). MDCT coefficients 1952b are shown being output by the reconfigurable transform component 1928.
The MDCT coefficients 1952b output by the reconfigurable transform component 1928 may be fed back to the core decoding processor 1904 for performing frequency extension processing and channel extension processing. The core decoding processor 1904 may output extended MDCT coefficients 1952c. These extended MDCT coefficients 1952c may be provided as input to the unified filter bank block 1924. The core decoding processor 1904 may also send a command to perform the IMDCT on the provided inputs. The command may make the input to the unified filter bank block 1924 as the input to the reconfigurable transform component 1928, which may perform the DCT-IV transform. The result of the DCT-IV transform may be provided to the optimized overlap/add component 1930a. The optimized overlap/add component 1930a may perform the optimized overlap/add operation as described above. PCM samples 1956b may be output from the optimized overlap/add component 1930a.
The method 2000 may include receiving 2002 MDCT coefficients 1952a and performing 2004 the IMDCT and an overlap/add operation. As discussed above, performing 2004 the IMDCT and the overlap/add operation may be accomplished by performing 2006 the DCT-IV transform and performing 2008 an optimized overlap/add operation.
The method 2000 may also include performing 2010 the MDCT. As discussed above, the MDCT may be implemented 2010 by performing 2012 an MDCT permutation and performing 2014 the DCT-IV transform.
MDCT coefficients 1952b may be returned 2015 to the core decoding processor 1904. The core decoding processor 1904 may perform frequency extension processing and channel extension processing. The unified filter bank block 1924 may then receive 2017 extended MDCT coefficients 1952c.
The method 2000 may also include performing 2016 the IMDCT and the overlap/add operation a second time. As discussed above, performing 2016 the IMDCT and the overlap/add operation may be accomplished by performing 2018 the DCT-IV transform and performing 2020 an optimized overlap/add operation. The method 2000 may also include outputting 2022 PCM samples 2056b.
The method 2000 of
The unified filter bank block 2224 includes multiple sets of some of the complementary modules. For example, the unified filter bank block 2224 includes N sets of optimized overlap/add operation components 2230a(1) . . . 2230a(N). The unified filter bank block 2224 also includes N sets of MDCT permutation components 2230b(1) . . . 2230b(N). The unified filter bank block 2224 also includes N sets of analysis filter bank permutation components 2230d(1) . . . 2230d(N). The unified filter bank block 2224 also includes N sets of synthesis filter bank permutation components 2230e(1) . . . 2230e(N). The unified filter bank block 2224 also includes N sets of MP3 permutation components 2230g(1) . . . 2230g(N). Different sets of complementary modules 2230 may correspond to different transforms implemented by the reconfigurable transform component 2228.
The unified filter bank block 2224 also includes an analysis polyphase filtering component 2230c, a DCT-II transform component 2230f, and a synthesis polyphase filtering component 2230h.
An interface command controller 2229 may send control signal(s) 2231 to the reconfigurable transform component 2228. The transform that is implemented by the reconfigurable transform component 2228 may depend on the control signal(s) 2231 received from the interface command controller 2229. The control signals 2231 may also cause appropriate data path connections to be established between the various components. The control signals 2231 may also cause the execution of the components in a specific order.
The interface command controller 2229 may also send control signal(s) 2231 to a switch 2241. As indicated above, the unified filter bank block 2224 includes multiple sets of some of the complementary modules 2230. Which of these complementary modules are used may depend on the transform that is being implemented by the reconfigurable transform component 2228. The switch 2241 may select which of these complementary modules 2230 are to be used depending on the control signal(s) 2231 received from the interface command controller 2229. In
The mobile device 2302 may include a processor 2304 which controls operation of the mobile device 2302. The processor 2304 may also be referred to as a central processing unit (CPU). Memory 2306, which may include both read-only memory (ROM) and random access memory (RAM), provides instructions and data to the processor 2304. A portion of the memory 2306 may also include non-volatile random access memory (NVRAM). The processor 2304 typically performs logical and arithmetic operations based on program instructions stored within the memory 2306. The instructions in the memory 2306 may be executable to implement the methods described herein.
The mobile device 2302 may also include a housing 2308 that may include a transmitter 2310 and a receiver 2312 to allow transmission and reception of data between the mobile device 2302 and a remote location. The transmitter 2310 and receiver 2312 may be combined into a transceiver 2314. An antenna 2316 may be attached to the housing 2308 and electrically coupled to the transceiver 2314. The mobile device 2302 may also include (not shown) multiple transmitters, multiple receivers, multiple transceivers and/or multiple antenna.
The mobile device 2302 may also include a signal detector 2318 that may be used to detect and quantify the level of signals received by the transceiver 2314. The signal detector 2318 may detect such signals as total energy, pilot energy per pseudonoise (PN) chips, power spectral density, and other signals. The mobile device 2302 may also include a digital signal processor (DSP) 2320 for use in processing signals.
The various components of the mobile device 2302 may be coupled together by a bus system 2322 which may include a power bus, a control signal bus, and a status signal bus in addition to a data bus. However, for the sake of clarity, the various busses are illustrated in
In accordance with the present disclosure, a circuit in a mobile device may be adapted to receive signal conversion commands and accompanying data in relation to multiple types of compressed audio bitstreams. The same circuit, a different circuit, or a second section of the same or different circuit may be adapted to perform a transform as part of signal conversion for the multiple types of compressed audio bitstreams. The second section may advantageously be coupled to the first section, or it may be embodied in the same circuit as the first section. In addition, the same circuit, a different circuit, or a third section of the same or different circuit may be adapted to perform complementary processing as part of the signal conversion for the multiple types of compressed audio bitstreams. The third section may advantageously be coupled to the first and second sections, or it may be embodied in the same circuit as the first and second sections. In addition, the same circuit, a different circuit, or a fourth section of the same or different circuit may be adapted to control the configuration of the circuit(s) or section(s) of circuit(s) that provide the functionality described above. Any of the first through fourth sections may alone or in combination be part of an integrated circuit.
As used herein, the term “determining” encompasses a wide variety of actions and, therefore, “determining” can include calculating, computing, processing, deriving, investigating, looking up (e.g., looking up in a table, a database or another data structure), ascertaining and the like. Also, “determining” can include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory) and the like. Also, “determining” can include resolving, selecting, choosing, establishing and the like.
The phrase “based on” does not mean “based only on,” unless expressly specified otherwise. In other words, the phrase “based on” describes both “based only on” and “based at least on.”
The various illustrative logical blocks, modules and circuits described in connection with the present disclosure may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array signal (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any commercially available processor, controller, microcontroller or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core or any other such configuration.
The steps of a method or algorithm described in connection with the present disclosure may be embodied directly in hardware, in a software module executed by a processor or in a combination of the two. A software module may reside in any form of storage medium that is known in the art. Some examples of storage media that may be used include RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, a hard disk, a removable disk, a CD-ROM and so forth. A software module may comprise a single instruction, or many instructions, and may be distributed over several different code segments, among different programs and across multiple storage media. A storage medium may be coupled to a processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor.
The methods disclosed herein comprise one or more steps or actions for achieving the described method. The method steps and/or actions may be interchanged with one another without departing from the scope of the claims. In other words, unless a specific order of steps or actions is specified, the order and/or use of specific steps and/or actions may be modified without departing from the scope of the claims.
The functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions on a computer-readable medium. A computer-readable medium may be any available medium that can be accessed by a computer. By way of example, and not limitation, a computer-readable medium may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray® disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers.
Software or instructions may also be transmitted over a transmission medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of transmission medium.
Further, it should be appreciated that modules and/or other appropriate means for performing the methods and techniques described herein, such as those illustrated by
It is to be understood that the claims are not limited to the precise configuration and components illustrated above. Various modifications, changes and variations may be made in the arrangement, operation and details of the systems, methods, and apparatus described herein without departing from the scope of the claims.
The present Application for Patent claims priority to Provisional Application No. 60/950,775 entitled “UNIFIED DOMAIN CONVERSION FOR DIGITAL AUDIO PLAYBACK SYSTEM” filed Jul. 19, 2007, and assigned to the assignee hereof and hereby expressly incorporated by reference herein.
Number | Name | Date | Kind |
---|---|---|---|
5845249 | Malladi et al. | Dec 1998 | A |
20070250308 | Lee et al. | Oct 2007 | A1 |
Number | Date | Country | |
---|---|---|---|
20090024397 A1 | Jan 2009 | US |
Number | Date | Country | |
---|---|---|---|
60950775 | Jul 2007 | US |