Files
Megapixels/src/state.h
2024-09-07 22:52:30 +02:00

119 lines
2.8 KiB
C

#pragma once
#include "camera.h"
#include "dcp.h"
#include <libmegapixels.h>
#include <stdbool.h>
typedef struct cstate {
MPControl control;
int32_t value;
int32_t value_req;
int32_t min;
int32_t max;
bool manual;
bool manual_req;
MPControl auto_control;
} controlstate;
typedef struct state_main {
libmegapixels_devconfig *configuration;
libmegapixels_camera *camera;
libmegapixels_aaa_stats stats;
// Size of the preview widget
int preview_width;
int preview_height;
// Size of the frame to draw in the preview widget
int preview_buffer_width;
int preview_buffer_height;
int device_rotation;
int burst_length;
// Control state
bool flash_enabled;
controlstate gain;
controlstate dgain;
controlstate exposure;
controlstate focus;
bool has_auto_focus_continuous;
bool has_auto_focus_start;
} mp_state_main;
typedef struct state_io {
libmegapixels_devconfig *configuration;
libmegapixels_camera *camera;
libmegapixels_mode *mode_capture;
libmegapixels_mode *mode_preview;
libmegapixels_aaa_stats stats;
int burst_length;
int captures_remaining;
bool flush_pipeline;
int blank_frame_count;
// Control state
controlstate gain;
controlstate dgain;
controlstate exposure;
controlstate focus;
controlstate red;
controlstate blue;
bool can_af_trigger;
bool trigger_af;
bool flash_enabled;
// State passed through to the process pipeline
int preview_width;
int preview_height;
int device_rotation;
} mp_state_io;
typedef enum aaa_mode {
AAA_DISABLED,
AAA_BY_SENSOR,
AAA_BY_V4L2_CONTROLS,
AAA_BY_POST,
} aaa_mode;
typedef struct state_proc {
libmegapixels_devconfig *configuration;
libmegapixels_camera *camera;
libmegapixels_mode *mode;
libmegapixels_aaa_stats stats;
int burst_length;
int captures_remaining;
int counter;
int preview_width;
int preview_height;
// Device orientation in degrees
int device_rotation;
// Camera orientation as number
int camera_rotation;
bool is_capturing;
float balance[3];
controlstate gain;
controlstate dgain;
controlstate exposure;
controlstate focus;
struct MPCameraCalibration calibration;
float red;
float blue;
float blacklevel;
int mode_balance;
int mode_exposure;
int mode_focus;
bool flash_enabled;
} mp_state_proc;