comparison dsputil.c @ 4001:34fdffe98bd0 libavcodec

Rename ABS macro to FFABS.
author diego
date Wed, 11 Oct 2006 23:17:58 +0000
parents c8c591fe26f8
children 8535fcac43c1
comparison
equal deleted inserted replaced
4000:eeab02251056 4001:34fdffe98bd0
356 int sy= (ori&2) ? stride>>1 : 0; 356 int sy= (ori&2) ? stride>>1 : 0;
357 357
358 for(i=0; i<size; i++){ 358 for(i=0; i<size; i++){
359 for(j=0; j<size; j++){ 359 for(j=0; j<size; j++){
360 int v= tmp[sx + sy + i*stride + j] * scale[type][dec_count-3][level][ori]; 360 int v= tmp[sx + sy + i*stride + j] * scale[type][dec_count-3][level][ori];
361 s += ABS(v); 361 s += FFABS(v);
362 } 362 }
363 } 363 }
364 } 364 }
365 } 365 }
366 assert(s>=0); 366 assert(s>=0);
2727 if(p2&256) p2= ~(p2>>31); 2727 if(p2&256) p2= ~(p2>>31);
2728 2728
2729 src[x-1*stride] = p1; 2729 src[x-1*stride] = p1;
2730 src[x+0*stride] = p2; 2730 src[x+0*stride] = p2;
2731 2731
2732 ad1= ABS(d1)>>1; 2732 ad1= FFABS(d1)>>1;
2733 2733
2734 d2= clip((p0-p3)/4, -ad1, ad1); 2734 d2= clip((p0-p3)/4, -ad1, ad1);
2735 2735
2736 src[x-2*stride] = p0 - d2; 2736 src[x-2*stride] = p0 - d2;
2737 src[x+ stride] = p3 + d2; 2737 src[x+ stride] = p3 + d2;
2762 if(p2&256) p2= ~(p2>>31); 2762 if(p2&256) p2= ~(p2>>31);
2763 2763
2764 src[y*stride-1] = p1; 2764 src[y*stride-1] = p1;
2765 src[y*stride+0] = p2; 2765 src[y*stride+0] = p2;
2766 2766
2767 ad1= ABS(d1)>>1; 2767 ad1= FFABS(d1)>>1;
2768 2768
2769 d2= clip((p0-p3)/4, -ad1, ad1); 2769 d2= clip((p0-p3)/4, -ad1, ad1);
2770 2770
2771 src[y*stride-2] = p0 - d2; 2771 src[y*stride-2] = p0 - d2;
2772 src[y*stride+1] = p3 + d2; 2772 src[y*stride+1] = p3 + d2;
2814 const int p2 = pix[-3*xstride]; 2814 const int p2 = pix[-3*xstride];
2815 const int q0 = pix[0]; 2815 const int q0 = pix[0];
2816 const int q1 = pix[1*xstride]; 2816 const int q1 = pix[1*xstride];
2817 const int q2 = pix[2*xstride]; 2817 const int q2 = pix[2*xstride];
2818 2818
2819 if( ABS( p0 - q0 ) < alpha && 2819 if( FFABS( p0 - q0 ) < alpha &&
2820 ABS( p1 - p0 ) < beta && 2820 FFABS( p1 - p0 ) < beta &&
2821 ABS( q1 - q0 ) < beta ) { 2821 FFABS( q1 - q0 ) < beta ) {
2822 2822
2823 int tc = tc0[i]; 2823 int tc = tc0[i];
2824 int i_delta; 2824 int i_delta;
2825 2825
2826 if( ABS( p2 - p0 ) < beta ) { 2826 if( FFABS( p2 - p0 ) < beta ) {
2827 pix[-2*xstride] = p1 + clip( (( p2 + ( ( p0 + q0 + 1 ) >> 1 ) ) >> 1) - p1, -tc0[i], tc0[i] ); 2827 pix[-2*xstride] = p1 + clip( (( p2 + ( ( p0 + q0 + 1 ) >> 1 ) ) >> 1) - p1, -tc0[i], tc0[i] );
2828 tc++; 2828 tc++;
2829 } 2829 }
2830 if( ABS( q2 - q0 ) < beta ) { 2830 if( FFABS( q2 - q0 ) < beta ) {
2831 pix[ xstride] = q1 + clip( (( q2 + ( ( p0 + q0 + 1 ) >> 1 ) ) >> 1) - q1, -tc0[i], tc0[i] ); 2831 pix[ xstride] = q1 + clip( (( q2 + ( ( p0 + q0 + 1 ) >> 1 ) ) >> 1) - q1, -tc0[i], tc0[i] );
2832 tc++; 2832 tc++;
2833 } 2833 }
2834 2834
2835 i_delta = clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc ); 2835 i_delta = clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc );
2862 const int p0 = pix[-1*xstride]; 2862 const int p0 = pix[-1*xstride];
2863 const int p1 = pix[-2*xstride]; 2863 const int p1 = pix[-2*xstride];
2864 const int q0 = pix[0]; 2864 const int q0 = pix[0];
2865 const int q1 = pix[1*xstride]; 2865 const int q1 = pix[1*xstride];
2866 2866
2867 if( ABS( p0 - q0 ) < alpha && 2867 if( FFABS( p0 - q0 ) < alpha &&
2868 ABS( p1 - p0 ) < beta && 2868 FFABS( p1 - p0 ) < beta &&
2869 ABS( q1 - q0 ) < beta ) { 2869 FFABS( q1 - q0 ) < beta ) {
2870 2870
2871 int delta = clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc ); 2871 int delta = clip( (((q0 - p0 ) << 2) + (p1 - q1) + 4) >> 3, -tc, tc );
2872 2872
2873 pix[-xstride] = clip_uint8( p0 + delta ); /* p0' */ 2873 pix[-xstride] = clip_uint8( p0 + delta ); /* p0' */
2874 pix[0] = clip_uint8( q0 - delta ); /* q0' */ 2874 pix[0] = clip_uint8( q0 - delta ); /* q0' */
2893 const int p0 = pix[-1*xstride]; 2893 const int p0 = pix[-1*xstride];
2894 const int p1 = pix[-2*xstride]; 2894 const int p1 = pix[-2*xstride];
2895 const int q0 = pix[0]; 2895 const int q0 = pix[0];
2896 const int q1 = pix[1*xstride]; 2896 const int q1 = pix[1*xstride];
2897 2897
2898 if( ABS( p0 - q0 ) < alpha && 2898 if( FFABS( p0 - q0 ) < alpha &&
2899 ABS( p1 - p0 ) < beta && 2899 FFABS( p1 - p0 ) < beta &&
2900 ABS( q1 - q0 ) < beta ) { 2900 FFABS( q1 - q0 ) < beta ) {
2901 2901
2902 pix[-xstride] = ( 2*p1 + p0 + q1 + 2 ) >> 2; /* p0' */ 2902 pix[-xstride] = ( 2*p1 + p0 + q1 + 2 ) >> 2; /* p0' */
2903 pix[0] = ( 2*q1 + q0 + p1 + 2 ) >> 2; /* q0' */ 2903 pix[0] = ( 2*q1 + q0 + p1 + 2 ) >> 2; /* q0' */
2904 } 2904 }
2905 pix += ystride; 2905 pix += ystride;
3124 for(x=0; x<16; x++){ 3124 for(x=0; x<16; x++){
3125 score1+= (s1[x ] - s2[x ])*(s1[x ] - s2[x ]); 3125 score1+= (s1[x ] - s2[x ])*(s1[x ] - s2[x ]);
3126 } 3126 }
3127 if(y+1<h){ 3127 if(y+1<h){
3128 for(x=0; x<15; x++){ 3128 for(x=0; x<15; x++){
3129 score2+= ABS( s1[x ] - s1[x +stride] 3129 score2+= FFABS( s1[x ] - s1[x +stride]
3130 - s1[x+1] + s1[x+1+stride]) 3130 - s1[x+1] + s1[x+1+stride])
3131 -ABS( s2[x ] - s2[x +stride] 3131 -FFABS( s2[x ] - s2[x +stride]
3132 - s2[x+1] + s2[x+1+stride]); 3132 - s2[x+1] + s2[x+1+stride]);
3133 } 3133 }
3134 } 3134 }
3135 s1+= stride; 3135 s1+= stride;
3136 s2+= stride; 3136 s2+= stride;
3137 } 3137 }
3138 3138
3139 if(c) return score1 + ABS(score2)*c->avctx->nsse_weight; 3139 if(c) return score1 + FFABS(score2)*c->avctx->nsse_weight;
3140 else return score1 + ABS(score2)*8; 3140 else return score1 + FFABS(score2)*8;
3141 } 3141 }
3142 3142
3143 static int nsse8_c(void *v, uint8_t *s1, uint8_t *s2, int stride, int h){ 3143 static int nsse8_c(void *v, uint8_t *s1, uint8_t *s2, int stride, int h){
3144 MpegEncContext *c = v; 3144 MpegEncContext *c = v;
3145 int score1=0; 3145 int score1=0;
3150 for(x=0; x<8; x++){ 3150 for(x=0; x<8; x++){
3151 score1+= (s1[x ] - s2[x ])*(s1[x ] - s2[x ]); 3151 score1+= (s1[x ] - s2[x ])*(s1[x ] - s2[x ]);
3152 } 3152 }
3153 if(y+1<h){ 3153 if(y+1<h){
3154 for(x=0; x<7; x++){ 3154 for(x=0; x<7; x++){
3155 score2+= ABS( s1[x ] - s1[x +stride] 3155 score2+= FFABS( s1[x ] - s1[x +stride]
3156 - s1[x+1] + s1[x+1+stride]) 3156 - s1[x+1] + s1[x+1+stride])
3157 -ABS( s2[x ] - s2[x +stride] 3157 -FFABS( s2[x ] - s2[x +stride]
3158 - s2[x+1] + s2[x+1+stride]); 3158 - s2[x+1] + s2[x+1+stride]);
3159 } 3159 }
3160 } 3160 }
3161 s1+= stride; 3161 s1+= stride;
3162 s2+= stride; 3162 s2+= stride;
3163 } 3163 }
3164 3164
3165 if(c) return score1 + ABS(score2)*c->avctx->nsse_weight; 3165 if(c) return score1 + FFABS(score2)*c->avctx->nsse_weight;
3166 else return score1 + ABS(score2)*8; 3166 else return score1 + FFABS(score2)*8;
3167 } 3167 }
3168 3168
3169 static int try_8x8basis_c(int16_t rem[64], int16_t weight[64], int16_t basis[64], int scale){ 3169 static int try_8x8basis_c(int16_t rem[64], int16_t weight[64], int16_t basis[64], int scale){
3170 int i; 3170 int i;
3171 unsigned int sum=0; 3171 unsigned int sum=0;
3351 b= y;\ 3351 b= y;\
3352 x= a+b;\ 3352 x= a+b;\
3353 y= a-b;\ 3353 y= a-b;\
3354 } 3354 }
3355 3355
3356 #define BUTTERFLYA(x,y) (ABS((x)+(y)) + ABS((x)-(y))) 3356 #define BUTTERFLYA(x,y) (FFABS((x)+(y)) + FFABS((x)-(y)))
3357 3357
3358 static int hadamard8_diff8x8_c(/*MpegEncContext*/ void *s, uint8_t *dst, uint8_t *src, int stride, int h){ 3358 static int hadamard8_diff8x8_c(/*MpegEncContext*/ void *s, uint8_t *dst, uint8_t *src, int stride, int h){
3359 int i; 3359 int i;
3360 int temp[64]; 3360 int temp[64];
3361 int sum=0; 3361 int sum=0;
3448 +BUTTERFLYA(temp[8*1+i], temp[8*5+i]) 3448 +BUTTERFLYA(temp[8*1+i], temp[8*5+i])
3449 +BUTTERFLYA(temp[8*2+i], temp[8*6+i]) 3449 +BUTTERFLYA(temp[8*2+i], temp[8*6+i])
3450 +BUTTERFLYA(temp[8*3+i], temp[8*7+i]); 3450 +BUTTERFLYA(temp[8*3+i], temp[8*7+i]);
3451 } 3451 }
3452 3452
3453 sum -= ABS(temp[8*0] + temp[8*4]); // -mean 3453 sum -= FFABS(temp[8*0] + temp[8*4]); // -mean
3454 3454
3455 return sum; 3455 return sum;
3456 } 3456 }
3457 3457
3458 static int dct_sad8x8_c(/*MpegEncContext*/ void *c, uint8_t *src1, uint8_t *src2, int stride, int h){ 3458 static int dct_sad8x8_c(/*MpegEncContext*/ void *c, uint8_t *src1, uint8_t *src2, int stride, int h){
3465 3465
3466 s->dsp.diff_pixels(temp, src1, src2, stride); 3466 s->dsp.diff_pixels(temp, src1, src2, stride);
3467 s->dsp.fdct(temp); 3467 s->dsp.fdct(temp);
3468 3468
3469 for(i=0; i<64; i++) 3469 for(i=0; i<64; i++)
3470 sum+= ABS(temp[i]); 3470 sum+= FFABS(temp[i]);
3471 3471
3472 return sum; 3472 return sum;
3473 } 3473 }
3474 3474
3475 #ifdef CONFIG_GPL 3475 #ifdef CONFIG_GPL
3514 DCT8_1D 3514 DCT8_1D
3515 #undef SRC 3515 #undef SRC
3516 #undef DST 3516 #undef DST
3517 3517
3518 #define SRC(x) dct[x][i] 3518 #define SRC(x) dct[x][i]
3519 #define DST(x,v) sum += ABS(v) 3519 #define DST(x,v) sum += FFABS(v)
3520 for( i = 0; i < 8; i++ ) 3520 for( i = 0; i < 8; i++ )
3521 DCT8_1D 3521 DCT8_1D
3522 #undef SRC 3522 #undef SRC
3523 #undef DST 3523 #undef DST
3524 return sum; 3524 return sum;
3535 3535
3536 s->dsp.diff_pixels(temp, src1, src2, stride); 3536 s->dsp.diff_pixels(temp, src1, src2, stride);
3537 s->dsp.fdct(temp); 3537 s->dsp.fdct(temp);
3538 3538
3539 for(i=0; i<64; i++) 3539 for(i=0; i<64; i++)
3540 sum= FFMAX(sum, ABS(temp[i])); 3540 sum= FFMAX(sum, FFABS(temp[i]));
3541 3541
3542 return sum; 3542 return sum;
3543 } 3543 }
3544 3544
3545 static int quant_psnr8x8_c(/*MpegEncContext*/ void *c, uint8_t *src1, uint8_t *src2, int stride, int h){ 3545 static int quant_psnr8x8_c(/*MpegEncContext*/ void *c, uint8_t *src1, uint8_t *src2, int stride, int h){
3709 int score=0; 3709 int score=0;
3710 int x,y; 3710 int x,y;
3711 3711
3712 for(y=1; y<h; y++){ 3712 for(y=1; y<h; y++){
3713 for(x=0; x<16; x+=4){ 3713 for(x=0; x<16; x+=4){
3714 score+= ABS(s[x ] - s[x +stride]) + ABS(s[x+1] - s[x+1+stride]) 3714 score+= FFABS(s[x ] - s[x +stride]) + FFABS(s[x+1] - s[x+1+stride])
3715 +ABS(s[x+2] - s[x+2+stride]) + ABS(s[x+3] - s[x+3+stride]); 3715 +FFABS(s[x+2] - s[x+2+stride]) + FFABS(s[x+3] - s[x+3+stride]);
3716 } 3716 }
3717 s+= stride; 3717 s+= stride;
3718 } 3718 }
3719 3719
3720 return score; 3720 return score;
3724 int score=0; 3724 int score=0;
3725 int x,y; 3725 int x,y;
3726 3726
3727 for(y=1; y<h; y++){ 3727 for(y=1; y<h; y++){
3728 for(x=0; x<16; x++){ 3728 for(x=0; x<16; x++){
3729 score+= ABS(s1[x ] - s2[x ] - s1[x +stride] + s2[x +stride]); 3729 score+= FFABS(s1[x ] - s2[x ] - s1[x +stride] + s2[x +stride]);
3730 } 3730 }
3731 s1+= stride; 3731 s1+= stride;
3732 s2+= stride; 3732 s2+= stride;
3733 } 3733 }
3734 3734