summaryrefslogtreecommitdiff
path: root/src/ipa/rpi/controller/agc_status.h
blob: 9308b156051c7bf888a0e5f6c74a941c96ead468 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * Copyright (C) 2019, Raspberry Pi Ltd
 *
 * AGC/AEC control algorithm status
 */
#pragma once

#include <string>

#include <libcamera/base/utils.h>

#include "hdr_status.h"

/*
 * The AGC algorithm process method should post an AgcStatus into the image
 * metadata under the tag "agc.status".
 * The AGC algorithm prepare method should post an AgcPrepareStatus instead
 * under "agc.prepare_status".
 */

/*
 * Note: total_exposure_value will be reported as zero until the algorithm has
 * seen statistics and calculated meaningful values. The contents should be
 * ignored until then.
 */

struct AgcStatus {
	libcamera::utils::Duration totalExposureValue; /* value for all exposure and gain for this image */
	libcamera::utils::Duration targetExposureValue; /* (unfiltered) target total exposure AGC is aiming for */
	libcamera::utils::Duration exposureTime;
	double analogueGain;
	std::string exposureMode;
	std::string constraintMode;
	std::string meteringMode;
	double ev;
	libcamera::utils::Duration flickerPeriod;
	int floatingRegionEnable;
	libcamera::utils::Duration fixedExposureTime;
	double fixedAnalogueGain;
	unsigned int channel;
	HdrStatus hdr;
};

struct AgcPrepareStatus {
	double digitalGain;
	int locked;
};