#ifndef PIV_NODES_H #define PIV_NODES_H #include #define PIV_COPY_TASK_NODE(dst, src1, src2) \ (((dst) = UFO_TASK_NODE (ufo_node_copy(UFO_NODE (src1), (src2))))); struct piv_ufo_base; struct piv_nodes { UfoTaskNode *denoise; UfoTaskNode *contrast; /* Add broadcast plugins to attach to dump_rings wihch writes rings to a new * image and a new contrast to be sent to the azimuthal checker */ UfoTaskNode *broadcast_contrast; UfoTaskNode *broadcast_reader; UfoTaskNode *copy_replicater; UfoTaskNode *replicater; UfoTaskNode *replicate_reader; UfoTaskNode *duplicater; UfoTaskNode *ring_pattern; UfoTaskNode *ordfilt; UfoTaskNode *filter_particle; UfoTaskNode *concatenate_result; UfoTaskNode *get_dup_circ; UfoTaskNode *remove_circle; UfoTaskNode *multi_search; UfoTaskNode *dump_ring; UfoTaskNode *fftmult; // Plugin can be used to divide image by 4 UfoTaskNode *reduce; UfoTaskNode *writer; UfoTaskNode *ringwriter; UfoTaskNode *fft; UfoTaskNode *ringfft; UfoTaskNode *loop_ringfft; UfoTaskNode *ringifft; UfoTaskNode *ifft; // The gpu node that processes this structure UfoNode *proc_node; }; struct piv_nodes * piv_nodes_copy(struct piv_nodes *src); void piv_nodes_init(struct piv_nodes *piv, struct piv_ufo_base *b); void piv_nodes_unref(struct piv_nodes *piv); void piv_nodes_set_gpu(struct piv_nodes *piv, UfoNode *proc_node); #endif /* PIV_NODES_H */