genesys: Move ccd_size_divisor computation to compute_session()

merge-requests/135/head
Povilas Kanapickas 2019-08-17 11:11:15 +03:00
rodzic 92412a90b2
commit 107404dcd0
6 zmienionych plików z 25 dodań i 35 usunięć

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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;

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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();
}

Wyświetl plik

@ -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.