… | |
… | |
121 | uint8_t g = *src++; |
121 | uint8_t g = *src++; |
122 | uint8_t b = *src++; |
122 | uint8_t b = *src++; |
123 | |
123 | |
124 | uint32_t v = (r << 16) | (g << 8) | b; |
124 | uint32_t v = (r << 16) | (g << 8) | b; |
125 | |
125 | |
126 | if (ecb_big_endian ()) |
126 | if (ecb_big_endian () ? !byte_order_mismatch : byte_order_mismatch) |
127 | v = ecb_bswap32 (v); |
|
|
128 | |
|
|
129 | if (byte_order_mismatch) |
|
|
130 | v = ecb_bswap32 (v); |
127 | v = ecb_bswap32 (v); |
131 | |
128 | |
132 | *dst++ = v; |
129 | *dst++ = v; |
133 | } |
130 | } |
134 | else |
131 | else |
135 | for (int x = 0; x < width; x++) |
132 | for (int x = 0; x < width; x++) |
136 | { |
133 | { |
137 | uint32_t v = *(uint32_t *)src; src += 4; |
134 | uint32_t v = *(uint32_t *)src; src += 4; |
138 | |
135 | |
139 | if (ecb_little_endian ()) |
136 | if (ecb_big_endian ()) |
140 | v = ecb_bswap32 (v); |
137 | v = ecb_bswap32 (v); |
141 | |
138 | |
142 | v = ecb_rotr32 (v, 8); |
139 | v = ecb_rotl32 (v, 8); // abgr to bgra |
143 | |
140 | |
144 | if (byte_order_mismatch) |
141 | if (!byte_order_mismatch) |
145 | v = ecb_bswap32 (v); |
142 | v = ecb_bswap32 (v); |
146 | |
143 | |
147 | *dst++ = v; |
144 | *dst++ = v; |
148 | } |
145 | } |
149 | |
146 | |