59 int lumStride,
int chromStride,
int dstStride);
63 int lumStride,
int chromStride,
int dstStride);
67 int lumStride,
int chromStride,
int dstStride);
71 int lumStride,
int chromStride,
int dstStride);
75 int lumStride,
int chromStride,
int srcStride);
79 int lumStride,
int chromStride,
int srcStride);
81 int srcStride,
int dstStride);
84 int src2Stride,
int dstStride);
88 int srcStride1,
int srcStride2,
89 int dstStride1,
int dstStride2);
93 int srcStride1,
int srcStride2,
94 int srcStride3,
int dstStride);
97 int lumStride,
int chromStride,
int srcStride);
100 int lumStride,
int chromStride,
int srcStride);
103 int lumStride,
int chromStride,
int srcStride);
106 int lumStride,
int chromStride,
int srcStride);
108 #define RGB2YUV_SHIFT 8
109 #define BY ((int)( 0.098 * (1 << RGB2YUV_SHIFT) + 0.5))
110 #define BV ((int)(-0.071 * (1 << RGB2YUV_SHIFT) + 0.5))
111 #define BU ((int)( 0.439 * (1 << RGB2YUV_SHIFT) + 0.5))
112 #define GY ((int)( 0.504 * (1 << RGB2YUV_SHIFT) + 0.5))
113 #define GV ((int)(-0.368 * (1 << RGB2YUV_SHIFT) + 0.5))
114 #define GU ((int)(-0.291 * (1 << RGB2YUV_SHIFT) + 0.5))
115 #define RY ((int)( 0.257 * (1 << RGB2YUV_SHIFT) + 0.5))
116 #define RV ((int)( 0.439 * (1 << RGB2YUV_SHIFT) + 0.5))
117 #define RU ((int)(-0.148 * (1 << RGB2YUV_SHIFT) + 0.5))
138 int i, num_pixels = src_size >> 2;
140 for (i = 0; i < num_pixels; i++) {
143 dst[3 * i + 0] = src[4 * i + 1];
144 dst[3 * i + 1] = src[4 * i + 2];
145 dst[3 * i + 2] = src[4 * i + 3];
147 dst[3 * i + 0] = src[4 * i + 2];
148 dst[3 * i + 1] = src[4 * i + 1];
149 dst[3 * i + 2] = src[4 * i + 0];
158 for (i = 0; 3 * i < src_size; i++) {
161 dst[4 * i + 0] = 255;
162 dst[4 * i + 1] = src[3 * i + 0];
163 dst[4 * i + 2] = src[3 * i + 1];
164 dst[4 * i + 3] = src[3 * i + 2];
166 dst[4 * i + 0] = src[3 * i + 2];
167 dst[4 * i + 1] = src[3 * i + 1];
168 dst[4 * i + 2] = src[3 * i + 0];
169 dst[4 * i + 3] = 255;
177 const uint16_t *s = (
const uint16_t *)src;
178 const uint16_t *end = s + src_size / 2;
181 register uint16_t bgr = *s++;
184 *d++ = (bgr & 0x1F) << 3;
185 *d++ = (bgr & 0x7E0) >> 3;
186 *d++ = (bgr & 0xF800) >> 8;
188 *d++ = (bgr & 0xF800) >> 8;
189 *d++ = (bgr & 0x7E0) >> 3;
190 *d++ = (bgr & 0x1F) << 3;
198 uint16_t rgb,
r,
g,
b;
199 uint16_t *d = (uint16_t *)dst;
200 const uint16_t *s = (
const uint16_t *)src;
201 const uint16_t *end = s + src_size / 2;
208 r = (r << 3) | ((r & 0x800) >> 1);
209 g = (g << 2) | ((g & 0x080) >> 2);
210 b = (b << 1) | ( b >> 3);
218 const uint16_t *s = (
const uint16_t *)src;
219 const uint16_t *end = s + src_size / 2;
222 register uint16_t bgr = *s++;
223 *d++ = (bgr & 0xF800) >> 8;
224 *d++ = (bgr & 0x7E0) >> 3;
225 *d++ = (bgr & 0x1F) << 3;
231 int i, num_pixels = src_size >> 1;
233 for (i = 0; i < num_pixels; i++) {
234 unsigned rgb = ((
const uint16_t *)src)[i];
235 ((uint16_t *)dst)[i] = (rgb >> 11) | (rgb & 0x7E0) | (rgb << 11);
241 int i, num_pixels = src_size >> 1;
243 for (i = 0; i < num_pixels; i++) {
244 unsigned rgb = ((
const uint16_t *)src)[i];
245 ((uint16_t *)dst)[i] = (rgb >> 11) | ((rgb & 0x7C0) >> 1) | ((rgb & 0x1F) << 10);
252 const uint16_t *s = (
const uint16_t *)src;
253 const uint16_t *end = s + src_size / 2;
256 register uint16_t bgr = *s++;
259 *d++ = (bgr & 0x1F) << 3;
260 *d++ = (bgr & 0x3E0) >> 2;
261 *d++ = (bgr & 0x7C00) >> 7;
263 *d++ = (bgr & 0x7C00) >> 7;
264 *d++ = (bgr & 0x3E0) >> 2;
265 *d++ = (bgr & 0x1F) << 3;
274 const uint16_t *s = (
const uint16_t *)src;
275 const uint16_t *end = s + src_size / 2;
278 register uint16_t bgr = *s++;
279 *d++ = (bgr & 0x7C00) >> 7;
280 *d++ = (bgr & 0x3E0) >> 2;
281 *d++ = (bgr & 0x1F) << 3;
287 int i, num_pixels = src_size >> 1;
289 for (i = 0; i < num_pixels; i++) {
290 unsigned rgb = ((
const uint16_t *)src)[i];
291 ((uint16_t *)dst)[i] = ((rgb & 0x7C00) >> 10) | ((rgb & 0x3E0) << 1) | (rgb << 11);
297 int i, num_pixels = src_size >> 1;
299 for (i = 0; i < num_pixels; i++) {
300 unsigned rgb = ((
const uint16_t *)src)[i];
301 unsigned br = rgb & 0x7C1F;
302 ((uint16_t *)dst)[i] = (br >> 10) | (rgb & 0x3E0) | (br << 10);
308 uint16_t *d = (uint16_t *)dst;
309 uint16_t *s = (uint16_t *)src;
310 int i, num_pixels = src_size >> 1;
312 for (i = 0; i < num_pixels; i++) {
314 d[i] = (rgb << 8 | rgb & 0xF0 | rgb >> 8) & 0xFFF;
320 int i, num_pixels = src_size;
322 for (i = 0; i < num_pixels; i++) {
324 unsigned r = (rgb & 0x07);
325 unsigned g = (rgb & 0x38) >> 3;
326 unsigned b = (rgb & 0xC0) >> 6;
327 dst[i] = ((b << 1) & 0x07) | ((g & 0x07) << 3) | ((r & 0x03) << 6);
331 #define DEFINE_SHUFFLE_BYTES(a, b, c, d) \
332 void shuffle_bytes_ ## a ## b ## c ## d(const uint8_t *src, \
333 uint8_t *dst, int src_size) \
337 for (i = 0; i < src_size; i += 4) { \
338 dst[i + 0] = src[i + a]; \
339 dst[i + 1] = src[i + b]; \
340 dst[i + 2] = src[i + c]; \
341 dst[i + 3] = src[i + d]; \