Lines Matching refs:values
1022 * @param values AFE values
1026 gt68xx_afe_ccd_calc (GT68xx_Afe_Values * values, unsigned int *buffer)
1040 SANE_UNFIX (values->start_black) * values->scan_dpi / MM_PER_INCH;
1041 end_black = start_black + 1.0 * values->scan_dpi / MM_PER_INCH; /* 1 mm */
1044 start_white = end_black + 5.0 * values->scan_dpi / MM_PER_INCH;
1045 end_white = values->calwidth;
1049 values->scan_dpi, start_black, end_black, start_white, end_white);
1077 values->total_white = total_white / (end_white - start_white);
1079 values->black = min_black;
1080 values->white = max_white;
1081 if (values->white < 50 || values->black > 150
1082 || values->white - values->black < 30 || max_black - min_black > 15)
1085 values->white, values->black, max_black);
1089 values->white, values->black, max_black);
1094 GT68xx_Afe_Values * values,
1099 SANE_Int black_low = values->coarse_black, black_high = black_low + 10;
1100 SANE_Int white_high = values->coarse_white, white_low = white_high - 10;
1105 gt68xx_afe_ccd_calc (values, buffer);
1108 /* test all offset values */
1114 if (values->white > white_high)
1116 if (values->black > black_high)
1117 local_offset += values->offset_direction;
1118 else if (values->black < black_low)
1122 local_offset += values->offset_direction;
1128 else if (values->white < white_low)
1130 if (values->black < black_low)
1131 local_offset -= values->offset_direction;
1132 else if (values->black > black_high)
1136 local_offset -= values->offset_direction;
1142 if (values->black > black_high)
1144 if (values->white > white_high)
1145 local_offset += values->offset_direction;
1146 else if (values->white < white_low)
1150 local_offset += values->offset_direction;
1156 else if (values->black < black_low)
1158 if (values->white < white_low)
1159 local_offset -= values->offset_direction;
1160 else if (values->white > white_high)
1164 local_offset -= values->offset_direction;
1180 "old gain=%2d, total_white=%5d %s\n", color_name, values->white,
1181 values->black, local_offset, local_pga, *offset, *pga,
1182 values->total_white, done ? "DONE " : "");
1196 GT68xx_Afe_Values *values,
1239 gt68xx_afe_ccd_calc (values, buffer_pointers[0]);
1243 values->total_white, last_white);
1259 if (values->total_white <= (last_white - 20))
1261 if (values->total_white >= last_white)
1263 if (increase > 0 && (values->total_white <= (last_white + 20))
1264 && values->total_white != 0)
1269 if ((values->total_white <= (last_white + 20))
1270 && values->total_white != 0)
1274 last_white = values->total_white;
1285 * This function must be called before the main scan to choose the best values
1304 GT68xx_Afe_Values values;
1311 values.offset_direction = 1;
1313 values.offset_direction = -1;
1352 values.scan_dpi = params.xdpi;
1353 values.calwidth = params.pixel_xs;
1354 values.max_width =
1357 values.start_black = SANE_FIX (20.0);
1359 values.start_black = scanner->dev->model->x_offset_mark;
1360 values.coarse_black = 1;
1361 values.coarse_white = 254;
1365 "start_black=%.1f mm\n", values.scan_dpi,
1366 values.calwidth, values.max_width, SANE_UNFIX (values.start_black));
1378 &values, SANE_FALSE);
1416 gt68xx_afe_ccd_adjust_offset_gain ("red", &values,
1424 gt68xx_afe_ccd_adjust_offset_gain ("green", &values,
1433 gt68xx_afe_ccd_adjust_offset_gain ("blue", &values,
1445 gt68xx_afe_ccd_adjust_offset_gain ("gray", &values,
1458 gt68xx_afe_ccd_adjust_offset_gain ("gray", &values,
1470 gt68xx_afe_ccd_adjust_offset_gain ("gray", &values,
1492 gt68xx_afe_cis_calc_black (GT68xx_Afe_Values * values,
1502 end_black = values->calwidth;
1508 for (j = 0; j < values->callines; j++)
1509 avg_black += (*(black_buffer + i + j * values->calwidth) >> 8);
1510 avg_black /= values->callines;
1515 values->black = min_black;
1519 values->black, average);
1523 gt68xx_afe_cis_calc_white (GT68xx_Afe_Values * values,
1532 end_white = values->calwidth;
1533 values->total_white = 0;
1539 for (j = 0; j < values->callines; j++)
1541 avg_white += (*(white_buffer + i + j * values->calwidth) >> 8);
1542 values->total_white += (*(white_buffer + i + j * values->calwidth));
1544 avg_white /= values->callines;
1548 values->white = max_white;
1549 values->total_white /= (values->callines * (end_white - start_white));
1552 values->white, values->total_white >> 8);
1557 GT68xx_Afe_Values * values,
1565 SANE_Int black_low = values->coarse_black, black_high = black_low + 10;
1566 SANE_Int white_high = values->coarse_white, white_low = white_high - 10;
1569 gt68xx_afe_cis_calc_black (values, black_buffer);
1570 gt68xx_afe_cis_calc_white (values, white_buffer);
1597 if (values->white > white_high)
1599 if (values->black > black_high)
1600 o -= values->offset_direction;
1601 else if (values->black < black_low)
1605 o -= values->offset_direction;
1611 else if (values->white < white_low)
1613 if (values->black < black_low)
1614 o += values->offset_direction;
1615 else if (values->black > black_high)
1619 o += values->offset_direction;
1625 if (values->black > black_high)
1627 if (values->white > white_high)
1628 o -= values->offset_direction;
1629 else if (values->white < white_low)
1633 o -= values->offset_direction;
1639 else if (values->black < black_low)
1641 if (values->white < white_low)
1642 o += values->offset_direction;
1643 else if (values->white > white_high)
1647 o += values->offset_direction;
1672 "old gain=0x%02X, total_white=%5d %s\n", color_name, values->white,
1673 values->black, o, g, *offset, *gain, values->total_white,
1685 GT68xx_Afe_Values * values,
1691 gt68xx_afe_cis_calc_white (values, white_buffer);
1693 if (values->white < border)
1695 exposure_change = ((border - values->white) * 1);
1699 color_name, values->white, values->total_white, exposure_change, *exposure_time);
1702 else if (values->white > border + 5)
1704 exposure_change = -((values->white - (border + 5)) * 1);
1708 color_name, values->white, values->total_white, exposure_change, *exposure_time);
1714 color_name, values->white, values->total_white, *exposure_time);
1720 gt68xx_afe_cis_read_lines (GT68xx_Afe_Values * values,
1758 values->scan_dpi = params.xdpi;
1759 values->calwidth = params.pixel_xs;
1760 values->callines = params.pixel_ys;
1761 values->start_black = scanner->dev->model->x_offset_mark;
1778 buffer_pointers, values, SANE_TRUE);
1799 values->scan_dpi = params.xdpi;
1800 values->calwidth = params.pixel_xs;
1801 values->callines = params.pixel_ys;
1802 values->coarse_black = 2;
1803 values->coarse_white = 253;
1806 for (line = 0; line < values->callines; line++)
1816 memcpy (r_buffer + values->calwidth * line, buffer_pointers[0],
1817 values->calwidth * sizeof (unsigned int));
1818 memcpy (g_buffer + values->calwidth * line, buffer_pointers[1],
1819 values->calwidth * sizeof (unsigned int));
1820 memcpy (b_buffer + values->calwidth * line, buffer_pointers[2],
1821 values->calwidth * sizeof (unsigned int));
1841 GT68xx_Afe_Values values;
1862 RIE (gt68xx_afe_cis_read_lines (&values, scanner, SANE_FALSE, SANE_FALSE,
1866 malloc (values.calwidth * values.callines * sizeof (unsigned int));
1868 malloc (values.calwidth * values.callines * sizeof (unsigned int));
1870 malloc (values.calwidth * values.callines * sizeof (unsigned int));
1872 malloc (values.calwidth * values.callines * sizeof (unsigned int));
1874 malloc (values.calwidth * values.callines * sizeof (unsigned int));
1876 malloc (values.calwidth * values.callines * sizeof (unsigned int));
1887 values.offset_direction = 1;
1889 values.offset_direction = -1;
1891 RIE (gt68xx_afe_cis_read_lines (&values, scanner, SANE_FALSE, first,
1893 RIE (gt68xx_afe_cis_read_lines (&values, scanner, SANE_TRUE, SANE_FALSE,
1898 gt68xx_afe_cis_adjust_gain_offset ("red", &values, r_obuffer,
1902 gt68xx_afe_cis_adjust_gain_offset ("green", &values, g_obuffer,
1906 gt68xx_afe_cis_adjust_gain_offset ("blue", &values, b_obuffer,
1923 RIE (gt68xx_afe_cis_read_lines (&values, scanner, SANE_TRUE, SANE_FALSE,
1927 gt68xx_afe_cis_adjust_exposure ("red", &values, r_gbuffer, 245,
1931 gt68xx_afe_cis_adjust_exposure ("green", &values, g_gbuffer, 245,
1935 gt68xx_afe_cis_adjust_exposure ("blue", &values, b_gbuffer, 245,
2093 /* move to white area SA_CALIBRATE uses its own y0/ys fixed values */