kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Move Genesys_Device::len to DesegmentationState
rodzic
07d8db5423
commit
9bd14f5350
|
@ -3432,8 +3432,7 @@ static void genesys_fill_line_interp_buffer(Genesys_Device* dev, uint8_t* work_b
|
|||
dev->cur++;
|
||||
|
||||
/* go to next line if needed */
|
||||
if (dev->cur == dev->len)
|
||||
{
|
||||
if (dev->cur == dev->deseg.pixel_groups) {
|
||||
dev->oe_buffer.set_pos(dev->oe_buffer.pos() + dev->deseg.raw_channel_bytes);
|
||||
dev->cur = 0;
|
||||
dev->line_count++;
|
||||
|
@ -3476,7 +3475,7 @@ static void genesys_fill_segmented_buffer(Genesys_Device* dev, uint8_t* work_buf
|
|||
while (count < size)
|
||||
{
|
||||
if (depth==1) {
|
||||
while (dev->cur < dev->len && count < size) {
|
||||
while (dev->cur < dev->deseg.pixel_groups && count < size) {
|
||||
for (n=0; n<dev->segnb; n++) {
|
||||
work_buffer_dst[count+n] = 0;
|
||||
}
|
||||
|
@ -3497,7 +3496,7 @@ static void genesys_fill_segmented_buffer(Genesys_Device* dev, uint8_t* work_buf
|
|||
}
|
||||
}
|
||||
if (depth==8) {
|
||||
while (dev->cur < dev->len && count < size) {
|
||||
while (dev->cur < dev->deseg.pixel_groups && 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->deseg.conseq_pixel_dist_bytes *dev->segment_order[n]];
|
||||
}
|
||||
|
@ -3507,7 +3506,7 @@ static void genesys_fill_segmented_buffer(Genesys_Device* dev, uint8_t* work_buf
|
|||
}
|
||||
}
|
||||
if (depth==16) {
|
||||
while (dev->cur < dev->len && count < size) {
|
||||
while (dev->cur < dev->deseg.pixel_groups && 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->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];
|
||||
|
@ -3519,8 +3518,7 @@ static void genesys_fill_segmented_buffer(Genesys_Device* dev, uint8_t* work_buf
|
|||
}
|
||||
|
||||
/* go to next line if needed */
|
||||
if (dev->cur == dev->len)
|
||||
{
|
||||
if (dev->cur == dev->deseg.pixel_groups) {
|
||||
dev->oe_buffer.set_pos(dev->oe_buffer.pos() + dev->deseg.raw_channel_bytes);
|
||||
dev->cur = 0;
|
||||
}
|
||||
|
|
|
@ -195,11 +195,17 @@ struct Genesys_Model
|
|||
// Describes the geometry of the raw data coming out of the scanner for desegmentation.
|
||||
struct DesegmentationState
|
||||
{
|
||||
// The number of "even" pixels to scan. This corresponds to the number of pixels that will be
|
||||
// scanned from a single segment
|
||||
unsigned pixel_groups = 0;
|
||||
|
||||
// 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
|
||||
unsigned raw_line_bytes = 0;
|
||||
};
|
||||
|
@ -328,8 +334,6 @@ struct Genesys_Device
|
|||
int line_interp = 0;
|
||||
// number of scan lines used during scan
|
||||
int line_count = 0;
|
||||
// number of even pixels
|
||||
size_t len = 0;
|
||||
// current pixel position within sub window
|
||||
size_t cur = 0;
|
||||
// number of bytes to skip at start of line
|
||||
|
|
|
@ -997,7 +997,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->deseg.pixel_groups = 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;
|
||||
|
@ -1006,7 +1006,7 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
DBG (DBG_io2, "%s: pixels =%d\n", __func__, session.optical_pixels);
|
||||
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->len =%lu\n", __func__, (unsigned long) dev->deseg.pixel_groups);
|
||||
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);
|
||||
|
||||
|
|
|
@ -1163,7 +1163,7 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
DBG(DBG_io2, "%s: pixels =%d\n", __func__, session.optical_pixels);
|
||||
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->len =%lu\n", __func__, (unsigned long) dev->deseg.pixel_groups);
|
||||
DBG(DBG_io2, "%s: dev->dist =%lu\n", __func__, (unsigned long) dev->deseg.conseq_pixel_dist_bytes);
|
||||
|
||||
/* MAXWD is expressed in 2 words unit */
|
||||
|
|
|
@ -761,7 +761,7 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
// compute pixel coordinate in the given dpihw space, taking segments into account
|
||||
startx /= factor*segnb;
|
||||
endx /= factor*segnb;
|
||||
dev->len = endx - startx;
|
||||
dev->deseg.pixel_groups = endx - startx;
|
||||
dev->deseg.conseq_pixel_dist_bytes = 0;
|
||||
dev->skip=0;
|
||||
|
||||
|
@ -872,7 +872,7 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
/* words(16bit) before gamma, conversion to 8 bit or lineart*/
|
||||
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->deseg.pixel_groups = multiply_by_depth_ceil(dev->deseg.pixel_groups, 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;
|
||||
|
@ -892,7 +892,7 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
DBG (DBG_io2, "%s: pixels =%d\n", __func__, session.optical_pixels);
|
||||
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->len =%lu\n", __func__, (unsigned long) dev->deseg.pixel_groups);
|
||||
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);
|
||||
|
||||
|
|
|
@ -780,7 +780,7 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
// compute pixel coordinate in the given dpihw space, taking segments into account
|
||||
startx /= factor*segnb;
|
||||
endx /= factor*segnb;
|
||||
dev->len=endx-startx;
|
||||
dev->deseg.pixel_groups = endx-startx;
|
||||
dev->deseg.conseq_pixel_dist_bytes = 0;
|
||||
dev->skip=0;
|
||||
|
||||
|
@ -891,7 +891,7 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
/* words(16bit) before gamma, conversion to 8 bit or lineart*/
|
||||
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->deseg.pixel_groups = multiply_by_depth_ceil(dev->deseg.pixel_groups, 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;
|
||||
|
@ -910,7 +910,7 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
|
|||
DBG (DBG_io2, "%s: pixels =%d\n", __func__, session.optical_pixels);
|
||||
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->len =%lu\n", __func__, (unsigned long) dev->deseg.pixel_groups);
|
||||
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);
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue