NOTE! This copyright does *not* cover user programs that use kernel services by normal system calls - this is merely considered normal use of the kernel, and does *not* fall under the heading of "derived work". Also note that the GPL below is copyrighted by the Free Software Foundation, but the instance of code that it refers to (the Linux kernel) is copyrighted by me and others who actually wrote it. Also note that the only valid version of the GPL as far as the kernel is concerned is _this_ particular version of the license (ie v2, not v2.2 or v3.x or whatever), unless explicitly otherwise stated. Linus Torvalds o'/> index : libcamera/libcamera.git
libcamera official repositorygit repository hosting on libcamera.org
summaryrefslogtreecommitdiff
path: root/src/ipa/raspberrypi/controller/agc_algorithm.hpp
blob: f97deb0fca59641b87d7b87708f87b19b4ae370b (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
/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * Copyright (C) 2019, Raspberry Pi (Trading) Limited
 *
 * agc_algorithm.hpp - AGC/AEC control algorithm interface
 */
#pragma once

#include "algorithm.hpp"

namespace RPiController {

class AgcAlgorithm : public Algorithm
{
public:
	AgcAlgorithm(Controller *controller) : Algorithm(controller) {}
	// An AGC algorithm must provide the following:
	virtual unsigned int GetConvergenceFrames() const = 0;
	virtual void SetEv(double ev) = 0;
	virtual void SetFlickerPeriod(double flicker_period) = 0;
	virtual void SetFixedShutter(double fixed_shutter) = 0; // microseconds
	virtual void SetMaxShutter(double max_shutter) = 0; // microseconds
	virtual void SetFixedAnalogueGain(double fixed_analogue_gain) = 0;
	virtual void SetMeteringMode(std::string const &metering_mode_name) = 0;
	virtual void SetExposureMode(std::string const &exposure_mode_name) = 0;
	virtual void
	SetConstraintMode(std::string const &contraint_mode_name) = 0;
};

} // namespace RPiController