📄 srgb.i
字号:
#line 919 "SRC\PANEL.H" /0 #line 921 "SRC\PANEL.H" /1 #line 984 "SRC\PANEL.H" /0 #line 986 "SRC\PANEL.H" /1 #line 1048 "SRC\PANEL.H" /0 #line 1050 "SRC\PANEL.H" /1 #line 1112 "SRC\PANEL.H" /0 #line 1119 "SRC\PANEL.H" /1 #line 1182 "SRC\PANEL.H" /0 #line 1184 "SRC\PANEL.H" /1 #line 1247 "SRC\PANEL.H" /0 #line 1249 "SRC\PANEL.H" /1 #line 1312 "SRC\PANEL.H" /0 #line 1314 "SRC\PANEL.H" /1 #line 1377 "SRC\PANEL.H" /0 #line 1379 "SRC\PANEL.H" /1 #line 1442 "SRC\PANEL.H" /0 #line 1444 "SRC\PANEL.H" /1 #line 1507 "SRC\PANEL.H" /0 #line 1509 "SRC\PANEL.H" /1 #line 1566 "SRC\PANEL.H" /0 #line 1568 "SRC\PANEL.H" /1 #line 1631 "SRC\PANEL.H" /0 #line 1633 "SRC\PANEL.H" /1 #line 1695 "SRC\PANEL.H" /0 #line 1697 "SRC\PANEL.H" /1 #line 1760 "SRC\PANEL.H" /0 #line 1827 "SRC\PANEL.H" /1 #line 1890 "SRC\PANEL.H" /0 #line 6 "SRC\sRGB.C" /0 #line 1 "C:\KEIL\C51\INC\STDIO.H" /0 typedef unsigned int size_t; #pragma SAVE #pragma REGPARMS extern char _getkey (void); extern char getchar (void); extern char ungetchar (char); extern char putchar (char); extern int printf (const char *, ...); extern int sprintf (char *, const char *, ...); extern int vprintf (const char *, char *); extern int vsprintf (char *, const char *, char *); extern char *gets (char *, int n); extern int scanf (const char *, ...); extern int sscanf (char *, const char *, ...); extern int puts (const char *); #pragma RESTORE #line 7 "SRC\sRGB.C" /0 code int rgb2yuv[3][3]={ { 0x041B, 0x0810, 0x0191 }, { -0x025F, -0x04A7, 0x0707 }, { 0x0707, -0x05E2, -0x0124 } }; code int yuv2rgb[3][3]={ { 0x12A1, 0x0000, 0x1989 }, { 0x12A1, -0x0644, -0x0D01 }, { 0x12A1, 0x2046, 0x0000 } }; code int sincos_tbl[65]={ 0x0000,0x0064,0x00C9,0x012D,0x0191,0x01F5,0x0259,0x02BC,0x031F,0x0381, 0x03E3,0x0444,0x04A5,0x0505,0x0564,0x05C2,0x061F,0x067B,0x06D7,0x0731, 0x078A,0x07E3,0x083A,0x088F,0x08E3,0x0937,0x0988,0x09D8,0x0A26,0x0A73, 0x0ABF,0x0B08,0x0B50,0x0B97,0x0BDB,0x0C1E,0x0C5E,0x0C9D,0x0CDA,0x0D15, 0x0D4D,0x0D85,0x0DB9,0x0DEC,0x0E1C,0x0E4B,0x0E77,0x0EA1,0x0EC8,0x0EEE, 0x0F10,0x0F31,0x0F4F,0x0F6C,0x0F85,0x0F9C,0x0FB1,0x0FC4,0x0FD4,0x0FE1, 0x0FEC,0x0FF5,0x0FFB,0x0FFE,0x1000 }; int sine(unsigned char alpha) { unsigned char value = alpha & 0x3f; switch(alpha & 0xC0){ case 0x00: return(sincos_tbl[value]); break; case 0x40: return(sincos_tbl[(64 - value)]); break; case 0x80: return(-sincos_tbl[value]); break; case 0xC0: return(-sincos_tbl[(64 - value)]); break; } } int cosine(unsigned char alpha) { return (sine(alpha + 64)); } void product(int *first, int * second, int *result) { unsigned char i,j,k; long res; for( i=0;i<3;i++){ for( j=0;j<3;j++){ res = 0; for( k=0;k<3;k++){ res += (long)*(first + i*3 + k) * (long)*(second + k*3 + j); } *(result + i*3 + j) = ((res + 2048)>>12); } } } void sRGB(void) { xdata unsigned char i,j; xdata unsigned short ss,hh; xdata int temp,gain[3]; xdata int result[3][3]; xdata int adjust[3][3]; xdata int UVrotated[3][3]; xdata int UserPrefContrast; gain[0] = ((unsigned short)R_Gain << 1) + 56; gain[1] = ((unsigned short)G_Gain << 1) + 56; gain[2] = ((unsigned short)B_Gain << 1) + 56; ss = ((unsigned short)Saturation * 256 + 50) / 100; hh = (((unsigned short)Tint * 256 + 50) / 100) - 128; if((flag3 & 0x04) != 0x00){ printf("Saturation = %x\r\n",(unsigned short)ss); printf("Tint = %x\r\n",(unsigned short)hh); } UserPrefContrast = ((unsigned short)Contrast * 60 + 50)/100 + 98; for(i=0; i<3; i++){ UVrotated[i][0] = 0; } for(i=0; i<3; i++){ UVrotated[0][i] = 0; } UVrotated[1][1] = (((((long)ss<<5) * (long)cosine(hh))+2048)>>12); UVrotated[1][2] = (((((long)ss<<5) * (long)sine(hh) )+2048)>>12); UVrotated[2][1] = (((-(long)sine(hh)*((long)ss<<5))+2048)>>12); UVrotated[2][2] = ((( (long)cosine(hh)*((long)ss<<5))+2048)>>12); product(&UVrotated[0][0], &rgb2yuv[0][0], &adjust[0][0]); for(i=0; i<3; i++){ adjust[0][i] =((((long)rgb2yuv[0][i]*((long)UserPrefContrast << 5))+2048)>>12); } product(&yuv2rgb[0][0],&adjust[0][0],&result[0][0]); for(i=0; i<3; i++){ WriteIIC_HW(0xB0,0x7a,((i * 2) + 0x01)); for(j=0; j<3; j++){ temp = (((((long)(result[i][j]+8)>>4)*((long)gain[i]<<4))+2048)>>12); if(temp < 0){ temp = temp ^ 0xffff; temp +=1 ; temp |= 0xf400; } if((flag3 & 0x04) != 0x00) printf("%x ",temp); WriteWordIIC_HW(0xB0,(0x7b+(j*2)),temp); WriteIIC_HW(0xB0,0x81,0x80); } if((flag3 & 0x04) != 0x00) printf("\r\n"); } WriteIIC_HW(0xB0,0x7a,0x0d); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -