diff options
author | William Wilgus <wilgus.william@gmail.com> | 2022-12-13 18:15:07 -0500 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2022-12-16 08:30:54 -0500 |
commit | 626be18da0bd3774164ef85d21268e89fd7aa682 (patch) | |
tree | 4529226f5f36bb3822b5fe957d7e7857f815f786 | |
parent | 5903cd4bc83a842d6ee78dc89425eed23aabd999 (diff) | |
download | rockbox-626be18da0.tar.gz rockbox-626be18da0.zip |
[Bug Fix] haas surround use delay_ms instead of index surround_strength
this appears to be an old bug
rather than using an index use delay_ms directly
Change-Id: Ia4d0bf8eb8030d6ded08354abc31cc7ddefdda99
-rw-r--r-- | lib/rbcodec/dsp/surround.c | 55 | ||||
-rw-r--r-- | lib/rbcodec/dsp/surround.h | 2 |
2 files changed, 24 insertions, 33 deletions
diff --git a/lib/rbcodec/dsp/surround.c b/lib/rbcodec/dsp/surround.c index 986d81ae6f..9a1f7be8b6 100644 --- a/lib/rbcodec/dsp/surround.c +++ b/lib/rbcodec/dsp/surround.c @@ -30,13 +30,16 @@ static int surround_balance = 0; static bool surround_side_only = false; static int surround_mix = 100; -static int surround_strength = 0; +static int surround_delay_ms = 0; /*1 sample ~ 11ns */ -#define DLY_5MS 454 -#define DLY_8MS 727 -#define DLY_10MS 909 -#define DLY_15MS 1363 -#define DLY_30MS 2727 +#define DLY_1US 90900 +#define DLY_5MS ((DLY_1US * 5)/1000) /*(454)*/ +/* No longer needed but kept for reference */ +/*#define DLY_8MS 727*/ +/*#define DLY_10MS 909*/ +/*#define DLY_15MS 1363*/ +#define DLY_30MS ((DLY_1US * 30)/1000) /*(2727)*/ +#define MIN_DLY DLY_5MS #define MAX_DLY DLY_30MS #define B0_DLY (MAX_DLY/8 + 1) @@ -120,48 +123,36 @@ void dsp_surround_set_cutoff(int frq_l, int frq_h) surround_update_filter(dsp_get_output_frequency(dsp)); } -static void surround_set_stepsize(int surround_strength) +static void surround_set_delay(int surround_delay_ms) { if (handle >= 0) dsp_surround_flush(); - switch(surround_strength) - { - case 1: - dly_size = DLY_5MS; - break; - case 2: - dly_size = DLY_8MS; - break; - case 3: - dly_size = DLY_10MS; - break; - case 4: - dly_size = DLY_15MS; - break; - case 5: - dly_size = DLY_30MS; - break; - } + dly_size = ((DLY_1US * surround_delay_ms) /1000); + + if (dly_size < MIN_DLY) + dly_size = MIN_DLY; + else if (dly_size > MAX_DLY) + dly_size = MAX_DLY; } -void dsp_surround_enable(int var) +void dsp_surround_enable(int delay_ms) { - if (var == surround_strength) + if (delay_ms == surround_delay_ms) return; /* No setting change */ - surround_strength = var; + surround_delay_ms = delay_ms; struct dsp_config *dsp = dsp_get_config(CODEC_IDX_AUDIO); bool was_enabled = dsp_proc_enabled(dsp, DSP_PROC_SURROUND); - bool now_enabled = var > 0; + bool now_enabled = delay_ms > 0; + + if (now_enabled) + surround_set_delay(delay_ms); if (was_enabled == now_enabled) return; /* No change in enabled status */ - if (now_enabled) - surround_set_stepsize(var); - /* If changing status, enable or disable it; if already enabled push additional DSP_PROC_INIT messages with value = 1 to force-update the filters */ diff --git a/lib/rbcodec/dsp/surround.h b/lib/rbcodec/dsp/surround.h index 1683367865..7835f569b6 100644 --- a/lib/rbcodec/dsp/surround.h +++ b/lib/rbcodec/dsp/surround.h @@ -23,7 +23,7 @@ #include <stdbool.h> void dsp_surround_enable(int var); -void dsp_surround_set_balance(int var); +void dsp_surround_set_balance(int delay_ms); void dsp_surround_set_cutoff(int frq_l, int frq_h); void dsp_surround_side_only(bool var); void dsp_surround_mix(int var); |