Changeset 530


Ignore:
Timestamp:
10/08/08 07:28:08 (5 years ago)
Author:
reyalp
Message:

gcc 4 compile issue http://chdk.setepontos.com/index.php/topic,688.msg22356.html#msg22356

Location:
trunk/core
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/core/curves.c

    r515 r530  
    7171} 
    7272 
     73 
     74void curveRGB_apply() { 
     75        short i,j; 
     76        unsigned short pixVal0, pixVal1, pixVal2, col; 
     77        unsigned char *src; 
     78         
     79        // Set pointer to picture raw data in memory 
     80        src = (unsigned char *) hook_raw_image_addr();   
     81         
     82        // Loop through picture rows 
     83        col = CAM_RAW_ROWPIX-48; 
     84        src += 8 * (CAM_RAW_ROWPIX * 10 / 8);   // skip 8 first rows 
     85        for (i=CAM_RAW_ROWS - 8; i;i-=2){               // skip 8 first rows 
     86//      for (i=CAM_RAW_ROWS; i;i-=2){   // No skip 8 first rows 
     87                // Loop through picture columns  
     88//              for (j=CAM_RAW_ROWPIX; j; j-=8, src+=10){       // No skip 8 first and 40 last columns 
     89                src += 10;                                                                              // Skip columns 
     90                for (j=col; j; j-=8, src+=10){  // Skip columns 
     91                        //Skip first 8 columns and 40 last columns 
     92                        pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 
     93                        pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 
     94                                pixVal0 = curve0[pixVal0]; 
     95                                pixVal1 = curve1[pixVal1]; 
     96            *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 
     97            *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 
     98 
     99                        pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 
     100                        pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5]));  
     101                                pixVal2 = curve0[pixVal2]; 
     102                                pixVal0 = curve1[pixVal0]; 
     103            *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 
     104            *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 
     105            *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 
     106 
     107                        pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6));  
     108                        pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4));  
     109                                pixVal0 = curve0[pixVal0]; 
     110                                pixVal1 = curve1[pixVal1]; 
     111            *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 
     112            *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 
     113 
     114                        pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2));  
     115                        pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 
     116                                pixVal2 = curve0[pixVal2]; 
     117                                pixVal0 = curve1[pixVal0]; 
     118            *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 
     119            *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 
     120            *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0)           } 
     121                } 
     122                src += 60;      // skip columns 40+8     
     123//              for (j=CAM_RAW_ROWPIX;j; j-=8, src+=10){        // No skip 
     124                for (j=col; j; j-=8, src+=10){ 
     125                        pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 
     126                        pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 
     127                                pixVal0 = curve2[pixVal0]; 
     128                                pixVal1 = curve3[pixVal1]; 
     129            *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 
     130            *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 
     131 
     132                        pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 
     133                        pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5]));  
     134                                pixVal2 = curve2[pixVal2]; 
     135                                pixVal0 = curve3[pixVal0]; 
     136            *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 
     137            *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 
     138            *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 
     139 
     140                        pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6));  
     141                        pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4));  
     142                                pixVal0 = curve2[pixVal0]; 
     143                                pixVal1 = curve3[pixVal1]; 
     144            *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 
     145            *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 
     146 
     147                        pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2));  
     148                        pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 
     149                                pixVal2 = curve2[pixVal2]; 
     150                                pixVal0 = curve3[pixVal0]; 
     151            *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 
     152            *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 
     153            *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0) 
     154                } 
     155                src += 50; // skip columns 
     156        } 
     157} 
     158 
     159 
     160void curveL_apply() { 
     161        short i,j; 
     162        unsigned short pixVal0, pixVal1, pixVal2, y, col; 
     163        unsigned char *src; 
     164         
     165        // Set pointer to picture raw data in memory 
     166        src = (unsigned char *) hook_raw_image_addr();   
     167         
     168        // Loop through picture rows 
     169        col = CAM_RAW_ROWPIX-48; 
     170        src += 8 * (CAM_RAW_ROWPIX * 10 / 8);   // skip 8 first rows 
     171        for (i=CAM_RAW_ROWS - 8; i;i-=2){               // skip 8 first rows 
     172//      for (i=CAM_RAW_ROWS; i;i-=2){   // No skip 8 first rows 
     173                // Loop through picture columns  
     174//              for (j=CAM_RAW_ROWPIX; j; j-=8, src+=10){       // No skip 8 first and 40 last columns 
     175                src += 10;                                                                              // Skip columns 
     176                for (j=col; j; j-=8, src+=10){  // Skip columns 
     177                        //Skip first 8 columns and 40 last columns 
     178                        pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 
     179                        pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 
     180                                pixVal0 = RBLACK( pixVal0 ); 
     181                                pixVal1 = RBLACK( pixVal1 ); 
     182                                y = LUM(pixVal0,pixVal1); 
     183                                pixVal0 = CURVE0( pixVal0, y ) + BLACK; 
     184                                pixVal1 = CURVE1( pixVal1, y ) + BLACK; 
     185                                pixVal0 = LIM( pixVal0 ); 
     186                                pixVal1 = LIM( pixVal1 ); 
     187            *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 
     188            *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 
     189 
     190                        pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 
     191                        pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5]));  
     192                                pixVal2 = RBLACK( pixVal2 ); 
     193                                pixVal0 = RBLACK( pixVal0 ); 
     194                                y = LUM(pixVal2,pixVal0); 
     195                                pixVal2 = CURVE0( pixVal2, y ) + BLACK; 
     196                                pixVal0 = CURVE1( pixVal0, y ) + BLACK; 
     197                                pixVal2 = LIM( pixVal2 ); 
     198                                pixVal0 = LIM( pixVal0 ); 
     199            *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 
     200            *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 
     201            *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 
     202 
     203                        pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6));  
     204                        pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4));  
     205                                pixVal0 = RBLACK( pixVal0 ); 
     206                                pixVal1 = RBLACK( pixVal1 ); 
     207                                y = LUM(pixVal0,pixVal1); 
     208                                pixVal0 = CURVE0( pixVal0, y ) + BLACK; 
     209                                pixVal1 = CURVE1( pixVal1, y ) + BLACK; 
     210                                pixVal0 = LIM( pixVal0 ); 
     211                                pixVal1 = LIM( pixVal1 ); 
     212            *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 
     213            *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 
     214 
     215                        pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2));  
     216                        pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 
     217                                pixVal2 = RBLACK( pixVal2 ); 
     218                                pixVal0 = RBLACK( pixVal0 ); 
     219                                y = LUM(pixVal2,pixVal0); 
     220                                pixVal2 = CURVE0( pixVal2, y ) + BLACK; 
     221                                pixVal0 = CURVE1( pixVal0, y ) + BLACK; 
     222                                pixVal2 = LIM( pixVal2 ); 
     223                                pixVal0 = LIM( pixVal0 ); 
     224            *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 
     225            *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 
     226            *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0)           } 
     227                } 
     228                src += 60;      // skip columns 40+8     
     229//              for (j=CAM_RAW_ROWPIX;j; j-=8, src+=10){        // No skip 
     230                for (j=col; j; j-=8, src+=10){ 
     231                        pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 
     232                        pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 
     233                                pixVal0 = RBLACK( pixVal0 ); 
     234                                pixVal1 = RBLACK( pixVal1 ); 
     235                                y = LUM(pixVal0,pixVal1); 
     236                                pixVal0 = CURVE2( pixVal0, y ) + BLACK; 
     237                                pixVal1 = CURVE3( pixVal1, y ) + BLACK; 
     238                                pixVal0 = LIM( pixVal0 ); 
     239                                pixVal1 = LIM( pixVal1 ); 
     240            *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 
     241            *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 
     242 
     243                        pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 
     244                        pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5]));  
     245                                pixVal2 = RBLACK( pixVal2 ); 
     246                                pixVal0 = RBLACK( pixVal0 ); 
     247                                y = LUM(pixVal2,pixVal0); 
     248                                pixVal2 = CURVE2( pixVal2, y ) + BLACK; 
     249                                pixVal0 = CURVE3( pixVal0, y ) + BLACK; 
     250                                pixVal2 = LIM( pixVal2 ); 
     251                                pixVal0 = LIM( pixVal0 ); 
     252            *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 
     253            *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 
     254            *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 
     255 
     256                        pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6));  
     257                        pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4));  
     258                                pixVal0 = RBLACK( pixVal0 ); 
     259                                pixVal1 = RBLACK( pixVal1 ); 
     260                                y = LUM(pixVal0,pixVal1); 
     261                                pixVal0 = CURVE2( pixVal0, y ) + BLACK; 
     262                                pixVal1 = CURVE3( pixVal1, y ) + BLACK; 
     263                                pixVal0 = LIM( pixVal0 ); 
     264                                pixVal1 = LIM( pixVal1 ); 
     265            *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 
     266            *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 
     267 
     268                        pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2));  
     269                        pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 
     270                                pixVal2 = RBLACK( pixVal2 ); 
     271                                pixVal0 = RBLACK( pixVal0 ); 
     272                                y = LUM(pixVal2,pixVal0); 
     273                                pixVal2 = CURVE2( pixVal2, y ) + BLACK; 
     274                                pixVal0 = CURVE3( pixVal0, y ) + BLACK; 
     275                                pixVal2 = LIM( pixVal2 ); 
     276                                pixVal0 = LIM( pixVal0 ); 
     277            *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 
     278            *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 
     279            *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0) 
     280                } 
     281                src += 50; // skip columns 
     282        } 
     283} 
     284 
     285/* 
     286DR curves 
     287- DR curve unidimension: gray scale only  
     288*/ 
     289#define DRCURVE0( a, b ) (((a) * curve0[b]) >> 12) 
     290#define DRCURVE1( a, b ) (((a) * curve1[b]) >> 12) 
     291#define DRCURVE2( a, b ) (((a) * curve2[b]) >> 12) 
     292#define DRCURVE3( a, b ) (((a) * curve3[b]) >> 12) 
     293 
     294unsigned short drcurve0[DRCURVE_CNT][CURVE_SIZE]; // Dynamic range curves are only gray scale for now... 
     295//unsigned short drcurve1[DRCURVE_CNT][CURVE_SIZE]; 
     296//unsigned short drcurve2[DRCURVE_CNT][CURVE_SIZE]; 
     297//unsigned short drcurve3[DRCURVE_CNT][CURVE_SIZE]; 
     298 
    73299//------------------------------------------------------------------- 
    74300// Curve to be loaded upon power up 
     
    92318} 
    93319 
    94  
    95 void curveRGB_apply() { 
    96         short i,j; 
    97         unsigned short pixVal0, pixVal1, pixVal2, col; 
    98         unsigned char *src; 
    99          
    100         // Set pointer to picture raw data in memory 
    101         src = (unsigned char *) hook_raw_image_addr();   
    102          
    103         // Loop through picture rows 
    104         col = CAM_RAW_ROWPIX-48; 
    105         src += 8 * (CAM_RAW_ROWPIX * 10 / 8);   // skip 8 first rows 
    106         for (i=CAM_RAW_ROWS - 8; i;i-=2){               // skip 8 first rows 
    107 //      for (i=CAM_RAW_ROWS; i;i-=2){   // No skip 8 first rows 
    108                 // Loop through picture columns  
    109 //              for (j=CAM_RAW_ROWPIX; j; j-=8, src+=10){       // No skip 8 first and 40 last columns 
    110                 src += 10;                                                                              // Skip columns 
    111                 for (j=col; j; j-=8, src+=10){  // Skip columns 
    112                         //Skip first 8 columns and 40 last columns 
    113                         pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 
    114                         pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 
    115                                 pixVal0 = curve0[pixVal0]; 
    116                                 pixVal1 = curve1[pixVal1]; 
    117             *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 
    118             *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 
    119  
    120                         pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 
    121                         pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5]));  
    122                                 pixVal2 = curve0[pixVal2]; 
    123                                 pixVal0 = curve1[pixVal0]; 
    124             *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 
    125             *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 
    126             *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 
    127  
    128                         pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6));  
    129                         pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4));  
    130                                 pixVal0 = curve0[pixVal0]; 
    131                                 pixVal1 = curve1[pixVal1]; 
    132             *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 
    133             *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 
    134  
    135                         pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2));  
    136                         pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 
    137                                 pixVal2 = curve0[pixVal2]; 
    138                                 pixVal0 = curve1[pixVal0]; 
    139             *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 
    140             *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 
    141             *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0)           } 
    142                 } 
    143                 src += 60;      // skip columns 40+8     
    144 //              for (j=CAM_RAW_ROWPIX;j; j-=8, src+=10){        // No skip 
    145                 for (j=col; j; j-=8, src+=10){ 
    146                         pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 
    147                         pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 
    148                                 pixVal0 = curve2[pixVal0]; 
    149                                 pixVal1 = curve3[pixVal1]; 
    150             *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 
    151             *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 
    152  
    153                         pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 
    154                         pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5]));  
    155                                 pixVal2 = curve2[pixVal2]; 
    156                                 pixVal0 = curve3[pixVal0]; 
    157             *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 
    158             *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 
    159             *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 
    160  
    161                         pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6));  
    162                         pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4));  
    163                                 pixVal0 = curve2[pixVal0]; 
    164                                 pixVal1 = curve3[pixVal1]; 
    165             *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 
    166             *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 
    167  
    168                         pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2));  
    169                         pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 
    170                                 pixVal2 = curve2[pixVal2]; 
    171                                 pixVal0 = curve3[pixVal0]; 
    172             *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 
    173             *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 
    174             *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0) 
    175                 } 
    176                 src += 50; // skip columns 
    177         } 
    178 } 
    179  
    180  
    181 void curveL_apply() { 
    182         short i,j; 
    183         unsigned short pixVal0, pixVal1, pixVal2, y, col; 
    184         unsigned char *src; 
    185          
    186         // Set pointer to picture raw data in memory 
    187         src = (unsigned char *) hook_raw_image_addr();   
    188          
    189         // Loop through picture rows 
    190         col = CAM_RAW_ROWPIX-48; 
    191         src += 8 * (CAM_RAW_ROWPIX * 10 / 8);   // skip 8 first rows 
    192         for (i=CAM_RAW_ROWS - 8; i;i-=2){               // skip 8 first rows 
    193 //      for (i=CAM_RAW_ROWS; i;i-=2){   // No skip 8 first rows 
    194                 // Loop through picture columns  
    195 //              for (j=CAM_RAW_ROWPIX; j; j-=8, src+=10){       // No skip 8 first and 40 last columns 
    196                 src += 10;                                                                              // Skip columns 
    197                 for (j=col; j; j-=8, src+=10){  // Skip columns 
    198                         //Skip first 8 columns and 40 last columns 
    199                         pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 
    200                         pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 
    201                                 pixVal0 = RBLACK( pixVal0 ); 
    202                                 pixVal1 = RBLACK( pixVal1 ); 
    203                                 y = LUM(pixVal0,pixVal1); 
    204                                 pixVal0 = CURVE0( pixVal0, y ) + BLACK; 
    205                                 pixVal1 = CURVE1( pixVal1, y ) + BLACK; 
    206                                 pixVal0 = LIM( pixVal0 ); 
    207                                 pixVal1 = LIM( pixVal1 ); 
    208             *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 
    209             *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 
    210  
    211                         pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 
    212                         pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5]));  
    213                                 pixVal2 = RBLACK( pixVal2 ); 
    214                                 pixVal0 = RBLACK( pixVal0 ); 
    215                                 y = LUM(pixVal2,pixVal0); 
    216                                 pixVal2 = CURVE0( pixVal2, y ) + BLACK; 
    217                                 pixVal0 = CURVE1( pixVal0, y ) + BLACK; 
    218                                 pixVal2 = LIM( pixVal2 ); 
    219                                 pixVal0 = LIM( pixVal0 ); 
    220             *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 
    221             *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 
    222             *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 
    223  
    224                         pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6));  
    225                         pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4));  
    226                                 pixVal0 = RBLACK( pixVal0 ); 
    227                                 pixVal1 = RBLACK( pixVal1 ); 
    228                                 y = LUM(pixVal0,pixVal1); 
    229                                 pixVal0 = CURVE0( pixVal0, y ) + BLACK; 
    230                                 pixVal1 = CURVE1( pixVal1, y ) + BLACK; 
    231                                 pixVal0 = LIM( pixVal0 ); 
    232                                 pixVal1 = LIM( pixVal1 ); 
    233             *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 
    234             *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 
    235  
    236                         pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2));  
    237                         pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 
    238                                 pixVal2 = RBLACK( pixVal2 ); 
    239                                 pixVal0 = RBLACK( pixVal0 ); 
    240                                 y = LUM(pixVal2,pixVal0); 
    241                                 pixVal2 = CURVE0( pixVal2, y ) + BLACK; 
    242                                 pixVal0 = CURVE1( pixVal0, y ) + BLACK; 
    243                                 pixVal2 = LIM( pixVal2 ); 
    244                                 pixVal0 = LIM( pixVal0 ); 
    245             *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 
    246             *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 
    247             *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0)           } 
    248                 } 
    249                 src += 60;      // skip columns 40+8     
    250 //              for (j=CAM_RAW_ROWPIX;j; j-=8, src+=10){        // No skip 
    251                 for (j=col; j; j-=8, src+=10){ 
    252                         pixVal0=((0x3fc&(((unsigned short)(src[1]))<<2)) | (src[0] >> 6)); 
    253                         pixVal1=((0x3f0&(((unsigned short)(src[0]))<<4)) | (src[3] >> 4)); 
    254                                 pixVal0 = RBLACK( pixVal0 ); 
    255                                 pixVal1 = RBLACK( pixVal1 ); 
    256                                 y = LUM(pixVal0,pixVal1); 
    257                                 pixVal0 = CURVE2( pixVal0, y ) + BLACK; 
    258                                 pixVal1 = CURVE3( pixVal1, y ) + BLACK; 
    259                                 pixVal0 = LIM( pixVal0 ); 
    260                                 pixVal1 = LIM( pixVal1 ); 
    261             *(src+1) = (unsigned char) ((pixVal0>>2)); // 0 
    262             *src = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); //0, 1 
    263  
    264                         pixVal2=((0x3c0&(((unsigned short)(src[3]))<<6)) | (src[2] >> 2)); 
    265                         pixVal0=((0x300&(((unsigned short)(src[2]))<<8)) | (src[5]));  
    266                                 pixVal2 = RBLACK( pixVal2 ); 
    267                                 pixVal0 = RBLACK( pixVal0 ); 
    268                                 y = LUM(pixVal2,pixVal0); 
    269                                 pixVal2 = CURVE2( pixVal2, y ) + BLACK; 
    270                                 pixVal0 = CURVE3( pixVal0, y ) + BLACK; 
    271                                 pixVal2 = LIM( pixVal2 ); 
    272                                 pixVal0 = LIM( pixVal0 ); 
    273             *(src+3) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); //1,2 
    274             *(src+2) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); //2,3 =>(2,0) 
    275             *(src+5) = (unsigned char) ((pixVal0)); //3 (=>0) 
    276  
    277                         pixVal0=((0x3fc&(((unsigned short)(src[4]))<<2)) | (src[7] >> 6));  
    278                         pixVal1=((0x3f0&(((unsigned short)(src[7]))<<4)) | (src[6] >> 4));  
    279                                 pixVal0 = RBLACK( pixVal0 ); 
    280                                 pixVal1 = RBLACK( pixVal1 ); 
    281                                 y = LUM(pixVal0,pixVal1); 
    282                                 pixVal0 = CURVE2( pixVal0, y ) + BLACK; 
    283                                 pixVal1 = CURVE3( pixVal1, y ) + BLACK; 
    284                                 pixVal0 = LIM( pixVal0 ); 
    285                                 pixVal1 = LIM( pixVal1 ); 
    286             *(src+4) = (unsigned char) ((pixVal0>>2)); // 4 => 0 
    287             *(src+7) = (unsigned char) ((pixVal0<<6)|(pixVal1>>4)); // 4,5 => (0,1) 
    288  
    289                         pixVal2=((0x3c0&(((unsigned short)(src[6]))<<6)) | (src[9] >> 2));  
    290                         pixVal0=((0x300&(((unsigned short)(src[9]))<<8)) | (src[8])); 
    291                                 pixVal2 = RBLACK( pixVal2 ); 
    292                                 pixVal0 = RBLACK( pixVal0 ); 
    293                                 y = LUM(pixVal2,pixVal0); 
    294                                 pixVal2 = CURVE2( pixVal2, y ) + BLACK; 
    295                                 pixVal0 = CURVE3( pixVal0, y ) + BLACK; 
    296                                 pixVal2 = LIM( pixVal2 ); 
    297                                 pixVal0 = LIM( pixVal0 ); 
    298             *(src+6) = (unsigned char) ((pixVal1<<4)|(pixVal2>>6)); // 5,6 => (1,2) 
    299             *(src+9) = (unsigned char) ((pixVal2<<2)|(pixVal0>>8)); // 6,7 =>(2,0) 
    300             *(src+8) = (unsigned char) ((pixVal0)); //7 (=>0) 
    301                 } 
    302                 src += 50; // skip columns 
    303         } 
    304 } 
    305  
    306 /* 
    307 DR curves 
    308 - DR curve unidimension: gray scale only  
    309 */ 
    310 #define DRCURVE0( a, b ) (((a) * curve0[b]) >> 12) 
    311 #define DRCURVE1( a, b ) (((a) * curve1[b]) >> 12) 
    312 #define DRCURVE2( a, b ) (((a) * curve2[b]) >> 12) 
    313 #define DRCURVE3( a, b ) (((a) * curve3[b]) >> 12) 
    314  
    315 unsigned short drcurve0[DRCURVE_CNT][CURVE_SIZE]; // Dynamic range curves are only gray scale for now... 
    316 //unsigned short drcurve1[DRCURVE_CNT][CURVE_SIZE]; 
    317 //unsigned short drcurve2[DRCURVE_CNT][CURVE_SIZE]; 
    318 //unsigned short drcurve3[DRCURVE_CNT][CURVE_SIZE]; 
    319320 
    320321void drcurve_apply(const int ci) { 
  • trunk/core/curves.h

    r515 r530  
    1313extern void drcurve_load(const char *fn); 
    1414extern void curve_apply(); 
    15 extern unsigned short drcurve0[][]; 
    1615// extern void default_curve(int n); 
    1716//------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.