summaryrefslogtreecommitdiffstats
path: root/src/ufo-roof-build-task.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ufo-roof-build-task.c')
-rw-r--r--src/ufo-roof-build-task.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/ufo-roof-build-task.c b/src/ufo-roof-build-task.c
index 93cb133..9d55d38 100644
--- a/src/ufo-roof-build-task.c
+++ b/src/ufo-roof-build-task.c
@@ -44,6 +44,7 @@ struct _UfoRoofBuildTaskPrivate {
BuildType build; // What dataset do we build: ROOF sinogram or raw network data
guint number; // Number of datasets to read
gboolean stop; // Stop flag
+ gboolean simulate; // Indicates if we are running in network or simulation modes
guint announced; // For debugging
@@ -71,6 +72,7 @@ static GEnumValue build_values[] = {
enum {
PROP_0,
PROP_STOP,
+ PROP_SIMULATE,
PROP_NUMBER,
PROP_BUILD,
PROP_CONFIG,
@@ -97,7 +99,7 @@ ufo_roof_build_task_setup (UfoTask *task,
if (!priv->config)
roof_setup_error(error, "ROOF configuration is not specified");
- priv->cfg = ufo_roof_config_new(priv->config, &gerr);
+ priv->cfg = ufo_roof_config_new(priv->config, priv->simulate?UFO_ROOF_CONFIG_SIMULATION:UFO_ROOF_CONFIG_DEFAULT, &gerr);
if (!priv->cfg)
roof_propagate_error(error, gerr, "roof-build-setup: ");
@@ -281,15 +283,23 @@ ufo_roof_build_task_generate (UfoTask *task,
case 32:
ufo_buffer_convert(output, UFO_BUFFER_DEPTH_32U);
break;
+ default:
+ printf("Usupported bit-depth %u\n", cfg->bit_depth);
}
}
// Metadata: plane and sequential number within the plane
g_value_init (&ival, G_TYPE_UINT);
g_value_init (&lval, G_TYPE_ULONG);
+ if (priv->build != BUILD_UFO) {
+ g_value_set_uint (&ival, cfg->bit_depth);
+ ufo_buffer_set_metadata (output, "bpp", &ival);
+ }
g_value_set_uint (&ival, 1 + seqid % cfg->n_planes);
ufo_buffer_set_metadata (output, "plane", &ival);
g_value_set_ulong (&lval, seqid / cfg->n_planes);
+ ufo_buffer_set_metadata (output, "plane_id", &lval);
+ g_value_set_ulong (&lval, seqid);
ufo_buffer_set_metadata (output, "seqid", &lval);
g_value_unset(&lval);
g_value_unset(&ival);
@@ -325,6 +335,9 @@ ufo_roof_build_task_set_property (GObject *object,
case PROP_STOP:
priv->stop = g_value_get_boolean (value);
break;
+ case PROP_SIMULATE:
+ priv->simulate = g_value_get_boolean (value);
+ break;
case PROP_NUMBER:
priv->number = g_value_get_uint (value);
break;
@@ -356,6 +369,9 @@ ufo_roof_build_task_get_property (GObject *object,
case PROP_STOP:
g_value_set_boolean (value, priv->stop);
break;
+ case PROP_SIMULATE:
+ g_value_set_boolean (value, priv->simulate);
+ break;
case PROP_NUMBER:
g_value_set_uint (value, priv->number);
break;
@@ -403,6 +419,14 @@ ufo_roof_build_task_class_init (UfoRoofBuildTaskClass *klass)
FALSE,
G_PARAM_READWRITE);
+
+ properties[PROP_SIMULATE] =
+ g_param_spec_boolean ("simulate",
+ "Simulation mode",
+ "Read data from the specified files instead of network",
+ FALSE,
+ G_PARAM_READWRITE);
+
properties[PROP_NUMBER] =
g_param_spec_uint("number",
"Number of datasets to receive",