piv-nodes.c 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #include "piv-nodes.h"
  2. #include "piv-ufo-base.h"
  3. struct piv_nodes *
  4. piv_nodes_copy(struct piv_nodes *src)
  5. {
  6. GError *error = NULL;
  7. struct piv_nodes *res = g_malloc (sizeof (struct piv_nodes));
  8. PIV_COPY_TASK_NODE (res->denoise, src->denoise, &error);
  9. PIV_COPY_TASK_NODE (res->contrast, src->contrast, &error);
  10. PIV_COPY_TASK_NODE (res->broadcast_contrast, src->broadcast_contrast, &error);
  11. PIV_COPY_TASK_NODE (res->broadcast_reader, src->broadcast_reader, &error);
  12. PIV_COPY_TASK_NODE (res->copy_replicater, src->copy_replicater, &error);
  13. PIV_COPY_TASK_NODE (res->replicater, src->replicater, &error);
  14. PIV_COPY_TASK_NODE (res->replicate_reader, src->replicate_reader, &error);
  15. PIV_COPY_TASK_NODE (res->duplicater, src->duplicater, &error);
  16. PIV_COPY_TASK_NODE (res->ring_pattern, src->ring_pattern, &error);
  17. PIV_COPY_TASK_NODE (res->ordfilt, src->ordfilt, &error);
  18. PIV_COPY_TASK_NODE (res->filter_particle, src->filter_particle, &error);
  19. PIV_COPY_TASK_NODE (res->concatenate_result, src->concatenate_result, &error);
  20. PIV_COPY_TASK_NODE (res->get_dup_circ, src->get_dup_circ, &error);
  21. PIV_COPY_TASK_NODE (res->remove_circle, src->remove_circle, &error);
  22. PIV_COPY_TASK_NODE (res->multi_search, src->multi_search, &error);
  23. PIV_COPY_TASK_NODE (res->dump_ring, src->dump_ring, &error);
  24. PIV_COPY_TASK_NODE (res->fftmult, src->fftmult, &error);
  25. PIV_COPY_TASK_NODE (res->reduce, src->reduce, &error);
  26. PIV_COPY_TASK_NODE (res->writer, src->writer, &error);
  27. PIV_COPY_TASK_NODE (res->ringwriter, src->ringwriter, &error);
  28. PIV_COPY_TASK_NODE (res->fft, src->fft, &error);
  29. PIV_COPY_TASK_NODE (res->ringfft, src->ringfft, &error);
  30. PIV_COPY_TASK_NODE (res->loop_ringfft, src->loop_ringfft, &error);
  31. PIV_COPY_TASK_NODE (res->ringifft, src->ringifft, &error);
  32. PIV_COPY_TASK_NODE (res->ifft, src->ifft, &error);
  33. if (error)
  34. g_print("Error %s\n", error->message);
  35. return res;
  36. }
  37. void
  38. piv_nodes_init(struct piv_nodes *piv, struct piv_ufo_base *base)
  39. {
  40. GError *error = base->error;
  41. UfoPluginManager *manager = base->manager;
  42. piv->broadcast_reader = UFO_TASK_NODE (ufo_copy_task_new ());
  43. piv->copy_replicater = UFO_TASK_NODE (ufo_copy_task_new ());
  44. piv->broadcast_contrast = UFO_TASK_NODE (ufo_copy_task_new ());
  45. piv->replicater = ufo_plugin_manager_get_task (manager, "buffer", &error);
  46. piv->replicate_reader = ufo_plugin_manager_get_task (manager, "buffer", &error);
  47. piv->duplicater = ufo_plugin_manager_get_task (manager, "buffer", &error);
  48. piv->loop_ringfft = ufo_plugin_manager_get_task (manager, "buffer", &error);
  49. piv->denoise = ufo_plugin_manager_get_task (manager, "denoise", &error);
  50. piv->ring_pattern = ufo_plugin_manager_get_task (manager, "ring_pattern", &error);
  51. piv->reduce = ufo_plugin_manager_get_task (manager, "reduce", &error);
  52. piv->contrast = ufo_plugin_manager_get_task (manager, "contrast", &error);
  53. piv->filter_particle = ufo_plugin_manager_get_task (manager, "filter_particle", &error);
  54. piv->concatenate_result = ufo_plugin_manager_get_task (manager, "concatenate_result", &error);
  55. piv->get_dup_circ = ufo_plugin_manager_get_task (manager, "get_dup_circ", &error);
  56. piv->remove_circle = ufo_plugin_manager_get_task (manager, "remove_circle", &error);
  57. piv->multi_search = ufo_plugin_manager_get_task (manager, "multi_search", &error);
  58. piv->dump_ring = ufo_plugin_manager_get_task (manager, "dump_ring", &error);
  59. piv->fftmult = ufo_plugin_manager_get_task (manager, "fftmult", &error);
  60. piv->ordfilt = ufo_plugin_manager_get_task (manager, "ordfilt", &error);
  61. piv->writer = ufo_plugin_manager_get_task (manager, "write", &error);
  62. piv->ringwriter = ufo_plugin_manager_get_task (manager, "ringwriter", &error);
  63. piv->fft = ufo_plugin_manager_get_task (manager, "fft", &error);
  64. piv->ringfft = ufo_plugin_manager_get_task (manager, "fft", &error);
  65. piv->ringifft = ufo_plugin_manager_get_task (manager, "ifft", &error);
  66. piv->ifft = ufo_plugin_manager_get_task (manager, "ifft", &error);
  67. }
  68. void piv_nodes_unref(struct piv_nodes *piv)
  69. {
  70. g_object_unref (piv->broadcast_contrast);
  71. g_object_unref (piv->broadcast_reader);
  72. g_object_unref (piv->denoise);
  73. g_object_unref (piv->contrast);
  74. g_object_unref (piv->ring_pattern);
  75. g_object_unref (piv->ordfilt);
  76. g_object_unref (piv->filter_particle);
  77. g_object_unref (piv->concatenate_result);
  78. g_object_unref (piv->get_dup_circ);
  79. g_object_unref (piv->remove_circle);
  80. g_object_unref (piv->multi_search);
  81. g_object_unref (piv->dump_ring);
  82. g_object_unref (piv->fftmult);
  83. g_object_unref (piv->writer);
  84. g_object_unref (piv->ringwriter);
  85. g_object_unref (piv->fft);
  86. g_object_unref (piv->ringfft);
  87. g_object_unref (piv->loop_ringfft);
  88. g_object_unref (piv->ringifft);
  89. g_object_unref (piv->ifft);
  90. g_object_unref (piv->reduce);
  91. }
  92. void piv_nodes_set_gpu(struct piv_nodes *piv, UfoNode *proc_node)
  93. {
  94. piv->proc_node = proc_node;
  95. ufo_task_node_set_proc_node (piv->broadcast_reader, proc_node);
  96. ufo_task_node_set_proc_node (piv->broadcast_reader, proc_node);
  97. ufo_task_node_set_proc_node (piv->copy_replicater , proc_node);
  98. ufo_task_node_set_proc_node (piv->broadcast_contrast , proc_node);
  99. ufo_task_node_set_proc_node (piv->replicater , proc_node);
  100. ufo_task_node_set_proc_node (piv->replicate_reader, proc_node);
  101. ufo_task_node_set_proc_node (piv->duplicater , proc_node);
  102. ufo_task_node_set_proc_node (piv->loop_ringfft , proc_node);
  103. ufo_task_node_set_proc_node (piv->denoise , proc_node);
  104. ufo_task_node_set_proc_node (piv->ring_pattern , proc_node);
  105. ufo_task_node_set_proc_node (piv->reduce , proc_node);
  106. ufo_task_node_set_proc_node (piv->contrast , proc_node);
  107. ufo_task_node_set_proc_node (piv->filter_particle , proc_node);
  108. ufo_task_node_set_proc_node (piv->concatenate_result, proc_node);
  109. ufo_task_node_set_proc_node (piv->get_dup_circ , proc_node);
  110. ufo_task_node_set_proc_node (piv->remove_circle , proc_node);
  111. ufo_task_node_set_proc_node (piv->multi_search , proc_node);
  112. ufo_task_node_set_proc_node (piv->dump_ring , proc_node);
  113. ufo_task_node_set_proc_node (piv->fftmult , proc_node);
  114. ufo_task_node_set_proc_node (piv->ordfilt , proc_node);
  115. ufo_task_node_set_proc_node (piv->writer , proc_node);
  116. ufo_task_node_set_proc_node (piv->ringwriter , proc_node);
  117. ufo_task_node_set_proc_node (piv->fft , proc_node);
  118. ufo_task_node_set_proc_node (piv->ringfft , proc_node);
  119. ufo_task_node_set_proc_node (piv->ringifft , proc_node);
  120. ufo_task_node_set_proc_node (piv->ifft , proc_node);
  121. }