summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorThom Johansen <thomj@rockbox.org>2007-12-08 01:45:04 +0000
committerThom Johansen <thomj@rockbox.org>2007-12-08 01:45:04 +0000
commit39e2de8f1b75c1fe12b99fab49d7e34ea2d91563 (patch)
treebd57f9802ecd2981dd5658f144f250c8581a28c3 /apps
parent4c4b3a314aa5ba39f55a90faa6887ebcb29398c3 (diff)
Crossfeed settings used to be stored inverted in the cfg file for legacy reasons, change that and kill some identical formatting functions while we're at it. NOTE TO CROSSFEED USERS: this will completely garble your crossfeed settings, write them down if you want to keep them.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15895 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/dsp.c12
-rw-r--r--apps/menus/eq_menu.c8
-rw-r--r--apps/menus/eq_menu.h1
-rw-r--r--apps/settings.h6
-rw-r--r--apps/settings_list.c40
5 files changed, 26 insertions, 41 deletions
diff --git a/apps/dsp.c b/apps/dsp.c
index 1e0ae1fb8d..3c2d7f63b1 100644
--- a/apps/dsp.c
+++ b/apps/dsp.c
@@ -758,27 +758,27 @@ void dsp_set_crossfeed(bool enable)
void dsp_set_crossfeed_direct_gain(int gain)
{
- crossfeed_data.gain = get_replaygain_int(gain * -10) << 7;
+ crossfeed_data.gain = get_replaygain_int(gain * 10) << 7;
/* If gain is negative, the calculation overflowed and we need to clamp */
if (crossfeed_data.gain < 0)
crossfeed_data.gain = 0x7fffffff;
}
-/* Both gains should be below 0 dB (when inverted) */
+/* Both gains should be below 0 dB */
void dsp_set_crossfeed_cross_params(long lf_gain, long hf_gain, long cutoff)
{
int32_t *c = crossfeed_data.coefs;
- long scaler = get_replaygain_int(lf_gain * -10) << 7;
+ long scaler = get_replaygain_int(lf_gain * 10) << 7;
cutoff = 0xffffffff/NATIVE_FREQUENCY*cutoff;
hf_gain -= lf_gain;
- /* Divide cutoff by sqrt(10^(-hf_gain/20)) to place cutoff at the -3 dB
+ /* Divide cutoff by sqrt(10^(hf_gain/20)) to place cutoff at the -3 dB
* point instead of shelf midpoint. This is for compatibility with the old
* crossfeed shelf filter and should be removed if crossfeed settings are
* ever made incompatible for any other good reason.
*/
- cutoff = DIV64(cutoff, get_replaygain_int(-hf_gain*5), 24);
- filter_shelf_coefs(cutoff, -hf_gain, false, c);
+ cutoff = DIV64(cutoff, get_replaygain_int(hf_gain*5), 24);
+ filter_shelf_coefs(cutoff, hf_gain, false, c);
/* Scale coefs by LF gain and shift them to s0.31 format. We have no gains
* over 1 and can do this safely
*/
diff --git a/apps/menus/eq_menu.c b/apps/menus/eq_menu.c
index b3e67e42ef..1dbb5541c5 100644
--- a/apps/menus/eq_menu.c
+++ b/apps/menus/eq_menu.c
@@ -51,14 +51,6 @@
* Utility functions
*/
-void eq_gain_format(char* buffer, size_t buffer_size, int value, const char* unit)
-{
- int v = abs(value);
-
- snprintf(buffer, buffer_size, "%s%d.%d %s", value < 0 ? "-" : "",
- v / EQ_USER_DIVISOR, v % EQ_USER_DIVISOR, unit);
-}
-
void eq_q_format(char* buffer, size_t buffer_size, int value, const char* unit)
{
snprintf(buffer, buffer_size, "%d.%d %s", value / EQ_USER_DIVISOR, value % EQ_USER_DIVISOR, unit);
diff --git a/apps/menus/eq_menu.h b/apps/menus/eq_menu.h
index ebeedff787..cc73d7bff0 100644
--- a/apps/menus/eq_menu.h
+++ b/apps/menus/eq_menu.h
@@ -41,7 +41,6 @@ bool eq_browse_presets(void);
bool eq_menu_graphical(void);
/* utility functions for settings_list.c */
-void eq_gain_format(char* buffer, size_t buffer_size, int value, const char* unit);
void eq_q_format(char* buffer, size_t buffer_size, int value, const char* unit);
void eq_precut_format(char* buffer, size_t buffer_size, int value, const char* unit);
diff --git a/apps/settings.h b/apps/settings.h
index 0e4e627005..d0e2a490a4 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -556,9 +556,9 @@ struct user_settings
/* Crossfeed settings */
bool crossfeed; /* enable crossfeed */
- unsigned int crossfeed_direct_gain; /* - dB x 10 */
- unsigned int crossfeed_cross_gain; /* - dB x 10 */
- unsigned int crossfeed_hf_attenuation; /* - dB x 10 */
+ unsigned int crossfeed_direct_gain; /* dB x 10 */
+ unsigned int crossfeed_cross_gain; /* dB x 10 */
+ unsigned int crossfeed_hf_attenuation; /* dB x 10 */
unsigned int crossfeed_hf_cutoff; /* Frequency in Hz */
#endif
#ifdef HAVE_DIRCACHE
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 3d5075ce3f..0759b46940 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -250,12 +250,6 @@ static void scanaccel_formatter(char *buffer, size_t buffer_size,
}
#if CONFIG_CODEC == SWCODEC
-static void crossfeed_format(char* buffer, size_t buffer_size, int value,
- const char* unit)
-{
- snprintf(buffer, buffer_size, "%s%d.%d %s", value == 0 ? " " : "-",
- value / 10, value % 10, unit);
-}
static void crossfeed_cross_set(int val)
{
(void)val;
@@ -264,7 +258,7 @@ static void crossfeed_cross_set(int val)
global_settings.crossfeed_hf_cutoff);
}
-static void replaygain_preamp_format(char* buffer, size_t buffer_size, int value,
+static void db_format(char* buffer, size_t buffer_size, int value,
const char* unit)
{
int v = abs(value);
@@ -274,7 +268,7 @@ static void replaygain_preamp_format(char* buffer, size_t buffer_size, int value
}
#endif
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
+#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC -= MAS3539F)
static void set_mdb_enable(bool value)
{
sound_set_mdb_enable((int)value);
@@ -868,7 +862,7 @@ const struct settings_list settings[] = {
OFFON_SETTING(0, replaygain_noclip, LANG_REPLAYGAIN_NOCLIP,
false, "replaygain noclip", NULL),
INT_SETTING_NOWRAP(0, replaygain_preamp, LANG_REPLAYGAIN_PREAMP, 0, "replaygain preamp",
- UNIT_DB, -120, 120, 5, replaygain_preamp_format, NULL, NULL),
+ UNIT_DB, -120, 120, 5, db_format, NULL, NULL),
CHOICE_SETTING(0, beep, LANG_BEEP, 0,
"beep", "off,weak,moderate,strong", NULL, 4,
@@ -894,15 +888,15 @@ const struct settings_list settings[] = {
/* crossfeed */
OFFON_SETTING(0,crossfeed, LANG_CROSSFEED, false,
"crossfeed", dsp_set_crossfeed),
- INT_SETTING_NOWRAP(0, crossfeed_direct_gain, LANG_CROSSFEED_DIRECT_GAIN, 15,
- "crossfeed direct gain", UNIT_DB, 0, 60, 5,
- crossfeed_format, NULL, dsp_set_crossfeed_direct_gain),
- INT_SETTING_NOWRAP(0, crossfeed_cross_gain, LANG_CROSSFEED_CROSS_GAIN, 60,
- "crossfeed cross gain", UNIT_DB, 30, 120, 5,
- crossfeed_format, NULL, crossfeed_cross_set),
- INT_SETTING_NOWRAP(0, crossfeed_hf_attenuation, LANG_CROSSFEED_HF_ATTENUATION, 160,
- "crossfeed hf attenuation", UNIT_DB, 60, 240, 5,
- crossfeed_format, NULL, crossfeed_cross_set),
+ INT_SETTING_NOWRAP(0, crossfeed_direct_gain, LANG_CROSSFEED_DIRECT_GAIN,
+ -15, "crossfeed direct gain", UNIT_DB, -60, 0, 5,
+ db_format, NULL, dsp_set_crossfeed_direct_gain),
+ INT_SETTING_NOWRAP(0, crossfeed_cross_gain, LANG_CROSSFEED_CROSS_GAIN, -60,
+ "crossfeed cross gain", UNIT_DB, -120, -30, 5,
+ db_format, NULL, crossfeed_cross_set),
+ INT_SETTING_NOWRAP(0, crossfeed_hf_attenuation, LANG_CROSSFEED_HF_ATTENUATION, -160,
+ "crossfeed hf attenuation", UNIT_DB, -240, -60, 5,
+ db_format, NULL, crossfeed_cross_set),
INT_SETTING_NOWRAP(0, crossfeed_hf_cutoff, LANG_CROSSFEED_HF_CUTOFF, 700,
"crossfeed hf cutoff", UNIT_HERTZ, 500, 2000, 100,
NULL, NULL, crossfeed_cross_set),
@@ -948,19 +942,19 @@ const struct settings_list settings[] = {
/* -240..240 (or -24db to +24db) */
INT_SETTING_NOWRAP(F_EQSETTING, eq_band0_gain, LANG_GAIN, 0,
"eq band 0 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
- EQ_GAIN_STEP, eq_gain_format, NULL, NULL),
+ EQ_GAIN_STEP, db_format, NULL, NULL),
INT_SETTING_NOWRAP(F_EQSETTING, eq_band1_gain, LANG_GAIN, 0,
"eq band 1 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
- EQ_GAIN_STEP, eq_gain_format, NULL, NULL),
+ EQ_GAIN_STEP, db_format, NULL, NULL),
INT_SETTING_NOWRAP(F_EQSETTING, eq_band2_gain, LANG_GAIN, 0,
"eq band 2 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
- EQ_GAIN_STEP, eq_gain_format, NULL, NULL),
+ EQ_GAIN_STEP, db_format, NULL, NULL),
INT_SETTING_NOWRAP(F_EQSETTING, eq_band3_gain, LANG_GAIN, 0,
"eq band 3 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
- EQ_GAIN_STEP, eq_gain_format, NULL, NULL),
+ EQ_GAIN_STEP, db_format, NULL, NULL),
INT_SETTING_NOWRAP(F_EQSETTING, eq_band4_gain, LANG_GAIN, 0,
"eq band 4 gain", UNIT_DB, EQ_GAIN_MIN, EQ_GAIN_MAX,
- EQ_GAIN_STEP, eq_gain_format, NULL, NULL),
+ EQ_GAIN_STEP, db_format, NULL, NULL),
/* dithering */
OFFON_SETTING(0, dithering_enabled, LANG_DITHERING,