summaryrefslogtreecommitdiff
path: root/src/ipa/raspberrypi/controller/agc_status.h
blob: 10381c90a313e52a6bd657c25eb417d39bac087a (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
/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * Copyright (C) 2019, Raspberry Pi (Trading) Limited
 *
 * agc_status.h - AGC/AEC control algorithm status
 */
#pragma once

// The AGC algorithm should post the following structure into the image's
// "agc.status" metadata.

#ifdef __cplusplus
extern "C" {
#endif

// 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 {
	double total_exposure_value; // value for all exposure and gain for this image
	double target_exposure_value; // (unfiltered) target total exposure AGC is aiming for
	double shutter_time;
	double analogue_gain;
	char exposure_mode[32];
	char constraint_mode[32];
	char metering_mode[32];
	double ev;
	double flicker_period;
	int floating_region_enable;
	double fixed_shutter;
	double fixed_analogue_gain;
	double digital_gain;
	int locked;
};

#ifdef __cplusplus
}
#endif
s="hl opt">); cumulative_.reserve(num + 1); cumulative_.push_back(0); for (int i = 0; i < num; i++) cumulative_.push_back(cumulative_.back() + histogram[i]); } uint32_t Bins() const { return cumulative_.size() - 1; } uint64_t Total() const { return cumulative_[cumulative_.size() - 1]; } // Cumulative frequency up to a (fractional) point in a bin. uint64_t CumulativeFreq(double bin) const; // Return the (fractional) bin of the point q (0 <= q <= 1) through the // histogram. Optionally provide limits to help. double Quantile(double q, int first = -1, int last = -1) const; // Return the average histogram bin value between the two quantiles. double InterQuantileMean(double q_lo, double q_hi) const; private: std::vector<uint64_t> cumulative_; }; } // namespace RPiController