@@ -36,23 +36,20 @@ JNIEXPORT void JNICALL Java_jp_co_cyberagent_android_gpuimage_GPUImageNativeLibr
36
36
Cr = yuv [cOff + 1 ];
37
37
if (Cr < 0 ) Cr += 127 ; else Cr -= 128 ;
38
38
}
39
- //==============================
40
- //R = 1.164Y + 2.018Cr;
41
- //G = 1.164Y - 0.813Cb - 0.391Cr;
42
- //B = 1.164Y + 1.596Cb;
43
- //==============================
44
- //===== Approximation ==========
45
- // R = 1.1640625Y + 2.015625Cr
46
- // G = 1.1640625Y - 0.8125Cb - 0.375Cr
47
- // B = 1.1640625Y + 1.59375Cb
48
- //==============================
39
+
40
+ //ITU-R BT.601 conversion
41
+ //
42
+ //R = 1.164*(Y-16) + 2.018*(Cr-128);
43
+ //G = 1.164*(Y-16) - 0.813*(Cb-128) - 0.391*(Cr-128);
44
+ //B = 1.164*(Y-16) + 1.596*(Cb-128);
45
+ //
49
46
Y = Y + (Y >> 3 ) + (Y >> 5 ) + (Y >> 7 );
50
- R = Y + (Cr << 1 ) + (Cr >> 6 );
51
- if (R < 0 ) R = 0 ; else if (R > 255 ) R = 255 ;
52
- G = Y - Cb + (Cb >> 3 ) + (Cb >> 4 ) - (Cr >> 1 ) + (Cr >> 3 );
53
- if (G < 0 ) G = 0 ; else if (G > 255 ) G = 255 ;
54
- B = Y + Cb + (Cb >> 1 ) + (Cb >> 4 ) + (Cb >> 5 );
55
- if (B < 0 ) B = 0 ; else if (B > 255 ) B = 255 ;
47
+ R = Y + (Cr << 1 ) + (Cr >> 6 );
48
+ if (R < 0 ) R = 0 ; else if (R > 255 ) R = 255 ;
49
+ G = Y - Cb + (Cb >> 3 ) + (Cb >> 4 ) - (Cr >> 1 ) + (Cr >> 3 );
50
+ if (G < 0 ) G = 0 ; else if (G > 255 ) G = 255 ;
51
+ B = Y + Cb + (Cb >> 1 ) + (Cb >> 4 ) + (Cb >> 5 );
52
+ if (B < 0 ) B = 0 ; else if (B > 255 ) B = 255 ;
56
53
rgbData [pixPtr ++ ] = 0xff000000 + (R << 16 ) + (G << 8 ) + B ;
57
54
}
58
55
}
@@ -95,23 +92,20 @@ JNIEXPORT void JNICALL Java_jp_co_cyberagent_android_gpuimage_GPUImageNativeLibr
95
92
Cr = yuv [cOff + 1 ];
96
93
if (Cr < 0 ) Cr += 127 ; else Cr -= 128 ;
97
94
}
98
- //==============================
99
- //R = 1.164Y + 2.018Cr;
100
- //G = 1.164Y - 0.813Cb - 0.391Cr;
101
- //B = 1.164Y + 1.596Cb;
102
- //==============================
103
- //===== Approximation ==========
104
- // R = 1.1640625Y + 2.015625Cr
105
- // G = 1.1640625Y - 0.8125Cb - 0.375Cr
106
- // B = 1.1640625Y + 1.59375Cb
107
- //==============================
95
+
96
+ //ITU-R BT.601 conversion
97
+ //
98
+ //R = 1.164*(Y-16) + 2.018*(Cr-128);
99
+ //G = 1.164*(Y-16) - 0.813*(Cb-128) - 0.391*(Cr-128);
100
+ //B = 1.164*(Y-16) + 1.596*(Cb-128);
101
+ //
108
102
Y = Y + (Y >> 3 ) + (Y >> 5 ) + (Y >> 7 );
109
- R = Y + (Cr << 1 ) + (Cr >> 6 );
110
- if (R < 0 ) R = 0 ; else if (R > 255 ) R = 255 ;
111
- G = Y - Cb + (Cb >> 3 ) + (Cb >> 4 ) - (Cr >> 1 ) + (Cr >> 3 );
112
- if (G < 0 ) G = 0 ; else if (G > 255 ) G = 255 ;
113
- B = Y + Cb + (Cb >> 1 ) + (Cb >> 4 ) + (Cb >> 5 );
114
- if (B < 0 ) B = 0 ; else if (B > 255 ) B = 255 ;
103
+ R = Y + (Cr << 1 ) + (Cr >> 6 );
104
+ if (R < 0 ) R = 0 ; else if (R > 255 ) R = 255 ;
105
+ G = Y - Cb + (Cb >> 3 ) + (Cb >> 4 ) - (Cr >> 1 ) + (Cr >> 3 );
106
+ if (G < 0 ) G = 0 ; else if (G > 255 ) G = 255 ;
107
+ B = Y + Cb + (Cb >> 1 ) + (Cb >> 4 ) + (Cb >> 5 );
108
+ if (B < 0 ) B = 0 ; else if (B > 255 ) B = 255 ;
115
109
rgbData [pixPtr ++ ] = 0xff000000 + (B << 16 ) + (G << 8 ) + R ;
116
110
}
117
111
}
0 commit comments