ae: start using minimum values for controls, too
This commit is contained in:
@@ -101,12 +101,14 @@ update_process_pipeline()
|
|||||||
.gain.auto_control = state_io.gain.auto_control,
|
.gain.auto_control = state_io.gain.auto_control,
|
||||||
.gain.value = state_io.gain.value,
|
.gain.value = state_io.gain.value,
|
||||||
.gain.max = state_io.gain.max,
|
.gain.max = state_io.gain.max,
|
||||||
|
.gain.min = state_io.gain.min,
|
||||||
.gain.manual = state_io.gain.manual,
|
.gain.manual = state_io.gain.manual,
|
||||||
|
|
||||||
.dgain.control = state_io.dgain.control,
|
.dgain.control = state_io.dgain.control,
|
||||||
.dgain.auto_control = state_io.dgain.auto_control,
|
.dgain.auto_control = state_io.dgain.auto_control,
|
||||||
.dgain.value = state_io.dgain.value,
|
.dgain.value = state_io.dgain.value,
|
||||||
.dgain.max = state_io.dgain.max,
|
.dgain.max = state_io.dgain.max,
|
||||||
|
.dgain.min = state_io.dgain.min,
|
||||||
.dgain.manual = state_io.dgain.manual,
|
.dgain.manual = state_io.dgain.manual,
|
||||||
|
|
||||||
.exposure.control = state_io.exposure.control,
|
.exposure.control = state_io.exposure.control,
|
||||||
@@ -488,11 +490,13 @@ init_controls()
|
|||||||
if (mp_camera_query_control(
|
if (mp_camera_query_control(
|
||||||
state_io.camera->sensor_fd, V4L2_CID_GAIN, &gain_control)) {
|
state_io.camera->sensor_fd, V4L2_CID_GAIN, &gain_control)) {
|
||||||
state_io.gain.control = gain_control;
|
state_io.gain.control = gain_control;
|
||||||
|
state_io.gain.min = gain_control.min;
|
||||||
state_io.gain.max = gain_control.max;
|
state_io.gain.max = gain_control.max;
|
||||||
} else if (mp_camera_query_control(state_io.camera->sensor_fd,
|
} else if (mp_camera_query_control(state_io.camera->sensor_fd,
|
||||||
V4L2_CID_ANALOGUE_GAIN,
|
V4L2_CID_ANALOGUE_GAIN,
|
||||||
&gain_control)) {
|
&gain_control)) {
|
||||||
state_io.gain.control = gain_control;
|
state_io.gain.control = gain_control;
|
||||||
|
state_io.gain.min = gain_control.min;
|
||||||
state_io.gain.max = gain_control.max;
|
state_io.gain.max = gain_control.max;
|
||||||
} else {
|
} else {
|
||||||
state_io.gain.max = 0;
|
state_io.gain.max = 0;
|
||||||
@@ -520,6 +524,7 @@ init_controls()
|
|||||||
if (mp_camera_query_control(
|
if (mp_camera_query_control(
|
||||||
state_io.camera->sensor_fd, V4L2_CID_DIGITAL_GAIN, &dgain_control)) {
|
state_io.camera->sensor_fd, V4L2_CID_DIGITAL_GAIN, &dgain_control)) {
|
||||||
state_io.dgain.control = dgain_control;
|
state_io.dgain.control = dgain_control;
|
||||||
|
state_io.dgain.min = dgain_control.min;
|
||||||
state_io.dgain.max = dgain_control.max;
|
state_io.dgain.max = dgain_control.max;
|
||||||
} else {
|
} else {
|
||||||
state_io.dgain.max = 0;
|
state_io.dgain.max = 0;
|
||||||
|
@@ -125,6 +125,7 @@ update_io_pipeline()
|
|||||||
.gain.value = state.gain.value,
|
.gain.value = state.gain.value,
|
||||||
.gain.value_req = state.gain.value_req,
|
.gain.value_req = state.gain.value_req,
|
||||||
.gain.max = state.gain.max,
|
.gain.max = state.gain.max,
|
||||||
|
.gain.min = state.gain.min,
|
||||||
.gain.manual = state.gain.manual,
|
.gain.manual = state.gain.manual,
|
||||||
.gain.manual_req = state.gain.manual_req,
|
.gain.manual_req = state.gain.manual_req,
|
||||||
|
|
||||||
@@ -133,6 +134,7 @@ update_io_pipeline()
|
|||||||
.dgain.value = state.dgain.value,
|
.dgain.value = state.dgain.value,
|
||||||
.dgain.value_req = state.dgain.value_req,
|
.dgain.value_req = state.dgain.value_req,
|
||||||
.dgain.max = state.dgain.max,
|
.dgain.max = state.dgain.max,
|
||||||
|
.dgain.min = state.dgain.min,
|
||||||
.dgain.manual = state.dgain.manual,
|
.dgain.manual = state.dgain.manual,
|
||||||
.dgain.manual_req = state.dgain.manual_req,
|
.dgain.manual_req = state.dgain.manual_req,
|
||||||
|
|
||||||
@@ -192,12 +194,14 @@ update_state(const mp_state_main *new_state)
|
|||||||
state.gain.auto_control = new_state->gain.auto_control;
|
state.gain.auto_control = new_state->gain.auto_control;
|
||||||
state.gain.value = new_state->gain.value;
|
state.gain.value = new_state->gain.value;
|
||||||
state.gain.max = new_state->gain.max;
|
state.gain.max = new_state->gain.max;
|
||||||
|
state.gain.min = new_state->gain.min;
|
||||||
state.gain.manual = new_state->gain.manual;
|
state.gain.manual = new_state->gain.manual;
|
||||||
|
|
||||||
state.dgain.control = new_state->dgain.control;
|
state.dgain.control = new_state->dgain.control;
|
||||||
state.dgain.auto_control = new_state->dgain.auto_control;
|
state.dgain.auto_control = new_state->dgain.auto_control;
|
||||||
state.dgain.value = new_state->dgain.value;
|
state.dgain.value = new_state->dgain.value;
|
||||||
state.dgain.max = new_state->dgain.max;
|
state.dgain.max = new_state->dgain.max;
|
||||||
|
state.dgain.min = new_state->dgain.min;
|
||||||
state.dgain.manual = new_state->dgain.manual;
|
state.dgain.manual = new_state->dgain.manual;
|
||||||
|
|
||||||
state.exposure.control = new_state->exposure.control;
|
state.exposure.control = new_state->exposure.control;
|
||||||
|
@@ -505,9 +505,9 @@ summarize()
|
|||||||
//time = state_proc.exposure.value * state_proc.mode->height;
|
//time = state_proc.exposure.value * state_proc.mode->height;
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
gain = state_proc.gain.value / 32.; /* FIXME: .min */
|
gain = state_proc.gain.value / ((float) state_proc.gain.min); /* FIXME: .min */
|
||||||
if (0) /* dgain */
|
if (0) /* dgain */
|
||||||
gain *= state_proc.dgain.value / 256.;
|
gain *= state_proc.dgain.value / ((float) state_proc.dgain.min);
|
||||||
|
|
||||||
printf("1/%.0f sec, ISO %.0f, t=%f, g=%f %d %d\n",
|
printf("1/%.0f sec, ISO %.0f, t=%f, g=%f %d %d\n",
|
||||||
(float) (1.0/time), (float) (gain*100),
|
(float) (1.0/time), (float) (gain*100),
|
||||||
@@ -1413,12 +1413,14 @@ update_state(MPPipeline *pipeline, const mp_state_proc *new_state)
|
|||||||
state_proc.gain.auto_control = new_state->gain.auto_control;
|
state_proc.gain.auto_control = new_state->gain.auto_control;
|
||||||
state_proc.gain.value = new_state->gain.value;
|
state_proc.gain.value = new_state->gain.value;
|
||||||
state_proc.gain.max = new_state->gain.max;
|
state_proc.gain.max = new_state->gain.max;
|
||||||
|
state_proc.gain.min = new_state->gain.min;
|
||||||
state_proc.gain.manual = new_state->gain.manual;
|
state_proc.gain.manual = new_state->gain.manual;
|
||||||
|
|
||||||
state_proc.dgain.control = new_state->dgain.control;
|
state_proc.dgain.control = new_state->dgain.control;
|
||||||
state_proc.dgain.auto_control = new_state->dgain.auto_control;
|
state_proc.dgain.auto_control = new_state->dgain.auto_control;
|
||||||
state_proc.dgain.value = new_state->dgain.value;
|
state_proc.dgain.value = new_state->dgain.value;
|
||||||
state_proc.dgain.max = new_state->dgain.max;
|
state_proc.dgain.max = new_state->dgain.max;
|
||||||
|
state_proc.dgain.min = new_state->dgain.min;
|
||||||
state_proc.dgain.manual = new_state->dgain.manual;
|
state_proc.dgain.manual = new_state->dgain.manual;
|
||||||
|
|
||||||
state_proc.exposure.control = new_state->exposure.control;
|
state_proc.exposure.control = new_state->exposure.control;
|
||||||
@@ -1494,6 +1496,7 @@ update_state(MPPipeline *pipeline, const mp_state_proc *new_state)
|
|||||||
.gain.value = state_proc.gain.value,
|
.gain.value = state_proc.gain.value,
|
||||||
.gain.value_req = state_proc.gain.value_req,
|
.gain.value_req = state_proc.gain.value_req,
|
||||||
.gain.max = state_proc.gain.max,
|
.gain.max = state_proc.gain.max,
|
||||||
|
.gain.min = state_proc.gain.min,
|
||||||
.gain.manual = state_proc.gain.manual,
|
.gain.manual = state_proc.gain.manual,
|
||||||
|
|
||||||
.dgain.control = state_proc.dgain.control,
|
.dgain.control = state_proc.dgain.control,
|
||||||
@@ -1501,6 +1504,7 @@ update_state(MPPipeline *pipeline, const mp_state_proc *new_state)
|
|||||||
.dgain.value = state_proc.dgain.value,
|
.dgain.value = state_proc.dgain.value,
|
||||||
.dgain.value_req = state_proc.dgain.value_req,
|
.dgain.value_req = state_proc.dgain.value_req,
|
||||||
.dgain.max = state_proc.dgain.max,
|
.dgain.max = state_proc.dgain.max,
|
||||||
|
.dgain.min = state_proc.dgain.min,
|
||||||
.dgain.manual = state_proc.dgain.manual,
|
.dgain.manual = state_proc.dgain.manual,
|
||||||
|
|
||||||
.exposure.control = state_proc.exposure.control,
|
.exposure.control = state_proc.exposure.control,
|
||||||
|
@@ -8,6 +8,7 @@ typedef struct cstate {
|
|||||||
MPControl control;
|
MPControl control;
|
||||||
int32_t value;
|
int32_t value;
|
||||||
int32_t value_req;
|
int32_t value_req;
|
||||||
|
int32_t min;
|
||||||
int32_t max;
|
int32_t max;
|
||||||
bool manual;
|
bool manual;
|
||||||
bool manual_req;
|
bool manual_req;
|
||||||
|
Reference in New Issue
Block a user