# HG changeset patch # User michael # Date 1174561830 0 # Node ID 441cded6920c94a70a420019044df0d26e4c73a5 # Parent 1d8b06947276e9b09c38ee948db0da88ffab3867 optimize linear filter coeff interpolation code, this also makes the code less prone to overflows diff -r 1d8b06947276 -r 441cded6920c resample2.c --- a/resample2.c Thu Mar 22 05:39:20 2007 +0000 +++ b/resample2.c Thu Mar 22 11:10:30 2007 +0000 @@ -268,13 +268,12 @@ }else if(sample_index + c->filter_length > src_size){ break; }else if(c->linear){ - int64_t v=0; - int sub_phase= (frac<<8) / c->src_incr; + FELEM2 v2=0; for(i=0; ifilter_length; i++){ - FELEML coeff= filter[i]*(256 - sub_phase) + filter[i + c->filter_length]*sub_phase; - v += src[sample_index + i] * coeff; + val += src[sample_index + i] * (FELEM2)filter[i]; + v2 += src[sample_index + i] * (FELEM2)filter[i + c->filter_length]; } - val= v>>8; + val+=(v2-val)*(FELEML)frac / c->src_incr; }else{ for(i=0; ifilter_length; i++){ val += src[sample_index + i] * (FELEM2)filter[i];