summaryrefslogtreecommitdiff
path: root/src/ipa/raspberrypi/controller/rpi/alsc.hpp
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2022-07-27 09:55:20 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-07-27 18:12:14 +0300
commitafd2a5dac59a06c6897bdf7a3a1f35743192b608 (patch)
tree3940851a20862543c4c610a32d971d841d83f13d /src/ipa/raspberrypi/controller/rpi/alsc.hpp
parentde9e95bfcc5149bc136895ec77537a8a73751621 (diff)
ipa: raspberrypi: Rename header files from *.hpp to *.h
As per the libcamera coding guidelines, rename all .hpp header files to .h. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/ipa/raspberrypi/controller/rpi/alsc.hpp')
-rw-r--r--src/ipa/raspberrypi/controller/rpi/alsc.hpp110
1 files changed, 0 insertions, 110 deletions
diff --git a/src/ipa/raspberrypi/controller/rpi/alsc.hpp b/src/ipa/raspberrypi/controller/rpi/alsc.hpp
deleted file mode 100644
index 3ffc175d..00000000
--- a/src/ipa/raspberrypi/controller/rpi/alsc.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/* SPDX-License-Identifier: BSD-2-Clause */
-/*
- * Copyright (C) 2019, Raspberry Pi (Trading) Limited
- *
- * alsc.hpp - ALSC (auto lens shading correction) control algorithm
- */
-#pragma once
-
-#include <mutex>
-#include <condition_variable>
-#include <thread>
-
-#include "../algorithm.hpp"
-#include "../alsc_status.h"
-
-namespace RPiController {
-
-/* Algorithm to generate automagic LSC (Lens Shading Correction) tables. */
-
-struct AlscCalibration {
- double ct;
- double table[ALSC_CELLS_X * ALSC_CELLS_Y];
-};
-
-struct AlscConfig {
- /* Only repeat the ALSC calculation every "this many" frames */
- uint16_t framePeriod;
- /* number of initial frames for which speed taken as 1.0 (maximum) */
- uint16_t startupFrames;
- /* IIR filter speed applied to algorithm results */
- double speed;
- double sigmaCr;
- double sigmaCb;
- double minCount;
- uint16_t minG;
- double omega;
- uint32_t nIter;
- double luminanceLut[ALSC_CELLS_X * ALSC_CELLS_Y];
- double luminanceStrength;
- std::vector<AlscCalibration> calibrationsCr;
- std::vector<AlscCalibration> calibrationsCb;
- double defaultCt; /* colour temperature if no metadata found */
- double threshold; /* iteration termination threshold */
- double lambdaBound; /* upper/lower bound for lambda from a value of 1 */
-};
-
-class Alsc : public Algorithm
-{
-public:
- Alsc(Controller *controller = NULL);
- ~Alsc();
- char const *name() const override;
- void initialise() override;
- void switchMode(CameraMode const &cameraMode, Metadata *metadata) override;
- void read(boost::property_tree::ptree const &params) override;
- void prepare(Metadata *imageMetadata) override;
- void process(StatisticsPtr &stats, Metadata *imageMetadata) override;
-
-private:
- /* configuration is read-only, and available to both threads */
- AlscConfig config_;
- bool firstTime_;
- CameraMode cameraMode_;
- double luminanceTable_[ALSC_CELLS_X * ALSC_CELLS_Y];
- std::thread asyncThread_;
- void asyncFunc(); /* asynchronous thread function */
- std::mutex mutex_;
- /* condvar for async thread to wait on */
- std::condition_variable asyncSignal_;
- /* condvar for synchronous thread to wait on */
- std::condition_variable syncSignal_;
- /* for sync thread to check if async thread finished (requires mutex) */
- bool asyncFinished_;
- /* for async thread to check if it's been told to run (requires mutex) */
- bool asyncStart_;
- /* for async thread to check if it's been told to quit (requires mutex) */
- bool asyncAbort_;
-
- /*
- * The following are only for the synchronous thread to use:
- * for sync thread to note its has asked async thread to run
- */
- bool asyncStarted_;
- /* counts up to framePeriod before restarting the async thread */
- int framePhase_;
- /* counts up to startupFrames */
- int frameCount_;
- /* counts up to startupFrames for Process function */
- int frameCount2_;
- double syncResults_[3][ALSC_CELLS_Y][ALSC_CELLS_X];
- double prevSyncResults_[3][ALSC_CELLS_Y][ALSC_CELLS_X];
- void waitForAysncThread();
- /*
- * The following are for the asynchronous thread to use, though the main
- * thread can set/reset them if the async thread is known to be idle:
- */
- void restartAsync(StatisticsPtr &stats, Metadata *imageMetadata);
- /* copy out the results from the async thread so that it can be restarted */
- void fetchAsyncResults();
- double ct_;
- bcm2835_isp_stats_region statistics_[ALSC_CELLS_Y * ALSC_CELLS_X];
- double asyncResults_[3][ALSC_CELLS_Y][ALSC_CELLS_X];
- double asyncLambdaR_[ALSC_CELLS_X * ALSC_CELLS_Y];
- double asyncLambdaB_[ALSC_CELLS_X * ALSC_CELLS_Y];
- void doAlsc();
- double lambdaR_[ALSC_CELLS_X * ALSC_CELLS_Y];
- double lambdaB_[ALSC_CELLS_X * ALSC_CELLS_Y];
-};
-
-} /* namespace RPiController */