Exemplo n.º 1
0
  public int processAudio(AudioBuffer ab) {

    int dstBuffSize = ab.getSampleCount();
    int NN;
    FIRFilter ff;
    // grab filter and NN
    synchronized (lock) {
      ff = filt;
      NN = N;
    }

    if (chunk == null || overBuffSize != dstBuffSize * NN) {
      overBuffSize = dstBuffSize * NN;
      chunk = new AudioBuffer("oversampled", 1, overBuffSize, ab.getSampleRate() * NN);
    }
    chunk.makeSilence();
    src.processAudio(chunk);
    ff.processAudio(chunk);

    float upa[] = chunk.getChannel(0);

    for (int chn = 0; chn < ab.getChannelCount(); chn++) {
      float a[] = ab.getChannel(chn);

      for (int i = 0; i < dstBuffSize; i++) {
        a[i] = upa[NN * i];
      }
    }
    return AUDIO_OK;
  }