* Decode interleaved plane buffer up to 24bpp * @param dst Destination buffer * @param buf Source buffer * @param buf_size * @param plane plane number to decode as */
| 425 | * @param plane plane number to decode as |
| 426 | */ |
| 427 | static void decodeplane32(uint32_t *dst, const uint8_t *buf, int buf_size, int plane) |
| 428 | { |
| 429 | const uint32_t *lut = plane32_lut[plane]; |
| 430 | do { |
| 431 | unsigned mask = (*buf >> 2) & ~3; |
| 432 | dst[0] |= lut[mask++]; |
| 433 | dst[1] |= lut[mask++]; |
| 434 | dst[2] |= lut[mask++]; |
| 435 | dst[3] |= lut[mask]; |
| 436 | mask = (*buf++ << 2) & 0x3F; |
| 437 | dst[4] |= lut[mask++]; |
| 438 | dst[5] |= lut[mask++]; |
| 439 | dst[6] |= lut[mask++]; |
| 440 | dst[7] |= lut[mask]; |
| 441 | dst += 8; |
| 442 | } while (--buf_size); |
| 443 | } |
| 444 | |
| 445 | #define DECODE_HAM_PLANE32(x) \ |
| 446 | first = buf[x] << 1; \ |