Mercurial > libavcodec.hg
comparison svq1.c @ 4750:14a0a003804b libavcodec
move some stuff out of an inner loop. 12% faster svq1 encoding.
author | lorenm |
---|---|
date | Fri, 30 Mar 2007 19:16:41 +0000 |
parents | 7011f597e473 |
children | f99e40a7155b |
comparison
equal
deleted
inserted
replaced
4749:7011f597e473 | 4750:14a0a003804b |
---|---|
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, diff, mean, score; | 995 int sqr, diff, score; |
996 | 996 |
997 vector = codebook + stage*size*16 + i*size; | 997 vector = codebook + stage*size*16 + i*size; |
998 sqr = s->dsp.ssd_int8_vs_int16(vector, block[stage], size); | 998 sqr = s->dsp.ssd_int8_vs_int16(vector, block[stage], size); |
999 diff= block_sum[stage] - sum; | 999 diff= block_sum[stage] - sum; |
1000 mean= (diff + (size>>1)) >> (level+3); | |
1001 assert(mean >-300 && mean<300); | |
1002 if(intra) mean= av_clip(mean, 0, 255); | |
1003 else mean= av_clip(mean, -256, 255); | |
1004 score= sqr - ((diff*(int64_t)diff)>>(level+3)); //FIXME 64bit slooow | 1000 score= sqr - ((diff*(int64_t)diff)>>(level+3)); //FIXME 64bit slooow |
1005 if(score < best_vector_score){ | 1001 if(score < best_vector_score){ |
1002 int mean= (diff + (size>>1)) >> (level+3); | |
1003 assert(mean >-300 && mean<300); | |
1004 mean= av_clip(mean, intra?0:-256, 255); | |
1006 best_vector_score= score; | 1005 best_vector_score= score; |
1007 best_vector[stage]= i; | 1006 best_vector[stage]= i; |
1008 best_vector_sum= sum; | 1007 best_vector_sum= sum; |
1009 best_vector_mean= mean; | 1008 best_vector_mean= mean; |
1010 } | 1009 } |