kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Use common code path to compute session max_color_shift_lines
rodzic
9afaf9a2cf
commit
ce144ed46f
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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__);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue