| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -24,11 +24,18 @@ uint int_from_10(const uchar * source, uint start, uint offset) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  return major + minor; | 
					 | 
					 | 
					 | 
					  return major + minor; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					float to_normal(uint x) {   | 
					 | 
					 | 
					 | 
					float to_normal(uint x, int gx, int gy) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  float pv = (float)(x); | 
					 | 
					 | 
					 | 
					  float pv = (float)(x); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  const float black_level = 42.0; | 
					 | 
					 | 
					 | 
					  const float black_level = 42.0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pv = max(0.0, pv - black_level); | 
					 | 
					 | 
					 | 
					  pv = max(0.0, pv - black_level); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pv /= (1024.0f - black_level); | 
					 | 
					 | 
					 | 
					  pv /= (1024.0f - black_level); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  if (CAM_NUM == 1) { // fcamera | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    gx = (gx - RGB_WIDTH/2); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    gy = (gy - RGB_HEIGHT/2); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    float r = pow(gx*gx + gy*gy, 0.825); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    float s = 1 / (1-0.00000733*r); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    pv = s * pv; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pv = 20*pv / (1.0f + 20*pv); // reinhard | 
					 | 
					 | 
					 | 
					  pv = 20*pv / (1.0f + 20*pv); // reinhard | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  return pv; | 
					 | 
					 | 
					 | 
					  return pv; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -54,7 +61,7 @@ __kernel void debayer10(const __global uchar * in, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  uint globalStart_10 = y_global * FRAME_STRIDE + (5 * (x_global / 4)); | 
					 | 
					 | 
					 | 
					  uint globalStart_10 = y_global * FRAME_STRIDE + (5 * (x_global / 4)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  uint offset_10 = x_global % 4; | 
					 | 
					 | 
					 | 
					  uint offset_10 = x_global % 4; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  uint raw_val = int_from_10(in, globalStart_10, offset_10); | 
					 | 
					 | 
					 | 
					  uint raw_val = int_from_10(in, globalStart_10, offset_10); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  cached[localOffset] = to_normal(raw_val); | 
					 | 
					 | 
					 | 
					  cached[localOffset] = to_normal(raw_val, x_global, y_global); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // edges | 
					 | 
					 | 
					 | 
					  // edges | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (x_global < 1 || x_global > RGB_WIDTH - 2 || y_global < 1 || y_global > RGB_HEIGHT - 2) { | 
					 | 
					 | 
					 | 
					  if (x_global < 1 || x_global > RGB_WIDTH - 2 || y_global < 1 || y_global > RGB_HEIGHT - 2) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -68,22 +75,22 @@ __kernel void debayer10(const __global uchar * in, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (x_local < 1) { | 
					 | 
					 | 
					 | 
					    if (x_local < 1) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      localColOffset = x_local; | 
					 | 
					 | 
					 | 
					      localColOffset = x_local; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      globalColOffset = -1; | 
					 | 
					 | 
					 | 
					      globalColOffset = -1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cached[(y_local + 1) * localRowLen + x_local] = to_normal(int_from_10(in, y_global * FRAME_STRIDE + (5 * ((x_global-1) / 4)), (offset_10 + 3) % 4)); | 
					 | 
					 | 
					 | 
					      cached[(y_local + 1) * localRowLen + x_local] = to_normal(int_from_10(in, y_global * FRAME_STRIDE + (5 * ((x_global-1) / 4)), (offset_10 + 3) % 4), x_global, y_global); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } else if (x_local >= get_local_size(0) - 1) { | 
					 | 
					 | 
					 | 
					    } else if (x_local >= get_local_size(0) - 1) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      localColOffset = x_local + 2; | 
					 | 
					 | 
					 | 
					      localColOffset = x_local + 2; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      globalColOffset = 1; | 
					 | 
					 | 
					 | 
					      globalColOffset = 1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cached[localOffset + 1] = to_normal(int_from_10(in, y_global * FRAME_STRIDE + (5 * ((x_global+1) / 4)), (offset_10 + 1) % 4)); | 
					 | 
					 | 
					 | 
					      cached[localOffset + 1] = to_normal(int_from_10(in, y_global * FRAME_STRIDE + (5 * ((x_global+1) / 4)), (offset_10 + 1) % 4), x_global, y_global); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (y_local < 1) { | 
					 | 
					 | 
					 | 
					    if (y_local < 1) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cached[y_local * localRowLen + x_local + 1] = to_normal(int_from_10(in, globalStart_10 - FRAME_STRIDE, offset_10)); | 
					 | 
					 | 
					 | 
					      cached[y_local * localRowLen + x_local + 1] = to_normal(int_from_10(in, globalStart_10 - FRAME_STRIDE, offset_10), x_global, y_global); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (localColOffset != -1) { | 
					 | 
					 | 
					 | 
					      if (localColOffset != -1) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        cached[y_local * localRowLen + localColOffset] = to_normal(int_from_10(in, (y_global-1) * FRAME_STRIDE + (5 * ((x_global+globalColOffset) / 4)), (offset_10+4+globalColOffset) % 4)); | 
					 | 
					 | 
					 | 
					        cached[y_local * localRowLen + localColOffset] = to_normal(int_from_10(in, (y_global-1) * FRAME_STRIDE + (5 * ((x_global+globalColOffset) / 4)), (offset_10+4+globalColOffset) % 4), x_global, y_global); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      } | 
					 | 
					 | 
					 | 
					      } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } else if (y_local >= get_local_size(1) - 1) { | 
					 | 
					 | 
					 | 
					    } else if (y_local >= get_local_size(1) - 1) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      cached[(y_local + 2) * localRowLen + x_local + 1] = to_normal(int_from_10(in, globalStart_10 + FRAME_STRIDE, offset_10)); | 
					 | 
					 | 
					 | 
					      cached[(y_local + 2) * localRowLen + x_local + 1] = to_normal(int_from_10(in, globalStart_10 + FRAME_STRIDE, offset_10), x_global, y_global); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (localColOffset != -1) { | 
					 | 
					 | 
					 | 
					      if (localColOffset != -1) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        cached[(y_local + 2) * localRowLen + localColOffset] = to_normal(int_from_10(in, (y_global+1) * FRAME_STRIDE + (5 * ((x_global+globalColOffset) / 4)), (offset_10+4+globalColOffset) % 4)); | 
					 | 
					 | 
					 | 
					        cached[(y_local + 2) * localRowLen + localColOffset] = to_normal(int_from_10(in, (y_global+1) * FRAME_STRIDE + (5 * ((x_global+globalColOffset) / 4)), (offset_10+4+globalColOffset) % 4), x_global, y_global); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      } | 
					 | 
					 | 
					 | 
					      } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |