comparison dsputil.c @ 2065:9e4bebc39ade libavcodec

noise preserving sum of squares comparission function
author michael
date Mon, 07 Jun 2004 03:23:31 +0000
parents 9447bbd8a7e9
children 4bfb146e701b
comparison
equal deleted inserted replaced
2064:b77fe059dd09 2065:9e4bebc39ade
2585 pix3 += line_size; 2585 pix3 += line_size;
2586 } 2586 }
2587 return s; 2587 return s;
2588 } 2588 }
2589 2589
2590 static int nsse16_c(/*MpegEncContext*/ void *c, uint8_t *s1, uint8_t *s2, int stride, int h){
2591 int score1=0;
2592 int score2=0;
2593 int x,y;
2594
2595 for(y=0; y<h; y++){
2596 for(x=0; x<16; x++){
2597 score1+= (s1[x ] - s2[x ])*(s1[x ] - s2[x ]);
2598 }
2599 if(y+1<h){
2600 for(x=0; x<15; x++){
2601 score2+= ABS( s1[x ] - s1[x +stride]
2602 - s1[x+1] + s1[x+1+stride])
2603 -ABS( s2[x ] - s2[x +stride]
2604 - s2[x+1] + s2[x+1+stride]);
2605 }
2606 }
2607 s1+= stride;
2608 s2+= stride;
2609 }
2610
2611 return score1 + ABS(score2)*8;
2612 }
2613
2614 static int nsse8_c(/*MpegEncContext*/ void *c, uint8_t *s1, uint8_t *s2, int stride, int h){
2615 int score1=0;
2616 int score2=0;
2617 int x,y;
2618
2619 for(y=0; y<h; y++){
2620 for(x=0; x<8; x++){
2621 score1+= (s1[x ] - s2[x ])*(s1[x ] - s2[x ]);
2622 }
2623 if(y+1<h){
2624 for(x=0; x<7; x++){
2625 score2+= ABS( s1[x ] - s1[x +stride]
2626 - s1[x+1] + s1[x+1+stride])
2627 -ABS( s2[x ] - s2[x +stride]
2628 - s2[x+1] + s2[x+1+stride]);
2629 }
2630 }
2631 s1+= stride;
2632 s2+= stride;
2633 }
2634
2635 return score1 + ABS(score2)*8;
2636 }
2637
2590 static int try_8x8basis_c(int16_t rem[64], int16_t weight[64], int16_t basis[64], int scale){ 2638 static int try_8x8basis_c(int16_t rem[64], int16_t weight[64], int16_t basis[64], int scale){
2591 int i; 2639 int i;
2592 unsigned int sum=0; 2640 unsigned int sum=0;
2593 2641
2594 for(i=0; i<8*8; i++){ 2642 for(i=0; i<8*8; i++){
2678 cmp[i]= c->vsse[i]; 2726 cmp[i]= c->vsse[i];
2679 break; 2727 break;
2680 case FF_CMP_ZERO: 2728 case FF_CMP_ZERO:
2681 cmp[i]= zero_cmp; 2729 cmp[i]= zero_cmp;
2682 break; 2730 break;
2731 case FF_CMP_NSSE:
2732 cmp[i]= c->nsse[i];
2733 break;
2683 default: 2734 default:
2684 av_log(NULL, AV_LOG_ERROR,"internal error in cmp function selection\n"); 2735 av_log(NULL, AV_LOG_ERROR,"internal error in cmp function selection\n");
2685 } 2736 }
2686 } 2737 }
2687 } 2738 }
3311 SET_CMP_FUNC(bit) 3362 SET_CMP_FUNC(bit)
3312 c->vsad[0]= vsad16_c; 3363 c->vsad[0]= vsad16_c;
3313 c->vsad[4]= vsad_intra16_c; 3364 c->vsad[4]= vsad_intra16_c;
3314 c->vsse[0]= vsse16_c; 3365 c->vsse[0]= vsse16_c;
3315 c->vsse[4]= vsse_intra16_c; 3366 c->vsse[4]= vsse_intra16_c;
3367 c->nsse[0]= nsse16_c;
3368 c->nsse[1]= nsse8_c;
3316 3369
3317 c->add_bytes= add_bytes_c; 3370 c->add_bytes= add_bytes_c;
3318 c->diff_bytes= diff_bytes_c; 3371 c->diff_bytes= diff_bytes_c;
3319 c->sub_hfyu_median_prediction= sub_hfyu_median_prediction_c; 3372 c->sub_hfyu_median_prediction= sub_hfyu_median_prediction_c;
3320 c->bswap_buf= bswap_buf; 3373 c->bswap_buf= bswap_buf;