diff options
Diffstat (limited to 'libavresample')
-rw-r--r-- | libavresample/resample_template.c | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/libavresample/resample_template.c b/libavresample/resample_template.c index 6b2a6af433..0b4cf251dd 100644 --- a/libavresample/resample_template.c +++ b/libavresample/resample_template.c @@ -67,30 +67,29 @@ static void SET_TYPE(resample_one)(ResampleContext *c, { FELEM *dst = dst0; const FELEM *src = src0; + int i; + int sample_index = index >> c->phase_shift; + FELEM2 val = 0; + FELEM *filter = ((FELEM *)c->filter_bank) + + c->filter_length * (index & c->phase_mask); - int i; - int sample_index = index >> c->phase_shift; - FELEM2 val = 0; - FELEM *filter = ((FELEM *)c->filter_bank) + - c->filter_length * (index & c->phase_mask); - - if (sample_index < 0) { - for (i = 0; i < c->filter_length; i++) - val += src[FFABS(sample_index + i) % src_size] * - (FELEM2)filter[i]; - } else if (c->linear) { - FELEM2 v2 = 0; - for (i = 0; i < c->filter_length; i++) { - val += src[abs(sample_index + i)] * (FELEM2)filter[i]; - v2 += src[abs(sample_index + i)] * (FELEM2)filter[i + c->filter_length]; - } - val += (v2 - val) * (FELEML)frac / c->src_incr; - } else { - for (i = 0; i < c->filter_length; i++) - val += src[sample_index + i] * (FELEM2)filter[i]; + if (sample_index < 0) { + for (i = 0; i < c->filter_length; i++) + val += src[FFABS(sample_index + i) % src_size] * + (FELEM2)filter[i]; + } else if (c->linear) { + FELEM2 v2 = 0; + for (i = 0; i < c->filter_length; i++) { + val += src[abs(sample_index + i)] * (FELEM2)filter[i]; + v2 += src[abs(sample_index + i)] * (FELEM2)filter[i + c->filter_length]; } + val += (v2 - val) * (FELEML)frac / c->src_incr; + } else { + for (i = 0; i < c->filter_length; i++) + val += src[sample_index + i] * (FELEM2)filter[i]; + } - OUT(dst[dst_index], val); + OUT(dst[dst_index], val); } static void SET_TYPE(set_filter)(void *filter0, double *tab, int phase, |