static void dct12()

in pedalboard/juce_overrides/juce_PatchedMP3AudioFormat.cpp [1462:1547]


static void dct12(const float *in, float *out1, float *out2, const float *wi,
                  float *ts) noexcept {
  {
    ts[0] = out1[0];
    ts[subBandLimit * 1] = out1[1];
    ts[subBandLimit * 2] = out1[2];
    ts[subBandLimit * 3] = out1[3];
    ts[subBandLimit * 4] = out1[4];
    ts[subBandLimit * 5] = out1[5];

    DCT12Inputs inputs(in);

    {
      auto tmp1 = (inputs.in0 - inputs.in4);
      auto tmp2 = (inputs.in1 - inputs.in5) * cos12[1];
      auto tmp0 = tmp1 + tmp2;
      tmp1 -= tmp2;

      ts[16 * subBandLimit] = out1[16] + tmp0 * wi[10];
      ts[13 * subBandLimit] = out1[13] + tmp0 * wi[7];
      ts[7 * subBandLimit] = out1[7] + tmp1 * wi[1];
      ts[10 * subBandLimit] = out1[10] + tmp1 * wi[4];
    }

    inputs.process();

    ts[17 * subBandLimit] = out1[17] + inputs.in2 * wi[11];
    ts[12 * subBandLimit] = out1[12] + inputs.in2 * wi[6];
    ts[14 * subBandLimit] = out1[14] + inputs.in3 * wi[8];
    ts[15 * subBandLimit] = out1[15] + inputs.in3 * wi[9];

    ts[6 * subBandLimit] = out1[6] + inputs.in0 * wi[0];
    ts[11 * subBandLimit] = out1[11] + inputs.in0 * wi[5];
    ts[8 * subBandLimit] = out1[8] + inputs.in4 * wi[2];
    ts[9 * subBandLimit] = out1[9] + inputs.in4 * wi[3];
  }

  {
    DCT12Inputs inputs(++in);
    auto tmp1 = (inputs.in0 - inputs.in4);
    auto tmp2 = (inputs.in1 - inputs.in5) * cos12[1];
    auto tmp0 = tmp1 + tmp2;
    tmp1 -= tmp2;
    out2[4] = tmp0 * wi[10];
    out2[1] = tmp0 * wi[7];
    ts[13 * subBandLimit] += tmp1 * wi[1];
    ts[16 * subBandLimit] += tmp1 * wi[4];

    inputs.process();

    out2[5] = inputs.in2 * wi[11];
    out2[0] = inputs.in2 * wi[6];
    out2[2] = inputs.in3 * wi[8];
    out2[3] = inputs.in3 * wi[9];
    ts[12 * subBandLimit] += inputs.in0 * wi[0];
    ts[17 * subBandLimit] += inputs.in0 * wi[5];
    ts[14 * subBandLimit] += inputs.in4 * wi[2];
    ts[15 * subBandLimit] += inputs.in4 * wi[5 - 2];
  }

  {
    DCT12Inputs inputs(++in);
    out2[12] = out2[13] = out2[14] = out2[15] = out2[16] = out2[17] = 0;

    auto tmp1 = (inputs.in0 - inputs.in4);
    auto tmp2 = (inputs.in1 - inputs.in5) * cos12[1];
    auto tmp0 = tmp1 + tmp2;
    tmp1 -= tmp2;

    out2[10] = tmp0 * wi[10];
    out2[7] = tmp0 * wi[7];
    out2[1] += tmp1 * wi[1];
    out2[4] += tmp1 * wi[4];

    inputs.process();

    out2[11] = inputs.in2 * wi[11];
    out2[6] = inputs.in2 * wi[6];
    out2[8] = inputs.in3 * wi[8];
    out2[9] = inputs.in3 * wi[9];
    out2[0] += inputs.in0 * wi[0];
    out2[5] += inputs.in0 * wi[5];
    out2[2] += inputs.in4 * wi[2];
    out2[3] += inputs.in4 * wi[3];
  }
}