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();
}