summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2004-06-21 13:42:37 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2004-06-21 13:42:37 +0000
commit3db9c833647a59edd1dc800808a2d404286e5ceb (patch)
tree876ce8d0e4be89dc7411729557af0335e4f17265
parentbdfc932accb1eb2c655887fce74717a8894c6cc3 (diff)
downloadrockbox-3db9c833647a59edd1dc800808a2d404286e5ceb.zip
rockbox-3db9c833647a59edd1dc800808a2d404286e5ceb.tar.gz
rockbox-3db9c833647a59edd1dc800808a2d404286e5ceb.tar.bz2
rockbox-3db9c833647a59edd1dc800808a2d404286e5ceb.tar.xz
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
-rw-r--r--apps/settings.c141
-rw-r--r--firmware/export/mp3_playback.h1
-rw-r--r--firmware/mp3_playback.c134
3 files changed, 35 insertions, 241 deletions
diff --git a/apps/settings.c b/apps/settings.c
index 463fd71..5d71fac 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 1eb5dc2..ad989a2 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 239f987..28d14ea 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