libcamera  v0.3.1+12-19bbca3c
Supporting cameras in Linux since 2019
ipa_context.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 /*
3  * Copyright (C) 2021, Google Inc.
4  *
5  * IPU3 IPA Context
6  *
7  */
8 
9 #pragma once
10 
11 #include <linux/intel-ipu3.h>
12 
13 #include <libcamera/base/utils.h>
14 
15 #include <libcamera/controls.h>
16 #include <libcamera/geometry.h>
17 
18 #include <libipa/fc_queue.h>
19 
20 namespace libcamera {
21 
22 namespace ipa::ipu3 {
23 
25  struct {
26  ipu3_uapi_grid_config bdsGrid;
28  uint32_t stride;
29  } grid;
30 
31  struct {
32  ipu3_uapi_grid_config afGrid;
33  } af;
34 
35  struct {
40  } agc;
41 
42  struct {
43  int32_t defVBlank;
46  } sensor;
47 };
48 
50  struct {
51  uint32_t focus;
52  double maxVariance;
53  bool stable;
54  } af;
55 
56  struct {
57  uint32_t exposure;
58  double gain;
59  uint32_t constraintMode;
60  uint32_t exposureMode;
61  } agc;
62 
63  struct {
64  struct {
65  double red;
66  double green;
67  double blue;
68  } gains;
69 
70  double temperatureK;
71  } awb;
72 
73  struct {
74  double gamma;
75  struct ipu3_uapi_gamma_corr_lut gammaCorrection;
76  } toneMapping;
77 };
78 
79 struct IPAFrameContext : public FrameContext {
80  struct {
81  uint32_t exposure;
82  double gain;
83  } sensor;
84 };
85 
86 struct IPAContext {
89 
91 
93 };
94 
95 } /* namespace ipa::ipu3 */
96 
97 } /* namespace libcamera*/
utils::Duration lineDuration
Line duration in microseconds.
Definition: ipa_context.h:44
Queue of per-frame contexts.
Global IPA context data shared between all algorithms.
Definition: ipa_context.h:86
double temperatureK
Estimated color temperature.
Definition: ipa_context.h:70
double red
White balance gain for R channel.
Definition: ipa_context.h:65
double gain
Analogue gain multiplier.
Definition: ipa_context.h:82
ipu3_uapi_grid_config afGrid
AF scene grid configuration.
Definition: ipa_context.h:32
Top-level libcamera namespace.
Definition: backtrace.h:17
struct libcamera::ipa::ipu3::IPASessionConfiguration::@7 agc
AGC parameters configuration of the IPA.
Size bdsOutputSize
BDS output size configured by the pipeline handler.
Definition: ipa_context.h:27
double maxAnalogueGain
Maximum analogue gain supported with the configured sensor.
Definition: ipa_context.h:39
IPAActiveState activeState
The current state of IPA algorithms.
Definition: ipa_context.h:88
Describe a two-dimensional size.
Definition: geometry.h:52
A support class for managing FrameContext instances in IPA modules.
Definition: fc_queue.h:22
int32_t defVBlank
The default vblank value of the sensor.
Definition: ipa_context.h:43
FCQueue< IPAFrameContext > frameContexts
Ring buffer of the IPAFrameContext(s)
Definition: ipa_context.h:90
Miscellaneous utility functions.
struct libcamera::ipa::ipu3::IPASessionConfiguration::@8 sensor
Sensor-specific configuration of the IPA.
Size size
Sensor output resolution.
Definition: ipa_context.h:45
struct libcamera::ipa::ipu3::IPASessionConfiguration::@5 grid
Grid configuration of the IPA.
std::unordered_map< const ControlId *, ControlInfo > Map
The base std::unsorted_map<> container.
Definition: controls.h:308
utils::Duration minShutterSpeed
Minimum shutter speed supported with the configured sensor.
Definition: ipa_context.h:36
double gain
Analogue gain multiplier.
Definition: ipa_context.h:58
uint32_t stride
Number of cells on one line including the ImgU padding.
Definition: ipa_context.h:28
ControlInfoMap::Map ctrlMap
A ControlInfoMap::Map of controls populated by the algorithms.
Definition: ipa_context.h:92
Context for a frame.
Definition: fc_queue.h:24
uint32_t exposure
Exposure time expressed as a number of lines.
Definition: ipa_context.h:81
Session configuration for the IPA module.
Definition: ipa_context.h:24
ipu3_uapi_grid_config bdsGrid
Bayer Down Scaler grid plane config used by the kernel.
Definition: ipa_context.h:26
bool stable
It is set to true, if the best focus is found.
Definition: ipa_context.h:53
IPASessionConfiguration configuration
The IPA session configuration, immutable during the session.
Definition: ipa_context.h:87
double blue
White balance gain for B channel.
Definition: ipa_context.h:67
Helper class from std::chrono::duration that represents a time duration in nanoseconds with double pr...
Definition: utils.h:353
uint32_t exposure
Exposure time expressed as a number of lines.
Definition: ipa_context.h:57
IPU3-specific FrameContext.
Definition: ipa_context.h:79
struct libcamera::ipa::ipu3::IPASessionConfiguration::@6 af
AF grid configuration of the IPA.
double green
White balance gain for G channel.
Definition: ipa_context.h:66
double gamma
Gamma value for the LUT.
Definition: ipa_context.h:74
Framework to manage controls related to an object.
utils::Duration maxShutterSpeed
Maximum shutter speed supported with the configured sensor.
Definition: ipa_context.h:37
Data structures related to geometric objects.
double maxVariance
The maximum variance of the current image.
Definition: ipa_context.h:52
uint32_t focus
Current position of the lens.
Definition: ipa_context.h:51
double minAnalogueGain
Minimum analogue gain supported with the configured sensor.
Definition: ipa_context.h:38
The active state of the IPA algorithms.
Definition: ipa_context.h:49