From 39e2de8f1b75c1fe12b99fab49d7e34ea2d91563 Mon Sep 17 00:00:00 2001 From: Thom Johansen Date: Sat, 8 Dec 2007 01:45:04 +0000 Subject: [PATCH] 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 --- apps/dsp.c | 12 ++++++------ apps/menus/eq_menu.c | 8 -------- apps/menus/eq_menu.h | 1 - apps/settings.h | 6 +++--- apps/settings_list.c | 40 +++++++++++++++++----------------------- 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,