Mercurial > libavcodec.hg
comparison svq1.c @ 4749:7011f597e473 libavcodec
mmx 16-bit ssd. 2.3x faster svq1 encoding.
author | lorenm |
---|---|
date | Fri, 30 Mar 2007 19:15:31 +0000 |
parents | a96d905dcbaa |
children | 14a0a003804b |
comparison
equal
deleted
inserted
replaced
4748:c6a2b573f259 | 4749:7011f597e473 |
---|---|
990 const int stage= count-1; | 990 const int stage= count-1; |
991 const int8_t *vector; | 991 const int8_t *vector; |
992 | 992 |
993 for(i=0; i<16; i++){ | 993 for(i=0; i<16; i++){ |
994 int sum= codebook_sum[stage*16 + i]; | 994 int sum= codebook_sum[stage*16 + i]; |
995 int sqr=0; | 995 int sqr, diff, mean, score; |
996 int diff, mean, score; | |
997 | 996 |
998 vector = codebook + stage*size*16 + i*size; | 997 vector = codebook + stage*size*16 + i*size; |
999 | 998 sqr = s->dsp.ssd_int8_vs_int16(vector, block[stage], size); |
1000 for(j=0; j<size; j++){ | |
1001 int v= vector[j]; | |
1002 sqr += (v - block[stage][j])*(v - block[stage][j]); | |
1003 } | |
1004 diff= block_sum[stage] - sum; | 999 diff= block_sum[stage] - sum; |
1005 mean= (diff + (size>>1)) >> (level+3); | 1000 mean= (diff + (size>>1)) >> (level+3); |
1006 assert(mean >-300 && mean<300); | 1001 assert(mean >-300 && mean<300); |
1007 if(intra) mean= av_clip(mean, 0, 255); | 1002 if(intra) mean= av_clip(mean, 0, 255); |
1008 else mean= av_clip(mean, -256, 255); | 1003 else mean= av_clip(mean, -256, 255); |