Mercurial > libavcodec.hg
comparison motion_est.c @ 884:2cef5c4c0ca6 libavcodec
* altivec and pix_norm patch by Brian Foley
author | kabi |
---|---|
date | Fri, 22 Nov 2002 07:53:06 +0000 |
parents | 4ba00af12589 |
children | 22ee74da2cd3 |
comparison
equal
deleted
inserted
replaced
883:b0d29bf1cecd | 884:2cef5c4c0ca6 |
---|---|
57 s += ABS(pix[6]-mean); | 57 s += ABS(pix[6]-mean); |
58 s += ABS(pix[7]-mean); | 58 s += ABS(pix[7]-mean); |
59 pix += 8; | 59 pix += 8; |
60 } | 60 } |
61 pix += line_size - 16; | 61 pix += line_size - 16; |
62 } | |
63 return s; | |
64 } | |
65 | |
66 static int pix_norm(UINT8 * pix1, UINT8 * pix2, int line_size) | |
67 { | |
68 int s, i, j; | |
69 UINT32 *sq = squareTbl + 256; | |
70 | |
71 s = 0; | |
72 for (i = 0; i < 16; i++) { | |
73 for (j = 0; j < 16; j += 8) { | |
74 s += sq[pix1[0] - pix2[0]]; | |
75 s += sq[pix1[1] - pix2[1]]; | |
76 s += sq[pix1[2] - pix2[2]]; | |
77 s += sq[pix1[3] - pix2[3]]; | |
78 s += sq[pix1[4] - pix2[4]]; | |
79 s += sq[pix1[5] - pix2[5]]; | |
80 s += sq[pix1[6] - pix2[6]]; | |
81 s += sq[pix1[7] - pix2[7]]; | |
82 pix1 += 8; | |
83 pix2 += 8; | |
84 } | |
85 pix1 += line_size - 16; | |
86 pix2 += line_size - 16; | |
87 } | 62 } |
88 return s; | 63 return s; |
89 } | 64 } |
90 | 65 |
91 static inline void no_motion_search(MpegEncContext * s, | 66 static inline void no_motion_search(MpegEncContext * s, |
1135 | 1110 |
1136 sum = s->dsp.pix_sum(pix, s->linesize); | 1111 sum = s->dsp.pix_sum(pix, s->linesize); |
1137 | 1112 |
1138 varc = (s->dsp.pix_norm1(pix, s->linesize) - (((unsigned)(sum*sum))>>8) + 500 + 128)>>8; | 1113 varc = (s->dsp.pix_norm1(pix, s->linesize) - (((unsigned)(sum*sum))>>8) + 500 + 128)>>8; |
1139 // FIXME: MMX OPTIMIZE | 1114 // FIXME: MMX OPTIMIZE |
1140 vard = (pix_norm(pix, ppix, s->linesize)+128)>>8; | 1115 vard = (s->dsp.pix_norm(pix, ppix, s->linesize)+128)>>8; |
1141 | 1116 |
1142 //printf("%d %d %d %X %X %X\n", s->mb_width, mb_x, mb_y,(int)s, (int)s->mb_var, (int)s->mc_mb_var); fflush(stdout); | 1117 //printf("%d %d %d %X %X %X\n", s->mb_width, mb_x, mb_y,(int)s, (int)s->mb_var, (int)s->mc_mb_var); fflush(stdout); |
1143 s->mb_var [s->mb_width * mb_y + mb_x] = varc; | 1118 s->mb_var [s->mb_width * mb_y + mb_x] = varc; |
1144 s->mc_mb_var[s->mb_width * mb_y + mb_x] = vard; | 1119 s->mc_mb_var[s->mb_width * mb_y + mb_x] = vard; |
1145 s->mb_mean [s->mb_width * mb_y + mb_x] = (sum+128)>>8; | 1120 s->mb_mean [s->mb_width * mb_y + mb_x] = (sum+128)>>8; |