kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			Fixed segfault in fine calibration for CIS devices.
							rodzic
							
								
									aa37ec8374
								
							
						
					
					
						commit
						ee98dc0b85
					
				| 
						 | 
				
			
			@ -44,6 +44,7 @@
 | 
			
		|||
 *         - added _TWEAK_GAIN to allow increasing GAIN during
 | 
			
		||||
 *           lamp coarse calibration
 | 
			
		||||
 *         - added also speedtest
 | 
			
		||||
 *         - fixed segfault in fine calibration
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of the SANE package.
 | 
			
		||||
 *
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +192,7 @@ cano_adjLampSetting( u_short *min, u_short *max, u_short *off, u_short val )
 | 
			
		|||
	u_long newoff = *off;
 | 
			
		||||
 | 
			
		||||
	/* perfect value, no need to adjust
 | 
			
		||||
	 * val ¤ [53440..61440] is perfect
 | 
			
		||||
	 * val  [53440..61440] is perfect
 | 
			
		||||
	 */
 | 
			
		||||
	if((val < (IDEAL_GainNormal)) && (val > (IDEAL_GainNormal-8000)))
 | 
			
		||||
		return 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -956,22 +957,23 @@ static SANE_Bool cano_AdjustDarkShading( Plustek_Device *dev )
 | 
			
		|||
		}
 | 
			
		||||
 | 
			
		||||
	} else {
 | 
			
		||||
 | 
			
		||||
		step = m_ScanParam.Size.dwPhyPixels + 1;
 | 
			
		||||
		
 | 
			
		||||
		for( i=0; i<m_ScanParam.Size.dwPhyPixels; i++ ) {
 | 
			
		||||
			
 | 
			
		||||
			gray = 0;
 | 
			
		||||
			bufp = ((u_short *)scanbuf)+i;
 | 
			
		||||
 | 
			
		||||
			for( j=0; j<m_ScanParam.Size.dwPhyLines; j++) {
 | 
			
		||||
				gray += *bufp;   bufp+=step;
 | 
			
		||||
			for( j=0; j < m_ScanParam.Size.dwPhyLines; j++ ) {
 | 
			
		||||
				gray += *bufp;
 | 
			
		||||
				bufp += step;
 | 
			
		||||
			}
 | 
			
		||||
			a_wDarkShading[i]= gray/j + param->swOffset[0];
 | 
			
		||||
		}
 | 
			
		||||
			
 | 
			
		||||
		memcpy( a_wDarkShading + m_ScanParam.Size.dwPhyPixels * 2,
 | 
			
		||||
		memcpy( a_wDarkShading + m_ScanParam.Size.dwPhyPixels,
 | 
			
		||||
		        a_wDarkShading, m_ScanParam.Size.dwPhyPixels * 2);
 | 
			
		||||
		memcpy( a_wDarkShading + m_ScanParam.Size.dwPhyPixels * 4,
 | 
			
		||||
		memcpy( a_wDarkShading + m_ScanParam.Size.dwPhyPixels * 2,
 | 
			
		||||
		        a_wDarkShading, m_ScanParam.Size.dwPhyPixels * 2);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1107,7 +1109,8 @@ static SANE_Bool cano_AdjustWhiteShading( Plustek_Device *dev )
 | 
			
		|||
			bufp = ((u_short *)scanbuf)+i;
 | 
			
		||||
 | 
			
		||||
			for( j=0; j<m_ScanParam.Size.dwPhyLines; j++ ) {
 | 
			
		||||
				gray += *bufp;   bufp+=step;
 | 
			
		||||
				gray += *bufp;
 | 
			
		||||
				bufp += step;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			gray = (65535.*1000./(double)param->swGain[0]) * 16384.*j/gray;
 | 
			
		||||
| 
						 | 
				
			
			@ -1117,10 +1120,10 @@ static SANE_Bool cano_AdjustWhiteShading( Plustek_Device *dev )
 | 
			
		|||
		if(usb_HostSwap())
 | 
			
		||||
			usb_Swap(a_wWhiteShading, m_ScanParam.Size.dwPhyPixels * 2 );
 | 
			
		||||
 | 
			
		||||
		memcpy(a_wWhiteShading+ m_ScanParam.Size.dwPhyPixels * 2,
 | 
			
		||||
		                    a_wWhiteShading, m_ScanParam.Size.dwPhyPixels * 2);
 | 
			
		||||
		memcpy(a_wWhiteShading+ m_ScanParam.Size.dwPhyPixels * 4,
 | 
			
		||||
		                    a_wWhiteShading, m_ScanParam.Size.dwPhyPixels * 2);
 | 
			
		||||
		memcpy( a_wWhiteShading + m_ScanParam.Size.dwPhyPixels,
 | 
			
		||||
		        a_wWhiteShading, m_ScanParam.Size.dwPhyPixels * 2);
 | 
			
		||||
		memcpy( a_wWhiteShading + m_ScanParam.Size.dwPhyPixels * 2,
 | 
			
		||||
		        a_wWhiteShading, m_ScanParam.Size.dwPhyPixels * 2);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	usb_line_statistics( "White", a_wWhiteShading, m_ScanParam.Size.dwPhyPixels,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue