a80ae4a0 |
1 | #include "cspace.h" |
2 | |
4ea7de6a |
3 | /* |
4 | * note: these are intended for testing and should be avoided |
5 | * in favor of NEON version or platform-specific conversion |
6 | */ |
7 | |
55b0eeea |
8 | void bgr555_to_rgb565(void *dst_, const void *src_, int bytes) |
9 | { |
4ea7de6a |
10 | const unsigned int *src = src_; |
11 | unsigned int *dst = dst_; |
55b0eeea |
12 | unsigned int p; |
13 | int x; |
14 | |
15 | for (x = 0; x < bytes / 4; x++) { |
16 | p = src[x]; |
17 | p = ((p & 0x7c007c00) >> 10) | ((p & 0x03e003e0) << 1) |
18 | | ((p & 0x001f001f) << 11); |
19 | dst[x] = p; |
20 | } |
21 | } |
22 | |
4ea7de6a |
23 | void bgr888_to_rgb565(void *dst_, const void *src_, int bytes) |
24 | { |
25 | const unsigned char *src = src_; |
26 | unsigned int *dst = dst_; |
27 | unsigned int r1, g1, b1, r2, g2, b2; |
28 | |
29 | for (; bytes >= 6; bytes -= 6, src += 6, dst++) { |
30 | r1 = src[0] & 0xf8; |
31 | g1 = src[1] & 0xfc; |
32 | b1 = src[2] & 0xf8; |
33 | r2 = src[3] & 0xf8; |
34 | g2 = src[4] & 0xfc; |
35 | b2 = src[5] & 0xf8; |
36 | *dst = (r2 << 24) | (g2 << 19) | (b2 << 13) | |
37 | (r1 << 8) | (g1 << 3) | (b1 >> 3); |
38 | } |
39 | } |
40 | |
a80ae4a0 |
41 | // TODO? |
00a5d459 |
42 | void rgb888_to_rgb565(void *dst, const void *src, int bytes) {} |
a80ae4a0 |
43 | void bgr888_to_rgb888(void *dst, const void *src, int bytes) {} |
a80ae4a0 |
44 | |