コード例 #1
0
  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);
  }
コード例 #2
0
 void decodeInvf(BitStream in, SBRHeader header, FrequencyTables tables) throws AACException {
   for (int i = 0; i < tables.getNq(); i++) {
     invfMode[i] = in.readBits(2);
   }
 }