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
|
out << "Exposure: " << d.shutter_speed
|
||||||
<< " Frame length: " << d.frame_length
|
<< " Frame length: " << d.frame_length
|
||||||
<< " Gain: " << d.analogue_gain
|
<< " Gain: " << d.analogue_gain;
|
||||||
<< " Aperture: " << d.aperture
|
|
||||||
<< " Lens: " << d.lens_position
|
if (d.aperture)
|
||||||
<< " Flash: " << d.flash_intensity;
|
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)
|
if (d.sensor_temperature)
|
||||||
out << " Temperature: " << *d.sensor_temperature;
|
out << " Temperature: " << *d.sensor_temperature;
|
||||||
|
|
|
@ -19,8 +19,7 @@
|
||||||
struct DeviceStatus {
|
struct DeviceStatus {
|
||||||
DeviceStatus()
|
DeviceStatus()
|
||||||
: shutter_speed(std::chrono::seconds(0)), frame_length(0),
|
: shutter_speed(std::chrono::seconds(0)), frame_length(0),
|
||||||
analogue_gain(0.0), lens_position(0.0), aperture(0.0),
|
analogue_gain(0.0)
|
||||||
flash_intensity(0.0)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,11 +31,11 @@ struct DeviceStatus {
|
||||||
uint32_t frame_length;
|
uint32_t frame_length;
|
||||||
double analogue_gain;
|
double analogue_gain;
|
||||||
/* 1.0/distance-in-metres, or 0 if unknown */
|
/* 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 */
|
/* 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 */
|
/* proportional to brightness with 0 = no flash, 1 = maximum flash */
|
||||||
double flash_intensity;
|
std::optional<double> flash_intensity;
|
||||||
/* Sensor reported temperature value (in degrees) */
|
/* Sensor reported temperature value (in degrees) */
|
||||||
std::optional<double> sensor_temperature;
|
std::optional<double> sensor_temperature;
|
||||||
};
|
};
|
||||||
|
|
|
@ -63,9 +63,7 @@ void Lux::Process(StatisticsPtr &stats, Metadata *image_metadata)
|
||||||
DeviceStatus device_status;
|
DeviceStatus device_status;
|
||||||
if (image_metadata->Get("device.status", device_status) == 0) {
|
if (image_metadata->Get("device.status", device_status) == 0) {
|
||||||
double current_gain = device_status.analogue_gain;
|
double current_gain = device_status.analogue_gain;
|
||||||
double current_aperture = device_status.aperture;
|
double current_aperture = device_status.aperture.value_or(current_aperture_);
|
||||||
if (current_aperture == 0)
|
|
||||||
current_aperture = current_aperture_;
|
|
||||||
uint64_t sum = 0;
|
uint64_t sum = 0;
|
||||||
uint32_t num = 0;
|
uint32_t num = 0;
|
||||||
uint32_t *bin = stats->hist[0].g_hist;
|
uint32_t *bin = stats->hist[0].g_hist;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue