libcamera v0.0.0
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 <array>
12
13#include <linux/intel-ipu3.h>
14
16
17#include <libcamera/controls.h>
18#include <libcamera/geometry.h>
19
20namespace libcamera {
21
22namespace ipa::ipu3 {
23
24/* Maximum number of frame contexts to be held */
25static constexpr uint32_t kMaxFrameContexts = 16;
26
28 struct {
29 ipu3_uapi_grid_config bdsGrid;
31 uint32_t stride;
33
34 struct {
35 ipu3_uapi_grid_config afGrid;
36 } af;
37
38 struct {
43 } agc;
44
45 struct {
46 int32_t defVBlank;
49};
50
52 struct {
53 uint32_t focus;
55 bool stable;
56 } af;
57
58 struct {
59 uint32_t exposure;
60 double gain;
61 } agc;
62
63 struct {
64 struct {
65 double red;
66 double green;
67 double blue;
68 } gains;
69
71 } awb;
72
73 struct {
74 double gamma;
75 struct ipu3_uapi_gamma_corr_lut gammaCorrection;
77};
78
81 IPAFrameContext(uint32_t id, const ControlList &reqControls);
82
83 struct {
84 uint32_t exposure;
85 double gain;
87
88 uint32_t frame;
90};
91
92struct IPAContext {
95
96 std::array<IPAFrameContext, kMaxFrameContexts> frameContexts;
97};
98
99} /* namespace ipa::ipu3 */
100
101} /* namespace libcamera*/
Associate a list of ControlId with their values for an object.
Definition: controls.h:350
Describe a two-dimensional size.
Definition: geometry.h:53
Helper class from std::chrono::duration that represents a time duration in nanoseconds with double pr...
Definition: utils.h:330
Framework to manage controls related to an object.
Data structures related to geometric objects.
Top-level libcamera namespace.
Definition: backtrace.h:17
White balance gains.
The active state of the IPA algorithms.
Definition: ipa_context.h:51
struct libcamera::ipa::ipu3::IPAActiveState::@10 toneMapping
Context for ToneMapping and Gamma control.
uint32_t focus
Current position of the lens.
Definition: ipa_context.h:53
double blue
White balance gain for B channel.
Definition: ipa_context.h:67
struct ipu3_uapi_gamma_corr_lut gammaCorrection
Per-pixel tone mapping implemented as a LUT.
Definition: ipa_context.h:75
double temperatureK
Estimated color temperature.
Definition: ipa_context.h:70
struct libcamera::ipa::ipu3::IPAActiveState::@7 af
Context for the Automatic Focus algorithm.
struct libcamera::ipa::ipu3::IPAActiveState::@9 awb
Context for the Automatic White Balance algorithm.
uint32_t exposure
Exposure time expressed as a number of lines.
Definition: ipa_context.h:59
double green
White balance gain for G channel.
Definition: ipa_context.h:66
struct libcamera::ipa::ipu3::IPAActiveState::@8 agc
Context for the Automatic Gain Control algorithm.
double red
White balance gain for R channel.
Definition: ipa_context.h:65
double gain
Analogue gain multiplier.
Definition: ipa_context.h:60
double maxVariance
The maximum variance of the current image.
Definition: ipa_context.h:54
bool stable
It is set to true, if the best focus is found.
Definition: ipa_context.h:55
double gamma
Gamma value for the LUT.
Definition: ipa_context.h:74
Global IPA context data shared between all algorithms.
Definition: ipa_context.h:92
IPAActiveState activeState
The current state of IPA algorithms.
Definition: ipa_context.h:94
IPASessionConfiguration configuration
The IPA session configuration, immutable during the session.
Definition: ipa_context.h:93
std::array< IPAFrameContext, kMaxFrameContexts > frameContexts
Ring buffer of the IPAFrameContext(s)
Definition: ipa_context.h:96
Context for a frame.
Definition: ipa_context.h:79
struct libcamera::ipa::ipu3::IPAFrameContext::@12 sensor
Effective sensor values that were applied for the frame.
ControlList frameControls
Controls sent in by the application while queuing the request.
Definition: ipa_context.h:89
uint32_t frame
The frame number.
Definition: ipa_context.h:88
double gain
Analogue gain multiplier.
Definition: ipa_context.h:85
IPAFrameContext()
Default constructor for IPAFrameContext.
uint32_t exposure
Exposure time expressed as a number of lines.
Definition: ipa_context.h:84
Session configuration for the IPA module.
Definition: ipa_context.h:27
ipu3_uapi_grid_config afGrid
AF scene grid configuration.
Definition: ipa_context.h:35
int32_t defVBlank
The default vblank value of the sensor.
Definition: ipa_context.h:46
double maxAnalogueGain
Maximum analogue gain supported with the configured sensor.
Definition: ipa_context.h:42
utils::Duration maxShutterSpeed
Maximum shutter speed supported with the configured sensor.
Definition: ipa_context.h:40
struct libcamera::ipa::ipu3::IPASessionConfiguration::@4 af
AF grid configuration of the IPA.
uint32_t stride
Number of cells on one line including the ImgU padding.
Definition: ipa_context.h:31
struct libcamera::ipa::ipu3::IPASessionConfiguration::@6 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:29
double minAnalogueGain
Minimum analogue gain supported with the configured sensor.
Definition: ipa_context.h:41
utils::Duration minShutterSpeed
Minimum shutter speed supported with the configured sensor.
Definition: ipa_context.h:39
utils::Duration lineDuration
Line duration in microseconds.
Definition: ipa_context.h:47
Size bdsOutputSize
BDS output size configured by the pipeline handler.
Definition: ipa_context.h:30
struct libcamera::ipa::ipu3::IPASessionConfiguration::@3 grid
Grid configuration of the IPA.
struct libcamera::ipa::ipu3::IPASessionConfiguration::@5 agc
AGC parameters configuration of the IPA.
Miscellaneous utility functions.