5 * \date 20 decembre 2009
15 * \def uint64 entier non signe 64 bits
16 * \def int64 entier signe 64 bits
17 * \def uint32 entier non signe 32 bits
19 typedef unsigned long long int uint64 ;
20 typedef unsigned int uint32;
21 typedef long long int int64 ;
22 typedef long int int32 ;
24 typedef unsigned short t_cumul_1 ;
25 typedef unsigned int t_cumul_x ;
26 typedef unsigned long long t_cumul_x2 ;
28 typedef unsigned int t_sum_1 ;
29 typedef unsigned long long t_sum_x ;
30 typedef unsigned long long t_sum_x2 ;
34 * \struct pixel_cumul structures.h
36 * \brief structure des images cumulees
38 * Version d'algorithme sans SSE2 \n
39 * les images cumulees correspondent a \n
40 * [sum 1, sum x, sum x^2] \n
42 * Trois donnees a stocker de dynamique differente \n
44 * cas d'images en profondeur 16 bits \n
45 * avec xum_x2 sur 64 bits => taill image sur 14 bits soit 16000 x 16000 \n
46 * longueur des segments sur 15 bits
48 sum_1 : 0/1 + 14b + 15b = 29b => unsigned int
49 sum_x : 16b + 14b + 15b = 45b => unsigned long int
50 sum_x2 : 32b + 14b + 15b = 61b => unsigned long int
53 * Avec la definition suivante, les contributions des segments
54 * ne pourrons etre que positives. Le signe associe au segment devra
55 * etre memorise par une autre variable (code_segment)
70 * \struct snake_node structures.h
72 * \brief noeud du snake defini par liste chainee
74 * Cette structure memorise la position du noeud
75 * ET les informations concernant le segment qui
76 * part de ce noeud et va au noeud suivant dans
82 /* contribution du segment allant de ce noeud */
83 /* au noeud suivant, defini dans l'ordre trigo */
84 /* l'union pixel_cumul est definie en premier */
85 /* pour permettre l'alignement memoire */
86 struct pixel_cumul contrib ;
88 int code_segment ; /* signe de la contrib */
89 int freeman_in ; /* du noeud d'arrivee du segment (ordre trigo) */
90 int freeman_out ; /* du noeud de depart du segment (ordre trigo) */
93 uint32 posi ; /* position i du noeud */
94 uint32 posj ; /* position j du noeud */
95 uint32 centre_i ; /* centre i du segment */
96 uint32 centre_j ; /* centre j du segment */
98 int last_move ; /* dernier test deplacement accepte */
100 /* lien liste chainee snake2D */
101 struct snake_node *noeud_suiv ; /* dans le sens trigo */
102 struct snake_node *noeud_prec ;
105 /* lien liste chainee snake3D */
109 struct snake_node_gpu
115 int code_segment ; /* signe de la contrib */
116 int freeman_in ; /* du noeud d'arrivee du segment (ordre trigo) */
117 int freeman_out ; /* du noeud de depart du segment (ordre trigo) */
120 uint32 posi ; /* position i du noeud */
121 uint32 posj ; /* position j du noeud */
122 uint32 centre_i ; /* centre i du segment */
123 uint32 centre_j ; /* centre j du segment */
125 int last_move ; /* dernier test deplacement accepte */