diff options
Diffstat (limited to 'src/ipa/rkisp1/ipa_context.h')
-rw-r--r-- | src/ipa/rkisp1/ipa_context.h | 106 |
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 */ |