written 8.5 years ago by
teamques10
★ 68k
|
•
modified 8.5 years ago
|
- The first step in encoding the audio samples is to transform them from the time domain to the frequency domain. This is done by a bank of polyphase filters that transform the samples into 32 equal-width frequency subbands.
- The filters were designed to provide fast operation combined with good time and frequency resolutions. As a result, their design involved three compromises.
- The first compromise is the equal widths of the 32 frequency bands. This simplifies the filters but is in contrast to the behavior of the human auditory system, whose sensitivity is frequency dependent.
- When several critical bands are covered by a subband X, the bit allocation algorithm selects the critical band with the least noise masking and uses that critical band to compute the number of bits allocated to the quantized signals in subband X.
- The second compromise involves the inverse filter bank, the one used by the decoder. THE original time-to-frequency transformation involves loss of information (even before any quantization).
- The inverse filter bank therefore receives data that is slightly bad, and uses it to perform the inverse frequency-to-time transformation, resulting in more distortions. Therefore, the design of the two filter banks (for direct and inverse transformations) had to use compromises to minimize this loss of information.
- The third compromise has to do with the individual filters. Adjacent filters should ideally pass different frequency ranges. In practice, they have considerable frequency overlap. Sound of a single, pure, frequency can therefore penetrate through two filters and produce signals (that are later quantized) in two of the 32 subbands instead of in just one subband.
- The polyphase filter bank uses (in addition to other intermediate data structures) a buffer X with room for 512 input samples. The buffer is a FIFO queue and always contains the most-recent 512 samples input. The table below shows the five main steps of the polyphase filtering algorithm.
9.
1 |
Shift in 32 new input samples into FIFO buffer X |
2 |
Window samples : $Z_i = C_i × X_i \ \ for \ \ i = 0,1,……,511$ |
3 |
Partial Computation: Y_i =_{i+64j} , \ \ for \ \ i = 0,1,…..,63 |
4 |
Compute 32 signals : $S_i = _{i, k}× Y_k , for \ \ i= 0,1,…….,31$ |
5 |
Output the 32 subband signals $S_i$ |
$$\text{Table: Polyphase Filter Bank}$$