void decodeNoise( BitStream in, SBRHeader header, FrequencyTables tables, boolean secCh, boolean coupling) throws AACException { // select huffman codebooks final int[][] tHuff, fHuff; final int tLav, fLav; final int delta; if (coupling && secCh) { delta = 1; tHuff = T_HUFFMAN_NOISE_BAL_3_0; tLav = T_HUFFMAN_NOISE_BAL_3_0_LAV; fHuff = F_HUFFMAN_NOISE_BAL_3_0; fLav = F_HUFFMAN_NOISE_BAL_3_0_LAV; } else { delta = 0; tHuff = T_HUFFMAN_NOISE_3_0; tLav = T_HUFFMAN_NOISE_3_0_LAV; fHuff = F_HUFFMAN_NOISE_3_0; fLav = F_HUFFMAN_NOISE_3_0_LAV; } // read huffman data: i=noise, j=band final int noiseBands = tables.getNq(); int j; float[] prev; for (int i = 0; i < noiseCount; i++) { if (dfNoise[i]) { prev = (i == 0) ? noiseFDPrevious : noiseFloorData[i - 1]; for (j = 0; j < noiseBands; j++) { noiseFloorData[i][j] = prev[j] + ((decodeHuffman(in, tHuff) - tLav) << delta); } } else { noiseFloorData[i][0] = in.readBits(5) << delta; for (j = 1; j < noiseBands; j++) { noiseFloorData[i][j] = noiseFloorData[i][j - 1] + ((decodeHuffman(in, fHuff) - fLav) << delta); } } } // save for next frame System.arraycopy(noiseFloorData[noiseCount - 1], 0, noiseFDPrevious, 0, MAX_BANDS); }
void decodeInvf(BitStream in, SBRHeader header, FrequencyTables tables) throws AACException { for (int i = 0; i < tables.getNq(); i++) { invfMode[i] = in.readBits(2); } }