comparison postproc/swscale.c @ 2521:b70a77066611

tell the c compiler that the memory changed
author michael
date Sun, 28 Oct 2001 19:54:23 +0000
parents b58c43aab619
children cc9d3fd626f0
comparison
equal deleted inserted replaced
2520:b58c43aab619 2521:b70a77066611
446 { 446 {
447 int yalpha1=yalpha^4095; 447 int yalpha1=yalpha^4095;
448 int uvalpha1=uvalpha^4095; 448 int uvalpha1=uvalpha^4095;
449 int i; 449 int i;
450 450
451 asm volatile ("\n\t"::: "memory");
452
451 for(i=0;i<dstw;i++) 453 for(i=0;i<dstw;i++)
452 { 454 {
453 ((uint8_t*)dest)[0] = (buf0[i]*yalpha1+buf1[i]*yalpha)>>19; 455 ((uint8_t*)dest)[0] = (buf0[i]*yalpha1+buf1[i]*yalpha)>>19;
454 dest++; 456 dest++;
455 } 457 }
623 "m" (yalpha1), "m" (uvalpha1) 625 "m" (yalpha1), "m" (uvalpha1)
624 : "%eax" 626 : "%eax"
625 ); 627 );
626 } 628 }
627 #else 629 #else
630 asm volatile ("\n\t"::: "memory");
631
628 if(dstbpp==32 || dstbpp==24) 632 if(dstbpp==32 || dstbpp==24)
629 { 633 {
630 for(i=0;i<dstw;i++){ 634 for(i=0;i<dstw;i++){
631 // vertical linear interpolation && yuv2rgb in a single step: 635 // vertical linear interpolation && yuv2rgb in a single step:
632 int Y=yuvtab_2568[((buf0[i]*yalpha1+buf1[i]*yalpha)>>19)]; 636 int Y=yuvtab_2568[((buf0[i]*yalpha1+buf1[i]*yalpha)>>19)];
731 : "%eax" 735 : "%eax"
732 ); 736 );
733 } 737 }
734 #else 738 #else
735 //FIXME unroll C loop and dont recalculate UV 739 //FIXME unroll C loop and dont recalculate UV
740 asm volatile ("\n\t"::: "memory");
741
736 if(dstbpp==32 || dstbpp==24) 742 if(dstbpp==32 || dstbpp==24)
737 { 743 {
738 for(i=0;i<dstw;i++){ 744 for(i=0;i<dstw;i++){
739 // vertical linear interpolation && yuv2rgb in a single step: 745 // vertical linear interpolation && yuv2rgb in a single step:
740 int Y=yuvtab_2568[((buf0[i]*yalpha1+buf1[i]*yalpha)>>19)]; 746 int Y=yuvtab_2568[((buf0[i]*yalpha1+buf1[i]*yalpha)>>19)];
848 : "%eax" 854 : "%eax"
849 ); 855 );
850 } 856 }
851 #else 857 #else
852 //FIXME unroll C loop and dont recalculate UV 858 //FIXME unroll C loop and dont recalculate UV
859 asm volatile ("\n\t"::: "memory");
860
853 if(dstbpp==32 || dstbpp==24) 861 if(dstbpp==32 || dstbpp==24)
854 { 862 {
855 for(i=0;i<dstw;i++){ 863 for(i=0;i<dstw;i++){
856 // vertical linear interpolation && yuv2rgb in a single step: 864 // vertical linear interpolation && yuv2rgb in a single step:
857 int Y=yuvtab_2568[buf0[i]>>7]; 865 int Y=yuvtab_2568[buf0[i]>>7];