Changeset 1849


Ignore:
Timestamp:
05/11/12 08:28:19 (13 months ago)
Author:
msl
Message:

RAW merge function

+ Remove redundant code in raw_merge_add_file and raw_merge_end.
+ Release memory if raw_merge_end fails.
+ Don't average or sum if only one file.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/core/raw_merge.c

    r1844 r1849  
    230230      fbrawout=fopen(TEMP_FILE_NAME_1,"w+b"); 
    231231      if (fbrawout){ 
    232         fread(rawrow, 1, camera_sensor.raw_rowlen, fcraw); 
    233         if (raw_count)  
    234           fread(row, 1, camera_sensor.raw_rowpix*sizeof(unsigned short), fbrawin);  
    235         else 
    236           for (i=0;i<camera_sensor.raw_rowpix;i++) 
    237             row[i]=0; 
    238  
    239232        for (nrow=0,j=0;nrow<camera_sensor.raw_rows;nrow++,j++){ 
     233          if (raw_count) 
     234            fread(row, 1, camera_sensor.raw_rowpix*sizeof(unsigned short), fbrawin); 
     235          else 
     236            for (i=0;i<camera_sensor.raw_rowpix;i++) 
     237              row[i]=0; 
     238          fread(rawrow, 1, camera_sensor.raw_rowlen, fcraw); 
    240239 
    241240#if CAM_MODULE_SENSOR_BITS_PER_PIXEL==10 
     
    266265 
    267266          fwrite(row, 1, camera_sensor.raw_rowpix*sizeof(unsigned short), fbrawout); 
    268           if (raw_count) 
    269             fread(row, 1, camera_sensor.raw_rowpix*sizeof(unsigned short), fbrawin); 
    270           else 
    271             for (i=0;i<camera_sensor.raw_rowpix;i++) 
    272               row[i]=0; 
    273           fread(rawrow, 1, camera_sensor.raw_rowlen, fcraw); 
    274267          if (j>=camera_sensor.raw_rows/10) { 
    275268            j-=camera_sensor.raw_rows/10; 
     
    296289  FILE *fbraw, *fcraw; 
    297290  static struct utimbuf t; 
    298   if (!raw_count) 
     291  if (!raw_count) { 
     292    free(rawrow); 
     293    free(row); 
    299294    return; 
    300  
     295  }  
    301296  i=strlen(namebuf)-3; 
    302297  if (strncmp(namebuf+i,"CR",2)==0) 
     
    310305    fcraw=fopen(namebuf,"w+b"); 
    311306    if (fcraw) { 
    312       fread(row, 1, camera_sensor.raw_rowpix*sizeof(unsigned short), fbraw); 
    313307      for (nrow=0,j=0;nrow<camera_sensor.raw_rows;nrow++,j++) { 
    314         for (i=0;i<camera_sensor.raw_rowpix;i++) { 
    315           if (raw_action==RAW_OPERATION_AVERAGE) 
    316             row[i]/=raw_count; 
    317           else { 
    318             if (row[i]>camera_sensor.black_level*(raw_count-1)) 
    319               row[i]-=camera_sensor.black_level*(raw_count-1); 
    320             else 
    321               row[i]=0; 
    322             if (row[i]>camera_sensor.white_level) 
    323               row[i]=camera_sensor.white_level; 
    324           } 
     308        fread(row, 1, camera_sensor.raw_rowpix*sizeof(unsigned short), fbraw); 
     309 
     310        if (raw_count>1) { 
     311          for (i=0;i<camera_sensor.raw_rowpix;i++) { 
     312            if (raw_action==RAW_OPERATION_AVERAGE) 
     313              row[i]/=raw_count; 
     314            else { 
     315              if (row[i]>camera_sensor.black_level*(raw_count-1)) 
     316                row[i]-=camera_sensor.black_level*(raw_count-1); 
     317              else 
     318                row[i]=0; 
     319              if (row[i]>camera_sensor.white_level) 
     320                row[i]=camera_sensor.white_level; 
     321            } 
     322          }   
    325323        } 
    326324#if CAM_MODULE_SENSOR_BITS_PER_PIXEL==10 
     
    351349 
    352350        fwrite(rawrow, 1, camera_sensor.raw_rowlen, fcraw); 
    353         fread(row, 1, camera_sensor.raw_rowpix*sizeof(unsigned short), fbraw); 
    354351        if (j>=camera_sensor.raw_rows/5) { 
    355352          j-=camera_sensor.raw_rows/5; 
Note: See TracChangeset for help on using the changeset viewer.