Set some initial calibration matrices if no DCP file is found, used for AWB

This commit is contained in:
Kristian Vos
2024-08-01 12:11:22 +02:00
parent b1c46f7800
commit fe5b4651ca

View File

@@ -5,6 +5,7 @@
#include "main.h"
#include "pipeline.h"
#include "state.h"
#include "matrix.h"
#include "zbar_pipeline.h"
#include <assert.h>
#include <gtk/gtk.h>
@@ -1317,22 +1318,27 @@ update_state(MPPipeline *pipeline, const mp_state_proc *new_state)
state_proc.flash_enabled = new_state->flash_enabled;
if (output_changed) {
state_proc.camera_rotation = mod(
state_proc.mode->rotation - state_proc.device_rotation, 360);
on_output_changed(format_changed);
}
if (camera_changed) {
char cf[PATH_MAX];
if (find_calibration(cf, state_proc.camera->name)) {
state_proc.calibration = parse_calibration_file(cf);
} else {
printf("No calibration for %s\n", state_proc.camera->name);
fprintf(stderr, "No calibration for %s\n", state_proc.camera->name);
memcpy(state_proc.calibration.forward_matrix_1, sRGB_to_XYZD65, 9 * sizeof(float));
// The below is the same as calling libmegapixels' libmegapixels_aaa_init, but as we call
// libmegapixels_aaa_set_matrix, we need it to be in the calibration
memcpy(state_proc.calibration.color_matrix_1, IDENTITY, 9 * sizeof(float));
memcpy(state_proc.calibration.color_matrix_2, IDENTITY, 9 * sizeof(float));
}
}
if (output_changed) {
state_proc.camera_rotation = mod(
state_proc.mode->rotation - state_proc.device_rotation, 360);
on_output_changed(format_changed);
}
mp_state_main new_main = {
.camera = pr_camera,
.has_auto_focus_continuous = false,