comparison postproc/rgb2rgb.c @ 16739:e91f944f6ed9

Change unsigned->signed and int->long, this fits the asm code better on 64 bit systems. Also fixes several crashes because (long)-i is incorrect if i is unsigned.
author reimar
date Wed, 12 Oct 2005 12:11:27 +0000
parents fed5d4ab5e5f
children 08cac43f1e38
comparison
equal deleted inserted replaced
16738:482b7842476e 16739:e91f944f6ed9
16 #include "../bswap.h" 16 #include "../bswap.h"
17 #include "../libvo/fastmemcpy.h" 17 #include "../libvo/fastmemcpy.h"
18 18
19 #define FAST_BGR2YV12 // use 7 bit coeffs instead of 15bit 19 #define FAST_BGR2YV12 // use 7 bit coeffs instead of 15bit
20 20
21 void (*rgb24to32)(const uint8_t *src,uint8_t *dst,unsigned src_size); 21 void (*rgb24to32)(const uint8_t *src,uint8_t *dst,long src_size);
22 void (*rgb24to16)(const uint8_t *src,uint8_t *dst,unsigned src_size); 22 void (*rgb24to16)(const uint8_t *src,uint8_t *dst,long src_size);
23 void (*rgb24to15)(const uint8_t *src,uint8_t *dst,unsigned src_size); 23 void (*rgb24to15)(const uint8_t *src,uint8_t *dst,long src_size);
24 void (*rgb32to24)(const uint8_t *src,uint8_t *dst,unsigned src_size); 24 void (*rgb32to24)(const uint8_t *src,uint8_t *dst,long src_size);
25 void (*rgb32to16)(const uint8_t *src,uint8_t *dst,unsigned src_size); 25 void (*rgb32to16)(const uint8_t *src,uint8_t *dst,long src_size);
26 void (*rgb32to15)(const uint8_t *src,uint8_t *dst,unsigned src_size); 26 void (*rgb32to15)(const uint8_t *src,uint8_t *dst,long src_size);
27 void (*rgb15to16)(const uint8_t *src,uint8_t *dst,unsigned src_size); 27 void (*rgb15to16)(const uint8_t *src,uint8_t *dst,long src_size);
28 void (*rgb15to24)(const uint8_t *src,uint8_t *dst,unsigned src_size); 28 void (*rgb15to24)(const uint8_t *src,uint8_t *dst,long src_size);
29 void (*rgb15to32)(const uint8_t *src,uint8_t *dst,unsigned src_size); 29 void (*rgb15to32)(const uint8_t *src,uint8_t *dst,long src_size);
30 void (*rgb16to15)(const uint8_t *src,uint8_t *dst,unsigned src_size); 30 void (*rgb16to15)(const uint8_t *src,uint8_t *dst,long src_size);
31 void (*rgb16to24)(const uint8_t *src,uint8_t *dst,unsigned src_size); 31 void (*rgb16to24)(const uint8_t *src,uint8_t *dst,long src_size);
32 void (*rgb16to32)(const uint8_t *src,uint8_t *dst,unsigned src_size); 32 void (*rgb16to32)(const uint8_t *src,uint8_t *dst,long src_size);
33 //void (*rgb24tobgr32)(const uint8_t *src, uint8_t *dst, unsigned src_size); 33 //void (*rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long src_size);
34 void (*rgb24tobgr24)(const uint8_t *src, uint8_t *dst, unsigned src_size); 34 void (*rgb24tobgr24)(const uint8_t *src, uint8_t *dst, long src_size);
35 void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, unsigned src_size); 35 void (*rgb24tobgr16)(const uint8_t *src, uint8_t *dst, long src_size);
36 void (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, unsigned src_size); 36 void (*rgb24tobgr15)(const uint8_t *src, uint8_t *dst, long src_size);
37 void (*rgb32tobgr32)(const uint8_t *src, uint8_t *dst, unsigned src_size); 37 void (*rgb32tobgr32)(const uint8_t *src, uint8_t *dst, long src_size);
38 //void (*rgb32tobgr24)(const uint8_t *src, uint8_t *dst, unsigned src_size); 38 //void (*rgb32tobgr24)(const uint8_t *src, uint8_t *dst, long src_size);
39 void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, unsigned src_size); 39 void (*rgb32tobgr16)(const uint8_t *src, uint8_t *dst, long src_size);
40 void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, unsigned src_size); 40 void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, long src_size);
41 41
42 void (*yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, 42 void (*yv12toyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
43 unsigned int width, unsigned int height, 43 long width, long height,
44 int lumStride, int chromStride, int dstStride); 44 long lumStride, long chromStride, long dstStride);
45 void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, 45 void (*yv12touyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
46 unsigned int width, unsigned int height, 46 long width, long height,
47 int lumStride, int chromStride, int dstStride); 47 long lumStride, long chromStride, long dstStride);
48 void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst, 48 void (*yuv422ptoyuy2)(const uint8_t *ysrc, const uint8_t *usrc, const uint8_t *vsrc, uint8_t *dst,
49 unsigned int width, unsigned int height, 49 long width, long height,
50 int lumStride, int chromStride, int dstStride); 50 long lumStride, long chromStride, long dstStride);
51 void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, 51 void (*yuy2toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
52 unsigned int width, unsigned int height, 52 long width, long height,
53 int lumStride, int chromStride, int srcStride); 53 long lumStride, long chromStride, long srcStride);
54 void (*rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, 54 void (*rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
55 unsigned int width, unsigned int height, 55 long width, long height,
56 int lumStride, int chromStride, int srcStride); 56 long lumStride, long chromStride, long srcStride);
57 void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, int srcStride, int dstStride); 57 void (*planar2x)(const uint8_t *src, uint8_t *dst, long width, long height,
58 long srcStride, long dstStride);
58 void (*interleaveBytes)(uint8_t *src1, uint8_t *src2, uint8_t *dst, 59 void (*interleaveBytes)(uint8_t *src1, uint8_t *src2, uint8_t *dst,
59 unsigned width, unsigned height, int src1Stride, 60 long width, long height, long src1Stride,
60 int src2Stride, int dstStride); 61 long src2Stride, long dstStride);
61 void (*vu9_to_vu12)(const uint8_t *src1, const uint8_t *src2, 62 void (*vu9_to_vu12)(const uint8_t *src1, const uint8_t *src2,
62 uint8_t *dst1, uint8_t *dst2, 63 uint8_t *dst1, uint8_t *dst2,
63 unsigned width, unsigned height, 64 long width, long height,
64 int srcStride1, int srcStride2, 65 long srcStride1, long srcStride2,
65 int dstStride1, int dstStride2); 66 long dstStride1, long dstStride2);
66 void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint8_t *src3, 67 void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint8_t *src3,
67 uint8_t *dst, 68 uint8_t *dst,
68 unsigned width, unsigned height, 69 long width, long height,
69 int srcStride1, int srcStride2, 70 long srcStride1, long srcStride2,
70 int srcStride3, int dstStride); 71 long srcStride3, long dstStride);
71 72
72 #if defined(ARCH_X86) || defined(ARCH_X86_64) 73 #if defined(ARCH_X86) || defined(ARCH_X86_64)
73 static const uint64_t mmx_null __attribute__((aligned(8))) = 0x0000000000000000ULL; 74 static const uint64_t mmx_null __attribute__((aligned(8))) = 0x0000000000000000ULL;
74 static const uint64_t mmx_one __attribute__((aligned(8))) = 0xFFFFFFFFFFFFFFFFULL; 75 static const uint64_t mmx_one __attribute__((aligned(8))) = 0xFFFFFFFFFFFFFFFFULL;
75 static const uint64_t mask32b attribute_used __attribute__((aligned(8))) = 0x000000FF000000FFULL; 76 static const uint64_t mask32b attribute_used __attribute__((aligned(8))) = 0x000000FF000000FFULL;
319 } 320 }
320 321
321 /** 322 /**
322 * Pallete is assumed to contain bgr32 323 * Pallete is assumed to contain bgr32
323 */ 324 */
324 void palette8torgb32(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) 325 void palette8torgb32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
325 { 326 {
326 unsigned i; 327 long i;
327 328
328 /* 329 /*
329 for(i=0; i<num_pixels; i++) 330 for(i=0; i<num_pixels; i++)
330 ((unsigned *)dst)[i] = ((unsigned *)palette)[ src[i] ]; 331 ((unsigned *)dst)[i] = ((unsigned *)palette)[ src[i] ];
331 */ 332 */
345 #endif 346 #endif
346 dst+= 4; 347 dst+= 4;
347 } 348 }
348 } 349 }
349 350
350 void palette8tobgr32(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) 351 void palette8tobgr32(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
351 { 352 {
352 unsigned i; 353 long i;
353 for(i=0; i<num_pixels; i++) 354 for(i=0; i<num_pixels; i++)
354 { 355 {
355 #ifdef WORDS_BIGENDIAN 356 #ifdef WORDS_BIGENDIAN
356 dst[3]= palette[ src[i]*4+0 ]; 357 dst[3]= palette[ src[i]*4+0 ];
357 dst[2]= palette[ src[i]*4+1 ]; 358 dst[2]= palette[ src[i]*4+1 ];
369 } 370 }
370 371
371 /** 372 /**
372 * Pallete is assumed to contain bgr32 373 * Pallete is assumed to contain bgr32
373 */ 374 */
374 void palette8torgb24(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) 375 void palette8torgb24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
375 { 376 {
376 unsigned i; 377 long i;
377 /* 378 /*
378 writes 1 byte o much and might cause alignment issues on some architectures? 379 writes 1 byte o much and might cause alignment issues on some architectures?
379 for(i=0; i<num_pixels; i++) 380 for(i=0; i<num_pixels; i++)
380 ((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[ src[i] ]; 381 ((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[ src[i] ];
381 */ 382 */
387 dst[2]= palette[ src[i]*4+0 ]; 388 dst[2]= palette[ src[i]*4+0 ];
388 dst+= 3; 389 dst+= 3;
389 } 390 }
390 } 391 }
391 392
392 void palette8tobgr24(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) 393 void palette8tobgr24(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
393 { 394 {
394 unsigned i; 395 long i;
395 /* 396 /*
396 writes 1 byte o much and might cause alignment issues on some architectures? 397 writes 1 byte o much and might cause alignment issues on some architectures?
397 for(i=0; i<num_pixels; i++) 398 for(i=0; i<num_pixels; i++)
398 ((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[ src[i] ]; 399 ((unsigned *)(&dst[i*3])) = ((unsigned *)palette)[ src[i] ];
399 */ 400 */
408 } 409 }
409 410
410 /** 411 /**
411 * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette 412 * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette
412 */ 413 */
413 void palette8torgb16(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) 414 void palette8torgb16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
414 { 415 {
415 unsigned i; 416 long i;
416 for(i=0; i<num_pixels; i++) 417 for(i=0; i<num_pixels; i++)
417 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; 418 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
418 } 419 }
419 void palette8tobgr16(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) 420 void palette8tobgr16(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
420 { 421 {
421 unsigned i; 422 long i;
422 for(i=0; i<num_pixels; i++) 423 for(i=0; i<num_pixels; i++)
423 ((uint16_t *)dst)[i] = bswap_16(((uint16_t *)palette)[ src[i] ]); 424 ((uint16_t *)dst)[i] = bswap_16(((uint16_t *)palette)[ src[i] ]);
424 } 425 }
425 426
426 /** 427 /**
427 * Pallete is assumed to contain bgr15, see rgb32to15 to convert the palette 428 * Pallete is assumed to contain bgr15, see rgb32to15 to convert the palette
428 */ 429 */
429 void palette8torgb15(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) 430 void palette8torgb15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
430 { 431 {
431 unsigned i; 432 long i;
432 for(i=0; i<num_pixels; i++) 433 for(i=0; i<num_pixels; i++)
433 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; 434 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
434 } 435 }
435 void palette8tobgr15(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) 436 void palette8tobgr15(const uint8_t *src, uint8_t *dst, long num_pixels, const uint8_t *palette)
436 { 437 {
437 unsigned i; 438 long i;
438 for(i=0; i<num_pixels; i++) 439 for(i=0; i<num_pixels; i++)
439 ((uint16_t *)dst)[i] = bswap_16(((uint16_t *)palette)[ src[i] ]); 440 ((uint16_t *)dst)[i] = bswap_16(((uint16_t *)palette)[ src[i] ]);
440 } 441 }
441 442
442 void rgb32tobgr24(const uint8_t *src, uint8_t *dst, unsigned int src_size) 443 void rgb32tobgr24(const uint8_t *src, uint8_t *dst, long src_size)
443 { 444 {
444 unsigned i; 445 long i;
445 unsigned num_pixels = src_size >> 2; 446 long num_pixels = src_size >> 2;
446 for(i=0; i<num_pixels; i++) 447 for(i=0; i<num_pixels; i++)
447 { 448 {
448 dst[3*i + 0] = src[4*i + 2]; 449 dst[3*i + 0] = src[4*i + 2];
449 dst[3*i + 1] = src[4*i + 1]; 450 dst[3*i + 1] = src[4*i + 1];
450 dst[3*i + 2] = src[4*i + 0]; 451 dst[3*i + 2] = src[4*i + 0];
451 } 452 }
452 } 453 }
453 454
454 void rgb24tobgr32(const uint8_t *src, uint8_t *dst, unsigned int src_size) 455 void rgb24tobgr32(const uint8_t *src, uint8_t *dst, long src_size)
455 { 456 {
456 unsigned i; 457 long i;
457 for(i=0; 3*i<src_size; i++) 458 for(i=0; 3*i<src_size; i++)
458 { 459 {
459 dst[4*i + 0] = src[3*i + 2]; 460 dst[4*i + 0] = src[3*i + 2];
460 dst[4*i + 1] = src[3*i + 1]; 461 dst[4*i + 1] = src[3*i + 1];
461 dst[4*i + 2] = src[3*i + 0]; 462 dst[4*i + 2] = src[3*i + 0];
462 dst[4*i + 3] = 0; 463 dst[4*i + 3] = 0;
463 } 464 }
464 } 465 }
465 466
466 void rgb16tobgr32(const uint8_t *src, uint8_t *dst, unsigned int src_size) 467 void rgb16tobgr32(const uint8_t *src, uint8_t *dst, long src_size)
467 { 468 {
468 const uint16_t *end; 469 const uint16_t *end;
469 uint8_t *d = (uint8_t *)dst; 470 uint8_t *d = (uint8_t *)dst;
470 const uint16_t *s = (uint16_t *)src; 471 const uint16_t *s = (uint16_t *)src;
471 end = s + src_size/2; 472 end = s + src_size/2;
478 *d++ = (bgr&0x1F)<<3; 479 *d++ = (bgr&0x1F)<<3;
479 *d++ = 0; 480 *d++ = 0;
480 } 481 }
481 } 482 }
482 483
483 void rgb16tobgr24(const uint8_t *src, uint8_t *dst, unsigned int src_size) 484 void rgb16tobgr24(const uint8_t *src, uint8_t *dst, long src_size)
484 { 485 {
485 const uint16_t *end; 486 const uint16_t *end;
486 uint8_t *d = (uint8_t *)dst; 487 uint8_t *d = (uint8_t *)dst;
487 const uint16_t *s = (const uint16_t *)src; 488 const uint16_t *s = (const uint16_t *)src;
488 end = s + src_size/2; 489 end = s + src_size/2;
494 *d++ = (bgr&0x7E0)>>3; 495 *d++ = (bgr&0x7E0)>>3;
495 *d++ = (bgr&0x1F)<<3; 496 *d++ = (bgr&0x1F)<<3;
496 } 497 }
497 } 498 }
498 499
499 void rgb16tobgr16(const uint8_t *src, uint8_t *dst, unsigned int src_size) 500 void rgb16tobgr16(const uint8_t *src, uint8_t *dst, long src_size)
500 { 501 {
501 unsigned i; 502 long i;
502 unsigned num_pixels = src_size >> 1; 503 long num_pixels = src_size >> 1;
503 504
504 for(i=0; i<num_pixels; i++) 505 for(i=0; i<num_pixels; i++)
505 { 506 {
506 unsigned b,g,r; 507 unsigned b,g,r;
507 register uint16_t rgb; 508 register uint16_t rgb;
511 b = (rgb&0xF800)>>11; 512 b = (rgb&0xF800)>>11;
512 dst[2*i] = (b&0x1F) | ((g&0x3F)<<5) | ((r&0x1F)<<11); 513 dst[2*i] = (b&0x1F) | ((g&0x3F)<<5) | ((r&0x1F)<<11);
513 } 514 }
514 } 515 }
515 516
516 void rgb16tobgr15(const uint8_t *src, uint8_t *dst, unsigned int src_size) 517 void rgb16tobgr15(const uint8_t *src, uint8_t *dst, long src_size)
517 { 518 {
518 unsigned i; 519 long i;
519 unsigned num_pixels = src_size >> 1; 520 long num_pixels = src_size >> 1;
520 521
521 for(i=0; i<num_pixels; i++) 522 for(i=0; i<num_pixels; i++)
522 { 523 {
523 unsigned b,g,r; 524 unsigned b,g,r;
524 register uint16_t rgb; 525 register uint16_t rgb;
528 b = (rgb&0xF800)>>11; 529 b = (rgb&0xF800)>>11;
529 dst[2*i] = (b&0x1F) | ((g&0x1F)<<5) | ((r&0x1F)<<10); 530 dst[2*i] = (b&0x1F) | ((g&0x1F)<<5) | ((r&0x1F)<<10);
530 } 531 }
531 } 532 }
532 533
533 void rgb15tobgr32(const uint8_t *src, uint8_t *dst, unsigned int src_size) 534 void rgb15tobgr32(const uint8_t *src, uint8_t *dst, long src_size)
534 { 535 {
535 const uint16_t *end; 536 const uint16_t *end;
536 uint8_t *d = (uint8_t *)dst; 537 uint8_t *d = (uint8_t *)dst;
537 const uint16_t *s = (const uint16_t *)src; 538 const uint16_t *s = (const uint16_t *)src;
538 end = s + src_size/2; 539 end = s + src_size/2;
545 *d++ = (bgr&0x1F)<<3; 546 *d++ = (bgr&0x1F)<<3;
546 *d++ = 0; 547 *d++ = 0;
547 } 548 }
548 } 549 }
549 550
550 void rgb15tobgr24(const uint8_t *src, uint8_t *dst, unsigned int src_size) 551 void rgb15tobgr24(const uint8_t *src, uint8_t *dst, long src_size)
551 { 552 {
552 const uint16_t *end; 553 const uint16_t *end;
553 uint8_t *d = (uint8_t *)dst; 554 uint8_t *d = (uint8_t *)dst;
554 const uint16_t *s = (uint16_t *)src; 555 const uint16_t *s = (uint16_t *)src;
555 end = s + src_size/2; 556 end = s + src_size/2;
561 *d++ = (bgr&0x3E0)>>2; 562 *d++ = (bgr&0x3E0)>>2;
562 *d++ = (bgr&0x1F)<<3; 563 *d++ = (bgr&0x1F)<<3;
563 } 564 }
564 } 565 }
565 566
566 void rgb15tobgr16(const uint8_t *src, uint8_t *dst, unsigned int src_size) 567 void rgb15tobgr16(const uint8_t *src, uint8_t *dst, long src_size)
567 { 568 {
568 unsigned i; 569 long i;
569 unsigned num_pixels = src_size >> 1; 570 long num_pixels = src_size >> 1;
570 571
571 for(i=0; i<num_pixels; i++) 572 for(i=0; i<num_pixels; i++)
572 { 573 {
573 unsigned b,g,r; 574 unsigned b,g,r;
574 register uint16_t rgb; 575 register uint16_t rgb;
578 b = (rgb&0x7C00)>>10; 579 b = (rgb&0x7C00)>>10;
579 dst[2*i] = (b&0x1F) | ((g&0x3F)<<5) | ((r&0x1F)<<11); 580 dst[2*i] = (b&0x1F) | ((g&0x3F)<<5) | ((r&0x1F)<<11);
580 } 581 }
581 } 582 }
582 583
583 void rgb15tobgr15(const uint8_t *src, uint8_t *dst, unsigned int src_size) 584 void rgb15tobgr15(const uint8_t *src, uint8_t *dst, long src_size)
584 { 585 {
585 unsigned i; 586 long i;
586 unsigned num_pixels = src_size >> 1; 587 long num_pixels = src_size >> 1;
587 588
588 for(i=0; i<num_pixels; i++) 589 for(i=0; i<num_pixels; i++)
589 { 590 {
590 unsigned b,g,r; 591 unsigned b,g,r;
591 register uint16_t rgb; 592 register uint16_t rgb;
595 b = (rgb&0x7C00)>>10; 596 b = (rgb&0x7C00)>>10;
596 dst[2*i] = (b&0x1F) | ((g&0x1F)<<5) | ((r&0x1F)<<10); 597 dst[2*i] = (b&0x1F) | ((g&0x1F)<<5) | ((r&0x1F)<<10);
597 } 598 }
598 } 599 }
599 600
600 void rgb8tobgr8(const uint8_t *src, uint8_t *dst, unsigned int src_size) 601 void rgb8tobgr8(const uint8_t *src, uint8_t *dst, long src_size)
601 { 602 {
602 unsigned i; 603 long i;
603 unsigned num_pixels = src_size; 604 long num_pixels = src_size;
604 for(i=0; i<num_pixels; i++) 605 for(i=0; i<num_pixels; i++)
605 { 606 {
606 unsigned b,g,r; 607 unsigned b,g,r;
607 register uint8_t rgb; 608 register uint8_t rgb;
608 rgb = src[i]; 609 rgb = src[i];