Mercurial > mplayer.hg
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]; |