comparison postproc/postprocess_template.c @ 2180:c76bfc70a28c

minor QP scaling & auto-contrast bugfix fixed compilation problem without -fomit-frame-pointer
author michael
date Sat, 13 Oct 2001 09:30:07 +0000
parents 2d8d14b882cc
children d90f8fc7ead6
comparison
equal deleted inserted replaced
2179:2d8d14b882cc 2180:c76bfc70a28c
848 // "movq b80, %%mm6 \n\t" // MIN_SIGNED_BYTE 848 // "movq b80, %%mm6 \n\t" // MIN_SIGNED_BYTE
849 "leal (%0, %1), %%eax \n\t" 849 "leal (%0, %1), %%eax \n\t"
850 "leal (%%eax, %1, 4), %%ebx \n\t" 850 "leal (%%eax, %1, 4), %%ebx \n\t"
851 851
852 "movq b80, %%mm6 \n\t" 852 "movq b80, %%mm6 \n\t"
853 "movd %2, %%mm5 \n\t" // QP 853 "movd pQPb, %%mm5 \n\t" // QP
854 "movq %%mm5, %%mm4 \n\t" 854 "movq %%mm5, %%mm4 \n\t"
855 "paddusb %%mm5, %%mm5 \n\t" // 2QP 855 "paddusb %%mm5, %%mm5 \n\t" // 2QP
856 "paddusb %%mm5, %%mm4 \n\t" // 3QP 856 "paddusb %%mm5, %%mm4 \n\t" // 3QP
857 "pxor %%mm5, %%mm5 \n\t" // 0 857 "pxor %%mm5, %%mm5 \n\t" // 0
858 "psubb %%mm4, %%mm5 \n\t" // -3QP 858 "psubb %%mm4, %%mm5 \n\t" // -3QP
931 "movq %%mm4, %%mm2 \n\t"\ 931 "movq %%mm4, %%mm2 \n\t"\
932 "psrlq $24, %%mm1 \n\t"\ 932 "psrlq $24, %%mm1 \n\t"\
933 "psubusb %%mm3, %%mm2 \n\t"\ 933 "psubusb %%mm3, %%mm2 \n\t"\
934 "movd %%mm1, %%ecx \n\t"\ 934 "movd %%mm1, %%ecx \n\t"\
935 "psubusb %%mm4, %%mm3 \n\t"\ 935 "psubusb %%mm4, %%mm3 \n\t"\
936 "paddsb (%3, %%ecx, 8), %%mm0 \n\t"\ 936 "paddsb (%2, %%ecx, 8), %%mm0 \n\t"\
937 "por %%mm2, %%mm3 \n\t" /* p´x = |px - p(x+1)| */\ 937 "por %%mm2, %%mm3 \n\t" /* p´x = |px - p(x+1)| */\
938 "paddb %%mm6, %%mm0 \n\t"\ 938 "paddb %%mm6, %%mm0 \n\t"\
939 "pcmpeqb %%mm7, %%mm2 \n\t" /* p´x = sgn[px - p(x+1)] */\ 939 "pcmpeqb %%mm7, %%mm2 \n\t" /* p´x = sgn[px - p(x+1)] */\
940 "movq %%mm3, %%mm1 \n\t"\ 940 "movq %%mm3, %%mm1 \n\t"\
941 "psllq $32, %%mm1 \n\t" /* p´5 = |p1 - p2| */\ 941 "psllq $32, %%mm1 \n\t" /* p´5 = |p1 - p2| */\
952 "psrlq $24, %%mm3 \n\t"\ 952 "psrlq $24, %%mm3 \n\t"\
953 "movd " #c ", %%mm0 \n\t"\ 953 "movd " #c ", %%mm0 \n\t"\
954 "movd 4" #c ", %%mm1 \n\t"\ 954 "movd 4" #c ", %%mm1 \n\t"\
955 "punpckldq %%mm1, %%mm0 \n\t"\ 955 "punpckldq %%mm1, %%mm0 \n\t"\
956 "paddb %%mm6, %%mm0 \n\t"\ 956 "paddb %%mm6, %%mm0 \n\t"\
957 "paddsb (%3, %%ecx, 8), %%mm0 \n\t"\ 957 "paddsb (%2, %%ecx, 8), %%mm0 \n\t"\
958 "paddb %%mm6, %%mm0 \n\t"\ 958 "paddb %%mm6, %%mm0 \n\t"\
959 "movq %%mm0, " #c " \n\t"\ 959 "movq %%mm0, " #c " \n\t"\
960 "movd %%mm3, %%ecx \n\t"\ 960 "movd %%mm3, %%ecx \n\t"\
961 "movd " #d ", %%mm0 \n\t"\ 961 "movd " #d ", %%mm0 \n\t"\
962 "paddsb (%3, %%ecx, 8), %%mm4 \n\t"\ 962 "paddsb (%2, %%ecx, 8), %%mm4 \n\t"\
963 "movd 4" #d ", %%mm1 \n\t"\ 963 "movd 4" #d ", %%mm1 \n\t"\
964 "paddb %%mm6, %%mm4 \n\t"\ 964 "paddb %%mm6, %%mm4 \n\t"\
965 "punpckldq %%mm1, %%mm0 \n\t"\ 965 "punpckldq %%mm1, %%mm0 \n\t"\
966 "movq %%mm4, " #b " \n\t"\ 966 "movq %%mm4, " #b " \n\t"\
967 "paddb %%mm6, %%mm0 \n\t"\ 967 "paddb %%mm6, %%mm0 \n\t"\
968 "paddsb (%3, %%ecx, 8), %%mm0 \n\t"\ 968 "paddsb (%2, %%ecx, 8), %%mm0 \n\t"\
969 "paddb %%mm6, %%mm0 \n\t"\ 969 "paddb %%mm6, %%mm0 \n\t"\
970 "movq %%mm0, " #d " \n\t"\ 970 "movq %%mm0, " #d " \n\t"\
971 971
972 HX1b((%0),(%%eax),(%%eax, %1),(%%eax, %1, 2)) 972 HX1b((%0),(%%eax),(%%eax, %1),(%%eax, %1, 2))
973 HX1b((%0, %1, 4),(%%ebx),(%%ebx, %1),(%%ebx, %1, 2)) 973 HX1b((%0, %1, 4),(%%ebx),(%%ebx, %1),(%%ebx, %1, 2))
974 974
975 975
976 : 976 :
977 : "r" (src), "r" (stride), "r" (QP), "r" (lut) 977 : "r" (src), "r" (stride), "r" (lut)
978 : "%eax", "%ebx", "%ecx" 978 : "%eax", "%ebx", "%ecx"
979 ); 979 );
980 #else 980 #else
981 981
982 //FIXME (has little in common with the mmx2 version) 982 //FIXME (has little in common with the mmx2 version)
2099 for(x=0; x<width; x+=BLOCK_SIZE) 2099 for(x=0; x<width; x+=BLOCK_SIZE)
2100 { 2100 {
2101 const int stride= dstStride; 2101 const int stride= dstStride;
2102 int QP= isColor ? 2102 int QP= isColor ?
2103 QPs[(y>>3)*QPStride + (x>>3)]: 2103 QPs[(y>>3)*QPStride + (x>>3)]:
2104 (QPs[(y>>4)*QPStride + (x>>4)] * (packedYScale &0xFFFF))>>8; 2104 QPs[(y>>4)*QPStride + (x>>4)];
2105 if(!isColor && (mode & LEVEL_FIX)) QP= (QP* (packedYScale &0xFFFF))>>8;
2105 #ifdef HAVE_MMX 2106 #ifdef HAVE_MMX
2106 asm volatile( 2107 asm volatile(
2107 "movd %0, %%mm7 \n\t" 2108 "movd %0, %%mm7 \n\t"
2108 "packuswb %%mm7, %%mm7 \n\t" // 0, 0, 0, QP, 0, 0, 0, QP 2109 "packuswb %%mm7, %%mm7 \n\t" // 0, 0, 0, QP, 0, 0, 0, QP
2109 "packuswb %%mm7, %%mm7 \n\t" // 0,QP, 0, QP, 0,QP, 0, QP 2110 "packuswb %%mm7, %%mm7 \n\t" // 0,QP, 0, QP, 0,QP, 0, QP