! * \brief thresholdTo2bppLow() * * Low-level function for thresholding from 8 bpp (datas) to * 2 bpp (datad), using thresholds implicitly defined through %tab, * a 256-entry lookup table that gives a 2-bit output value * for each possible input. * * For each line, unroll the loop so that for each 32 bit src word, * representing four consecutive 8-bit pixels, we compose one byte
| 1434 | * of output consisiting of four 2-bit pixels. |
| 1435 | */ |
| 1436 | static void |
| 1437 | thresholdTo2bppLow(l_uint32 *datad, |
| 1438 | l_int32 h, |
| 1439 | l_int32 wpld, |
| 1440 | l_uint32 *datas, |
| 1441 | l_int32 wpls, |
| 1442 | l_int32 *tab) |
| 1443 | { |
| 1444 | l_uint8 sval1, sval2, sval3, sval4, dval; |
| 1445 | l_int32 i, j, k; |
| 1446 | l_uint32 *lines, *lined; |
| 1447 | |
| 1448 | for (i = 0; i < h; i++) { |
| 1449 | lines = datas + i * wpls; |
| 1450 | lined = datad + i * wpld; |
| 1451 | for (j = 0; j < wpls; j++) { |
| 1452 | k = 4 * j; |
| 1453 | sval1 = GET_DATA_BYTE(lines, k); |
| 1454 | sval2 = GET_DATA_BYTE(lines, k + 1); |
| 1455 | sval3 = GET_DATA_BYTE(lines, k + 2); |
| 1456 | sval4 = GET_DATA_BYTE(lines, k + 3); |
| 1457 | dval = (tab[sval1] << 6) | (tab[sval2] << 4) | |
| 1458 | (tab[sval3] << 2) | tab[sval4]; |
| 1459 | SET_DATA_BYTE(lined, j, dval); |
| 1460 | } |
| 1461 | } |
| 1462 | } |
| 1463 | |
| 1464 | |
| 1465 | /*----------------------------------------------------------------------* |
no outgoing calls
no test coverage detected