mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-13 23:39:44 +03:00
ipa: raspberrypi: Use std::optional in DeviceStatus
Switch the aperture, lens_position, and flash_intensity fields in the DeviceStatus structure to use std::optional instead of using invalid default values. Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: David Plowman <david.plowman@raspberrypi.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
95151dd06f
commit
8acfb8494c
3 changed files with 15 additions and 12 deletions
|
@ -12,10 +12,16 @@ std::ostream &operator<<(std::ostream &out, const DeviceStatus &d)
|
|||
{
|
||||
out << "Exposure: " << d.shutter_speed
|
||||
<< " Frame length: " << d.frame_length
|
||||
<< " Gain: " << d.analogue_gain
|
||||
<< " Aperture: " << d.aperture
|
||||
<< " Lens: " << d.lens_position
|
||||
<< " Flash: " << d.flash_intensity;
|
||||
<< " Gain: " << d.analogue_gain;
|
||||
|
||||
if (d.aperture)
|
||||
out << " Aperture: " << *d.aperture;
|
||||
|
||||
if (d.lens_position)
|
||||
out << " Lens: " << *d.lens_position;
|
||||
|
||||
if (d.flash_intensity)
|
||||
out << " Flash: " << *d.flash_intensity;
|
||||
|
||||
if (d.sensor_temperature)
|
||||
out << " Temperature: " << *d.sensor_temperature;
|
||||
|
|
|
@ -19,8 +19,7 @@
|
|||
struct DeviceStatus {
|
||||
DeviceStatus()
|
||||
: shutter_speed(std::chrono::seconds(0)), frame_length(0),
|
||||
analogue_gain(0.0), lens_position(0.0), aperture(0.0),
|
||||
flash_intensity(0.0)
|
||||
analogue_gain(0.0)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -32,11 +31,11 @@ struct DeviceStatus {
|
|||
uint32_t frame_length;
|
||||
double analogue_gain;
|
||||
/* 1.0/distance-in-metres, or 0 if unknown */
|
||||
double lens_position;
|
||||
std::optional<double> lens_position;
|
||||
/* 1/f so that brightness quadruples when this doubles, or 0 if unknown */
|
||||
double aperture;
|
||||
std::optional<double> aperture;
|
||||
/* proportional to brightness with 0 = no flash, 1 = maximum flash */
|
||||
double flash_intensity;
|
||||
std::optional<double> flash_intensity;
|
||||
/* Sensor reported temperature value (in degrees) */
|
||||
std::optional<double> sensor_temperature;
|
||||
};
|
||||
|
|
|
@ -63,9 +63,7 @@ void Lux::Process(StatisticsPtr &stats, Metadata *image_metadata)
|
|||
DeviceStatus device_status;
|
||||
if (image_metadata->Get("device.status", device_status) == 0) {
|
||||
double current_gain = device_status.analogue_gain;
|
||||
double current_aperture = device_status.aperture;
|
||||
if (current_aperture == 0)
|
||||
current_aperture = current_aperture_;
|
||||
double current_aperture = device_status.aperture.value_or(current_aperture_);
|
||||
uint64_t sum = 0;
|
||||
uint32_t num = 0;
|
||||
uint32_t *bin = stats->hist[0].g_hist;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue