Move postprocessor script to a gsetting (MR 18)

This commit is contained in:
Martijn Braam
2022-06-24 14:10:01 +02:00
parent 6ebf06ea13
commit 46b07c6c4d
6 changed files with 34 additions and 31 deletions

View File

@@ -11,5 +11,14 @@
up after processing.
</description>
</key>
<key name="postprocessor" type='s'>
<default>''</default>
<summary>Path to the postprocessor script</summary>
<description>
When set this will define the absolute path to a postprocessor to use after
taking a picture. When empty megapixels will default to the legacy
postprocess.sh lookup
</description>
</key>
</schema>
</schemalist>

View File

@@ -81,8 +81,6 @@ static int preview_height;
static int device_rotation;
static bool save_dng;
struct control_state {
bool gain_is_manual;
int gain;
@@ -344,7 +342,6 @@ update_process_pipeline()
.camera = camera,
.mode = mode,
.burst_length = burst_length,
.save_dng = save_dng,
.preview_width = preview_width,
.preview_height = preview_height,
.device_rotation = device_rotation,
@@ -691,7 +688,6 @@ update_state(MPPipeline *pipeline, const struct mp_io_pipeline_state *state)
preview_width = state->preview_width;
preview_height = state->preview_height;
device_rotation = state->device_rotation;
save_dng = state->save_dng;
if (camera) {
struct control_state previous_desired = desired_controls;

View File

@@ -18,7 +18,6 @@ struct mp_io_pipeline_state {
bool exposure_is_manual;
int exposure;
bool save_dng;
bool flash_enabled;
};

View File

@@ -55,8 +55,6 @@ static bool has_auto_focus_start;
static bool flash_enabled = false;
static bool setting_save_dng;
static MPProcessPipelineBuffer *current_preview_buffer = NULL;
static int preview_buffer_width = -1;
static int preview_buffer_height = -1;
@@ -110,7 +108,6 @@ update_io_pipeline()
.gain = gain,
.exposure_is_manual = exposure_is_manual,
.exposure = exposure,
.save_dng = setting_save_dng,
.flash_enabled = flash_enabled,
};
mp_io_pipeline_update_state(&io_state);
@@ -701,14 +698,6 @@ static void
run_close_settings_action(GSimpleAction *action, GVariant *param, gpointer user_data)
{
gtk_stack_set_visible_child_name(GTK_STACK(main_stack), "main");
// Update settings
bool save_dng = g_settings_get_boolean(settings, "save-raw");
if (save_dng != setting_save_dng) {
setting_save_dng = save_dng;
update_io_pipeline();
}
}
static void
@@ -1061,13 +1050,26 @@ activate(GtkApplication *app, gpointer data)
// Setup settings
settings = g_settings_new("org.postmarketos.Megapixels");
char* setting_postproc = g_settings_get_string(settings, "postprocessor");
// Initialize the postprocessing gsetting to the old processor if
// it was not set yet
if(setting_postproc == NULL || setting_postproc[0] == '\0') {
printf("Initializing postprocessor gsetting\n");
setting_postproc = malloc(512);
if(!mp_process_find_processor(setting_postproc)) {
printf("No processor found\n");
exit(1);
}
g_settings_set_string(settings, "postprocessor", setting_postproc);
printf("Initialized postprocessor to %s\n", setting_postproc);
}
g_settings_bind(settings,
"save-raw",
setting_dng_button,
"active",
G_SETTINGS_BIND_DEFAULT);
setting_save_dng = g_settings_get_boolean(settings, "save-raw");
// Listen for phosh rotation
GDBusConnection *conn =

View File

@@ -22,7 +22,6 @@ static const float colormatrix_srgb[] = { 3.2409, -1.5373, -0.4986, -0.9692, 1.8
static MPPipeline *pipeline;
static char burst_dir[23];
static char processing_script[512];
static volatile bool is_capturing = false;
static volatile int frames_processed = 0;
@@ -53,10 +52,10 @@ static int exposure;
static bool flash_enabled;
static bool save_dng;
static char capture_fname[255];
static GSettings *settings;
static void
register_custom_tiff_tags(TIFF *tif)
{
@@ -77,8 +76,8 @@ register_custom_tiff_tags(TIFF *tif)
sizeof(custom_fields) / sizeof(custom_fields[0]));
}
static bool
find_processor(char *script)
bool
mp_process_find_processor(char *script)
{
char filename[] = "postprocess.sh";
@@ -118,11 +117,7 @@ static void
setup(MPPipeline *pipeline, const void *data)
{
TIFFSetTagExtender(register_custom_tiff_tags);
if (!find_processor(processing_script)) {
g_printerr("Could not find any post-process script\n");
exit(1);
}
settings = g_settings_new("org.postmarketos.Megapixels");
}
void
@@ -655,6 +650,9 @@ process_capture_burst(GdkTexture *thumb)
timestamp);
}
bool save_dng = g_settings_get_boolean(settings, "save-raw");
char* postprocessor = g_settings_get_string(settings, "postprocessor");
char save_dng_s[2] = "0";
if (save_dng) {
save_dng_s[0] = '1';
@@ -668,7 +666,7 @@ process_capture_burst(GdkTexture *thumb)
g_autoptr(GError) error = NULL;
GSubprocess *proc = g_subprocess_new(G_SUBPROCESS_FLAGS_STDOUT_PIPE,
&error,
processing_script,
postprocessor,
burst_dir,
capture_fname,
save_dng_s,
@@ -863,7 +861,6 @@ update_state(MPPipeline *pipeline, const struct mp_process_pipeline_state *state
device_rotation = state->device_rotation;
burst_length = state->burst_length;
save_dng = state->save_dng;
// gain_is_manual = state->gain_is_manual;
gain = state->gain;

View File

@@ -27,10 +27,10 @@ struct mp_process_pipeline_state {
bool has_auto_focus_start;
bool flash_enabled;
bool save_dng;
};
bool mp_process_find_processor(char *script);
void mp_process_pipeline_start();
void mp_process_pipeline_stop();
void mp_process_pipeline_sync();