Mercurial > libavcodec.hg
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 |