12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #include "piv-ufo-base.h"
- #include "piv-nodes.h"
- void
- piv_ufo_base_init (struct piv_ufo_base *piv_base)
- {
- piv_base->error = NULL;
- piv_base->graph = UFO_TASK_GRAPH (ufo_task_graph_new ());
- piv_base->manager = ufo_plugin_manager_new ();
- piv_base->resources = ufo_resources_new (&piv_base->error);
- if (piv_base->error)
- g_print ("Error %s\n", piv_base->error->message);
- piv_base->scheduler = ufo_fixed_scheduler_new ();
- piv_base->arch = UFO_ARCH_GRAPH (ufo_arch_graph_new (piv_base->resources, NULL));
- piv_base->gpu_nodes = ufo_arch_graph_get_gpu_nodes (piv_base->arch);
- ufo_base_scheduler_set_gpu_nodes (piv_base->scheduler, piv_base->arch, piv_base->gpu_nodes);
- }
- void piv_ufo_base_unref(struct piv_ufo_base *piv_base)
- {
- g_object_unref (piv_base->graph);
- g_object_unref (piv_base->scheduler);
- g_object_unref (piv_base->manager);
- g_object_unref (piv_base->resources);
- g_object_unref (piv_base->arch);
- }
- void piv_ufo_base_connect(struct piv_ufo_base *piv_base, struct piv_nodes *piv,
- unsigned scale, unsigned dump_ring_to_image,
- UfoTaskNode* global_reader)
- {
- UfoTaskGraph *graph = piv_base->graph;
- ufo_task_graph_connect_nodes (graph, global_reader, piv->broadcast_reader);
- if (scale > 1) {
- ufo_task_graph_connect_nodes (graph, piv->broadcast_reader, piv->reduce);
- ufo_task_graph_connect_nodes (graph, piv->reduce, piv->denoise);
- }
- else {
- ufo_task_graph_connect_nodes (graph, piv->broadcast_reader, piv->denoise);
- }
- ufo_task_graph_connect_nodes (graph, piv->denoise, piv->contrast);
- ufo_task_graph_connect_nodes (graph, piv->contrast, piv->broadcast_contrast);
- ufo_task_graph_connect_nodes (graph, piv->broadcast_contrast, piv->fft);
- ufo_task_graph_connect_nodes (graph, piv->fft, piv->duplicater);
- ufo_task_graph_connect_nodes (graph, piv->ring_pattern, piv->ringfft);
- ufo_task_graph_connect_nodes (graph, piv->ringfft, piv->loop_ringfft);
- ufo_task_graph_connect_nodes_full (graph, piv->duplicater, piv->fftmult, 0);
- ufo_task_graph_connect_nodes_full (graph, piv->loop_ringfft, piv->fftmult, 1);
- ufo_task_graph_connect_nodes (graph, piv->fftmult, piv->ringifft);
- ufo_task_graph_connect_nodes (graph, piv->ringifft, piv->filter_particle);
- ufo_task_graph_connect_nodes (graph, piv->filter_particle, piv->concatenate_result);
- ufo_task_graph_connect_nodes (graph, piv->broadcast_contrast, piv->replicater);
- ufo_task_graph_connect_nodes_full (graph, piv->replicater, piv->multi_search, 0);
- ufo_task_graph_connect_nodes_full (graph, piv->concatenate_result, piv->multi_search, 1);
- ufo_task_graph_connect_nodes (graph, piv->multi_search, piv->remove_circle);
- ufo_task_graph_connect_nodes (graph, piv->remove_circle, piv->get_dup_circ);
- if (dump_ring_to_image) {
- ufo_task_graph_connect_nodes (graph, piv->broadcast_reader, piv->replicate_reader);
- // Hack required to silence ERROR message for dead lock
- ufo_task_graph_connect_nodes (graph, piv->replicate_reader, piv->copy_replicater);
- ufo_task_graph_connect_nodes_full (graph, piv->copy_replicater, piv->dump_ring, 0);
- ufo_task_graph_connect_nodes_full (graph, piv->get_dup_circ, piv->dump_ring, 1);
- ufo_task_graph_connect_nodes (graph, piv->dump_ring, piv->writer);
- }
- else {
- ufo_task_graph_connect_nodes (graph, piv->get_dup_circ, piv->ringwriter);
- }
- if (piv_base->error)
- g_print("Error %s\n", piv_base->error->message);
- }
|