summaryrefslogtreecommitdiff
path: root/src/ipa/rkisp1/ipa_context.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipa/rkisp1/ipa_context.h')
-rw-r--r--src/ipa/rkisp1/ipa_context.h106
1 files changed, 95 insertions, 11 deletions
diff --git a/src/ipa/rkisp1/ipa_context.h b/src/ipa/rkisp1/ipa_context.h
index f387cace..10d8f38c 100644
--- a/src/ipa/rkisp1/ipa_context.h
+++ b/src/ipa/rkisp1/ipa_context.h
@@ -14,36 +14,100 @@
#include <libcamera/geometry.h>
+#include <libipa/fc_queue.h>
+
namespace libcamera {
namespace ipa::rkisp1 {
+struct IPAHwSettings {
+ unsigned int numAeCells;
+ unsigned int numHistogramBins;
+ unsigned int numHistogramWeights;
+ unsigned int numGammaOutSamples;
+};
+
struct IPASessionConfiguration {
struct {
- utils::Duration minShutterSpeed;
- utils::Duration maxShutterSpeed;
- double minAnalogueGain;
- double maxAnalogueGain;
struct rkisp1_cif_isp_window measureWindow;
} agc;
struct {
struct rkisp1_cif_isp_window measureWindow;
+ bool enabled;
} awb;
struct {
+ bool enabled;
+ } lsc;
+
+ struct {
+ utils::Duration minShutterSpeed;
+ utils::Duration maxShutterSpeed;
+ double minAnalogueGain;
+ double maxAnalogueGain;
+
+ int32_t defVBlank;
utils::Duration lineDuration;
+ Size size;
} sensor;
+ bool raw;
+};
+
+struct IPAActiveState {
+ struct {
+ struct {
+ uint32_t exposure;
+ double gain;
+ } manual;
+ struct {
+ uint32_t exposure;
+ double gain;
+ } automatic;
+
+ bool autoEnabled;
+ } agc;
+
+ struct {
+ struct {
+ struct {
+ double red;
+ double green;
+ double blue;
+ } manual;
+ struct {
+ double red;
+ double green;
+ double blue;
+ } automatic;
+ } gains;
+
+ unsigned int temperatureK;
+ bool autoEnabled;
+ } awb;
+
+ struct {
+ int8_t brightness;
+ uint8_t contrast;
+ uint8_t saturation;
+ } cproc;
+
struct {
- rkisp1_cif_isp_version revision;
- } hw;
+ bool denoise;
+ } dpf;
+
+ struct {
+ uint8_t denoise;
+ uint8_t sharpness;
+ } filter;
};
-struct IPAFrameContext {
+struct IPAFrameContext : public FrameContext {
struct {
uint32_t exposure;
double gain;
+ bool autoEnabled;
} agc;
struct {
@@ -53,20 +117,40 @@ struct IPAFrameContext {
double blue;
} gains;
- double temperatureK;
+ unsigned int temperatureK;
+ bool autoEnabled;
} awb;
struct {
+ int8_t brightness;
+ uint8_t contrast;
+ uint8_t saturation;
+ bool update;
+ } cproc;
+
+ struct {
+ bool denoise;
+ bool update;
+ } dpf;
+
+ struct {
+ uint8_t denoise;
+ uint8_t sharpness;
+ bool update;
+ } filter;
+
+ struct {
uint32_t exposure;
double gain;
} sensor;
-
- unsigned int frameCount;
};
struct IPAContext {
+ const IPAHwSettings *hw;
IPASessionConfiguration configuration;
- IPAFrameContext frameContext;
+ IPAActiveState activeState;
+
+ FCQueue<IPAFrameContext> frameContexts;
};
} /* namespace ipa::rkisp1 */