@ -18,7 +18,7 @@ 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define POSE_IDX META_IDX + OTHER_META_SIZE + DESIRE_PRED_SIZE  
					 
					 
					 
					# define POSE_IDX META_IDX + OTHER_META_SIZE + DESIRE_PRED_SIZE  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# define OUTPUT_SIZE  POSE_IDX + POSE_SIZE  
					 
					 
					 
					# define OUTPUT_SIZE  POSE_IDX + POSE_SIZE  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifdef TEMPORAL  
					 
					 
					 
					# ifdef TEMPORAL  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  # define TEMPORAL_SIZE 5 12   
					 
					 
					 
					  # define TEMPORAL_SIZE 10 24    
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					# else  
					 
					 
					 
					# else  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  # define TEMPORAL_SIZE 0   
					 
					 
					 
					  # define TEMPORAL_SIZE 0   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -42,11 +42,17 @@ void model_init(ModelState* s, cl_device_id device_id, cl_context context, int t 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifdef DESIRE  
					 
					 
					 
					# ifdef DESIRE  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  s - > desire  =  ( float * ) malloc ( DESIRE_SIZE  *  sizeof ( float ) ) ;   
					 
					 
					 
					  s - > prev_desire  =  ( float * ) malloc ( DESIRE_LEN  *  sizeof ( float ) ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					  for  ( int  i  =  0 ;  i  <  DESIRE_SIZE ;  i + + )  s - > desire [ i ]  =  0.0 ;   
					 
					 
					 
					  for  ( int  i  =  0 ;  i  <  DESIRE_LEN ;  i + + )  s - > prev_desire [ i ]  =  0.0 ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					  s - > pulse_desire  =  ( float * ) malloc ( DESIRE_SIZE  *  sizeof ( float ) ) ;   
					 
					 
					 
					  s - > pulse_desire  =  ( float * ) malloc ( DESIRE_LEN  *  sizeof ( float ) ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					  for  ( int  i  =  0 ;  i  <  DESIRE_SIZE ;  i + + )  s - > pulse_desire [ i ]  =  0.0 ;   
					 
					 
					 
					  for  ( int  i  =  0 ;  i  <  DESIRE_LEN ;  i + + )  s - > pulse_desire [ i ]  =  0.0 ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					  s - > m - > addDesire ( s - > pulse_desire ,  DESIRE_SIZE ) ;   
					 
					 
					 
					  s - > m - > addDesire ( s - > pulse_desire ,  DESIRE_LEN ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# ifdef TRAFFIC_CONVENTION  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  s - > traffic_convention  =  ( float * ) malloc ( TRAFFIC_CONVENTION_LEN  *  sizeof ( float ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  for  ( int  i  =  0 ;  i  <  TRAFFIC_CONVENTION_LEN ;  i + + )  s - > traffic_convention [ i ]  =  0.0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  s - > m - > addTrafficConvention ( s - > traffic_convention ,  TRAFFIC_CONVENTION_LEN ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  // Build Vandermonde matrix
   
					 
					 
					 
					  // Build Vandermonde matrix
   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -61,18 +67,27 @@ void model_init(ModelState* s, cl_device_id device_id, cl_context context, int t 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ModelDataRaw  model_eval_frame ( ModelState *  s ,  cl_command_queue  q ,  
					 
					 
					 
					ModelDataRaw  model_eval_frame ( ModelState *  s ,  cl_command_queue  q ,  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                           cl_mem  yuv_cl ,  int  width ,  int  height ,   
					 
					 
					 
					                           cl_mem  yuv_cl ,  int  width ,  int  height ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					                           mat3  transform ,  void *  sock ,  float  * desire_in )  {   
					 
					 
					 
					                           mat3  transform ,  void *  sock ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					                           float  * desire_in ,  float  * traffic_convention_in )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# ifdef DESIRE  
					 
					 
					 
					# ifdef DESIRE  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  if  ( desire_in  ! =  NULL )  {   
					 
					 
					 
					  if  ( desire_in  ! =  NULL )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  DESIRE_SIZE  ;  i + + )  {   
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  DESIRE_LEN  ;  i + + )  {   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					      // Model decides when action is completed
   
					 
					 
					 
					      // Model decides when action is completed
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      // so desire input is just a pulse triggered on rising edge
   
					 
					 
					 
					      // so desire input is just a pulse triggered on rising edge
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      if  ( desire_in [ i ]  -  s - > desire [ i ]  = =  1 )  {   
					 
					 
					 
					      if  ( desire_in [ i ]  -  s - > prev_ desire[ i ]  >  .99 )  {   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        s - > pulse_desire [ i ]  =  desire_in [ i ] ;   
					 
					 
					 
					        s - > pulse_desire [ i ]  =  desire_in [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      }  else  {   
					 
					 
					 
					      }  else  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        s - > pulse_desire [ i ]  =  0.0 ;   
					 
					 
					 
					        s - > pulse_desire [ i ]  =  0.0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      }   
					 
					 
					 
					      }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					      s - > desire [ i ]  =  desire_in [ i ] ;   
					 
					 
					 
					      s - > prev_desire [ i ]  =  desire_in [ i ] ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# endif  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					# ifdef TRAFFIC_CONVENTION  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  if  ( traffic_convention_in  ! =  NULL )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    for  ( int  i  =  0 ;  i  <  TRAFFIC_CONVENTION_LEN ;  i + + )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      s - > traffic_convention [ i ]  =  traffic_convention_in [ i ] ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  }   
					 
					 
					 
					  }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# endif  
					 
					 
					 
					# endif