From 3db9c833647a59edd1dc800808a2d404286e5ceb Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Mon, 21 Jun 2004 13:42:37 +0000 Subject: Simplified the settings code by removing the phys2val conversions. This has the side effect of increasing the resolution for the balance setting from 2% steps to 1% steps, and bass boost from 10% steps to 1% steps. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4782 a1c6a512-1295-4272-9138-f99709370657 --- apps/settings.c | 141 ++--------------------------------------- firmware/export/mp3_playback.h | 1 - firmware/mp3_playback.c | 134 +++++++++------------------------------ 3 files changed, 35 insertions(+), 241 deletions(-) diff --git a/apps/settings.c b/apps/settings.c index 463fd710be..5d71fac513 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -74,7 +74,6 @@ char rec_base_directory[] = REC_BASE_DIR; #define CONFIG_BLOCK_VERSION 11 #define CONFIG_BLOCK_SIZE 512 #define RTC_BLOCK_SIZE 44 -#define MARKER 0x7FFFFFFF /* FIXME: to be removed with val2phys/phys2val */ #ifdef HAVE_LCD_BITMAP #define MAX_LINES 10 @@ -161,12 +160,12 @@ static struct bit_entry rtc_bits[] = /* # of bits, offset+size, default, .cfg name, .cfg values */ /* sound */ {7, S_O(volume), 70, "volume", NULL }, /* 0...100 */ - {7 | SIGNED, S_O(balance), 0, "balance", NULL }, /* -50...50 */ - {5, S_O(bass), 0, "bass", NULL }, /* 0...30 */ - {5, S_O(treble), 0, "treble", NULL }, /* 0...30 */ + {8 | SIGNED, S_O(balance), 0, "balance", NULL }, /* -100...100 */ + {5 | SIGNED, S_O(bass), 0, "bass", NULL }, /* -15..+15 / -12..+12 */ + {5 | SIGNED, S_O(treble), 0, "treble", NULL }, /* -15..+15 / -12..+12 */ #ifdef HAVE_MAS3587F {5, S_O(loudness), 0, "loudness", NULL }, /* 0...17 */ - {4, S_O(bass_boost), 0, "bass boost", NULL }, /* 0...10 */ + {7, S_O(bass_boost), 0, "bass boost", NULL }, /* 0...100 */ {2, S_O(avc), 0, "auto volume", "off,2,4,8" }, #endif {3, S_O(channel_config), 6, "channels", @@ -595,7 +594,6 @@ static void save_bit_table(const struct bit_entry* p_table, int count, int bitst */ int settings_save( void ) { - int restore[6]; /* recover, FIXME: get rid of this */ DEBUGF( "settings_save()\n" ); { @@ -609,24 +607,6 @@ int settings_save( void ) global_settings.topruntime = global_settings.runtime; } - /* While the mpeg_val2phys business still exists: ( to be removed) */ - /* temporarily replace the hardware levels with the MMI values */ - restore[SOUND_VOLUME] = global_settings.volume; - global_settings.volume = mpeg_val2phys(SOUND_VOLUME, global_settings.volume); - restore[SOUND_BASS] = global_settings.bass; - global_settings.bass = mpeg_val2phys(SOUND_BASS, global_settings.bass); - restore[SOUND_TREBLE] = global_settings.treble; - global_settings.treble = mpeg_val2phys(SOUND_TREBLE, global_settings.treble); - restore[SOUND_BALANCE] = global_settings.balance; - global_settings.balance = mpeg_val2phys(SOUND_BALANCE, global_settings.balance); -#ifdef HAVE_MAS3587F - restore[SOUND_LOUDNESS] = global_settings.loudness; - global_settings.loudness = mpeg_val2phys(SOUND_LOUDNESS, global_settings.loudness); - restore[SOUND_SUPERBASS] = global_settings.bass_boost; - global_settings.bass_boost = mpeg_val2phys(SOUND_SUPERBASS, global_settings.bass_boost); -#endif - - /* serialize scalar values into RTC and HD sector, specified via table */ save_bit_table(rtc_bits, sizeof(rtc_bits)/sizeof(rtc_bits[0]), 4*8); save_bit_table(hd_bits, sizeof(hd_bits)/sizeof(hd_bits[0]), RTC_BLOCK_SIZE*8); @@ -635,18 +615,6 @@ int settings_save( void ) strncpy(&config_block[0xcc], global_settings.lang_file, MAX_FILENAME); strncpy(&config_block[0xe0], global_settings.font_file, MAX_FILENAME); - - /* restore the original values; to be removed with mpeg_val2phys */ - global_settings.volume = restore[SOUND_VOLUME]; - global_settings.bass = restore[SOUND_BASS]; - global_settings.treble = restore[SOUND_TREBLE]; - global_settings.balance = restore[SOUND_BALANCE]; -#ifdef HAVE_MAS3587F - global_settings.loudness = restore[SOUND_LOUDNESS]; - global_settings.bass_boost = restore[SOUND_SUPERBASS]; -#endif - - if(save_config_buffer()) { lcd_clear_display(); @@ -839,31 +807,12 @@ static void load_bit_table(const struct bit_entry* p_table, int count, int bitst */ void settings_load(int which) { - int restore[6]; /* recover, FIXME: get rid of this */ - DEBUGF( "reload_all_settings()\n" ); /* load the buffer from the RTC (resets it to all-unused if the block is invalid) and decode the settings which are set in the block */ if (!load_config_buffer(which)) { - /* While the mpeg_val2phys business still exists: ( FIXME: to be removed) */ - /* temporarily put markers into the values to detect if they got loaded */ - restore[SOUND_VOLUME] = global_settings.volume; - global_settings.volume = MARKER; - restore[SOUND_BASS] = global_settings.bass; - global_settings.bass = MARKER; - restore[SOUND_TREBLE] = global_settings.treble; - global_settings.treble = MARKER; - restore[SOUND_BALANCE] = global_settings.balance; - global_settings.balance = MARKER; -#ifdef HAVE_MAS3587F - restore[SOUND_LOUDNESS] = global_settings.loudness; - global_settings.loudness = MARKER; - restore[SOUND_SUPERBASS] = global_settings.bass_boost; - global_settings.bass_boost = MARKER; -#endif - /* load scalar values from RTC and HD sector, specified via table */ if (which & SETTINGS_RTC) { @@ -875,23 +824,6 @@ void settings_load(int which) RTC_BLOCK_SIZE*8); } - /* FIXME, to be removed with mpeg_val2phys: */ - /* if a value got loaded, convert it, else restore it */ - global_settings.volume = (global_settings.volume == MARKER) ? - restore[SOUND_VOLUME] : mpeg_phys2val(SOUND_VOLUME, global_settings.volume); - global_settings.bass = (global_settings.bass == MARKER) ? - restore[SOUND_BASS] : mpeg_phys2val(SOUND_BASS, global_settings.bass); - global_settings.treble = (global_settings.treble == MARKER) ? - restore[SOUND_TREBLE] : mpeg_phys2val(SOUND_TREBLE, global_settings.treble); - global_settings.balance = (global_settings.balance == MARKER) ? - restore[SOUND_BALANCE] : mpeg_phys2val(SOUND_BALANCE, global_settings.balance); -#ifdef HAVE_MAS3587F - global_settings.loudness = (global_settings.loudness == MARKER) ? - restore[SOUND_LOUDNESS] : mpeg_phys2val(SOUND_LOUDNESS, global_settings.loudness); - global_settings.bass_boost = (global_settings.bass_boost == MARKER) ? - restore[SOUND_SUPERBASS] : mpeg_phys2val(SOUND_SUPERBASS, global_settings.bass_boost); -#endif - if ( global_settings.contrast < MIN_CONTRAST_SETTING ) global_settings.contrast = lcd_default_contrast(); @@ -1046,31 +978,11 @@ bool settings_load_config(char* file) { int fd; char line[128]; - int restore[6]; /* recover, FIXME: get rid of this */ fd = open(file, O_RDONLY); if (fd < 0) return false; - - /* While the mpeg_val2phys business still exists: ( to be removed) */ - /* temporarily put markers into the values to detect if they got loaded */ - restore[SOUND_VOLUME] = global_settings.volume; - global_settings.volume = MARKER; - restore[SOUND_BASS] = global_settings.bass; - global_settings.bass = MARKER; - restore[SOUND_TREBLE] = global_settings.treble; - global_settings.treble = MARKER; - restore[SOUND_BALANCE] = global_settings.balance; - global_settings.balance = MARKER; -#ifdef HAVE_MAS3587F - restore[SOUND_LOUDNESS] = global_settings.loudness; - global_settings.loudness = MARKER; - restore[SOUND_SUPERBASS] = global_settings.bass_boost; - global_settings.bass_boost = MARKER; -#endif - - while (read_line(fd, line, sizeof line) > 0) { char* name; @@ -1126,23 +1038,6 @@ bool settings_load_config(char* file) } } - /* FIXME, to be removed with mpeg_val2phys: */ - /* if a value got loaded, convert it, else restore it */ - global_settings.volume = (global_settings.volume == MARKER) ? - restore[SOUND_VOLUME] : mpeg_phys2val(SOUND_VOLUME, global_settings.volume); - global_settings.bass = (global_settings.bass == MARKER) ? - restore[SOUND_BASS] : mpeg_phys2val(SOUND_BASS, global_settings.bass); - global_settings.treble = (global_settings.treble == MARKER) ? - restore[SOUND_TREBLE] : mpeg_phys2val(SOUND_TREBLE, global_settings.treble); - global_settings.balance = (global_settings.balance == MARKER) ? - restore[SOUND_BALANCE] : mpeg_phys2val(SOUND_BALANCE, global_settings.balance); -#ifdef HAVE_MAS3587F - global_settings.loudness = (global_settings.loudness == MARKER) ? - restore[SOUND_LOUDNESS] : mpeg_phys2val(SOUND_LOUDNESS, global_settings.loudness); - global_settings.bass_boost = (global_settings.bass_boost == MARKER) ? - restore[SOUND_SUPERBASS] : mpeg_phys2val(SOUND_SUPERBASS, global_settings.bass_boost); -#endif - close(fd); settings_apply(); settings_save(); @@ -1221,7 +1116,6 @@ bool settings_save_config(void) bool done = false; int fd, i; char filename[MAX_PATH]; - int restore[6]; /* recover, FIXME: get rid of this */ /* find unused filename */ for (i=0; ; i++) { @@ -1276,37 +1170,10 @@ bool settings_save_config(void) global_settings.font_file); #endif - /* FIXME: While the mpeg_val2phys business still exists: ( to be removed) */ - /* temporarily replace the hardware levels with the MMI values */ - restore[SOUND_VOLUME] = global_settings.volume; - global_settings.volume = mpeg_val2phys(SOUND_VOLUME, global_settings.volume); - restore[SOUND_BASS] = global_settings.bass; - global_settings.bass = mpeg_val2phys(SOUND_BASS, global_settings.bass); - restore[SOUND_TREBLE] = global_settings.treble; - global_settings.treble = mpeg_val2phys(SOUND_TREBLE, global_settings.treble); - restore[SOUND_BALANCE] = global_settings.balance; - global_settings.balance = mpeg_val2phys(SOUND_BALANCE, global_settings.balance); -#ifdef HAVE_MAS3587F - restore[SOUND_LOUDNESS] = global_settings.loudness; - global_settings.loudness = mpeg_val2phys(SOUND_LOUDNESS, global_settings.loudness); - restore[SOUND_SUPERBASS] = global_settings.bass_boost; - global_settings.bass_boost = mpeg_val2phys(SOUND_SUPERBASS, global_settings.bass_boost); -#endif - /* here's the action: write values to file, specified via table */ save_cfg_table(rtc_bits, sizeof(rtc_bits)/sizeof(rtc_bits[0]), fd); save_cfg_table(hd_bits, sizeof(hd_bits)/sizeof(hd_bits[0]), fd); - /* FIXME to be removed with mpeg_val2phys: restore the original values */ - global_settings.volume = restore[SOUND_VOLUME]; - global_settings.bass = restore[SOUND_BASS]; - global_settings.treble = restore[SOUND_TREBLE]; - global_settings.balance = restore[SOUND_BALANCE]; -#ifdef HAVE_MAS3587F - global_settings.loudness = restore[SOUND_LOUDNESS]; - global_settings.bass_boost = restore[SOUND_SUPERBASS]; -#endif - close(fd); lcd_clear_display(); diff --git a/firmware/export/mp3_playback.h b/firmware/export/mp3_playback.h index 1eb5dc264e..ad989a2572 100644 --- a/firmware/export/mp3_playback.h +++ b/firmware/export/mp3_playback.h @@ -33,7 +33,6 @@ int mpeg_sound_max(int setting); int mpeg_sound_default(int setting); void mpeg_sound_channel_config(int configuration); int mpeg_val2phys(int setting, int value); -int mpeg_phys2val(int setting, int value); char *mpeg_sound_unit(int setting); int mpeg_sound_numdecimals(int setting); #if defined(HAVE_MAS3587F) || defined(SIMULATOR) diff --git a/firmware/mp3_playback.c b/firmware/mp3_playback.c index 239f987c56..28d14eae64 100644 --- a/firmware/mp3_playback.c +++ b/firmware/mp3_playback.c @@ -94,9 +94,14 @@ static int numdecimals[] = static int minval[] = { 0, /* Volume */ - 0, /* Bass */ - 0, /* Treble */ - -50, /* Balance */ +#ifdef HAVE_MAS3587F + -12, /* Bass */ + -12, /* Treble */ +#else + -15, /* Bass */ + -15, /* Treble */ +#endif + -100, /* Balance */ 0, /* Loudness */ 0, /* Bass boost */ -1, /* AVC */ @@ -110,15 +115,15 @@ static int maxval[] = { 100, /* Volume */ #ifdef HAVE_MAS3587F - 24, /* Bass */ - 24, /* Treble */ + 12, /* Bass */ + 12, /* Treble */ #else - 30, /* Bass */ - 30, /* Treble */ + 15, /* Bass */ + 15, /* Treble */ #endif - 50, /* Balance */ + 100, /* Balance */ 17, /* Loudness */ - 10, /* Bass boost */ + 100, /* Bass boost */ 3, /* AVC */ 6, /* Channels */ 15, /* Left gain */ @@ -130,11 +135,11 @@ static int defaultval[] = { 70, /* Volume */ #ifdef HAVE_MAS3587F - 12+6, /* Bass */ - 12+6, /* Treble */ + 6, /* Bass */ + 6, /* Treble */ #else - 15+7, /* Bass */ - 15+7, /* Treble */ + 7, /* Bass */ + 7, /* Treble */ #endif 0, /* Balance */ 0, /* Loudness */ @@ -614,30 +619,27 @@ void mpeg_sound_set(int setting, int value) #ifdef HAVE_MAS3587F tmp = ((value * 127 / 100) & 0xff) << 8; mas_codec_writereg(0x11, tmp & 0xff00); -#else - /* Convert to percent */ - current_balance = value * 2; #endif break; case SOUND_BASS: #ifdef HAVE_MAS3587F - tmp = (((value-12) * 8) & 0xff) << 8; + tmp = ((value * 8) & 0xff) << 8; mas_codec_writereg(0x14, tmp & 0xff00); #else - mas_writereg(MAS_REG_KBASS, bass_table[value]); - current_bass = (value-15) * 10; + mas_writereg(MAS_REG_KBASS, bass_table[value+15]); + current_bass = (value) * 10; set_prescaled_volume(); #endif break; case SOUND_TREBLE: #ifdef HAVE_MAS3587F - tmp = (((value-12) * 8) & 0xff) << 8; + tmp = ((value * 8) & 0xff) << 8; mas_codec_writereg(0x15, tmp & 0xff00); #else - mas_writereg(MAS_REG_KTREBLE, treble_table[value]); - current_treble = (value-15) * 10; + mas_writereg(MAS_REG_KTREBLE, treble_table[value+15]); + current_treble = (value) * 10; set_prescaled_volume(); #endif break; @@ -645,7 +647,7 @@ void mpeg_sound_set(int setting, int value) #ifdef HAVE_MAS3587F case SOUND_SUPERBASS: if (value) { - tmp = MAX(MIN(value * 12, 0x7f), 0); + tmp = MAX(MIN(value * 127 / 100, 0x7f), 0); mas_codec_writereg(MAS_REG_KMDB_STR, (tmp & 0xff) << 8); tmp = 0x30; /* MDB_HAR: Space for experiment here */ mas_codec_writereg(MAS_REG_KMDB_HAR, (tmp & 0xff) << 8); @@ -700,43 +702,11 @@ void mpeg_sound_set(int setting, int value) int mpeg_val2phys(int setting, int value) { +#ifdef HAVE_MAS3587F int result = 0; switch(setting) { - case SOUND_VOLUME: - result = value; - break; - - case SOUND_BALANCE: - result = value * 2; - break; - - case SOUND_BASS: -#ifdef HAVE_MAS3587F - result = value - 12; -#else - result = value - 15; -#endif - break; - - case SOUND_TREBLE: -#ifdef HAVE_MAS3587F - result = value - 12; -#else - result = value - 15; -#endif - break; - -#ifdef HAVE_MAS3587F - case SOUND_LOUDNESS: - result = value; - break; - - case SOUND_SUPERBASS: - result = value * 10; - break; - case SOUND_LEFT_GAIN: case SOUND_RIGHT_GAIN: result = (value - 2) * 15; @@ -745,60 +715,18 @@ int mpeg_val2phys(int setting, int value) case SOUND_MIC_GAIN: result = value * 15 + 210; break; -#endif - } - return result; -} - -int mpeg_phys2val(int setting, int value) -{ - int result = 0; - - switch(setting) - { - case SOUND_VOLUME: - result = value; - break; - - case SOUND_BALANCE: - result = value / 2; - break; - - case SOUND_BASS: -#ifdef HAVE_MAS3587F - result = value + 12; -#else - result = value + 15; -#endif - break; - - case SOUND_TREBLE: -#ifdef HAVE_MAS3587F - result = value + 12; -#else - result = value + 15; -#endif - break; -#ifdef HAVE_MAS3587F - case SOUND_SUPERBASS: - result = value / 10; - break; - - case SOUND_LOUDNESS: - case SOUND_AVC: - case SOUND_LEFT_GAIN: - case SOUND_RIGHT_GAIN: - case SOUND_MIC_GAIN: + default: result = value; break; -#endif } - return result; +#else + (void)setting; + return value; +#endif } - void mpeg_sound_channel_config(int configuration) { #ifdef SIMULATOR -- cgit v1.2.3