Author: post
Date: 2010-01-28 18:16:13 +0100 (Thu, 28 Jan 2010)
New Revision: 3106
Modified:
branches/rawstudio-ng-color/src/rs-batch.c
Log:
Batch output: Fix preview crash by temporarily setting sRGB as display profile
and disable ICC code. Also preload next file while processing.
Modified: branches/rawstudio-ng-color/src/rs-batch.c
===================================================================
--- branches/rawstudio-ng-color/src/rs-batch.c 2010-01-28 17:10:00 UTC (rev
3105)
+++ branches/rawstudio-ng-color/src/rs-batch.c 2010-01-28 17:16:13 UTC (rev
3106)
@@ -396,17 +396,19 @@
RSFilter *finput = rs_filter_new("RSInputImage16", NULL);
RSFilter *fdemosaic = rs_filter_new("RSDemosaic", finput);
RSFilter *flensfun = rs_filter_new("RSLensfun", fdemosaic);
- RSFilter *ftransform_input = rs_filter_new("RSColorspaceTransform",
flensfun);
- RSFilter *frotate = rs_filter_new("RSRotate", ftransform_input);
+ RSFilter *frotate = rs_filter_new("RSRotate", flensfun);
RSFilter *fcrop = rs_filter_new("RSCrop", frotate);
RSFilter *fcache = rs_filter_new("RSCache", fcrop);
RSFilter *fresample= rs_filter_new("RSResample", fcache);
- RSFilter *fdenoise= rs_filter_new("RSDenoise", fresample);
+ RSFilter *ftransform_input = rs_filter_new("RSColorspaceTransform",
fresample);
+ RSFilter *fdcp= rs_filter_new("RSDcp", ftransform_input);
+ RSFilter *fdenoise= rs_filter_new("RSDenoise", fdcp);
RSFilter *ftransform_display = rs_filter_new("RSColorspaceTransform",
fdenoise);
RSFilter *fend = ftransform_display;
RSFilterResponse *filter_response;
/* FIXME: This is just a temporary hack to make batch work */
+#if 0
{
RSIccProfile *profile;
@@ -434,6 +436,7 @@
g_object_set(fend, "icc-profile", profile, NULL);
g_object_unref(profile);
}
+#endif
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_transient_for(GTK_WINDOW(window), rawstudio_window);
gtk_window_set_title(GTK_WINDOW(window), _("Processing photos"));
@@ -513,6 +516,13 @@
g_string_append(filename,
rs_output_get_extension(queue->output));
parsed_filename = filename_parse(filename->str,
filename_in, setting_id);
+ /* Set DCP profile */
+ RSDcpFile *dcp_profile =
rs_photo_get_dcp_profile(photo);
+ if (dcp_profile != NULL)
+ {
+ g_object_set(fdcp, "profile", dcp_profile,
NULL);
+ }
+
rs_filter_set_recursive(fend,
"image", photo->input,
"filename", photo->filename,
@@ -548,15 +558,28 @@
}
/* Render preview image */
- filter_response = rs_filter_get_image8(fend, NULL);
+ RSFilterRequest *request = rs_filter_request_new();
+ rs_filter_request_set_quick(RS_FILTER_REQUEST(request),
FALSE);
+ rs_filter_param_set_object(RS_FILTER_PARAM(request),
"colorspace", rs_color_space_new_singleton("RSSrgb"));
+ filter_response = rs_filter_get_image8(fend, request);
pixbuf = rs_filter_response_get_image8(filter_response);
if (pixbuf)
{
gtk_image_set_from_pixbuf(GTK_IMAGE(preview),
pixbuf);
g_object_unref(pixbuf);
}
+ g_object_unref(request);
g_object_unref(filter_response);
+ if (left > 0)
+ {
+ GtkTreeIter iter2 = iter;
+ if (gtk_tree_model_iter_next (queue->list,
&iter2))
+ {
+ gtk_tree_model_get(queue->list, &iter2,
RS_QUEUE_ELEMENT_FILENAME, &filename_in, -1);
+ rs_io_idle_prefetch_file(filename_in,
0xC01A);
+ }
+ }
/* Build text for small preview-window */
basename = g_path_get_basename(parsed_filename);
g_string_printf(status, _("Saving %s ..."), basename);
@@ -623,6 +646,7 @@
g_object_unref(fcrop);
g_object_unref(fcache);
g_object_unref(fresample);
+ g_object_unref(fdcp);
g_object_unref(fdenoise);
g_object_unref(ftransform_input);
g_object_unref(ftransform_display);
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit