Hello, here's another status update of the experimental genesys backend after checkin last updates. Scanner does origin searching, coarse gain, offset and shading calibration. Gray level and color 8 bits scans works for 50, 100, 150, 200, 300, 350, 400 and 600 dpi. Image quality is allready rather good in spite of the issues below.
There are important problems to fix before the backend is fully operational: - head moving to scan area is broken. The steps amount computing has to be fixed. - R, G and B lines don't come in sync and we will have to do line distance correction. I'm rather inclined to do it when scanning will work reliably, because it would be currently too complex for debugging. - the MD6471 motor can be set to any resolution from 50 to 1200 dpi, with 50 dpi steps. This doesn't fit with the current enumeration of Y resolutions. - starting from 250 dpi, there is a lot of backtracking. This doesn't happen under windows, even with usbsnoop running. So there is something wrong with bulk reads. Maybe we should use sanei_usb_read_int instead of sanei_usb_read_bulk, or do some synchronization. - sometimes, depending on the amount of data read by a previous can, scanimage hangs in genesys_park_head, after searching origin. When xsane this doesn't happen sine origin searching is done once. - since CCD and motor resolution are not allways the same, scan lines have to be shrunk. Currently, this is done by 'deletion', averaging should be better. Maybe this resizing could be made a sanei function. - current calibration are designed for 'half CCD' resolution, and will have to be modified for full optical range, depending on scan's settings. - 650 to 1200 dpi scans must be fixed. - shading calibration is broken. I believe it because the data sent has to match the scan area (SHDAREA is set), while it is currently for the whole line. - shading calibration uses a hard coded value in genesys_dummy_dark_shading - there are 2 settings for CCD, one for full resolution, another for half resolution. So I think we need two regs_0x08_0x0b sets in Genesys_Sensor. - we need a Genesys_Motor struct where we will move all harcoded values. - genesys_park_head has an hack: it restarts motor, will have to find why it stops. Regards, Stef