mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	Shift is faster than devision
This commit is contained in:
		
							parent
							
								
									a7cf91499a
								
							
						
					
					
						commit
						765c7eb7de
					
				| 
						 | 
					@ -44,6 +44,8 @@
 | 
				
			||||||
/* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */
 | 
					/* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */
 | 
				
			||||||
#define L(rgb)\
 | 
					#define L(rgb)\
 | 
				
			||||||
    ((INT32) (rgb)[0]*299 + (INT32) (rgb)[1]*587 + (INT32) (rgb)[2]*114)
 | 
					    ((INT32) (rgb)[0]*299 + (INT32) (rgb)[1]*587 + (INT32) (rgb)[2]*114)
 | 
				
			||||||
 | 
					#define L24(rgb)\
 | 
				
			||||||
 | 
					    ((rgb)[0]*19595 + (rgb)[1]*38470 + (rgb)[2]*7471)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef round
 | 
					#ifndef round
 | 
				
			||||||
double round(double x) {
 | 
					double round(double x) {
 | 
				
			||||||
| 
						 | 
					@ -210,7 +212,7 @@ rgb2l(UINT8* out, const UINT8* in, int xsize)
 | 
				
			||||||
    int x;
 | 
					    int x;
 | 
				
			||||||
    for (x = 0; x < xsize; x++, in += 4)
 | 
					    for (x = 0; x < xsize; x++, in += 4)
 | 
				
			||||||
        /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */
 | 
					        /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */
 | 
				
			||||||
        *out++ = L(in) / 1000;
 | 
					        *out++ = L24(in) >> 16;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
| 
						 | 
					@ -219,7 +221,7 @@ rgb2la(UINT8* out, const UINT8* in, int xsize)
 | 
				
			||||||
    int x;
 | 
					    int x;
 | 
				
			||||||
    for (x = 0; x < xsize; x++, in += 4, out += 4) {
 | 
					    for (x = 0; x < xsize; x++, in += 4, out += 4) {
 | 
				
			||||||
        /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */
 | 
					        /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */
 | 
				
			||||||
        out[0] = out[1] = out[2] = L(in) / 1000;
 | 
					        out[0] = out[1] = out[2] = L24(in) >> 16;
 | 
				
			||||||
        out[3] = 255;
 | 
					        out[3] = 255;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -230,7 +232,7 @@ rgb2i(UINT8* out_, const UINT8* in, int xsize)
 | 
				
			||||||
    int x;
 | 
					    int x;
 | 
				
			||||||
    INT32* out = (INT32*) out_;
 | 
					    INT32* out = (INT32*) out_;
 | 
				
			||||||
    for (x = 0; x < xsize; x++, in += 4)
 | 
					    for (x = 0; x < xsize; x++, in += 4)
 | 
				
			||||||
        *out++ = L(in) / 1000;
 | 
					        *out++ = L24(in) >> 16;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
| 
						 | 
					@ -419,7 +421,7 @@ rgba2la(UINT8* out, const UINT8* in, int xsize)
 | 
				
			||||||
    int x;
 | 
					    int x;
 | 
				
			||||||
    for (x = 0; x < xsize; x++, in += 4, out += 4) {
 | 
					    for (x = 0; x < xsize; x++, in += 4, out += 4) {
 | 
				
			||||||
        /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */
 | 
					        /* ITU-R Recommendation 601-2 (assuming nonlinear RGB) */
 | 
				
			||||||
        out[0] = out[1] = out[2] = L(in) / 1000;
 | 
					        out[0] = out[1] = out[2] = L24(in) >> 16;
 | 
				
			||||||
        out[3] = in[3];
 | 
					        out[3] = in[3];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user