Mercurial > libavcodec.hg
comparison motion_est.c @ 289:648e9245546d libavcodec
seems the old intra/inter decission is slightly better with a threshold, than the new one
author | michaelni |
---|---|
date | Sun, 24 Mar 2002 04:58:54 +0000 |
parents | f82cce6cb182 |
children | 944632089814 |
comparison
equal
deleted
inserted
replaced
288:f82cce6cb182 | 289:648e9245546d |
---|---|
731 yy = mb_y * 16; | 731 yy = mb_y * 16; |
732 | 732 |
733 pix = s->new_picture[0] + (yy * s->linesize) + xx; | 733 pix = s->new_picture[0] + (yy * s->linesize) + xx; |
734 /* At this point (mx,my) are full-pell and the absolute displacement */ | 734 /* At this point (mx,my) are full-pell and the absolute displacement */ |
735 ppix = s->last_picture[0] + (my * s->linesize) + mx; | 735 ppix = s->last_picture[0] + (my * s->linesize) + mx; |
736 | 736 |
737 sum = pix_sum(pix, s->linesize); | 737 sum = pix_sum(pix, s->linesize); |
738 varc = pix_dev(pix, s->linesize, (sum+128)>>8); | 738 #if 0 |
739 varc = pix_dev(pix, s->linesize, (sum+128)>>8) + INTER_BIAS; | |
739 vard = pix_abs16x16(pix, ppix, s->linesize, 16); | 740 vard = pix_abs16x16(pix, ppix, s->linesize, 16); |
741 #else | |
742 sum= (sum+8)>>4; | |
743 varc = ((pix_norm1(pix, s->linesize) - sum*sum + 128 + 500)>>8); | |
744 vard = (pix_norm(pix, ppix, s->linesize)+128)>>8; | |
745 #endif | |
740 | 746 |
741 s->mb_var[s->mb_width * mb_y + mb_x] = varc; | 747 s->mb_var[s->mb_width * mb_y + mb_x] = varc; |
742 s->avg_mb_var += varc; | 748 s->avg_mb_var += varc; |
743 s->mc_mb_var += vard; | 749 s->mc_mb_var += vard; |
744 | 750 |
745 #if 0 | 751 #if 0 |
746 printf("varc=%4d avg_var=%4d (sum=%4d) vard=%4d mx=%2d my=%2d\n", | 752 printf("varc=%4d avg_var=%4d (sum=%4d) vard=%4d mx=%2d my=%2d\n", |
747 varc, s->avg_mb_var, sum, vard, mx - xx, my - yy); | 753 varc, s->avg_mb_var, sum, vard, mx - xx, my - yy); |
748 #endif | 754 #endif |
749 if (vard <= 64 || vard < varc + INTER_BIAS) { | 755 if (vard <= 64 || vard < varc) { |
750 if (s->full_search != ME_ZERO) { | 756 if (s->full_search != ME_ZERO) { |
751 halfpel_motion_search(s, &mx, &my, dmin, xmin, ymin, xmax, ymax, pred_x, pred_y); | 757 halfpel_motion_search(s, &mx, &my, dmin, xmin, ymin, xmax, ymax, pred_x, pred_y); |
752 } else { | 758 } else { |
753 mx -= 16 * s->mb_x; | 759 mx -= 16 * s->mb_x; |
754 my -= 16 * s->mb_y; | 760 my -= 16 * s->mb_y; |