void setup()

in source/isp/CameraIsp.h [571:648]


  void setup() {
    // Build the bayer pattern tables
    if (bayerPattern.find("RGGB") != std::string::npos) {
      filters = 0x94949494;
      redBayerPixel[0][0] = true;
      redBayerPixel[0][1] = false;
      redBayerPixel[1][0] = false;
      redBayerPixel[1][1] = false;

      greenBayerPixel[0][0] = false;
      greenBayerPixel[0][1] = true;
      greenBayerPixel[1][0] = true;
      greenBayerPixel[1][1] = false;
    } else if (bayerPattern.find("GRBG") != std::string::npos) {
      filters = 0x61616161;
      redBayerPixel[0][0] = false;
      redBayerPixel[0][1] = true;
      redBayerPixel[1][0] = false;
      redBayerPixel[1][1] = false;

      greenBayerPixel[0][0] = true;
      greenBayerPixel[0][1] = false;
      greenBayerPixel[1][0] = false;
      greenBayerPixel[1][1] = true;
    } else if (bayerPattern.find("GBRG") != std::string::npos) {
      filters = 0x49494949;
      redBayerPixel[0][0] = false;
      redBayerPixel[0][1] = false;
      redBayerPixel[1][0] = true;
      redBayerPixel[1][1] = false;

      greenBayerPixel[0][0] = true;
      greenBayerPixel[0][1] = false;
      greenBayerPixel[1][0] = false;
      greenBayerPixel[1][1] = true;
    } else if (bayerPattern.find("BGGR") != std::string::npos) {
      filters = 0x16161616;
      redBayerPixel[0][0] = false;
      redBayerPixel[0][1] = false;
      redBayerPixel[1][0] = false;
      redBayerPixel[1][1] = true;

      greenBayerPixel[0][0] = false;
      greenBayerPixel[0][1] = true;
      greenBayerPixel[1][0] = true;
      greenBayerPixel[1][1] = false;
    }

    vignetteCurveH.clearPoints();
    for (auto p : vignetteRollOffH) {
      vignetteCurveH.addPoint(p);
    }

    vignetteCurveV.clearPoints();
    for (auto p : vignetteRollOffV) {
      vignetteCurveV.addPoint(p);
    }

    // If saturation is unit this satMat will be the identity matrix.
    cv::Mat_<float> satMat = cv::Mat::zeros(3, 3, CV_32F);
    satMat(0, 0) = 1.0f;
    satMat(1, 1) = saturation;
    satMat(2, 2) = saturation;

    // Move into yuv scale by the saturation and move back
    satMat = color::yuv2rgb * satMat * color::rgb2yuv;

    transpose(ccm, compositeCCM);
    compositeCCM *= satMat;

    // The stage following the CCM maps tone curve lut to 12bits so we
    // scale the pixel by the lut size here once instead of doing it
    // for every pixel.
    compositeCCM *= float(kToneCurveLutSize - 1);

    // Build the tone curve table
    buildToneCurveLut();
  }