mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 18:06:18 +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