Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/alexmarsev/soxr.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Sykes <rob@rob-Ideapad-S205.(none)>2013-02-27 02:34:56 +0400
committerRob Sykes <rob@rob-Ideapad-S205.(none)>2013-02-27 02:34:56 +0400
commit9a38bc087ac71e3e2c8af862fd0dbbb829746b02 (patch)
tree926999277ceb97aeac63aa94f3501fcc99af83aa
parent91e0238271b7bb61c9d68fbb98b99dcf07a1e7cd (diff)
fix resampling not working in most cases for anti_aliasing_pc != 100
-rw-r--r--src/rate.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/rate.h b/src/rate.h
index 29abd54..483e187 100644
--- a/src/rate.h
+++ b/src/rate.h
@@ -298,6 +298,7 @@ static void dft_stage_init(
{
dft_filter_t * f = &p->shared->dft_filter[instance];
int num_taps = 0, dft_length = f->dft_length, i;
+ bool f_domain_m = abs(3-M) == 1 && Fs <= 1;
if (!dft_length) {
int k = phase == 50 && lsx_is_power_of_2(L) && Fn == L? L << 1 : 4;
@@ -325,7 +326,7 @@ static void dft_stage_init(
if (!f->dft_length) {
void * coef_setup = rdft_forward_setup(dft_length);
int Lp = lsx_is_power_of_2(L)? L : 1;
- int Mp = lsx_is_power_of_2(M)? M : 1;
+ int Mp = f_domain_m? M : 1;
f->dft_forward_setup = rdft_forward_setup(dft_length / Lp);
f->dft_backward_setup = rdft_backward_setup(dft_length / Mp);
if (Mp == 1)
@@ -343,9 +344,9 @@ static void dft_stage_init(
p->type = dft_stage;
p->fn = dft_stage_fn;
p->preload = f->post_peak / L;
- p->at.integer = f->post_peak % L;
+ p->at.integer = f->post_peak % L;
p->L = L;
- p->step.integer = abs(3-M) == 1 && Fs == 1 && 1? -M/2 : M;
+ p->step.integer = f_domain_m? -M/2 : M;
p->dft_filter_num = instance;
p->block_len = f->dft_length - (f->num_taps - 1);
p->phase0 = p->at.integer / p->L;