comparison postproc/rgb2rgb_template.c @ 5961:f4f3cfcd0d64

10l - MMX rgb2bgr 32bpp expects num_of_bytes instead of num_of_pixels
author arpi
date Fri, 03 May 2002 23:16:07 +0000
parents f0fa3373f616
children f38c7228a094
comparison
equal deleted inserted replaced
5960:0121a13ac60c 5961:f4f3cfcd0d64
531 #endif 531 #endif
532 } 532 }
533 533
534 static inline void RENAME(rgb32tobgr32)(const uint8_t *src, uint8_t *dst, unsigned int src_size) 534 static inline void RENAME(rgb32tobgr32)(const uint8_t *src, uint8_t *dst, unsigned int src_size)
535 { 535 {
536 int num_pixels= src_size >> 2;
537 #ifdef HAVE_MMX 536 #ifdef HAVE_MMX
538 asm volatile ( 537 asm volatile (
539 "xorl %%eax, %%eax \n\t" 538 "xorl %%eax, %%eax \n\t"
540 ".balign 16 \n\t" 539 ".balign 16 \n\t"
541 "1: \n\t" 540 "1: \n\t"
552 "por %%mm1, %%mm2 \n\t" 551 "por %%mm1, %%mm2 \n\t"
553 MOVNTQ" %%mm2, (%1, %%eax) \n\t" 552 MOVNTQ" %%mm2, (%1, %%eax) \n\t"
554 "addl $2, %%eax \n\t" 553 "addl $2, %%eax \n\t"
555 "cmpl %2, %%eax \n\t" 554 "cmpl %2, %%eax \n\t"
556 " jb 1b \n\t" 555 " jb 1b \n\t"
557 :: "r" (src), "r"(dst), "r" (num_pixels) 556 :: "r" (src), "r"(dst), "r" (src_size)
558 : "%eax" 557 : "%eax"
559 ); 558 );
560 559
561 __asm __volatile(SFENCE:::"memory"); 560 __asm __volatile(SFENCE:::"memory");
562 __asm __volatile(EMMS:::"memory"); 561 __asm __volatile(EMMS:::"memory");
563 #else 562 #else
564 int i; 563 int i;
564 int num_pixels= src_size >> 2;
565 for(i=0; i<num_pixels; i++) 565 for(i=0; i<num_pixels; i++)
566 { 566 {
567 dst[4*i + 0] = src[4*i + 2]; 567 dst[4*i + 0] = src[4*i + 2];
568 dst[4*i + 1] = src[4*i + 1]; 568 dst[4*i + 1] = src[4*i + 1];
569 dst[4*i + 2] = src[4*i + 0]; 569 dst[4*i + 2] = src[4*i + 0];