genesys: Use common code path to compute session max_color_shift_lines

merge-requests/155/head
Povilas Kanapickas 2019-09-12 18:27:45 +03:00
rodzic 9afaf9a2cf
commit ce144ed46f
8 zmienionych plików z 31 dodań i 80 usunięć

Wyświetl plik

@ -1075,7 +1075,6 @@ static void gl124_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
int dummy = 0; int dummy = 0;
int slope_dpi = 0; int slope_dpi = 0;
int scan_step_type = 1; int scan_step_type = 1;
int max_shift;
size_t requested_buffer_size, read_buffer_size; size_t requested_buffer_size, read_buffer_size;
DBG (DBG_info, "%s: optical_res=%d\n", __func__, session.optical_resolution); DBG (DBG_info, "%s: optical_res=%d\n", __func__, session.optical_resolution);
@ -1131,10 +1130,7 @@ static void gl124_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
/*** motor parameters ***/ /*** motor parameters ***/
max_shift = sanei_genesys_compute_max_shift(dev, session.params.channels, session.params.yres, lincnt = session.params.lines + session.max_color_shift_lines + session.num_staggered_lines;
session.params.flags);
lincnt = session.params.lines + max_shift + session.num_staggered_lines;
/* add tl_y to base movement */ /* add tl_y to base movement */
move = session.params.starty; move = session.params.starty;
@ -1163,7 +1159,7 @@ static void gl124_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
requested_buffer_size = 16 * bytes_per_line; requested_buffer_size = 16 * bytes_per_line;
read_buffer_size = 2 * requested_buffer_size + read_buffer_size = 2 * requested_buffer_size +
((max_shift + session.num_staggered_lines) * session.optical_pixels * ((session.max_color_shift_lines + session.num_staggered_lines) * session.optical_pixels *
session.params.channels * session.params.depth) / 8; session.params.channels * session.params.depth) / 8;
dev->read_buffer.clear(); dev->read_buffer.clear();
@ -1191,7 +1187,7 @@ static void gl124_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
dev->current_setup.xres = session.params.xres; dev->current_setup.xres = session.params.xres;
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.stagger = session.num_staggered_lines;
dev->current_setup.max_shift = max_shift + session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
dev->total_bytes_read = 0; dev->total_bytes_read = 0;
if (session.params.depth == 1) { if (session.params.depth == 1) {
@ -1214,7 +1210,7 @@ gl124_calculate_current_setup (Genesys_Device * dev, const Genesys_Sensor& senso
unsigned int lincnt; unsigned int lincnt;
int exposure_time; int exposure_time;
int max_shift, dpihw; int dpihw;
DBG(DBG_info, "%s ", __func__); DBG(DBG_info, "%s ", __func__);
debug_dump(DBG_info, dev->settings); debug_dump(DBG_info, dev->settings);
@ -1252,9 +1248,6 @@ gl124_calculate_current_setup (Genesys_Device * dev, const Genesys_Sensor& senso
DBG (DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time); DBG (DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
max_shift = sanei_genesys_compute_max_shift(dev, session.params.channels,
session.params.yres, 0);
// compute hw dpi for sensor // compute hw dpi for sensor
dpihw = sensor.get_register_hwdpi(session.params.xres); dpihw = sensor.get_register_hwdpi(session.params.xres);
@ -1262,7 +1255,7 @@ gl124_calculate_current_setup (Genesys_Device * dev, const Genesys_Sensor& senso
session.ccd_size_divisor); session.ccd_size_divisor);
dev->segnb = sensor_profile.custom_regs.get_value(0x98) & 0x0f; dev->segnb = sensor_profile.custom_regs.get_value(0x98) & 0x0f;
lincnt = session.params.lines + max_shift + session.num_staggered_lines; lincnt = session.params.lines + session.max_color_shift_lines + session.num_staggered_lines;
dev->session = session; dev->session = session;
dev->current_setup.pixels = session.output_pixels; dev->current_setup.pixels = session.output_pixels;
@ -1272,7 +1265,7 @@ gl124_calculate_current_setup (Genesys_Device * dev, const Genesys_Sensor& senso
dev->current_setup.xres = session.params.xres; dev->current_setup.xres = session.params.xres;
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.stagger = session.num_staggered_lines;
dev->current_setup.max_shift = max_shift + session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
} }
/** /**

Wyświetl plik

@ -362,7 +362,7 @@ static void gl646_setup_registers(Genesys_Device* dev,
unsigned int bpp; /**> bytes per pixel */ unsigned int bpp; /**> bytes per pixel */
uint32_t z1, z2; uint32_t z1, z2;
uint16_t ex, sx; uint16_t ex, sx;
int words_per_line, max_shift; int words_per_line;
size_t requested_buffer_size; size_t requested_buffer_size;
size_t read_buffer_size; size_t read_buffer_size;
SANE_Int xresolution; SANE_Int xresolution;
@ -557,18 +557,12 @@ static void gl646_setup_registers(Genesys_Device* dev,
regs->find_reg(0x23).value = motor->fwdbwd; regs->find_reg(0x23).value = motor->fwdbwd;
regs->find_reg(0x24).value = motor->steps1; regs->find_reg(0x24).value = motor->steps1;
/* scanned area height must be enlarged by max color shift needed */
max_shift = sanei_genesys_compute_max_shift(dev, session.params.channels,
session.params.yres, 0);
/* we adjust linecnt according to real motor dpi */ /* we adjust linecnt according to real motor dpi */
linecnt = (linecnt * motor->ydpi) / session.params.yres + max_shift; linecnt = (linecnt * motor->ydpi) / session.params.yres + session.max_color_shift_lines;
/* at QUATER_STEP lines are 'staggered' and need correction */ /* at QUATER_STEP lines are 'staggered' and need correction */
linecnt += session.num_staggered_lines; linecnt += session.num_staggered_lines;
DBG(DBG_info, "%s : max_shift=%d lines\n", __func__, max_shift);
/* CIS scanners read one line per color channel /* CIS scanners read one line per color channel
* since gray mode use 'add' we also read 3 channels even not in * since gray mode use 'add' we also read 3 channels even not in
* color mode */ * color mode */
@ -616,8 +610,8 @@ static void gl646_setup_registers(Genesys_Device* dev,
/* move distance must be adjusted to take into account the extra lines /* move distance must be adjusted to take into account the extra lines
* read to reorder data */ * read to reorder data */
feedl = move; feedl = move;
if (session.num_staggered_lines + max_shift > 0 && feedl != 0) { if (session.num_staggered_lines + session.max_color_shift_lines > 0 && feedl != 0) {
int feed_offset = ((max_shift + session.num_staggered_lines) * dev->motor.optical_ydpi) / int feed_offset = ((session.max_color_shift_lines + session.num_staggered_lines) * dev->motor.optical_ydpi) /
motor->ydpi; motor->ydpi;
if (feedl > feed_offset) { if (feedl > feed_offset) {
feedl = feedl - feed_offset; feedl = feedl - feed_offset;
@ -768,7 +762,7 @@ static void gl646_setup_registers(Genesys_Device* dev,
/* we must use a round number of words_per_line */ /* we must use a round number of words_per_line */
requested_buffer_size = 8 * words_per_line; requested_buffer_size = 8 * words_per_line;
read_buffer_size = 2 * requested_buffer_size + read_buffer_size = 2 * requested_buffer_size +
((max_shift + session.num_staggered_lines) * session.params.pixels * ((session.max_color_shift_lines + session.num_staggered_lines) * session.params.pixels *
session.params.channels * session.params.depth) / 8; session.params.channels * session.params.depth) / 8;
dev->read_buffer.clear(); dev->read_buffer.clear();
@ -796,7 +790,7 @@ static void gl646_setup_registers(Genesys_Device* dev,
dev->current_setup.xres = session.output_resolution; dev->current_setup.xres = session.output_resolution;
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.stagger = session.num_staggered_lines;
dev->current_setup.max_shift = max_shift + session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
/* total_bytes_to_read is the number of byte to send to frontend /* total_bytes_to_read is the number of byte to send to frontend
* total_bytes_read is the number of bytes sent to frontend * total_bytes_read is the number of bytes sent to frontend

Wyświetl plik

@ -1772,7 +1772,6 @@ static void gl841_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
int slope_dpi = 0; int slope_dpi = 0;
int dummy = 0; int dummy = 0;
int scan_step_type = 1; int scan_step_type = 1;
int max_shift;
size_t requested_buffer_size, read_buffer_size; size_t requested_buffer_size, read_buffer_size;
/* /*
@ -1893,11 +1892,7 @@ dummy \ scanned lines
/*** motor parameters ***/ /*** motor parameters ***/
// scanned area must be enlarged by max color shift needed */ lincnt = session.params.lines + session.max_color_shift_lines + session.num_staggered_lines;
max_shift = sanei_genesys_compute_max_shift(dev, session.params.channels,
session.params.yres, session.params.flags);
lincnt = session.params.lines + max_shift + session.num_staggered_lines;
move = session.params.starty; move = session.params.starty;
DBG(DBG_info, "%s: move=%d steps\n", __func__, move); DBG(DBG_info, "%s: move=%d steps\n", __func__, move);
@ -1939,7 +1934,7 @@ dummy \ scanned lines
} }
read_buffer_size = 2 * requested_buffer_size + read_buffer_size = 2 * requested_buffer_size +
((max_shift + session.num_staggered_lines) * session.optical_pixels * ((session.max_color_shift_lines + session.num_staggered_lines) * session.optical_pixels *
session.params.channels * session.params.depth) / 8; session.params.channels * session.params.depth) / 8;
dev->read_buffer.clear(); dev->read_buffer.clear();
@ -1966,7 +1961,7 @@ dummy \ scanned lines
dev->current_setup.xres = session.params.xres; dev->current_setup.xres = session.params.xres;
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.stagger = session.num_staggered_lines;
dev->current_setup.max_shift = max_shift + session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
/* TODO: should this be done elsewhere? */ /* TODO: should this be done elsewhere? */
/* scan bytes to send to the frontend */ /* scan bytes to send to the frontend */
@ -2006,7 +2001,6 @@ static void gl841_calculate_current_setup(Genesys_Device * dev, const Genesys_Se
int slope_dpi = 0; int slope_dpi = 0;
int dummy = 0; int dummy = 0;
int scan_step_type = 1; int scan_step_type = 1;
int max_shift;
DBG(DBG_info, "%s ", __func__); DBG(DBG_info, "%s ", __func__);
debug_dump(DBG_info, dev->settings); debug_dump(DBG_info, dev->settings);
@ -2092,11 +2086,7 @@ dummy \ scanned lines
session.optical_pixels); session.optical_pixels);
DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time); DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
/* scanned area must be enlarged by max color shift needed */ lincnt = session.params.lines + session.max_color_shift_lines + session.num_staggered_lines;
max_shift = sanei_genesys_compute_max_shift(dev, session.params.channels,
session.params.yres, 0);
lincnt = session.params.lines + max_shift + session.num_staggered_lines;
dev->session = session; dev->session = session;
dev->current_setup.pixels = session.output_pixels; dev->current_setup.pixels = session.output_pixels;
@ -2105,7 +2095,7 @@ dummy \ scanned lines
dev->current_setup.xres = session.params.xres; dev->current_setup.xres = session.params.xres;
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.stagger = session.num_staggered_lines;
dev->current_setup.max_shift = max_shift + session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
} }
// for fast power saving methods only, like disabling certain amplifiers // for fast power saving methods only, like disabling certain amplifiers

Wyświetl plik

@ -1193,9 +1193,6 @@ static void gl843_compute_session(Genesys_Device* dev, ScanSession& s,
// compute optical and output resolutions // compute optical and output resolutions
s.hwdpi_divisor = sensor.get_hwdpi_divisor_for_dpi(s.params.xres); s.hwdpi_divisor = sensor.get_hwdpi_divisor_for_dpi(s.params.xres);
s.max_color_shift_lines = sanei_genesys_compute_max_shift(dev, s.params.channels,
s.params.yres, s.params.flags);
s.output_line_count = s.params.lines + s.max_color_shift_lines + s.num_staggered_lines; s.output_line_count = s.params.lines + s.max_color_shift_lines + s.num_staggered_lines;
s.optical_line_bytes = (s.optical_pixels * s.params.channels * s.params.depth) / 8; s.optical_line_bytes = (s.optical_pixels * s.params.channels * s.params.depth) / 8;
@ -1371,8 +1368,6 @@ gl843_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
unsigned int lincnt; unsigned int lincnt;
int exposure; int exposure;
int max_shift;
DBG(DBG_info, "%s ", __func__); DBG(DBG_info, "%s ", __func__);
debug_dump(DBG_info, dev->settings); debug_dump(DBG_info, dev->settings);
@ -1436,12 +1431,7 @@ gl843_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
dev->ld_shift_b = dev->model->ld_shift_b; dev->ld_shift_b = dev->model->ld_shift_b;
} }
/* scanned area must be enlarged by max color shift needed */ lincnt = session.params.lines + session.max_color_shift_lines + session.num_staggered_lines;
max_shift = sanei_genesys_compute_max_shift(dev, session.params.channels,
session.params.yres, 0);
/* lincnt */
lincnt = session.params.lines + max_shift + session.num_staggered_lines;
dev->session = session; dev->session = session;
dev->current_setup.pixels = session.output_pixels; dev->current_setup.pixels = session.output_pixels;
@ -1451,7 +1441,7 @@ gl843_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
dev->current_setup.xres = session.params.xres; dev->current_setup.xres = session.params.xres;
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.stagger = session.num_staggered_lines;
dev->current_setup.max_shift = max_shift + session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
DBG(DBG_proc, "%s: completed\n", __func__); DBG(DBG_proc, "%s: completed\n", __func__);
} }

Wyświetl plik

@ -960,7 +960,6 @@ static void gl846_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
int slope_dpi = 0; int slope_dpi = 0;
int dummy = 0; int dummy = 0;
int scan_step_type = 1; int scan_step_type = 1;
int max_shift;
size_t requested_buffer_size, read_buffer_size; size_t requested_buffer_size, read_buffer_size;
/* compute scan parameters values */ /* compute scan parameters values */
@ -1010,10 +1009,7 @@ static void gl846_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
/*** motor parameters ***/ /*** motor parameters ***/
max_shift = sanei_genesys_compute_max_shift(dev, session.params.channels, session.params.yres, lincnt = session.params.lines + session.max_color_shift_lines + session.num_staggered_lines;
session.params.flags);
lincnt = session.params.lines + max_shift + session.num_staggered_lines;
/* add tl_y to base movement */ /* add tl_y to base movement */
move = session.params.starty; move = session.params.starty;
@ -1040,7 +1036,7 @@ static void gl846_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
requested_buffer_size = 8 * bytes_per_line; requested_buffer_size = 8 * bytes_per_line;
read_buffer_size = 2 * requested_buffer_size + read_buffer_size = 2 * requested_buffer_size +
((max_shift + session.num_staggered_lines) * session.optical_pixels * session.params.channels * ((session.max_color_shift_lines + session.num_staggered_lines) * session.optical_pixels * session.params.channels *
session.params.depth) / 8; session.params.depth) / 8;
dev->read_buffer.clear(); dev->read_buffer.clear();
@ -1067,7 +1063,7 @@ static void gl846_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
dev->current_setup.xres = session.params.xres; dev->current_setup.xres = session.params.xres;
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.stagger = session.num_staggered_lines;
dev->current_setup.max_shift = max_shift + session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
/* TODO: should this be done elsewhere? */ /* TODO: should this be done elsewhere? */
/* scan bytes to send to the frontend */ /* scan bytes to send to the frontend */
@ -1107,7 +1103,6 @@ gl846_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
int slope_dpi; int slope_dpi;
int dummy = 0; int dummy = 0;
int max_shift;
DBG(DBG_info, "%s ", __func__); DBG(DBG_info, "%s ", __func__);
debug_dump(DBG_info, dev->settings); debug_dump(DBG_info, dev->settings);
@ -1154,9 +1149,7 @@ gl846_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
exposure_time = get_sensor_profile(sensor, session.params.xres).exposure_lperiod; exposure_time = get_sensor_profile(sensor, session.params.xres).exposure_lperiod;
DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time); DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
max_shift = sanei_genesys_compute_max_shift(dev, session.params.channels, session.params.yres, 0); lincnt = session.params.lines + session.max_color_shift_lines + session.num_staggered_lines;
lincnt = session.params.lines + max_shift + session.num_staggered_lines;
dev->session = session; dev->session = session;
dev->current_setup.pixels = session.output_pixels; dev->current_setup.pixels = session.output_pixels;
@ -1165,7 +1158,7 @@ gl846_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
dev->current_setup.xres = session.params.xres; dev->current_setup.xres = session.params.xres;
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.stagger = session.num_staggered_lines;
dev->current_setup.max_shift = max_shift + session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
} }
// for fast power saving methods only, like disabling certain amplifiers // for fast power saving methods only, like disabling certain amplifiers

Wyświetl plik

@ -979,7 +979,6 @@ static void gl847_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
int slope_dpi = 0; int slope_dpi = 0;
int dummy = 0; int dummy = 0;
int scan_step_type = 1; int scan_step_type = 1;
int max_shift;
size_t requested_buffer_size, read_buffer_size; size_t requested_buffer_size, read_buffer_size;
/* compute scan parameters values */ /* compute scan parameters values */
@ -1027,12 +1026,7 @@ static void gl847_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
session.optical_pixels, session.params.channels, session.optical_pixels, session.params.channels,
session.params.depth, session.params.color_filter); session.params.depth, session.params.color_filter);
/*** motor parameters ***/ lincnt = session.params.lines + session.max_color_shift_lines + session.num_staggered_lines;
max_shift = sanei_genesys_compute_max_shift(dev, session.params.channels, session.params.yres,
session.params.flags);
lincnt = session.params.lines + max_shift + session.num_staggered_lines;
move = session.params.starty; move = session.params.starty;
DBG(DBG_info, "%s: move=%d steps\n", __func__, move); DBG(DBG_info, "%s: move=%d steps\n", __func__, move);
@ -1058,7 +1052,7 @@ static void gl847_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
requested_buffer_size = 8 * bytes_per_line; requested_buffer_size = 8 * bytes_per_line;
read_buffer_size = 2 * requested_buffer_size + read_buffer_size = 2 * requested_buffer_size +
((max_shift + session.num_staggered_lines) * session.optical_pixels * ((session.max_color_shift_lines + session.num_staggered_lines) * session.optical_pixels *
session.params.channels * session.params.depth) / 8; session.params.channels * session.params.depth) / 8;
dev->read_buffer.clear(); dev->read_buffer.clear();
@ -1085,7 +1079,7 @@ static void gl847_init_scan_regs(Genesys_Device* dev, const Genesys_Sensor& sens
dev->current_setup.xres = session.params.xres; dev->current_setup.xres = session.params.xres;
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.stagger = session.num_staggered_lines;
dev->current_setup.max_shift = max_shift + session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
/* TODO: should this be done elsewhere? */ /* TODO: should this be done elsewhere? */
/* scan bytes to send to the frontend */ /* scan bytes to send to the frontend */
@ -1124,7 +1118,6 @@ gl847_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
int slope_dpi = 0; int slope_dpi = 0;
int dummy = 0; int dummy = 0;
int max_shift;
DBG(DBG_info, "%s ", __func__); DBG(DBG_info, "%s ", __func__);
debug_dump(DBG_info, dev->settings); debug_dump(DBG_info, dev->settings);
@ -1172,9 +1165,7 @@ gl847_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
exposure_time = get_sensor_profile(sensor, session.params.xres).exposure_lperiod; exposure_time = get_sensor_profile(sensor, session.params.xres).exposure_lperiod;
DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time); DBG(DBG_info, "%s : exposure_time=%d pixels\n", __func__, exposure_time);
max_shift = sanei_genesys_compute_max_shift(dev, session.params.channels, session.params.yres, 0); lincnt = session.params.lines + session.max_color_shift_lines + session.num_staggered_lines;
lincnt = session.params.lines + max_shift + session.num_staggered_lines;
dev->session = session; dev->session = session;
dev->current_setup.pixels = session.output_pixels; dev->current_setup.pixels = session.output_pixels;
@ -1183,7 +1174,7 @@ gl847_calculate_current_setup(Genesys_Device * dev, const Genesys_Sensor& sensor
dev->current_setup.xres = session.params.xres; dev->current_setup.xres = session.params.xres;
dev->current_setup.ccd_size_divisor = session.ccd_size_divisor; dev->current_setup.ccd_size_divisor = session.ccd_size_divisor;
dev->current_setup.stagger = session.num_staggered_lines; dev->current_setup.stagger = session.num_staggered_lines;
dev->current_setup.max_shift = max_shift + session.num_staggered_lines; dev->current_setup.max_shift = session.max_color_shift_lines + session.num_staggered_lines;
} }
// for fast power saving methods only, like disabling certain amplifiers // for fast power saving methods only, like disabling certain amplifiers

Wyświetl plik

@ -1210,7 +1210,6 @@ void compute_session(Genesys_Device* dev, ScanSession& s, const Genesys_Sensor&
} }
} }
if (dev->model->asic_type == AsicType::GL843) { if (dev->model->asic_type == AsicType::GL843) {
if ((s.params.yres > 1200) && // FIXME: maybe ccd_size_divisor is the one that controls this? if ((s.params.yres > 1200) && // FIXME: maybe ccd_size_divisor is the one that controls this?
((s.params.flags & SCAN_FLAG_IGNORE_LINE_DISTANCE) == 0) && ((s.params.flags & SCAN_FLAG_IGNORE_LINE_DISTANCE) == 0) &&
@ -1220,6 +1219,8 @@ void compute_session(Genesys_Device* dev, ScanSession& s, const Genesys_Sensor&
} }
} }
s.max_color_shift_lines = sanei_genesys_compute_max_shift(dev, s.params.channels,
s.params.yres, s.params.flags);
} }
/** @brief initialize device /** @brief initialize device

Wyświetl plik

@ -255,7 +255,6 @@ struct ScanSession {
unsigned num_staggered_lines = 0; unsigned num_staggered_lines = 0;
// the number of lines that color channels shift due to different physical positions of // the number of lines that color channels shift due to different physical positions of
// gl843-only
// different color channels // different color channels
unsigned max_color_shift_lines = 0; unsigned max_color_shift_lines = 0;