summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/dsp.c15
-rw-r--r--apps/dsp.h8
-rw-r--r--apps/settings.c16
-rw-r--r--apps/settings_list.c4
4 files changed, 20 insertions, 23 deletions
diff --git a/apps/dsp.c b/apps/dsp.c
index 9e410f879a..be851e2305 100644
--- a/apps/dsp.c
+++ b/apps/dsp.c
@@ -971,7 +971,7 @@ static void apply_gain(int count, int32_t *buf[])
971 FRACMUL_8_LOOP(s, gain, sl, d); 971 FRACMUL_8_LOOP(s, gain, sl, d);
972} 972}
973 973
974void stereo_width_set(int value) 974void dsp_set_stereo_width(int value)
975{ 975{
976 long width, straight, cross; 976 long width, straight, cross;
977 977
@@ -1022,6 +1022,8 @@ static void channels_process_sound_chan_mono(int count, int32_t *buf[])
1022} 1022}
1023#endif /* DSP_HAVE_ASM_SOUND_CHAN_MONO */ 1023#endif /* DSP_HAVE_ASM_SOUND_CHAN_MONO */
1024 1024
1025#if CONFIG_CODEC == SWCODEC
1026
1025#ifdef HAVE_SW_TONE_CONTROLS 1027#ifdef HAVE_SW_TONE_CONTROLS
1026static void set_tone_controls(void) 1028static void set_tone_controls(void)
1027{ 1029{
@@ -1029,10 +1031,12 @@ static void set_tone_controls(void)
1029 0xffffffff/NATIVE_FREQUENCY*3500, 1031 0xffffffff/NATIVE_FREQUENCY*3500,
1030 bass, treble, -prescale, tone_filter.coefs); 1032 bass, treble, -prescale, tone_filter.coefs);
1031} 1033}
1034#endif
1032 1035
1033int dsp_callback(int msg, intptr_t param) 1036int dsp_callback(int msg, intptr_t param)
1034{ 1037{
1035 switch (msg) { 1038 switch (msg) {
1039#ifdef HAVE_SW_TONE_CONTROLS
1036 case DSP_CALLBACK_SET_PRESCALE: 1040 case DSP_CALLBACK_SET_PRESCALE:
1037 prescale = param; 1041 prescale = param;
1038 set_tone_controls(); 1042 set_tone_controls();
@@ -1045,6 +1049,13 @@ int dsp_callback(int msg, intptr_t param)
1045 break; 1049 break;
1046 case DSP_CALLBACK_SET_TREBLE: 1050 case DSP_CALLBACK_SET_TREBLE:
1047 treble = param; 1051 treble = param;
1052#endif
1053 case DSP_CALLBACK_SET_CHANNEL_CONFIG:
1054 dsp_set_channel_config(param);
1055 break;
1056 case DSP_CALLBACK_SET_STEREO_WIDTH:
1057 dsp_set_stereo_width(param);
1058 break;
1048 default: 1059 default:
1049 break; 1060 break;
1050 } 1061 }
@@ -1097,7 +1108,7 @@ static void channels_process_sound_chan_karaoke(int count, int32_t *buf[])
1097} 1108}
1098#endif /* DSP_HAVE_ASM_SOUND_CHAN_KARAOKE */ 1109#endif /* DSP_HAVE_ASM_SOUND_CHAN_KARAOKE */
1099 1110
1100void channels_set(int value) 1111void dsp_set_channel_config(int value)
1101{ 1112{
1102 static const channels_process_fn_type channels_process_functions[] = 1113 static const channels_process_fn_type channels_process_functions[] =
1103 { 1114 {
diff --git a/apps/dsp.h b/apps/dsp.h
index 03118e8c31..5d6e964d89 100644
--- a/apps/dsp.h
+++ b/apps/dsp.h
@@ -54,7 +54,9 @@ enum
54enum { 54enum {
55 DSP_CALLBACK_SET_PRESCALE = 0, 55 DSP_CALLBACK_SET_PRESCALE = 0,
56 DSP_CALLBACK_SET_BASS, 56 DSP_CALLBACK_SET_BASS,
57 DSP_CALLBACK_SET_TREBLE 57 DSP_CALLBACK_SET_TREBLE,
58 DSP_CALLBACK_SET_CHANNEL_CONFIG,
59 DSP_CALLBACK_SET_STEREO_WIDTH
58}; 60};
59 61
60/* A bunch of fixed point assembler helper macros */ 62/* A bunch of fixed point assembler helper macros */
@@ -216,8 +218,8 @@ void dsp_set_eq_coefs(int band);
216void sound_set_pitch(int r); 218void sound_set_pitch(int r);
217int sound_get_pitch(void); 219int sound_get_pitch(void);
218int dsp_callback(int msg, intptr_t param); 220int dsp_callback(int msg, intptr_t param);
219void channels_set(int value); 221void dsp_set_channel_config(int value);
220void stereo_width_set(int value); 222void dsp_set_stereo_width(int value);
221void dsp_dither_enable(bool enable); 223void dsp_dither_enable(bool enable);
222 224
223#endif 225#endif
diff --git a/apps/settings.c b/apps/settings.c
index 331229190a..0b2f2d9d40 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -642,20 +642,15 @@ void settings_apply_pm_range(void)
642 642
643void sound_settings_apply(void) 643void sound_settings_apply(void)
644{ 644{
645#ifdef HAVE_SW_TONE_CONTROLS 645#if CONFIG_CODEC == SWCODEC
646 sound_set_dsp_callback(dsp_callback); 646 sound_set_dsp_callback(dsp_callback);
647#endif 647#endif
648 sound_set(SOUND_BASS, global_settings.bass); 648 sound_set(SOUND_BASS, global_settings.bass);
649 sound_set(SOUND_TREBLE, global_settings.treble); 649 sound_set(SOUND_TREBLE, global_settings.treble);
650 sound_set(SOUND_BALANCE, global_settings.balance); 650 sound_set(SOUND_BALANCE, global_settings.balance);
651 sound_set(SOUND_VOLUME, global_settings.volume); 651 sound_set(SOUND_VOLUME, global_settings.volume);
652#if CONFIG_CODEC == SWCODEC
653 channels_set(global_settings.channel_config);
654 stereo_width_set(global_settings.stereo_width);
655#else
656 sound_set(SOUND_CHANNELS, global_settings.channel_config); 652 sound_set(SOUND_CHANNELS, global_settings.channel_config);
657 sound_set(SOUND_STEREO_WIDTH, global_settings.stereo_width); 653 sound_set(SOUND_STEREO_WIDTH, global_settings.stereo_width);
658#endif
659#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) 654#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
660 sound_set(SOUND_LOUDNESS, global_settings.loudness); 655 sound_set(SOUND_LOUDNESS, global_settings.loudness);
661 sound_set(SOUND_AVC, global_settings.avc); 656 sound_set(SOUND_AVC, global_settings.avc);
@@ -952,6 +947,7 @@ static void dec_sound_formatter(char *buffer, int buffer_size,
952 int dec = val % 10; 947 int dec = val % 10;
953 snprintf(buffer, buffer_size, "%c%d.%d %s", sign, integer, dec, unit); 948 snprintf(buffer, buffer_size, "%c%d.%d %s", sign, integer, dec, unit);
954} 949}
950
955bool set_sound(const unsigned char * string, 951bool set_sound(const unsigned char * string,
956 int* variable, 952 int* variable,
957 int setting) 953 int setting)
@@ -970,14 +966,6 @@ bool set_sound(const unsigned char * string,
970 else if (*unit == 'H') 966 else if (*unit == 'H')
971 talkunit = UNIT_HERTZ; 967 talkunit = UNIT_HERTZ;
972 if (!numdec) 968 if (!numdec)
973#if CONFIG_CODEC == SWCODEC
974 /* We need to hijack this one and send it off to apps/dsp.c instead of
975 firmware/sound.c */
976 if (setting == SOUND_STEREO_WIDTH)
977 return set_int(string, unit, talkunit, variable, &stereo_width_set,
978 steps, min, max, NULL );
979 else
980#endif
981 return set_int(string, unit, talkunit, variable, sound_callback, 969 return set_int(string, unit, talkunit, variable, sound_callback,
982 steps, min, max, NULL ); 970 steps, min, max, NULL );
983 else 971 else
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 6594db7aa3..e8ee59790d 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -352,11 +352,7 @@ const struct settings_list settings[] = {
352 352
353 CHOICE_SETTING(0,channel_config,LANG_CHANNEL,0,"channels", 353 CHOICE_SETTING(0,channel_config,LANG_CHANNEL,0,"channels",
354 "stereo,mono,custom,mono left,mono right,karaoke", 354 "stereo,mono,custom,mono left,mono right,karaoke",
355#if CONFIG_CODEC == SWCODEC
356 channels_set,
357#else
358 sound_set_channels, 355 sound_set_channels,
359#endif
360 6, ID2P(LANG_CHANNEL_STEREO), ID2P(LANG_CHANNEL_MONO), 356 6, ID2P(LANG_CHANNEL_STEREO), ID2P(LANG_CHANNEL_MONO),
361 ID2P(LANG_CHANNEL_CUSTOM), ID2P(LANG_CHANNEL_LEFT), 357 ID2P(LANG_CHANNEL_CUSTOM), ID2P(LANG_CHANNEL_LEFT),
362 ID2P(LANG_CHANNEL_RIGHT), ID2P(LANG_CHANNEL_KARAOKE)), 358 ID2P(LANG_CHANNEL_RIGHT), ID2P(LANG_CHANNEL_KARAOKE)),