Esempio n. 1
0
  private void vorbis_encode_global_stereo(highlevel_encode_setup hi, adj_stereo[] p) {

    float s = hi.stereo_point_setting;
    int i;
    int is = new Float(s).intValue();
    float ds = s - is;
    codec_setup_info ci = vi.codec_setup;
    vorbis_info_psy_global g = ci.psy_g_param;

    if (p != null) {

      // memcpy(g.coupling_prepointamp, p[is].pre, sizeof(*p[is].pre)*PACKETBLOBS);
      // memcpy(g.coupling_postpointamp, p[is].post, sizeof(*p[is].post)*PACKETBLOBS);

      g.coupling_prepointamp = (int[]) p[is].pre.clone();
      g.coupling_postpointamp = (int[]) p[is].post.clone();

      if (hi.managed != 0) {
        // interpolate the kHz threshholds
        for (i = 0; i < PACKETBLOBS; i++) {
          float kHz = new Double(p[is].kHz[i] * (1. - ds) + p[is + 1].kHz[i] * ds).floatValue();
          g.coupling_pointlimit[0][i] =
              new Double(kHz * 1000. / vi.rate * ci.blocksizes[0]).intValue();
          g.coupling_pointlimit[1][i] =
              new Double(kHz * 1000. / vi.rate * ci.blocksizes[1]).intValue();
          g.coupling_pkHz[i] = new Float(kHz).intValue();

          kHz =
              new Double(p[is].lowpasskHz[i] * (1. - ds) + p[is + 1].lowpasskHz[i] * ds)
                  .floatValue();
          g.sliding_lowpass[0][i] = new Double(kHz * 1000. / vi.rate * ci.blocksizes[0]).intValue();
          g.sliding_lowpass[1][i] = new Double(kHz * 1000. / vi.rate * ci.blocksizes[1]).intValue();
        }
      } else {
        float kHz =
            new Double(p[is].kHz[PACKETBLOBS / 2] * (1. - ds) + p[is + 1].kHz[PACKETBLOBS / 2] * ds)
                .floatValue();
        for (i = 0; i < PACKETBLOBS; i++) {
          g.coupling_pointlimit[0][i] =
              new Double(kHz * 1000. / vi.rate * ci.blocksizes[0]).intValue();
          g.coupling_pointlimit[1][i] =
              new Double(kHz * 1000. / vi.rate * ci.blocksizes[1]).intValue();
          g.coupling_pkHz[i] = new Float(kHz).intValue();
        }

        kHz =
            new Double(
                    p[is].lowpasskHz[PACKETBLOBS / 2] * (1. - ds)
                        + p[is + 1].lowpasskHz[PACKETBLOBS / 2] * ds)
                .floatValue();
        for (i = 0; i < PACKETBLOBS; i++) {
          g.sliding_lowpass[0][i] = new Double(kHz * 1000. / vi.rate * ci.blocksizes[0]).intValue();
          g.sliding_lowpass[1][i] = new Double(kHz * 1000. / vi.rate * ci.blocksizes[1]).intValue();
        }
      }
    } else {
      for (i = 0; i < PACKETBLOBS; i++) {
        g.sliding_lowpass[0][i] = ci.blocksizes[0];
        g.sliding_lowpass[1][i] = ci.blocksizes[1];
      }
    }
  }