libcamera  v0.2.0
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  * ipa_context.h - 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/geometry.h>
16 
17 #include <libipa/fc_queue.h>
18 
19 namespace libcamera {
20 
21 namespace ipa::ipu3 {
22 
24  struct {
25  ipu3_uapi_grid_config bdsGrid;
27  uint32_t stride;
28  } grid;
29 
30  struct {
31  ipu3_uapi_grid_config afGrid;
32  } af;
33 
34  struct {
39  } agc;
40 
41  struct {
42  int32_t defVBlank;
45  } sensor;
46 };
47 
49  struct {
50  uint32_t focus;
51  double maxVariance;
52  bool stable;
53  } af;
54 
55  struct {
56  uint32_t exposure;
57  double gain;
58  } agc;
59 
60  struct {
61  struct {
62  double red;
63  double green;
64  double blue;
65  } gains;
66 
67  double temperatureK;
68  } awb;
69 
70  struct {
71  double gamma;
72  struct ipu3_uapi_gamma_corr_lut gammaCorrection;
74 };
75 
76 struct IPAFrameContext : public FrameContext {
77  struct {
78  uint32_t exposure;
79  double gain;
80  } sensor;
81 };
82 
83 struct IPAContext {
86 
88 };
89 
90 } /* namespace ipa::ipu3 */
91 
92 } /* namespace libcamera*/
Describe a two-dimensional size.
Definition: geometry.h:53
A support class for managing FrameContext instances in IPA modules.
Definition: fc_queue.h:32
Helper class from std::chrono::duration that represents a time duration in nanoseconds with double pr...
Definition: utils.h:330
Queue of per-frame contexts.
Data structures related to geometric objects.
Top-level libcamera namespace.
Definition: backtrace.h:17
Context for a frame.
Definition: fc_queue.h:24
The active state of the IPA algorithms.
Definition: ipa_context.h:48
struct libcamera::ipa::ipu3::IPAActiveState::@12 toneMapping
Context for ToneMapping and Gamma control.
uint32_t focus
Current position of the lens.
Definition: ipa_context.h:50
double blue
White balance gain for B channel.
Definition: ipa_context.h:64
struct ipu3_uapi_gamma_corr_lut gammaCorrection
Per-pixel tone mapping implemented as a LUT.
Definition: ipa_context.h:72
double temperatureK
Estimated color temperature.
Definition: ipa_context.h:67
struct libcamera::ipa::ipu3::IPAActiveState::@9 af
Context for the Automatic Focus algorithm.
struct libcamera::ipa::ipu3::IPAActiveState::@11 awb
Context for the Automatic White Balance algorithm.
uint32_t exposure
Exposure time expressed as a number of lines.
Definition: ipa_context.h:56
double green
White balance gain for G channel.
Definition: ipa_context.h:63
struct libcamera::ipa::ipu3::IPAActiveState::@10 agc
Context for the Automatic Gain Control algorithm.
double red
White balance gain for R channel.
Definition: ipa_context.h:62
struct libcamera::ipa::ipu3::IPAActiveState::@11::@13 gains
White balance gains.
double gain
Analogue gain multiplier.
Definition: ipa_context.h:57
double maxVariance
The maximum variance of the current image.
Definition: ipa_context.h:51
bool stable
It is set to true, if the best focus is found.
Definition: ipa_context.h:52
double gamma
Gamma value for the LUT.
Definition: ipa_context.h:71
Global IPA context data shared between all algorithms.
Definition: ipa_context.h:83
IPAActiveState activeState
The current state of IPA algorithms.
Definition: ipa_context.h:85
IPASessionConfiguration configuration
The IPA session configuration, immutable during the session.
Definition: ipa_context.h:84
FCQueue< IPAFrameContext > frameContexts
Ring buffer of the IPAFrameContext(s)
Definition: ipa_context.h:87
IPU3-specific FrameContext.
Definition: ipa_context.h:76
struct libcamera::ipa::ipu3::IPAFrameContext::@14 sensor
Effective sensor values that were applied for the frame.
double gain
Analogue gain multiplier.
Definition: ipa_context.h:79
uint32_t exposure
Exposure time expressed as a number of lines.
Definition: ipa_context.h:78
Session configuration for the IPA module.
Definition: ipa_context.h:23
ipu3_uapi_grid_config afGrid
AF scene grid configuration.
Definition: ipa_context.h:31
int32_t defVBlank
The default vblank value of the sensor.
Definition: ipa_context.h:42
Size size
Sensor output resolution.
Definition: ipa_context.h:44
double maxAnalogueGain
Maximum analogue gain supported with the configured sensor.
Definition: ipa_context.h:38
utils::Duration maxShutterSpeed
Maximum shutter speed supported with the configured sensor.
Definition: ipa_context.h:36
struct libcamera::ipa::ipu3::IPASessionConfiguration::@6 af
AF grid configuration of the IPA.
uint32_t stride
Number of cells on one line including the ImgU padding.
Definition: ipa_context.h:27
struct libcamera::ipa::ipu3::IPASessionConfiguration::@8 sensor
Sensor-specific configuration of the IPA.
ipu3_uapi_grid_config bdsGrid
Bayer Down Scaler grid plane config used by the kernel.
Definition: ipa_context.h:25
double minAnalogueGain
Minimum analogue gain supported with the configured sensor.
Definition: ipa_context.h:37
utils::Duration minShutterSpeed
Minimum shutter speed supported with the configured sensor.
Definition: ipa_context.h:35
utils::Duration lineDuration
Line duration in microseconds.
Definition: ipa_context.h:43
Size bdsOutputSize
BDS output size configured by the pipeline handler.
Definition: ipa_context.h:26
struct libcamera::ipa::ipu3::IPASessionConfiguration::@5 grid
Grid configuration of the IPA.
struct libcamera::ipa::ipu3::IPASessionConfiguration::@7 agc
AGC parameters configuration of the IPA.
Miscellaneous utility functions.