- 8 segments scan handling for 8 and 16 bits
- scan buffer size computing fix
- enable 4800 dpi for LiDE 200
- tune minimal slope size to step factor
merge-requests/1/head
Stphane Voltz 2011-03-09 07:41:12 +01:00
rodzic bfc3cad22f
commit d7551176ce
5 zmienionych plików z 98 dodań i 13 usunięć

Wyświetl plik

@ -4890,6 +4890,89 @@ genesys_fill_segmented_buffer (Genesys_Device * dev, uint8_t *work_buffer_dst, s
work_buffer_dst[count] = merged >> 8;
work_buffer_dst[count+1] = merged & 255;
/* update counter and pointer */
count += 2;
dev->cur++;
}
}
}
else if(dev->segnb==8)
{
if(depth==8)
{
while (dev->cur < dev->len && count < size)
{
work_buffer_dst[count + 0] = dev->oe_buffer.buffer[dev->cur + dev->oe_buffer.pos];
work_buffer_dst[count + 1] = dev->oe_buffer.buffer[dev->cur + 2*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 2] = dev->oe_buffer.buffer[dev->cur + 4*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 3] = dev->oe_buffer.buffer[dev->cur + 6*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 4] = dev->oe_buffer.buffer[dev->cur + 1*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 5] = dev->oe_buffer.buffer[dev->cur + 3*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 6] = dev->oe_buffer.buffer[dev->cur + 5*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 7] = dev->oe_buffer.buffer[dev->cur + 7*dev->dist + dev->oe_buffer.pos];
/* update counter and pointer */
count += 8;
dev->cur+=1;
}
}
else if(depth==16)
{
while (dev->cur < dev->len && count < size)
{
work_buffer_dst[count + 0] = dev->oe_buffer.buffer[dev->cur + dev->oe_buffer.pos];
work_buffer_dst[count + 1] = dev->oe_buffer.buffer[dev->cur + dev->oe_buffer.pos+1];
work_buffer_dst[count + 2] = dev->oe_buffer.buffer[dev->cur + 2*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 3] = dev->oe_buffer.buffer[dev->cur + 2*dev->dist + dev->oe_buffer.pos+1];
work_buffer_dst[count + 4] = dev->oe_buffer.buffer[dev->cur + 4*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 5] = dev->oe_buffer.buffer[dev->cur + 4*dev->dist + dev->oe_buffer.pos+1];
work_buffer_dst[count + 6] = dev->oe_buffer.buffer[dev->cur + 6*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 7] = dev->oe_buffer.buffer[dev->cur + 6*dev->dist + dev->oe_buffer.pos+1];
work_buffer_dst[count + 8] = dev->oe_buffer.buffer[dev->cur + 1*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 9] = dev->oe_buffer.buffer[dev->cur + 1*dev->dist + dev->oe_buffer.pos+1];
work_buffer_dst[count + 10] = dev->oe_buffer.buffer[dev->cur + 3*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 11] = dev->oe_buffer.buffer[dev->cur + 3*dev->dist + dev->oe_buffer.pos+1];
work_buffer_dst[count + 12] = dev->oe_buffer.buffer[dev->cur + 5*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 13] = dev->oe_buffer.buffer[dev->cur + 5*dev->dist + dev->oe_buffer.pos+1];
work_buffer_dst[count + 14] = dev->oe_buffer.buffer[dev->cur + 7*dev->dist + dev->oe_buffer.pos];
work_buffer_dst[count + 15] = dev->oe_buffer.buffer[dev->cur + 7*dev->dist + dev->oe_buffer.pos+1];
/* update counter and pointer */
count += 16;
dev->cur+=2;
}
} else { /* lineart case */
while (dev->cur < dev->len && count < size)
{ /* XXX STEF XXX*/
/* get values to merge */
odd = dev->oe_buffer.buffer[dev->cur + dev->oe_buffer.pos];
even = dev->oe_buffer.buffer[dev->cur + dev->dist + dev->oe_buffer.pos];
/* interleave bits .... */
merged=0;
for(i=7;i>=0;i--)
{
mask=1<<i;
if(odd & mask)
{
merged |= 1;
}
merged<<=1;
if(even & mask)
{
merged |= 1;
}
/* don't shift on last bit */
if(i>0)
{
merged<<=1;
}
}
/* store result */
work_buffer_dst[count] = merged >> 8;
work_buffer_dst[count+1] = merged & 255;
/* update counter and pointer */
count += 2;
dev->cur++;

Wyświetl plik

@ -1256,8 +1256,8 @@ static Genesys_Model canon_lide_100_model = {
GENESYS_GL847,
NULL,
{1200, 600, 400, 300, 200, 150, 100, 75, 0}, /* possible x-resolutions */
{1200, 600, 400, 300, 200, 150, 100, 75, 0}, /* possible y-resolutions */
{2400, 1200, 600, 400, 300, 200, 150, 100, 75, 0}, /* possible x-resolutions */
{2400, 1200, 600, 400, 300, 200, 150, 100, 75, 0}, /* possible y-resolutions */
{16, 8, 0}, /* possible depths in gray mode */
{16, 8, 0}, /* possible depths in color mode */
@ -1362,8 +1362,8 @@ static Genesys_Model canon_lide_210_model = {
GENESYS_GL124,
NULL,
{/*2400, */ 1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible x-resolutions */
{/*2400, */ 1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible y-resolutions */
{2400, 1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible x-resolutions */
{2400, 1200, 600, /* 400,*/ 300, 150, 100, 75, 0}, /* possible y-resolutions */
{16, 8, 0}, /* possible depths in gray mode */
{16, 8, 0}, /* possible depths in color mode */
@ -1523,8 +1523,8 @@ static Genesys_Model canon_lide_200_model = {
GENESYS_GL847,
NULL,
{2400, 1200, 600, 400, 300, 200, 150, 100, 75, 0}, /* possible x-resolutions */
{2400, 1200, 600, 400, 300, 200, 150, 100, 75, 0}, /* possible y-resolutions */
{4800, 2400, 1200, 600, 400, 300, 200, 150, 100, 75, 0}, /* possible x-resolutions */
{4800, 2400, 1200, 600, 400, 300, 200, 150, 100, 75, 0}, /* possible y-resolutions */
{16, 8, 0}, /* possible depths in gray mode */
{16, 8, 0}, /* possible depths in color mode */

Wyświetl plik

@ -183,11 +183,12 @@ gl847_bulk_read_data (Genesys_Device * dev, uint8_t addr,
sane_strstatus (status));
return status;
}
done=read;
DBG (DBG_io2, "gl847_bulk_read_data: %lu bytes of data read\n", (u_long) done);
/* read less than 512 bytes remainder */
if (read < size)
{
done=read;
read = size - read;
DBG (DBG_io2,
"gl847_bulk_read_data: trying to read %lu bytes of data\n",
@ -200,6 +201,8 @@ gl847_bulk_read_data (Genesys_Device * dev, uint8_t addr,
sane_strstatus (status));
return status;
}
done=read;
DBG (DBG_io2, "gl847_bulk_read_data: %lu bytes of data read\n", (u_long) done);
}
DBG (DBG_io2, "%s: read %lu bytes, %lu remaining\n", __FUNCTION__,
@ -1532,9 +1535,11 @@ gl847_init_scan_regs (Genesys_Device * dev,
requested_buffer_size = 8 * bytes_per_line;
/* we must use a round number of bytes_per_line */
/* XXX STEF XXX
if (requested_buffer_size > BULKIN_MAXSIZE)
requested_buffer_size =
(BULKIN_MAXSIZE / bytes_per_line) * bytes_per_line;
*/
read_buffer_size =
2 * requested_buffer_size +

Wyświetl plik

@ -554,13 +554,10 @@ static Sensor_Profile sensors[]={
/* *INDENT-ON* */
/* target=((exposure * dpi) / base_dpi)>>step_type; */
/* too fast for the motor
static uint16_t lide200_fast[] = { 46876, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2334, 2325, 2316, 2306, 2297, 2288, 2279, 2270, 2261, 2252, 2243, 2233, 2224, 2215, 2206, 2197, 2188, 2179, 2170, 2160, 2151, 2142, 2133, 2124, 2115, 2106, 2096, 2087, 2078, 2069, 2060, 2051, 2042, 2033, 2023, 2014, 2005, 1996, 1987, 1978, 1969, 1960, 1950, 1941, 1932, 1923, 1914, 1905, 1896, 1887, 1877, 1868, 1859, 1850, 1841, 1832, 1823, 1813, 1804, 1795, 1786, 1777, 1768, 1759, 1750, 1740, 1731, 1722, 1713, 1704, 1695, 1686, 1677, 1667, 1658, 1649, 1640, 1631, 1622, 1613, 1603, 1594, 1585, 1576, 1567, 1558, 1549, 1540, 1530, 1521, 1512, 1503, 1494, 1485, 1476, 1467, 1457, 1448, 1439, 1430, 1421, 1412, 1403, 1393, 1384, 1375, 1366, 1357, 1348, 1339, 1330, 1320, 1311, 1302, 1293, 1284, 1275, 1266, 1257, 1247, 1238, 1229, 1220, 1211, 1202, 1193, 1183, 1174, 1165, 1156, 1147, 1138, 1129, 1120, 1110, 1101, 1092, 1083, 1074, 1065, 1056, 1047, 1037, 1028, 1019, 1010, 1001, 992, 983, 974, 964, 955, 946, 937, 928, 919, 910, 900, 891, 882, 873, 864, 855, 846, 837, 827, 818, 809, 800, 791, 782, 773, 764, 754, 745, 736, 727, 718, 709, 700, 690, 681, 672, 663, 654, 645, 636, 627, 617, 608, 599, 590, 581, 572, 563, 554, 544, 535, 526, 517, 508, 499, 490, 480, 471, 462, 453, 444, 435, 426, 417, 407, 398, 389, 380, 371, 362, 353, 344, 334, 325, 316, 307, 298, 289, 280, 270, 261, 252, 243, 234, 225, 216, 207, 197, 188, 179, 170, 161, 152, 143, 134, 124, 115, 106, 97, 88, 0 };
*/
static uint16_t lide200_base[] = { 46876, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2336, 2329, 2322, 2314, 2307, 2300,2292,2285,2278,2271,2263,2256,2249,2241,2234,2227,2219,2212,2205,2198,2190,2183,2176,2168,2161,2154,2146,2139,2132,2125,2117,2110,2103,2095,2088,2081,2073,2066,2059,2052,2044,2037,2030,2022,2015,2008,2001,1993,1986,1979,1971,1964,1957,1949,1942,1935,1928,1920,1913,1906,1898,1891,1884,1876,1869,1862,1855,1847,1840,1833,1825,1818,1811,1803,1796,1789,1782,1774,1767,1760,1752,1745,1738,1731,1723,1716,1709,1701,1694,1687,1679,1672,1665,1658,1650,1643,1636,1628,1621,1614,1606,1599,1592,1585,1577,1570,1563,1555,1548,1541,1533,1526,1519,1512,1504,1497,1490,1482,1475,1468,1461,1453,1446,1439,1431,1424,1417,1409,1402,1395,1388,1380,1373,1366,1358,1351,1344,1336,1329,1322,1315,1307,1300,1293,1285,1278,1271,1263,1256,1249,1242,1234,1227,1220,1212,1205,1198,1191,1183,1176,1169,1161,1154,1147,1139,1132,1125,1118,1110,1103,1096,1088,1081,1074,1066,1059,1052,1045,1037,1030,1023,1015,1008,1001,993,986,979,972,964,957,950,942,935,928,921,913,906,899,891,884,877,869,862,855,848,840,833,826,818,811,804,796,789,782,775,767,760,753,745,738,731,723,716,709,702,694,687,680,672,665,658,651,643,636,629,621,614,607,599,592,585,578,570,563,556,534,534, 0};
static uint16_t lide200_medium[] = { 46876, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136,2343, 2336, 2329, 2322, 2314, 2307, 2300,2292,2285,2278,2271,2263,2256,2249,2241,2234,2227,2219,2212,2205,2198,2190,2183,2176,2168,2161,2154,2146,2139,2132,2125,2117,2110,2103,2095,2088,2081,2073,2066,2059,2052,2044,2037,2030,2022,2015,2008,2001,1993,1986,1979,1971,1964,1957,1949,1942,1935,1928,1920,1913,1906,1898,1891,1884,1876,1869,1862,1855,1847,1840,1833,1825,1818,1811,1803,1796,1789,1782,1774,1767,1760,1752,1745,1738,1731,1723,1716,1709,1701,1694,1687,1679,1672,1665,1658,1650,1643,1636,1628,1621,1614,1606,1599,1592,1585,1577,1570,1563,1555,1548,1541,1533,1526,1519,1512,1504,1497,1490,1482,1475,1468,1461,1453,1446,1439,1431,1424,1417,1409,1402,1395,1388,1380,1373,1366,1358,1351,1344,1336,1329,1322,1315,1307,1300,1293,1285,1278,1271,1263,1256,1249,1242,1234,1227,1220,1212,1205,1198,1191,1183,1176,1169,1161,1154,1147,1139,1132,1125,1118,1110,1103,1096,1088,1081,1074,1066,1059,1052,1045,1037,1030,1023,1015,1008,1001,993,986,979,972,964,957,950,942,935,928,921,913,906,899,891,884,877,869,862,855,848,840,833,826,818,811,804,796,789,782,775,767,760,753,745,738,731,723,716,709,702,694,687,680,672,665,658,651,643,636,629,621,614,607,599,592,585,578,570,563,556,534,534, 0};
static uint16_t lide200_high[] = { 46876, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 2219,2212,2205,2198,2190,2183,2176,2168,2161,2154,2146,2139,2132,2125,2117,2110,2103,2095,2088,2081,2073,2066,2059,2052,2044,2037,2030,2022,2015,2008,2001,1993,1986,1979,1971,1964,1957,1949,1942,1935,1928,1920,1913,1906,1898,1891,1884,1876,1869,1862,1855,1847,1840,1833,1825,1818,1811,1803,1796,1789,1782,1774,1767,1760,1752,1745,1738,1731,1723,1716,1709,1701,1694,1687,1679,1672,1665,1658,1650,1643,1636,1628,1621,1614,1606,1599,1592,1585,1577,1570,1563,1555,1548,1541,1533,1526,1519,1512,1504,1497,1490,1482,1475,1468,1461,1453,1446,1439,1431,1424,1417,1409,1402,1395,1388,1380,1373,1366,1358,1351,1344,1336,1329,1322,1315,1307,1300,1293,1285,1278,1271,1263,1256,1249,1242,1234,1227,1220,1212,1205,1198,1191,1183,1176,1169,1161,1154,1147,1139,1132,1125,1118,1110,1103,1096,1088,1081,1074,1066,1059,1052,1045,1037,1030,1023,1015,1008,1001,993,986,979,972,964,957,950,942,935,928,921,913,906,899,891,884,877,869,862,855,848,840,833,826,818,811,804,796,789,782,775,767,760,753,745,738,731,723,716,709,702,694,687,680,672,665,658,651,643,636,629,621,614,607,599,592,585,578,570,563,556,534,534, 0};
static uint16_t lide200_max[] = { 46876, 41664, 41664, 41664, 41664, 41664, 41664, 41664, 41664, 41664, 41664, 41664, 41664, 41664, 41664, 41664, 41664, 2343, 2336, 2329, 2322, 2314, 2307, 2300,2292,2285,2278,2271,2263,2256,2249,2241,2234,2227,2219,2212,2205,2198,2190,2183,2176,2168,2161,2154,2146,2139,2132,2125,2117,2110,2103,2095,2088,2081,2073,2066,2059,2052,2044,2037,2030,2022,2015,2008,2001,1993,1986,1979,1971,1964,1957,1949,1942,1935,1928,1920,1913,1906,1898,1891,1884,1876,1869,1862,1855,1847,1840,1833,1825,1818,1811,1803,1796,1789,1782,1774,1767,1760,1752,1745,1738,1731,1723,1716,1709,1701,1694,1687,1679,1672,1665,1658,1650,1643,1636,1628,1621,1614,1606,1599,1592,1585,1577,1570,1563,1555,1548,1541,1533,1526,1519,1512,1504,1497,1490,1482,1475,1468,1461,1453,1446,1439,1431,1424,1417,1409,1402,1395,1388,1380,1373,1366,1358,1351,1344,1336,1329,1322,1315,1307,1300,1293,1285,1278,1271,1263,1256,1249,1242,1234,1227,1220,1212,1205,1198,1191,1183,1176,1169,1161,1154,1147,1139,1132,1125,1118,1110,1103,1096,1088,1081,1074,1066,1059,1052,1045,1037,1030,1023,1015,1008,1001,993,986,979,972,964,957,950,942,935,928,921,913,906,899,891,884,877,869,862,855,848,840,833,826,818,811,804,796,789,782,775,767,760,753,745,738,731,723,716,709,702,694,687,680,672,665,658,651,643,636,629,621,614,607,599,592,585,578,570,563,556,534,534, 0};
static uint16_t lide200_max[] = { 46876, 62496, 62496, 62496, 62496, 62496, 62496, 62496, 62496, 62496, 62496, 62496, 62496, 62496, 62496, 62496, 62496, 2219,2212,2205,2198,2190,2183,2176,2168,2161,2154,2146,2139,2132,2125,2117,2110,2103,2095,2088,2081,2073,2066,2059,2052,2044,2037,2030,2022,2015,2008,2001,1993,1986,1979,1971,1964,1957,1949,1942,1935,1928,1920,1913,1906,1898,1891,1884,1876,1869,1862,1855,1847,1840,1833,1825,1818,1811,1803,1796,1789,1782,1774,1767,1760,1752,1745,1738,1731,1723,1716,1709,1701,1694,1687,1679,1672,1665,1658,1650,1643,1636,1628,1621,1614,1606,1599,1592,1585,1577,1570,1563,1555,1548,1541,1533,1526,1519,1512,1504,1497,1490,1482,1475,1468,1461,1453,1446,1439,1431,1424,1417,1409,1402,1395,1388,1380,1373,1366,1358,1351,1344,1336,1329,1322,1315,1307,1300,1293,1285,1278,1271,1263,1256,1249,1242,1234,1227,1220,1212,1205,1198,1191,1183,1176,1169,1161,1154,1147,1139,1132,1125,1118,1110,1103,1096,1088,1081,1074,1066,1059,1052,1045,1037,1030,1023,1015,1008,1001,993,986,979,972,964,957,950,942,935,928,921,913,906,899,891,884,877,869,862,855,848,840,833,826,818,811,804,796,789,782,775,767,760,753,745,738,731,723,716,709,702,694,687,680,672,665,658,651,643,636,629,621,614,607,599,592,585,578,570,563,556,534,534, 0};
/**
* database of motor profiles
@ -572,7 +569,7 @@ static Motor_Profile gl847_motors[]={
{MOTOR_CANONLIDE200, 1432, 0, lide200_base},
{MOTOR_CANONLIDE200, 2712, 2, lide200_medium},
{MOTOR_CANONLIDE200, 5280, 3, lide200_high},
{MOTOR_CANONLIDE200, 10416, 3, lide200_max},
{MOTOR_CANONLIDE200, 10416, 2, lide200_max},
/* end of database entry */
{0, 0, 0, NULL},
};

Wyświetl plik

@ -1291,7 +1291,7 @@ Motor_Profile *profile;
}
/* ensure minimal slope size */
while(i<8)
while(i<2*factor)
{
slope[i+1]=slope[i];
sum+=slope[i];