genesys: Move Genesys_Device::dist to DesegmentationState

merge-requests/162/head
Povilas Kanapickas 2019-09-12 21:26:53 +03:00
rodzic dd70296827
commit 07d8db5423
6 zmienionych plików z 22 dodań i 21 usunięć

Wyświetl plik

@ -3485,7 +3485,7 @@ static void genesys_fill_segmented_buffer(Genesys_Device* dev, uint8_t* work_buf
k=count+(i*dev->segnb)/8;
for (n=0;n<dev->segnb;n++) {
work_buffer_dst[k] = work_buffer_dst[k] << 1;
if ((dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->dist*dev->segment_order[n]])&(128>>i)) {
if ((dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->deseg.conseq_pixel_dist_bytes * dev->segment_order[n]])&(128>>i)) {
work_buffer_dst[k] |= 1;
}
}
@ -3499,7 +3499,7 @@ static void genesys_fill_segmented_buffer(Genesys_Device* dev, uint8_t* work_buf
if (depth==8) {
while (dev->cur < dev->len && count < size) {
for (n=0;n<dev->segnb;n++) {
work_buffer_dst[count+n] = dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->dist*dev->segment_order[n]];
work_buffer_dst[count+n] = dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->deseg.conseq_pixel_dist_bytes *dev->segment_order[n]];
}
/* update counter and pointer */
count += dev->segnb;
@ -3509,8 +3509,8 @@ static void genesys_fill_segmented_buffer(Genesys_Device* dev, uint8_t* work_buf
if (depth==16) {
while (dev->cur < dev->len && count < size) {
for (n=0;n<dev->segnb;n++) {
work_buffer_dst[count+n*2] = dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->dist*dev->segment_order[n]];
work_buffer_dst[count+n*2+1] = dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->dist*dev->segment_order[n] + 1];
work_buffer_dst[count+n*2] = dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->deseg.conseq_pixel_dist_bytes * dev->segment_order[n]];
work_buffer_dst[count+n*2+1] = dev->oe_buffer.get_read_pos()[dev->cur + dev->skip + dev->deseg.conseq_pixel_dist_bytes * dev->segment_order[n] + 1];
}
/* update counter and pointer */
count += dev->segnb*2;

Wyświetl plik

@ -195,9 +195,12 @@ struct Genesys_Model
// Describes the geometry of the raw data coming out of the scanner for desegmentation.
struct DesegmentationState
{
// total bytes in a channel received from a scanner
// Distance in bytes between consecutive pixels, e.g. between odd and even pixels. Note that
// the number of segments can be large.
unsigned conseq_pixel_dist_bytes = 0;
// Total bytes in a channel received from a scanner
unsigned raw_channel_bytes = 0;
// total bytes in a line received from a scanner
// Total bytes in a line received from a scanner
unsigned raw_line_bytes = 0;
};
@ -325,8 +328,6 @@ struct Genesys_Device
int line_interp = 0;
// number of scan lines used during scan
int line_count = 0;
// bytes distance between an odd and an even pixel
size_t dist = 0;
// number of even pixels
size_t len = 0;
// current pixel position within sub window

Wyświetl plik

@ -998,7 +998,7 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
dev->cur = 0;
dev->skip = 0;
dev->len = dev->deseg.raw_channel_bytes / segnb;
dev->dist = dev->deseg.raw_channel_bytes / segnb;
dev->deseg.conseq_pixel_dist_bytes = dev->deseg.raw_channel_bytes / segnb;
dev->segnb = segnb;
dev->line_count = 0;
dev->line_interp = 0;
@ -1007,7 +1007,7 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
DBG (DBG_io2, "%s: depth =%d\n", __func__, session.params.depth);
DBG (DBG_io2, "%s: dev->bpl =%lu\n", __func__, (unsigned long) dev->deseg.raw_channel_bytes);
DBG (DBG_io2, "%s: dev->len =%lu\n", __func__, (unsigned long)dev->len);
DBG (DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long)dev->dist);
DBG (DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long) dev->deseg.conseq_pixel_dist_bytes);
DBG (DBG_io2, "%s: dev->line_interp=%lu\n", __func__, (unsigned long)dev->line_interp);
dev->deseg.raw_line_bytes = dev->deseg.raw_channel_bytes * session.params.channels;

Wyświetl plik

@ -1164,7 +1164,7 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
DBG(DBG_io2, "%s: depth =%d\n", __func__, session.params.depth);
DBG(DBG_io2, "%s: dev->bpl =%lu\n", __func__, (unsigned long) dev->deseg.raw_channel_bytes);
DBG(DBG_io2, "%s: dev->len =%lu\n", __func__, (unsigned long)dev->len);
DBG(DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long)dev->dist);
DBG(DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long) dev->deseg.conseq_pixel_dist_bytes);
/* MAXWD is expressed in 2 words unit */
/* nousedspace = (mem_bank_range * 1024 / 256 -1 ) * 4; */

Wyświetl plik

@ -762,17 +762,17 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
startx /= factor*segnb;
endx /= factor*segnb;
dev->len = endx - startx;
dev->dist=0;
dev->deseg.conseq_pixel_dist_bytes = 0;
dev->skip=0;
/* in cas of multi-segments sensor, we have to add the witdh
* of the sensor crossed by the scan area */
if (dev->model->flags & GENESYS_FLAG_SIS_SENSOR && segnb > 1) {
dev->dist = sensor_profile.segment_count;
dev->deseg.conseq_pixel_dist_bytes = sensor_profile.segment_count;
}
/* use a segcnt rounded to next even number */
endx += ((dev->dist+1)&0xfffe)*(segnb-1);
endx += ((dev->deseg.conseq_pixel_dist_bytes + 1) & 0xfffe) * (segnb - 1);
unsigned used_pixels = endx - startx;
gl846_set_fe(dev, sensor, AFE_SET);
@ -873,7 +873,7 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
words_per_line = (used_pixels * session.params.xres * ccd_pixels_per_system_pixel) / sensor.get_register_hwdpi(session.params.xres * ccd_pixels_per_system_pixel);
dev->deseg.raw_channel_bytes = multiply_by_depth_ceil(words_per_line, session.params.depth);
dev->len = multiply_by_depth_ceil(dev->len, session.params.depth);
dev->dist = multiply_by_depth_ceil(dev->dist, session.params.depth);
dev->deseg.conseq_pixel_dist_bytes = multiply_by_depth_ceil(dev->deseg.conseq_pixel_dist_bytes, session.params.depth);
dev->cur=0;
dev->segnb=segnb;
@ -893,7 +893,7 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
DBG (DBG_io2, "%s: depth =%d\n", __func__, session.params.depth);
DBG (DBG_io2, "%s: dev->bpl =%lu\n", __func__, (unsigned long) dev->deseg.raw_channel_bytes);
DBG (DBG_io2, "%s: dev->len =%lu\n", __func__, (unsigned long)dev->len);
DBG (DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long)dev->dist);
DBG (DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long) dev->deseg.conseq_pixel_dist_bytes);
DBG (DBG_io2, "%s: dev->segnb =%lu\n", __func__, (unsigned long)dev->segnb);
dev->deseg.raw_line_bytes = dev->deseg.raw_channel_bytes * session.params.channels;

Wyświetl plik

@ -781,17 +781,17 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
startx /= factor*segnb;
endx /= factor*segnb;
dev->len=endx-startx;
dev->dist=0;
dev->deseg.conseq_pixel_dist_bytes = 0;
dev->skip=0;
/* in cas of multi-segments sensor, we have to add the witdh
* of the sensor crossed by the scan area */
if (dev->model->flags & GENESYS_FLAG_SIS_SENSOR && segnb > 1) {
dev->dist = sensor_profile.segment_count;
dev->deseg.conseq_pixel_dist_bytes = sensor_profile.segment_count;
}
/* use a segcnt rounded to next even number */
endx += ((dev->dist+1)&0xfffe)*(segnb-1);
endx += ((dev->deseg.conseq_pixel_dist_bytes + 1) & 0xfffe) * (segnb - 1);
unsigned used_pixels = endx - startx;
gl847_set_fe(dev, sensor, AFE_SET);
@ -892,7 +892,7 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
dev->deseg.raw_channel_bytes = multiply_by_depth_ceil((used_pixels * dpiset) / dpihw,
session.params.depth);
dev->len = multiply_by_depth_ceil(dev->len, session.params.depth);
dev->dist = multiply_by_depth_ceil(dev->dist, session.params.depth);
dev->deseg.conseq_pixel_dist_bytes = multiply_by_depth_ceil(dev->deseg.conseq_pixel_dist_bytes, session.params.depth);
dev->cur=0;
dev->segnb=segnb;
@ -911,7 +911,7 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
DBG (DBG_io2, "%s: depth =%d\n", __func__, session.params.depth);
DBG (DBG_io2, "%s: dev->bpl =%lu\n", __func__, (unsigned long) dev->deseg.raw_channel_bytes);
DBG (DBG_io2, "%s: dev->len =%lu\n", __func__, (unsigned long)dev->len);
DBG (DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long)dev->dist);
DBG (DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long) dev->deseg.conseq_pixel_dist_bytes);
DBG (DBG_io2, "%s: dev->segnb =%lu\n", __func__, (unsigned long)dev->segnb);
dev->deseg.raw_line_bytes = dev->deseg.raw_channel_bytes * session.params.channels;