OLD | NEW |
1 /* | 1 /* |
2 * software RGB to RGB converter | 2 * software RGB to RGB converter |
3 * pluralize by software PAL8 to RGB converter | 3 * pluralize by software PAL8 to RGB converter |
4 * software YUV to YUV converter | 4 * software YUV to YUV converter |
5 * software YUV to RGB converter | 5 * software YUV to RGB converter |
6 * Written by Nick Kurshev. | 6 * Written by Nick Kurshev. |
7 * palette & YUV & runtime CPU stuff by Michael (michaelni@gmx.at) | 7 * palette & YUV & runtime CPU stuff by Michael (michaelni@gmx.at) |
8 * | 8 * |
9 * This file is part of FFmpeg. | 9 * This file is part of FFmpeg. |
10 * | 10 * |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 for (i=0; i<num_pixels; i++) { | 435 for (i=0; i<num_pixels; i++) { |
436 unsigned b,g,r; | 436 unsigned b,g,r; |
437 register uint8_t rgb; | 437 register uint8_t rgb; |
438 rgb = src[i]; | 438 rgb = src[i]; |
439 r = (rgb&0x07); | 439 r = (rgb&0x07); |
440 g = (rgb&0x38)>>3; | 440 g = (rgb&0x38)>>3; |
441 b = (rgb&0xC0)>>6; | 441 b = (rgb&0xC0)>>6; |
442 dst[i] = ((b<<1)&0x07) | ((g&0x07)<<3) | ((r&0x03)<<6); | 442 dst[i] = ((b<<1)&0x07) | ((g&0x07)<<3) | ((r&0x03)<<6); |
443 } | 443 } |
444 } | 444 } |
| 445 |
| 446 #define DEFINE_SHUFFLE_BYTES(a, b, c, d) \ |
| 447 void shuffle_bytes_##a##b##c##d(const uint8_t *src, uint8_t *dst, long src_size)
\ |
| 448 { \ |
| 449 long i; \ |
| 450 \ |
| 451 for (i = 0; i < src_size; i+=4) { \ |
| 452 dst[i + 0] = src[i + a]; \ |
| 453 dst[i + 1] = src[i + b]; \ |
| 454 dst[i + 2] = src[i + c]; \ |
| 455 dst[i + 3] = src[i + d]; \ |
| 456 } \ |
| 457 } |
| 458 |
| 459 DEFINE_SHUFFLE_BYTES(0, 3, 2, 1); |
| 460 DEFINE_SHUFFLE_BYTES(1, 2, 3, 0); |
| 461 DEFINE_SHUFFLE_BYTES(2, 1, 0, 3); |
| 462 DEFINE_SHUFFLE_BYTES(3, 0, 1, 2); |
| 463 DEFINE_SHUFFLE_BYTES(3, 2, 1, 0); |
| 464 |
OLD | NEW |