kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Move ccd_size_divisor computation to compute_session()
rodzic
92412a90b2
commit
107404dcd0
|
@ -1796,16 +1796,13 @@ independent of our calculated values:
|
|||
dev->bytes_to_read
|
||||
*/
|
||||
|
||||
/* we have 2 domains for ccd: xres below or above half ccd max dpi */
|
||||
unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(session.params.xres);
|
||||
|
||||
/* optical_res */
|
||||
|
||||
optical_res = sensor.optical_res / ccd_size_divisor;
|
||||
optical_res = sensor.optical_res / session.ccd_size_divisor;
|
||||
|
||||
/* stagger */
|
||||
|
||||
if (ccd_size_divisor == 1 && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)) {
|
||||
if (session.ccd_size_divisor == 1 && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)) {
|
||||
stagger = (4 * session.params.yres) / dev->motor.base_ydpi;
|
||||
} else {
|
||||
stagger = 0;
|
||||
|
@ -1930,7 +1927,7 @@ dummy \ scanned lines
|
|||
|
||||
gl841_init_optical_regs_scan(dev, sensor, reg, exposure_time, session, used_res, start,
|
||||
used_pixels, session.params.channels, session.params.depth,
|
||||
ccd_size_divisor, session.params.color_filter);
|
||||
session.ccd_size_divisor, session.params.color_filter);
|
||||
|
||||
/*** motor parameters ***/
|
||||
|
||||
|
@ -2004,7 +2001,7 @@ dummy \ scanned lines
|
|||
dev->current_setup.lines = lincnt;
|
||||
dev->current_setup.exposure_time = exposure_time;
|
||||
dev->current_setup.xres = used_res;
|
||||
dev->current_setup.ccd_size_divisor = ccd_size_divisor;
|
||||
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
|
||||
dev->current_setup.stagger = stagger;
|
||||
dev->current_setup.max_shift = max_shift + stagger;
|
||||
|
||||
|
@ -2091,19 +2088,18 @@ static void gl841_calculate_current_setup(Genesys_Device * dev, const Genesys_Se
|
|||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = 0;
|
||||
|
||||
gl841_compute_session(dev, session, sensor);
|
||||
|
||||
DBG(DBG_info, "%s ", __func__);
|
||||
debug_dump(DBG_info, session.params);
|
||||
|
||||
/* we have 2 domains for ccd: xres below or above half ccd max dpi */
|
||||
unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(session.params.xres);
|
||||
|
||||
/* optical_res */
|
||||
|
||||
optical_res = sensor.optical_res / ccd_size_divisor;
|
||||
optical_res = sensor.optical_res / session.ccd_size_divisor;
|
||||
|
||||
/* stagger */
|
||||
|
||||
if (ccd_size_divisor == 1 && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)) {
|
||||
if (session.ccd_size_divisor == 1 && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)) {
|
||||
stagger = (4 * session.params.yres) / dev->motor.base_ydpi;
|
||||
} else {
|
||||
stagger = 0;
|
||||
|
@ -2212,7 +2208,7 @@ dummy \ scanned lines
|
|||
dev->current_setup.lines = lincnt;
|
||||
dev->current_setup.exposure_time = exposure_time;
|
||||
dev->current_setup.xres = used_res;
|
||||
dev->current_setup.ccd_size_divisor = ccd_size_divisor;
|
||||
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
|
||||
dev->current_setup.stagger = stagger;
|
||||
dev->current_setup.max_shift = max_shift + stagger;
|
||||
}
|
||||
|
|
|
@ -1199,7 +1199,6 @@ static void gl843_compute_session(Genesys_Device* dev, ScanSession& s,
|
|||
compute_session(dev, s, sensor);
|
||||
|
||||
// compute optical and output resolutions
|
||||
s.ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(s.params.xres);
|
||||
s.hwdpi_divisor = sensor.get_hwdpi_divisor_for_dpi(s.params.xres);
|
||||
|
||||
s.optical_resolution = sensor.optical_res / s.ccd_size_divisor;
|
||||
|
|
|
@ -975,13 +975,10 @@ static void gl846_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
|
|||
|
||||
debug_dump(DBG_info, session.params);
|
||||
|
||||
// we may have 2 domains for ccd: xres below or above half ccd max dpi
|
||||
unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(session.params.xres);
|
||||
|
||||
optical_res = sensor.optical_res / ccd_size_divisor;
|
||||
optical_res = sensor.optical_res / session.ccd_size_divisor;
|
||||
|
||||
/* stagger */
|
||||
if (ccd_size_divisor == 1 && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)) {
|
||||
if (session.ccd_size_divisor == 1 && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)) {
|
||||
stagger = (4 * session.params.yres) / dev->motor.base_ydpi;
|
||||
} else {
|
||||
stagger = 0;
|
||||
|
@ -1107,7 +1104,7 @@ static void gl846_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
|
|||
dev->current_setup.lines = lincnt;
|
||||
dev->current_setup.exposure_time = exposure_time;
|
||||
dev->current_setup.xres = used_res;
|
||||
dev->current_setup.ccd_size_divisor = ccd_size_divisor;
|
||||
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
|
||||
dev->current_setup.stagger = stagger;
|
||||
dev->current_setup.max_shift = max_shift + stagger;
|
||||
|
||||
|
@ -1191,12 +1188,11 @@ gl846_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
|
|||
session.params.color_filter = dev->settings.color_filter;
|
||||
session.params.flags = 0;
|
||||
|
||||
gl846_compute_session(dev, session, sensor);
|
||||
|
||||
DBG(DBG_info, "%s ", __func__);
|
||||
debug_dump(DBG_info, session.params);
|
||||
|
||||
// we have 2 domains for ccd: xres below or above half ccd max dpi
|
||||
unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(session.params.xres);
|
||||
|
||||
/* optical_res */
|
||||
optical_res = sensor.optical_res;
|
||||
|
||||
|
@ -1240,7 +1236,7 @@ gl846_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
|
|||
dev->current_setup.lines = lincnt;
|
||||
dev->current_setup.exposure_time = exposure_time;
|
||||
dev->current_setup.xres = used_res;
|
||||
dev->current_setup.ccd_size_divisor = ccd_size_divisor;
|
||||
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
|
||||
dev->current_setup.stagger = stagger;
|
||||
dev->current_setup.max_shift = max_shift + stagger;
|
||||
}
|
||||
|
|
|
@ -994,13 +994,10 @@ static void gl847_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
|
|||
|
||||
debug_dump(DBG_info, session.params);
|
||||
|
||||
// we may have 2 domains for ccd: xres below or above half ccd max dpi */
|
||||
unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(session.params.xres);
|
||||
|
||||
optical_res = sensor.optical_res / ccd_size_divisor;
|
||||
optical_res = sensor.optical_res / session.ccd_size_divisor;
|
||||
|
||||
/* stagger */
|
||||
if (ccd_size_divisor == 1 && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)) {
|
||||
if (session.ccd_size_divisor == 1 && (dev->model->flags & GENESYS_FLAG_STAGGERED_LINE)) {
|
||||
stagger = (4 * session.params.yres) / dev->motor.base_ydpi;
|
||||
} else {
|
||||
stagger = 0;
|
||||
|
@ -1124,7 +1121,7 @@ static void gl847_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
|
|||
dev->current_setup.lines = lincnt;
|
||||
dev->current_setup.exposure_time = exposure_time;
|
||||
dev->current_setup.xres = used_res;
|
||||
dev->current_setup.ccd_size_divisor = ccd_size_divisor;
|
||||
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
|
||||
dev->current_setup.stagger = stagger;
|
||||
dev->current_setup.max_shift = max_shift + stagger;
|
||||
|
||||
|
@ -1210,8 +1207,7 @@ gl847_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
|
|||
DBG(DBG_info, "%s ", __func__);
|
||||
debug_dump(DBG_info, session.params);
|
||||
|
||||
// we have 2 domains for ccd: xres below or above half ccd max dpi
|
||||
unsigned ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(session.params.xres);
|
||||
gl847_compute_session(dev, session, sensor);
|
||||
|
||||
/* optical_res */
|
||||
optical_res = sensor.optical_res;
|
||||
|
@ -1259,7 +1255,7 @@ gl847_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
|
|||
dev->current_setup.lines = lincnt;
|
||||
dev->current_setup.exposure_time = exposure_time;
|
||||
dev->current_setup.xres = used_res;
|
||||
dev->current_setup.ccd_size_divisor = ccd_size_divisor;
|
||||
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
|
||||
dev->current_setup.stagger = stagger;
|
||||
dev->current_setup.max_shift = max_shift + stagger;
|
||||
}
|
||||
|
|
|
@ -1135,7 +1135,10 @@ void compute_session(Genesys_Device* dev, ScanSession& s, const Genesys_Sensor&
|
|||
DBG_HELPER(dbg);
|
||||
|
||||
(void) dev;
|
||||
(void) sensor;
|
||||
|
||||
// compute optical and output resolutions
|
||||
s.ccd_size_divisor = sensor.get_ccd_size_divisor_for_dpi(s.params.xres);
|
||||
|
||||
s.params.assert_valid();
|
||||
}
|
||||
|
||||
|
|
|
@ -187,7 +187,7 @@ struct ScanSession {
|
|||
|
||||
// specifies the reduction (if any) of CCD effective dpi which is performed by latching the
|
||||
// data coming from CCD in such a way that 1/2 or 3/4 of pixel data is ignored.
|
||||
// gl843-only
|
||||
// except gl646
|
||||
unsigned ccd_size_divisor = 1;
|
||||
|
||||
// the optical resolution of the scanner.
|
||||
|
|
Ładowanie…
Reference in New Issue