From 254c95cdd1b669a722204a4a65974fc2523c8f83 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Tue, 4 Mar 2014 17:12:33 +0100 Subject: resample: split linear into its own function --- libavresample/resample_template.c | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'libavresample/resample_template.c') diff --git a/libavresample/resample_template.c b/libavresample/resample_template.c index 661dd0dd76..d8ddcc988a 100644 --- a/libavresample/resample_template.c +++ b/libavresample/resample_template.c @@ -61,6 +61,27 @@ static void SET_TYPE(resample_nearest)(void *dst0, int dst_index, const void *sr dst[dst_index] = src[index]; } +static void SET_TYPE(resample_linear)(ResampleContext *c, void *dst0, int dst_index, + const void *src0, unsigned int index, int frac) +{ + FELEM *dst = dst0; + const FELEM *src = src0; + int i; + unsigned int sample_index = index >> c->phase_shift; + FELEM2 val = 0; + FELEM *filter = ((FELEM *)c->filter_bank) + + c->filter_length * (index & c->phase_mask); + FELEM2 v2 = 0; + + for (i = 0; i < c->filter_length; i++) { + val += src[sample_index + i] * (FELEM2)filter[i]; + v2 += src[sample_index + i] * (FELEM2)filter[i + c->filter_length]; + } + val += (v2 - val) * (FELEML)frac / c->src_incr; + + OUT(dst[dst_index], val); +} + static void SET_TYPE(resample_one)(ResampleContext *c, void *dst0, int dst_index, const void *src0, unsigned int index, int frac) @@ -73,17 +94,8 @@ static void SET_TYPE(resample_one)(ResampleContext *c, FELEM *filter = ((FELEM *)c->filter_bank) + c->filter_length * (index & c->phase_mask); - if (c->linear) { - FELEM2 v2 = 0; - for (i = 0; i < c->filter_length; i++) { - val += src[sample_index + i] * (FELEM2)filter[i]; - v2 += src[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]; - } + for (i = 0; i < c->filter_length; i++) + val += src[sample_index + i] * (FELEM2)filter[i]; OUT(dst[dst_index], val); } -- cgit v1.2.3