1
0
Fork 0
forked from len0rd/rockbox

Sound settings rework: * Put all fixed parameters (unit, decimals, step, min, max, default, set function) for the individual settings into one structure array. * Use the new individual sound setting functions where appropriate. * Added dummy sound setting functions and defined the codec type for the sims. Fixes wrong sound settings ranges in the simulators. * Code cleanup.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7770 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jens Arnold 2005-11-06 23:12:11 +00:00
parent 4d9be96a81
commit 8051a0b724
21 changed files with 250 additions and 333 deletions

View file

@ -1228,7 +1228,7 @@ void audio_play_start(int offset)
} }
memset(&tracks, 0, sizeof(struct track_info) * MAX_TRACK); memset(&tracks, 0, sizeof(struct track_info) * MAX_TRACK);
sound_set(SOUND_VOLUME, global_settings.volume); sound_set_volume(global_settings.volume);
track_count = 0; track_count = 0;
track_widx = 0; track_widx = 0;
track_ridx = 0; track_ridx = 0;

View file

@ -1045,9 +1045,11 @@ void sound_neutral(void)
rb->sound_set(SOUND_TREBLE, 0); rb->sound_set(SOUND_TREBLE, 0);
rb->sound_set(SOUND_BALANCE, 0); rb->sound_set(SOUND_BALANCE, 0);
rb->sound_set(SOUND_VOLUME, 92); /* 0 dB */ rb->sound_set(SOUND_VOLUME, 92); /* 0 dB */
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
rb->sound_set(SOUND_LOUDNESS, 0); rb->sound_set(SOUND_LOUDNESS, 0);
rb->sound_set(SOUND_SUPERBASS, 0); rb->sound_set(SOUND_SUPERBASS, 0);
rb->sound_set(SOUND_AVC, 0); rb->sound_set(SOUND_AVC, 0);
#endif
} }
/* return to user settings */ /* return to user settings */
@ -1057,9 +1059,11 @@ void sound_normal(void)
rb->sound_set(SOUND_TREBLE, rb->global_settings->treble); rb->sound_set(SOUND_TREBLE, rb->global_settings->treble);
rb->sound_set(SOUND_BALANCE, rb->global_settings->balance); rb->sound_set(SOUND_BALANCE, rb->global_settings->balance);
rb->sound_set(SOUND_VOLUME, rb->global_settings->volume); rb->sound_set(SOUND_VOLUME, rb->global_settings->volume);
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
rb->sound_set(SOUND_LOUDNESS, rb->global_settings->loudness); rb->sound_set(SOUND_LOUDNESS, rb->global_settings->loudness);
rb->sound_set(SOUND_SUPERBASS, rb->global_settings->superbass); rb->sound_set(SOUND_SUPERBASS, rb->global_settings->superbass);
rb->sound_set(SOUND_AVC, rb->global_settings->avc); rb->sound_set(SOUND_AVC, rb->global_settings->avc);
#endif
} }
/* the thread running it all */ /* the thread running it all */

View file

@ -410,7 +410,7 @@ bool radio_screen(void)
global_settings.volume++; global_settings.volume++;
if(global_settings.volume > sound_max(SOUND_VOLUME)) if(global_settings.volume > sound_max(SOUND_VOLUME))
global_settings.volume = sound_max(SOUND_VOLUME); global_settings.volume = sound_max(SOUND_VOLUME);
sound_set(SOUND_VOLUME, global_settings.volume); sound_set_volume(global_settings.volume);
update_screen = true; update_screen = true;
settings_save(); settings_save();
break; break;
@ -420,7 +420,7 @@ bool radio_screen(void)
global_settings.volume--; global_settings.volume--;
if(global_settings.volume < sound_min(SOUND_VOLUME)) if(global_settings.volume < sound_min(SOUND_VOLUME))
global_settings.volume = sound_min(SOUND_VOLUME); global_settings.volume = sound_min(SOUND_VOLUME);
sound_set(SOUND_VOLUME, global_settings.volume); sound_set_volume(global_settings.volume);
update_screen = true; update_screen = true;
settings_save(); settings_save();
break; break;

View file

@ -291,7 +291,7 @@ bool recording_screen(void)
#endif #endif
mpeg_init_recording(); mpeg_init_recording();
sound_set(SOUND_VOLUME, global_settings.volume); sound_set_volume(global_settings.volume);
/* Yes, we use the D/A for monitoring */ /* Yes, we use the D/A for monitoring */
peak_meter_playback(true); peak_meter_playback(true);

View file

@ -827,7 +827,7 @@ void settings_apply(void)
backlight_set_fade_out(global_settings.backlight_fade_out); backlight_set_fade_out(global_settings.backlight_fade_out);
#endif #endif
ata_spindown(global_settings.disk_spindown); ata_spindown(global_settings.disk_spindown);
#if CONFIG_CODEC == MAS3507D #if (CONFIG_CODEC == MAS3507D) && !defined(SIMULATOR)
dac_line_in(global_settings.line_in); dac_line_in(global_settings.line_in);
#endif #endif
mpeg_id3_options(global_settings.id3_v1_first); mpeg_id3_options(global_settings.id3_v1_first);
@ -1329,16 +1329,18 @@ void settings_reset(void) {
global_settings.balance = sound_default(SOUND_BALANCE); global_settings.balance = sound_default(SOUND_BALANCE);
global_settings.bass = sound_default(SOUND_BASS); global_settings.bass = sound_default(SOUND_BASS);
global_settings.treble = sound_default(SOUND_TREBLE); global_settings.treble = sound_default(SOUND_TREBLE);
global_settings.loudness = sound_default(SOUND_LOUDNESS);
global_settings.avc = sound_default(SOUND_AVC);
global_settings.channel_config = sound_default(SOUND_CHANNELS); global_settings.channel_config = sound_default(SOUND_CHANNELS);
global_settings.stereo_width = sound_default(SOUND_STEREO_WIDTH); global_settings.stereo_width = sound_default(SOUND_STEREO_WIDTH);
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
global_settings.loudness = sound_default(SOUND_LOUDNESS);
global_settings.avc = sound_default(SOUND_AVC);
global_settings.mdb_strength = sound_default(SOUND_MDB_STRENGTH); global_settings.mdb_strength = sound_default(SOUND_MDB_STRENGTH);
global_settings.mdb_harmonics = sound_default(SOUND_MDB_HARMONICS); global_settings.mdb_harmonics = sound_default(SOUND_MDB_HARMONICS);
global_settings.mdb_center = sound_default(SOUND_MDB_CENTER); global_settings.mdb_center = sound_default(SOUND_MDB_CENTER);
global_settings.mdb_shape = sound_default(SOUND_MDB_SHAPE); global_settings.mdb_shape = sound_default(SOUND_MDB_SHAPE);
global_settings.mdb_enable = sound_default(SOUND_MDB_ENABLE); global_settings.mdb_enable = sound_default(SOUND_MDB_ENABLE);
global_settings.superbass = sound_default(SOUND_SUPERBASS); global_settings.superbass = sound_default(SOUND_SUPERBASS);
#endif
global_settings.contrast = lcd_default_contrast(); global_settings.contrast = lcd_default_contrast();
global_settings.wps_file[0] = '\0'; global_settings.wps_file[0] = '\0';
global_settings.font_file[0] = '\0'; global_settings.font_file[0] = '\0';

View file

@ -882,7 +882,9 @@ static bool poweroff(void)
static bool line_in(void) static bool line_in(void)
{ {
bool rc = set_bool(str(LANG_LINE_IN), &global_settings.line_in); bool rc = set_bool(str(LANG_LINE_IN), &global_settings.line_in);
#ifndef SIMULATOR
dac_line_in(global_settings.line_in); dac_line_in(global_settings.line_in);
#endif
return rc; return rc;
} }
#endif #endif

View file

@ -62,13 +62,13 @@ bool set_sound(const char* string,
int steps = sound_steps(setting); int steps = sound_steps(setting);
int min = sound_min(setting); int min = sound_min(setting);
int max = sound_max(setting); int max = sound_max(setting);
void(*sound_callback)(int)=sound_get_fn(setting); sound_set_type* sound_callback = sound_get_fn(setting);
if (*unit == 'd') /* crude reconstruction */ if (*unit == 'd') /* crude reconstruction */
talkunit = UNIT_DB; talkunit = UNIT_DB;
else if (*unit == '%') else if (*unit == '%')
talkunit = UNIT_PERCENT; talkunit = UNIT_PERCENT;
else if (*unit == 'H') else if (*unit == 'H')
talkunit = UNIT_HERTZ; talkunit = UNIT_HERTZ;
if(!numdec) if(!numdec)
return set_int(string, unit, talkunit, variable, sound_callback, return set_int(string, unit, talkunit, variable, sound_callback,
steps, min, max, NULL ); steps, min, max, NULL );
@ -134,7 +134,7 @@ static bool mdb_shape(void)
static void set_mdb_enable(bool value) static void set_mdb_enable(bool value)
{ {
sound_set(SOUND_MDB_ENABLE, (int)value); sound_set_mdb_enable((int)value);
} }
static bool mdb_enable(void) static bool mdb_enable(void)
@ -148,7 +148,7 @@ static bool mdb_enable(void)
static void set_superbass(bool value) static void set_superbass(bool value)
{ {
sound_set(SOUND_SUPERBASS, (int)value); sound_set_superbass((int)value);
} }
static bool superbass(void) static bool superbass(void)
@ -160,11 +160,6 @@ static bool superbass(void)
set_superbass); set_superbass);
} }
static void set_avc(int val)
{
sound_set(SOUND_AVC, val);
}
static bool avc(void) static bool avc(void)
{ {
static const struct opt_items names[] = { static const struct opt_items names[] = {
@ -175,7 +170,7 @@ static bool avc(void)
{ "8s", TALK_ID(8, UNIT_SEC) } { "8s", TALK_ID(8, UNIT_SEC) }
}; };
return set_option(str(LANG_DECAY), &global_settings.avc, INT, return set_option(str(LANG_DECAY), &global_settings.avc, INT,
names, 5, set_avc); names, 5, sound_set_avc);
} }
#endif #endif
@ -317,11 +312,6 @@ static bool reconstartup(void)
#endif /* MAS3587F */ #endif /* MAS3587F */
static void set_chanconf(int val)
{
sound_set(SOUND_CHANNELS, val);
}
static bool chanconf(void) static bool chanconf(void)
{ {
static const struct opt_items names[] = { static const struct opt_items names[] = {
@ -333,7 +323,7 @@ static bool chanconf(void)
{ STR(LANG_CHANNEL_KARAOKE) } { STR(LANG_CHANNEL_KARAOKE) }
}; };
return set_option(str(LANG_CHANNEL), &global_settings.channel_config, INT, return set_option(str(LANG_CHANNEL), &global_settings.channel_config, INT,
names, 6, set_chanconf ); names, 6, sound_set_channels);
} }
static bool stereo_width(void) static bool stereo_width(void)

View file

@ -77,7 +77,7 @@ static bool setvol(void)
global_settings.volume = sound_min(SOUND_VOLUME); global_settings.volume = sound_min(SOUND_VOLUME);
if (global_settings.volume > sound_max(SOUND_VOLUME)) if (global_settings.volume > sound_max(SOUND_VOLUME))
global_settings.volume = sound_max(SOUND_VOLUME); global_settings.volume = sound_max(SOUND_VOLUME);
sound_set(SOUND_VOLUME, global_settings.volume); sound_set_volume(global_settings.volume);
status_draw(false); status_draw(false);
wps_refresh(id3, nid3, 0, WPS_REFRESH_NON_STATIC); wps_refresh(id3, nid3, 0, WPS_REFRESH_NON_STATIC);
settings_save(); settings_save();
@ -267,7 +267,7 @@ static void fade(bool fade_in)
unsigned fp_volume = 0; unsigned fp_volume = 0;
/* zero out the sound */ /* zero out the sound */
sound_set(SOUND_VOLUME, 0); sound_set_volume(0);
sleep(HZ/10); /* let audio thread run */ sleep(HZ/10); /* let audio thread run */
audio_resume(); audio_resume();
@ -275,9 +275,9 @@ static void fade(bool fade_in)
while (fp_volume < fp_global_vol) { while (fp_volume < fp_global_vol) {
fp_volume += fp_step; fp_volume += fp_step;
sleep(1); sleep(1);
sound_set(SOUND_VOLUME, fp_volume >> 8); sound_set_volume(fp_volume >> 8);
} }
sound_set(SOUND_VOLUME, global_settings.volume); sound_set_volume(global_settings.volume);
} }
else { else {
/* fade out */ /* fade out */
@ -286,7 +286,7 @@ static void fade(bool fade_in)
while (fp_volume > fp_step) { while (fp_volume > fp_step) {
fp_volume -= fp_step; fp_volume -= fp_step;
sleep(1); sleep(1);
sound_set(SOUND_VOLUME, fp_volume >> 8); sound_set_volume(fp_volume >> 8);
} }
audio_pause(); audio_pause();
#ifndef SIMULATOR #ifndef SIMULATOR
@ -296,7 +296,7 @@ static void fade(bool fade_in)
sleep(HZ/10); sleep(HZ/10);
/* reset volume to what it was before the fade */ /* reset volume to what it was before the fade */
sound_set(SOUND_VOLUME, global_settings.volume); sound_set_volume(global_settings.volume);
} }
} }

View file

@ -26,11 +26,11 @@
#define AB_REPEAT_ENABLE 1 #define AB_REPEAT_ENABLE 1
#ifndef SIMULATOR
/* Define this if you have a MAS3587F */ /* Define this if you have a MAS3587F */
#define CONFIG_CODEC MAS3587F #define CONFIG_CODEC MAS3587F
#ifndef SIMULATOR
/* Define this if you have a SH7034 */ /* Define this if you have a SH7034 */
#define CONFIG_CPU SH7034 #define CONFIG_CPU SH7034

View file

@ -50,6 +50,8 @@
#define CONFIG_TUNER TEA5767 #define CONFIG_TUNER TEA5767
#define CONFIG_TUNER_XTAL 32768 #define CONFIG_TUNER_XTAL 32768
#define HAVE_UDA1380
#ifndef SIMULATOR #ifndef SIMULATOR
/* Define this if you have a Motorola SCF5249 */ /* Define this if you have a Motorola SCF5249 */
@ -58,8 +60,6 @@
/* Define this if you want to use coldfire's i2c interface */ /* Define this if you want to use coldfire's i2c interface */
#define CONFIG_I2C I2C_COLDFIRE #define CONFIG_I2C I2C_COLDFIRE
#define HAVE_UDA1380
/* Type of mobile power */ /* Type of mobile power */
#define CONFIG_BATTERY BATT_LIPOL1300 #define CONFIG_BATTERY BATT_LIPOL1300

View file

@ -46,6 +46,8 @@
#define CONFIG_TUNER TEA5767 #define CONFIG_TUNER TEA5767
#define CONFIG_TUNER_XTAL 32768 #define CONFIG_TUNER_XTAL 32768
#define HAVE_UDA1380
#ifndef SIMULATOR #ifndef SIMULATOR
/* Define this if you have a Motorola SCF5249 */ /* Define this if you have a Motorola SCF5249 */
@ -54,9 +56,6 @@
/* Define this if you want to use coldfire's i2c interface */ /* Define this if you want to use coldfire's i2c interface */
#define CONFIG_I2C I2C_COLDFIRE #define CONFIG_I2C I2C_COLDFIRE
#define HAVE_UDA1380
/* Type of mobile power */
#define CONFIG_BATTERY BATT_LIPOL1300 #define CONFIG_BATTERY BATT_LIPOL1300
#define BATTERY_SCALE_FACTOR 16665 /* FIX: this value is picked at random */ #define BATTERY_SCALE_FACTOR 16665 /* FIX: this value is picked at random */
@ -97,3 +96,4 @@
/* Define this if you can control the S/PDIF power */ /* Define this if you can control the S/PDIF power */
#define HAVE_SPDIF_POWER #define HAVE_SPDIF_POWER

View file

@ -39,6 +39,8 @@
/* The number of bytes reserved for loadable plugins */ /* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0xC0000 #define PLUGIN_BUFFER_SIZE 0xC0000
#define HAVE_UDA1380
#ifndef SIMULATOR #ifndef SIMULATOR
/* Define this if you have a Motorola SCF5249 */ /* Define this if you have a Motorola SCF5249 */
@ -47,8 +49,6 @@
/* Define this if you want to use coldfire's i2c interface */ /* Define this if you want to use coldfire's i2c interface */
#define CONFIG_I2C I2C_COLDFIRE #define CONFIG_I2C I2C_COLDFIRE
#define HAVE_UDA1380
/* Type of mobile power */ /* Type of mobile power */
#define CONFIG_BATTERY BATT_LIPOL1300 #define CONFIG_BATTERY BATT_LIPOL1300

View file

@ -22,14 +22,14 @@
#define CONFIG_TUNER (S1A0903X01 | TEA5767) /* to be decided at runtime */ #define CONFIG_TUNER (S1A0903X01 | TEA5767) /* to be decided at runtime */
#define CONFIG_TUNER_XTAL 13000000 #define CONFIG_TUNER_XTAL 13000000
/* Define this if you have a MAS3587F */
#define CONFIG_CODEC MAS3587F
#ifndef SIMULATOR #ifndef SIMULATOR
/* Define this if you have a SH7034 */ /* Define this if you have a SH7034 */
#define CONFIG_CPU SH7034 #define CONFIG_CPU SH7034
/* Define this if you have a MAS3587F */
#define CONFIG_CODEC MAS3587F
/* Define this to the CPU frequency */ /* Define this to the CPU frequency */
#define CPU_FREQ 12000000 #define CPU_FREQ 12000000

View file

@ -15,14 +15,14 @@
/* The number of bytes reserved for loadable plugins */ /* The number of bytes reserved for loadable plugins */
#define PLUGIN_BUFFER_SIZE 0x8000 #define PLUGIN_BUFFER_SIZE 0x8000
/* Define this if you have a MAS3539F */
#define CONFIG_CODEC MAS3539F
#ifndef SIMULATOR #ifndef SIMULATOR
/* Define this if you have a SH7034 */ /* Define this if you have a SH7034 */
#define CONFIG_CPU SH7034 #define CONFIG_CPU SH7034
/* Define this if you have a MAS3539F */
#define CONFIG_CODEC MAS3539F
/* Define this to the CPU frequency */ /* Define this to the CPU frequency */
#define CPU_FREQ 12000000 #define CPU_FREQ 12000000

View file

@ -14,17 +14,17 @@
#define AB_REPEAT_ENABLE 1 #define AB_REPEAT_ENABLE 1
#ifndef SIMULATOR
/* Define this if you have a SH7034 */
#define CONFIG_CPU SH7034
/* Define this if you have a MAS3507D */ /* Define this if you have a MAS3507D */
#define CONFIG_CODEC MAS3507D #define CONFIG_CODEC MAS3507D
/* Define this if you have a DAC3550A */ /* Define this if you have a DAC3550A */
#define HAVE_DAC3550A #define HAVE_DAC3550A
#ifndef SIMULATOR
/* Define this if you have a SH7034 */
#define CONFIG_CPU SH7034
/* Define this if you need to power on ATA */ /* Define this if you need to power on ATA */
#define NEEDS_ATA_POWER_ON #define NEEDS_ATA_POWER_ON

View file

@ -20,11 +20,11 @@
#define AB_REPEAT_ENABLE 1 #define AB_REPEAT_ENABLE 1
#ifndef SIMULATOR
/* Define this if you have a MAS3587F */ /* Define this if you have a MAS3587F */
#define CONFIG_CODEC MAS3587F #define CONFIG_CODEC MAS3587F
#ifndef SIMULATOR
/* Define this if you have a SH7034 */ /* Define this if you have a SH7034 */
#define CONFIG_CPU SH7034 #define CONFIG_CPU SH7034

View file

@ -25,12 +25,12 @@
#ifndef SIMULATOR #ifndef SIMULATOR
/* Define this if you have a SH7034 */
#define CONFIG_CPU SH7034
/* Define this if you have a MAS3587F */ /* Define this if you have a MAS3587F */
#define CONFIG_CODEC MAS3587F #define CONFIG_CODEC MAS3587F
/* Define this if you have a SH7034 */
#define CONFIG_CPU SH7034
/* Define this if you have a FM Recorder key system */ /* Define this if you have a FM Recorder key system */
#define HAVE_FMADC 1 #define HAVE_FMADC 1

View file

@ -19,37 +19,55 @@
#ifndef SOUND_H #ifndef SOUND_H
#define SOUND_H #define SOUND_H
#define SOUND_VOLUME 0 enum {
#define SOUND_BASS 1 SOUND_VOLUME = 0,
#define SOUND_TREBLE 2 SOUND_BASS,
#define SOUND_BALANCE 3 SOUND_TREBLE,
#define SOUND_LOUDNESS 4 SOUND_BALANCE,
#define SOUND_AVC 5 SOUND_CHANNELS,
#define SOUND_CHANNELS 6 SOUND_STEREO_WIDTH,
#define SOUND_STEREO_WIDTH 7 #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
#define SOUND_LEFT_GAIN 8 SOUND_LOUDNESS,
#define SOUND_RIGHT_GAIN 9 SOUND_AVC,
#define SOUND_MIC_GAIN 10 SOUND_MDB_STRENGTH,
#define SOUND_MDB_STRENGTH 11 SOUND_MDB_HARMONICS,
#define SOUND_MDB_HARMONICS 12 SOUND_MDB_CENTER,
#define SOUND_MDB_CENTER 13 SOUND_MDB_SHAPE,
#define SOUND_MDB_SHAPE 14 SOUND_MDB_ENABLE,
#define SOUND_MDB_ENABLE 15 SOUND_SUPERBASS,
#define SOUND_SUPERBASS 16 #endif
#define SOUND_NUMSETTINGS 17 #if CONFIG_CODEC == MAS3587F
SOUND_LEFT_GAIN,
SOUND_RIGHT_GAIN,
SOUND_MIC_GAIN,
#endif
};
#define SOUND_CHAN_STEREO 0 enum {
#define SOUND_CHAN_MONO 1 SOUND_CHAN_STEREO = 0,
#define SOUND_CHAN_CUSTOM 2 SOUND_CHAN_MONO,
#define SOUND_CHAN_MONO_LEFT 3 SOUND_CHAN_CUSTOM,
#define SOUND_CHAN_MONO_RIGHT 4 SOUND_CHAN_MONO_LEFT,
#define SOUND_CHAN_KARAOKE 5 SOUND_CHAN_MONO_RIGHT,
SOUND_CHAN_KARAOKE,
};
typedef void sound_set_type(int value);
const char *sound_unit(int setting);
int sound_numdecimals(int setting);
int sound_steps(int setting);
int sound_min(int setting);
int sound_max(int setting);
int sound_default(int setting);
sound_set_type* sound_get_fn(int setting);
#ifndef SIMULATOR
void sound_set_volume(int value); void sound_set_volume(int value);
void sound_set_balance(int value); void sound_set_balance(int value);
void sound_set_bass(int value); void sound_set_bass(int value);
void sound_set_treble(int value); void sound_set_treble(int value);
void sound_set_channels(int value);
void sound_set_stereo_width(int value);
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
void sound_set_loudness(int value); void sound_set_loudness(int value);
void sound_set_avc(int value); void sound_set_avc(int value);
@ -60,21 +78,11 @@ void sound_set_mdb_shape(int value);
void sound_set_mdb_enable(int value); void sound_set_mdb_enable(int value);
void sound_set_superbass(int value); void sound_set_superbass(int value);
#endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */ #endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */
void sound_set_channels(int value);
void sound_set_stereo_width(int value);
#endif
void (*sound_get_fn(int setting))(int value);
void sound_set(int setting, int value); void sound_set(int setting, int value);
int sound_min(int setting);
int sound_max(int setting);
int sound_default(int setting);
void sound_channel_config(int configuration);
int sound_val2phys(int setting, int value); int sound_val2phys(int setting, int value);
const char *sound_unit(int setting);
int sound_numdecimals(int setting); #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
int sound_steps(int setting);
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) || defined(SIMULATOR)
void sound_set_pitch(int permille); void sound_set_pitch(int permille);
int sound_get_pitch(void); int sound_get_pitch(void);
#endif #endif

View file

@ -44,7 +44,7 @@ enum
} mpeg_mode; } mpeg_mode;
#endif /* #ifdef MAS3587F */ #endif /* #ifdef MAS3587F */
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)) && !defined(SIMULATOR)
extern unsigned long shadow_io_control_main; extern unsigned long shadow_io_control_main;
extern unsigned shadow_codec_reg0; extern unsigned shadow_codec_reg0;
#endif #endif
@ -258,7 +258,6 @@ static void setup_sci0(void)
/* Enable Tx (only!) */ /* Enable Tx (only!) */
SCR0 |= 0x20; SCR0 |= 0x20;
} }
#endif /* SIMULATOR */
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
static void init_playback(void) static void init_playback(void)
@ -323,6 +322,7 @@ static void init_playback(void)
DEBUGF("MAS Decoding application started\n"); DEBUGF("MAS Decoding application started\n");
} }
#endif /* #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */ #endif /* #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */
#endif /* SIMULATOR */
void mp3_init(int volume, int bass, int treble, int balance, int loudness, void mp3_init(int volume, int bass, int treble, int balance, int loudness,
int avc, int channel_config, int stereo_width, int avc, int channel_config, int stereo_width,

View file

@ -221,7 +221,7 @@ static int get_playable_space(void);
static int get_unswapped_space(void); static int get_unswapped_space(void);
#endif /* !SIMULATOR */ #endif /* !SIMULATOR */
#if CONFIG_CODEC == MAS3587F #if (CONFIG_CODEC == MAS3587F) && !defined(SIMULATOR)
static void init_recording(void); static void init_recording(void);
static void prepend_header(void); static void prepend_header(void);
static void update_header(void); static void update_header(void);
@ -231,7 +231,7 @@ static void stop_recording(void);
static int get_unsaved_space(void); static int get_unsaved_space(void);
static void pause_recording(void); static void pause_recording(void);
static void resume_recording(void); static void resume_recording(void);
#endif /* CONFIG_CODEC == MAS3587F */ #endif /* (CONFIG_CODEC == MAS3587F) && !defined(SIMULATOR) */
#ifndef SIMULATOR #ifndef SIMULATOR
@ -2085,6 +2085,7 @@ bool audio_has_changed_track(void)
} }
#if CONFIG_CODEC == MAS3587F #if CONFIG_CODEC == MAS3587F
#ifndef SIMULATOR
void audio_init_playback(void) void audio_init_playback(void)
{ {
init_playback_done = false; init_playback_done = false;
@ -2575,20 +2576,9 @@ unsigned long mpeg_num_recorded_bytes(void)
return 0; return 0;
} }
#elif defined(SIMULATOR) #else /* SIMULATOR */
/* dummies coming up /* dummies coming up */
NOTE: when we implment these functions for real for software coded targets,
these dummies shall remain for the simulator */
void bitswap(unsigned char *data, int length)
{
/* a dummy */
/* this ought to be useless */
(void)data;
(void)length;
}
void audio_init_playback(void) void audio_init_playback(void)
{ {
@ -2651,7 +2641,8 @@ void mpeg_set_recording_options(int frequency, int quality,
(void)editable; (void)editable;
(void)prerecord_time; (void)prerecord_time;
} }
#endif /* CONFIG_CODEC == MAS3587F; SIMULATOR */ #endif /* SIMULATOR */
#endif /* CONFIG_CODEC == MAS3587F */
void audio_play(int offset) void audio_play(int offset)
{ {
@ -2807,7 +2798,7 @@ int audio_status(void)
if(paused) if(paused)
ret |= AUDIO_STATUS_PAUSE; ret |= AUDIO_STATUS_PAUSE;
#if CONFIG_CODEC == MAS3587F #if (CONFIG_CODEC == MAS3587F) && !defined(SIMULATOR)
if(is_recording && !is_prerecording) if(is_recording && !is_prerecording)
ret |= AUDIO_STATUS_RECORD; ret |= AUDIO_STATUS_RECORD;
@ -2867,7 +2858,7 @@ void audio_init(void)
memset(trackdata, sizeof(trackdata), 0); memset(trackdata, sizeof(trackdata), 0);
#if CONFIG_CODEC == MAS3587F #if (CONFIG_CODEC == MAS3587F) && !defined(SIMULATOR)
if(read_hw_mask() & PR_ACTIVE_HIGH) if(read_hw_mask() & PR_ACTIVE_HIGH)
and_b(~0x08, &PADRH); and_b(~0x08, &PADRH);
else else

View file

@ -38,196 +38,92 @@
#ifndef SIMULATOR #ifndef SIMULATOR
extern bool audio_is_initialized; extern bool audio_is_initialized;
#endif
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
extern unsigned long shadow_io_control_main; extern unsigned long shadow_io_control_main;
extern unsigned shadow_codec_reg0; extern unsigned shadow_codec_reg0;
#endif #endif
#endif /* SIMULATOR */
static const char* const units[] = struct sound_settings_info {
{ const char *unit;
"%", /* Volume */ int numdecimals;
"dB", /* Bass */ int steps;
"dB", /* Treble */ int minval;
"%", /* Balance */ int maxval;
"dB", /* Loudness */ int defaultval;
"", /* AVC */ sound_set_type *setfn;
"", /* Channels */
"%", /* Stereo width */
"dB", /* Left gain */
"dB", /* Right gain */
"dB", /* Mic gain */
"dB", /* MDB Strength */
"%", /* MDB Harmonics */
"Hz", /* MDB Center */
"Hz", /* MDB Shape */
"", /* MDB Enable */
"", /* Super bass */
}; };
static const int numdecimals[] = static const struct sound_settings_info sound_settings_table[] = {
{ [SOUND_VOLUME] = {"%", 0, 1, 0, 100, 70, sound_set_volume},
0, /* Volume */
0, /* Bass */
0, /* Treble */
0, /* Balance */
0, /* Loudness */
0, /* AVC */
0, /* Channels */
0, /* Stereo width */
1, /* Left gain */
1, /* Right gain */
1, /* Mic gain */
0, /* MDB Strength */
0, /* MDB Harmonics */
0, /* MDB Center */
0, /* MDB Shape */
0, /* MDB Enable */
0, /* Super bass */
};
static const int steps[] =
{
1, /* Volume */
#ifdef HAVE_UDA1380
2, /* Bass */
2, /* Treble */
#else
1, /* Bass */
1, /* Treble */
#endif
1, /* Balance */
1, /* Loudness */
1, /* AVC */
1, /* Channels */
1, /* Stereo width */
1, /* Left gain */
1, /* Right gain */
1, /* Mic gain */
1, /* MDB Strength */
1, /* MDB Harmonics */
10, /* MDB Center */
10, /* MDB Shape */
1, /* MDB Enable */
1, /* Super bass */
};
static const int minval[] =
{
0, /* Volume */
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
-12, /* Bass */ [SOUND_BASS] = {"dB", 0, 1, -12, 12, 6, sound_set_bass},
-12, /* Treble */ [SOUND_TREBLE] = {"dB", 0, 1, -12, 12, 6, sound_set_treble},
#elif defined(HAVE_UDA1380) #elif defined(HAVE_UDA1380)
0, /* Bass */ [SOUND_BASS] = {"dB", 0, 2, 0, 24, 0, sound_set_bass},
0, /* Treble */ [SOUND_TREBLE] = {"dB", 0, 2, 0, 6, 0, sound_set_treble},
#else #else /* MAS3507D */
-15, /* Bass */ [SOUND_BASS] = {"dB", 0, 1, -15, 15, 7, sound_set_bass},
-15, /* Treble */ [SOUND_TREBLE] = {"dB", 0, 1, -15, 15, 7, sound_set_treble},
#endif #endif
-100, /* Balance */ [SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0, sound_set_balance},
0, /* Loudness */ [SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0, sound_set_channels},
-1, /* AVC */ [SOUND_STEREO_WIDTH] = {"%", 0, 1, 0, 255, 100, sound_set_stereo_width},
0, /* Channels */
0, /* Stereo width */
0, /* Left gain */
0, /* Right gain */
0, /* Mic gain */
0, /* MDB Strength */
0, /* MDB Harmonics */
20, /* MDB Center */
50, /* MDB Shape */
0, /* MDB Enable */
0, /* Super bass */
};
static const int maxval[] =
{
100, /* Volume */
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
12, /* Bass */ [SOUND_LOUDNESS] = {"dB", 0, 1, 0, 17, 0, sound_set_loudness},
12, /* Treble */ [SOUND_AVC] = {"", 0, 1, -1, 4, 0, sound_set_avc},
#elif defined(HAVE_UDA1380) [SOUND_MDB_STRENGTH] = {"dB", 0, 1, 0, 127, 48, sound_set_mdb_strength},
24, /* Bass */ [SOUND_MDB_HARMONICS] = {"%", 0, 1, 0, 100, 50, sound_set_mdb_harmonics},
6, /* Treble */ [SOUND_MDB_CENTER] = {"Hz", 0, 10, 20, 300, 60, sound_set_mdb_center},
#else [SOUND_MDB_SHAPE] = {"Hz", 0, 10, 50, 300, 90, sound_set_mdb_shape},
15, /* Bass */ [SOUND_MDB_ENABLE] = {"", 0, 1, 0, 1, 0, sound_set_mdb_enable},
15, /* Treble */ [SOUND_SUPERBASS] = {"", 0, 1, 0, 1, 0, sound_set_superbass},
#endif #endif
100, /* Balance */ #if CONFIG_CODEC == MAS3587F
17, /* Loudness */ [SOUND_LEFT_GAIN] = {"dB", 1, 1, 0, 15, 8, NULL},
4, /* AVC */ [SOUND_RIGHT_GAIN] = {"dB", 1, 1, 0, 15, 8, NULL},
5, /* Channels */ [SOUND_MIC_GAIN] = {"dB", 1, 1, 0, 15, 2, NULL},
255, /* Stereo width */
15, /* Left gain */
15, /* Right gain */
15, /* Mic gain */
127, /* MDB Strength */
100, /* MDB Harmonics */
300, /* MDB Center */
300, /* MDB Shape */
1, /* MDB Enable */
1, /* Super bass */
};
static const int defaultval[] =
{
70, /* Volume */
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
6, /* Bass */
6, /* Treble */
#elif defined(HAVE_UDA1380)
0, /* Bass */
0, /* Treble */
#else
7, /* Bass */
7, /* Treble */
#endif #endif
0, /* Balance */
0, /* Loudness */
0, /* AVC */
0, /* Channels */
100, /* Stereo width */
8, /* Left gain */
8, /* Right gain */
2, /* Mic gain */
50, /* MDB Strength */
48, /* MDB Harmonics */
60, /* MDB Center */
90, /* MDB Shape */
0, /* MDB Enable */
0, /* Super bass */
}; };
const char *sound_unit(int setting) const char *sound_unit(int setting)
{ {
return units[setting]; return sound_settings_table[setting].unit;
} }
int sound_numdecimals(int setting) int sound_numdecimals(int setting)
{ {
return numdecimals[setting]; return sound_settings_table[setting].numdecimals;
} }
int sound_steps(int setting) int sound_steps(int setting)
{ {
return steps[setting]; return sound_settings_table[setting].steps;
} }
int sound_min(int setting) int sound_min(int setting)
{ {
return minval[setting]; return sound_settings_table[setting].minval;
} }
int sound_max(int setting) int sound_max(int setting)
{ {
return maxval[setting]; return sound_settings_table[setting].maxval;
} }
int sound_default(int setting) int sound_default(int setting)
{ {
return defaultval[setting]; return sound_settings_table[setting].defaultval;
}
sound_set_type* sound_get_fn(int setting)
{
if ((unsigned)setting < (sizeof(sound_settings_table)
/ sizeof(struct sound_settings_info)))
return sound_settings_table[setting].setfn;
else
return NULL;
} }
#ifndef SIMULATOR #ifndef SIMULATOR
@ -487,15 +383,12 @@ static void set_channel_config(void)
mas_writemem(MAS_BANK_D1, 0x7fb, &val_rr, 1); /* RR */ mas_writemem(MAS_BANK_D1, 0x7fb, &val_rr, 1); /* RR */
#endif #endif
} }
#endif /* !SIMULATOR */
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
unsigned long mdb_shape_shadow = 0; unsigned long mdb_shape_shadow = 0;
unsigned long loudness_shadow = 0; unsigned long loudness_shadow = 0;
#endif #endif
#ifndef SIMULATOR
void sound_set_volume(int value) void sound_set_volume(int value)
{ {
if(!audio_is_initialized) if(!audio_is_initialized)
@ -558,6 +451,23 @@ void sound_set_treble(int value)
#endif #endif
} }
void sound_set_channels(int value)
{
if(!audio_is_initialized)
return;
channel_configuration = value;
set_channel_config();
}
void sound_set_stereo_width(int value)
{
if(!audio_is_initialized)
return;
stereo_width = value;
if (channel_configuration == SOUND_CHAN_CUSTOM)
set_channel_config();
}
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
void sound_set_loudness(int value) void sound_set_loudness(int value)
{ {
@ -644,81 +554,90 @@ void sound_set_superbass(int value)
} }
#endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */ #endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */
#else /* SIMULATOR */
void sound_set_volume(int value)
{
(void)value;
}
void sound_set_balance(int value)
{
(void)value;
}
void sound_set_bass(int value)
{
(void)value;
}
void sound_set_treble(int value)
{
(void)value;
}
void sound_set_channels(int value) void sound_set_channels(int value)
{ {
if(!audio_is_initialized) (void)value;
return;
channel_configuration = value;
set_channel_config();
} }
void sound_set_stereo_width(int value) void sound_set_stereo_width(int value)
{ {
if(!audio_is_initialized) (void)value;
return;
stereo_width = value;
if (channel_configuration == SOUND_CHAN_CUSTOM)
set_channel_config();
} }
#endif /* SIMULATOR */
void (*sound_get_fn(int setting))(int value)
{
#ifdef SIMULATOR
(void)setting;
return NULL;
#else
if(!audio_is_initialized)
return NULL;
switch(setting)
{
case SOUND_VOLUME:
return &sound_set_volume;
case SOUND_BALANCE:
return &sound_set_balance;
case SOUND_BASS:
return &sound_set_bass;
case SOUND_TREBLE:
return &sound_set_treble;
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
case SOUND_LOUDNESS: void sound_set_loudness(int value)
return &sound_set_loudness; {
case SOUND_AVC: (void)value;
return &sound_set_avc;
case SOUND_MDB_STRENGTH:
return &sound_set_mdb_strength;
case SOUND_MDB_HARMONICS:
return &sound_set_mdb_harmonics;
case SOUND_MDB_CENTER:
return &sound_set_mdb_center;
case SOUND_MDB_SHAPE:
return &sound_set_mdb_shape;
case SOUND_MDB_ENABLE:
return &sound_set_mdb_enable;
case SOUND_SUPERBASS:
return &sound_set_superbass;
#endif
case SOUND_CHANNELS:
return &sound_set_channels;
case SOUND_STEREO_WIDTH:
return &sound_set_stereo_width;
default :
return NULL;
}
#endif /* SIMULATOR */
} }
void sound_set_avc(int value)
{
(void)value;
}
void sound_set_mdb_strength(int value)
{
(void)value;
}
void sound_set_mdb_harmonics(int value)
{
(void)value;
}
void sound_set_mdb_center(int value)
{
(void)value;
}
void sound_set_mdb_shape(int value)
{
(void)value;
}
void sound_set_mdb_enable(int value)
{
(void)value;
}
void sound_set_superbass(int value)
{
(void)value;
}
#endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */
#endif /* SIMULATOR */
void sound_set(int setting, int value) void sound_set(int setting, int value)
{ {
sound_set_type* sound_set_val = sound_get_fn(setting);
void (*sound_set_val)(int)=sound_get_fn(setting); if (sound_set_val)
if(sound_set_val)
sound_set_val(value); sound_set_val(value);
} }
int sound_val2phys(int setting, int value) int sound_val2phys(int setting, int value)
{ {
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if CONFIG_CODEC == MAS3587F
int result = 0; int result = 0;
switch(setting) switch(setting)
@ -744,6 +663,7 @@ int sound_val2phys(int setting, int value)
} }
#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
#ifndef SIMULATOR
/* This function works by telling the decoder that we have another /* This function works by telling the decoder that we have another
crystal frequency than we actually have. It will adjust its internal crystal frequency than we actually have. It will adjust its internal
parameters and the result is that the audio is played at another pitch. parameters and the result is that the audio is played at another pitch.
@ -775,7 +695,7 @@ int sound_get_pitch(void)
{ {
return last_pitch; return last_pitch;
} }
#elif defined SIMULATOR #else /* SIMULATOR */
void sound_set_pitch(int pitch) void sound_set_pitch(int pitch)
{ {
(void)pitch; (void)pitch;
@ -785,5 +705,5 @@ int sound_get_pitch(void)
{ {
return 1000; return 1000;
} }
#endif #endif /* SIMULATOR */
#endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */