| 227 | }; |
| 228 | |
| 229 | void 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; |
nothing calls this directly
no test coverage detected