MCPcopy Create free account
hub / github.com/awawa-dev/HyperHDR / calibrateFrame

Method calibrateFrame

sources/base/DetectionAutomatic.cpp:229–365  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

227};
228
229void DetectionAutomatic::calibrateFrame(Image<ColorRgb>& image)
230{
231 qint64 time = InternalClock::now();
232
233 if (time > calibrationData.endTime || time > calibrationData.phaseEndTime)
234 {
235 calibrationData.status = "Timeout out waiting for frames";
236 calibrationData.isRunning = false;
237 setHdrToneMappingEnabled(calibrationData.backupHDR);
238 setFpsSoftwareDecimation(calibrationData.decimationFPS);
239 Error(_log, "The calibration is finished. %s", QSTRING_CSTR(calibrationData.status));
240 return;
241 }
242
243 if (time < calibrationData.phaseStartTime)
244 {
245 calibrationData.status = QString("Preparing for capturing %1 frame").arg(
246 (calibrationData.currentPhase == calibrationPhase::WAITING_FOR_SDR) ? "SDR" : "HDR");
247 return;
248 }
249
250 if (calibrationData.width > 0 && calibrationData.height > 0 &&
251 (calibrationData.width != (int)image.width() || calibrationData.height != (int)image.height()))
252 {
253 calibrationData.status = "Stream width or height has changed during calibration";
254 calibrationData.isRunning = false;
255 setHdrToneMappingEnabled(calibrationData.backupHDR);
256 setFpsSoftwareDecimation(calibrationData.decimationFPS);
257 Error(_log, "The calibration is finished. %s", QSTRING_CSTR(calibrationData.status));
258 return;
259 }
260
261 if (calibrationData.currentPhase == calibrationPhase::WAITING_FOR_SDR && getHdrToneMappingEnabled() == 0)
262 {
263 calibrationData.buildPoints(getSignature(), image.width(), image.height());
264 calibrationData.phaseEndTime = calibrationData.endTime;
265 calibrationData.currentPhase = calibrationPhase::CALIBRATING_SDR;
266 calibrationData.status = "Capturing SDR frames";
267 Debug(_log, "%s", QSTRING_CSTR(calibrationData.status));
268 }
269 else if (calibrationData.currentPhase == calibrationPhase::WAITING_FOR_HDR && getHdrToneMappingEnabled() == 1)
270 {
271 calibrationData.phaseEndTime = calibrationData.endTime;
272 calibrationData.currentPhase = calibrationPhase::CALIBRATING_HDR;
273 calibrationData.status = "Capturing HDR frames";
274 Debug(_log, "%s", QSTRING_CSTR(calibrationData.status));
275 }
276 else if (calibrationData.currentPhase == calibrationPhase::CALIBRATING_SDR ||
277 calibrationData.currentPhase == calibrationPhase::CALIBRATING_HDR)
278 {
279 std::vector<calibrationPoint>& points = (calibrationData.currentPhase == calibrationPhase::CALIBRATING_SDR) ?
280 calibrationData.sdrPoint : calibrationData.hdrPoint;
281 for (calibrationPoint& p : points)
282 {
283 if (!p.init)
284 {
285 auto col = image(p.x, p.y);
286 p.r = col.red;

Callers

nothing calls this directly

Calls 5

buildPointsMethod · 0.80
widthMethod · 0.45
heightMethod · 0.45
fastBoxMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected