libcamera: src/ipa/ipu3/ipa_context.h Source File

libcamera v0.0.4 Supporting cameras in Linux since 2019

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