@@ -94,8 +94,7 @@ void Ccm::prepare(IPAContext &context, const uint32_t frame,
if (frame > 0 &&
utils::abs_diff(ct, lastCt_) < kTemperatureThreshold &&
saturation == lastSaturation_) {
- frameContext.ccm = context.activeState.ccm.ccm;
- context.activeState.ccm.changed = false;
+ frameContext.ccm = context.activeState.ccm;
return;
}
@@ -105,9 +104,9 @@ void Ccm::prepare(IPAContext &context, const uint32_t frame,
if (saturation)
applySaturation(ccm, saturation.value());
- context.activeState.ccm.ccm = ccm;
+ context.activeState.ccm = ccm;
frameContext.saturation = saturation;
- context.activeState.ccm.changed = true;
+ context.activeState.matrixChanged = true;
frameContext.ccm = ccm;
}
@@ -127,11 +127,11 @@ void Lut::prepare(IPAContext &context,
params->green[i] = gammaTable[static_cast<unsigned int>(lutGains.g())];
params->blue[i] = gammaTable[static_cast<unsigned int>(lutGains.b())];
}
- } else if (context.activeState.ccm.changed || gammaUpdateNeeded) {
+ } else if (context.activeState.matrixChanged || gammaUpdateNeeded) {
Matrix<float, 3, 3> gainCcm = { { gains.r(), 0, 0,
0, gains.g(), 0,
0, 0, gains.b() } };
- auto ccm = context.activeState.ccm.ccm * gainCcm;
+ auto ccm = context.activeState.ccm * gainCcm;
auto &red = params->redCcm;
auto &green = params->greenCcm;
auto &blue = params->blueCcm;
@@ -150,6 +150,7 @@ void Lut::prepare(IPAContext &context,
params->gammaLut[i] = gammaTable[i / div];
}
}
+ context.activeState.matrixChanged = false;
}
params->gamma = context.configuration.gamma;
@@ -62,10 +62,8 @@ struct IPAActiveState {
double contrastExp;
} gamma;
- struct {
- Matrix<float, 3, 3> ccm;
- bool changed;
- } ccm;
+ Matrix<float, 3, 3> ccm;
+ bool matrixChanged = false;
struct {
/* 0..2 range, 1.0 = normal */