summaryrefslogtreecommitdiff
path: root/apps/sound_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/sound_menu.c')
-rw-r--r--apps/sound_menu.c281
1 files changed, 0 insertions, 281 deletions
diff --git a/apps/sound_menu.c b/apps/sound_menu.c
index f7ddc430cc..07f9d4b352 100644
--- a/apps/sound_menu.c
+++ b/apps/sound_menu.c
@@ -61,201 +61,6 @@
61#endif 61#endif
62#include "action.h" 62#include "action.h"
63 63
64static bool volume(void)
65{
66 return set_sound(str(LANG_VOLUME), &global_settings.volume, SOUND_VOLUME);
67}
68
69static bool balance(void)
70{
71 return set_sound(str(LANG_BALANCE), &global_settings.balance,
72 SOUND_BALANCE);
73}
74
75#ifndef HAVE_TLV320
76static bool bass(void)
77{
78 return set_sound(str(LANG_BASS), &global_settings.bass, SOUND_BASS);
79}
80
81static bool treble(void)
82{
83 return set_sound(str(LANG_TREBLE), &global_settings.treble, SOUND_TREBLE);
84}
85#endif
86
87#if CONFIG_CODEC == SWCODEC
88static void crossfeed_format(char* buffer, int buffer_size, int value,
89 const char* unit)
90{
91 snprintf(buffer, buffer_size, "%s%d.%d %s", value == 0 ? " " : "-",
92 value / 10, value % 10, unit);
93}
94
95static bool crossfeed_enabled(void)
96{
97 bool result = set_bool_options(str(LANG_CROSSFEED),
98 &global_settings.crossfeed,
99 STR(LANG_ON),
100 STR(LANG_OFF),
101 NULL);
102
103 dsp_set_crossfeed(global_settings.crossfeed);
104
105 return result;
106}
107
108static bool crossfeed_direct_gain(void)
109{
110 return set_int(str(LANG_CROSSFEED_DIRECT_GAIN), str(LANG_UNIT_DB),
111 UNIT_DB, &global_settings.crossfeed_direct_gain,
112 &dsp_set_crossfeed_direct_gain, 5, 0, 60, crossfeed_format);
113}
114
115static void crossfeed_cross_gain_helper(int val)
116{
117 dsp_set_crossfeed_cross_params(val,
118 val + global_settings.crossfeed_hf_attenuation,
119 global_settings.crossfeed_hf_cutoff);
120}
121
122static bool crossfeed_cross_gain(void)
123{
124 return set_int(str(LANG_CROSSFEED_CROSS_GAIN), str(LANG_UNIT_DB),
125 UNIT_DB, &global_settings.crossfeed_cross_gain,
126 &crossfeed_cross_gain_helper, 5, 30, 120, crossfeed_format);
127}
128
129static void crossfeed_hf_att_helper(int val)
130{
131 dsp_set_crossfeed_cross_params(global_settings.crossfeed_cross_gain,
132 global_settings.crossfeed_cross_gain + val,
133 global_settings.crossfeed_hf_cutoff);
134}
135
136static bool crossfeed_hf_attenuation(void)
137{
138 return set_int(str(LANG_CROSSFEED_HF_ATTENUATION), str(LANG_UNIT_DB),
139 UNIT_DB, &global_settings.crossfeed_hf_attenuation,
140 &crossfeed_hf_att_helper, 5, 60, 240, crossfeed_format);
141}
142
143static void crossfeed_hf_cutoff_helper(int val)
144{
145 dsp_set_crossfeed_cross_params(global_settings.crossfeed_cross_gain,
146 global_settings.crossfeed_cross_gain + global_settings.crossfeed_hf_attenuation, val);
147}
148
149static bool crossfeed_hf_cutoff(void)
150{
151 return set_int(str(LANG_CROSSFEED_HF_CUTOFF), str(LANG_UNIT_HERTZ),
152 UNIT_HERTZ, &global_settings.crossfeed_hf_cutoff, &crossfeed_hf_cutoff_helper, 100, 500, 2000,
153 NULL);
154}
155
156static bool crossfeed_menu(void)
157{
158 int m;
159 bool result;
160 static const struct menu_item items[] = {
161 { ID2P(LANG_CROSSFEED), crossfeed_enabled },
162 { ID2P(LANG_CROSSFEED_DIRECT_GAIN), crossfeed_direct_gain },
163 { ID2P(LANG_CROSSFEED_CROSS_GAIN), crossfeed_cross_gain },
164 { ID2P(LANG_CROSSFEED_HF_ATTENUATION), crossfeed_hf_attenuation },
165 { ID2P(LANG_CROSSFEED_HF_CUTOFF), crossfeed_hf_cutoff },
166 };
167
168 m=menu_init(items, sizeof(items) / sizeof(*items), NULL,
169 NULL, NULL, NULL);
170 result = menu_run(m);
171 menu_exit(m);
172
173 return result;
174}
175
176static bool dithering_enable(void)
177{
178 return set_bool_options(str(LANG_DITHERING),
179 &global_settings.dithering_enabled,
180 STR(LANG_SET_BOOL_YES),
181 STR(LANG_SET_BOOL_NO),
182 dsp_dither_enable);
183}
184#endif
185
186#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
187static bool loudness(void)
188{
189 return set_sound(str(LANG_LOUDNESS), &global_settings.loudness,
190 SOUND_LOUDNESS);
191}
192
193static bool mdb_strength(void)
194{
195 return set_sound(str(LANG_MDB_STRENGTH), &global_settings.mdb_strength,
196 SOUND_MDB_STRENGTH);
197}
198
199static bool mdb_harmonics(void)
200{
201 return set_sound(str(LANG_MDB_HARMONICS), &global_settings.mdb_harmonics,
202 SOUND_MDB_HARMONICS);
203}
204
205static bool mdb_center(void)
206{
207 return set_sound(str(LANG_MDB_CENTER), &global_settings.mdb_center,
208 SOUND_MDB_CENTER);
209}
210
211static bool mdb_shape(void)
212{
213 return set_sound(str(LANG_MDB_SHAPE), &global_settings.mdb_shape,
214 SOUND_MDB_SHAPE);
215}
216
217static void set_mdb_enable(bool value)
218{
219 sound_set_mdb_enable((int)value);
220}
221
222static bool mdb_enable(void)
223{
224 return set_bool_options(str(LANG_MDB_ENABLE),
225 &global_settings.mdb_enable,
226 STR(LANG_SET_BOOL_YES),
227 STR(LANG_SET_BOOL_NO),
228 set_mdb_enable);
229}
230
231static void set_superbass(bool value)
232{
233 sound_set_superbass((int)value);
234}
235
236static bool superbass(void)
237{
238 return set_bool_options(str(LANG_SUPERBASS),
239 &global_settings.superbass,
240 STR(LANG_SET_BOOL_YES),
241 STR(LANG_SET_BOOL_NO),
242 set_superbass);
243}
244
245static bool avc(void)
246{
247 static const struct opt_items names[] = {
248 { STR(LANG_OFF) },
249 { "20ms", TALK_ID(20, UNIT_MS) },
250 { "2s", TALK_ID(2, UNIT_SEC) },
251 { "4s", TALK_ID(4, UNIT_SEC) },
252 { "8s", TALK_ID(8, UNIT_SEC) }
253 };
254 return set_option(str(LANG_DECAY), &global_settings.avc, INT,
255 names, 5, sound_set_avc);
256}
257#endif
258
259#ifdef HAVE_RECORDING 64#ifdef HAVE_RECORDING
260static bool recsource(void) 65static bool recsource(void)
261{ 66{
@@ -684,93 +489,7 @@ static bool agc_cliptime(void)
684#endif /* HAVE_AGC */ 489#endif /* HAVE_AGC */
685#endif /* HAVE_RECORDING */ 490#endif /* HAVE_RECORDING */
686 491
687static bool chanconf(void)
688{
689 static const struct opt_items names[] = {
690 { STR(LANG_CHANNEL_STEREO) },
691 { STR(LANG_CHANNEL_MONO) },
692 { STR(LANG_CHANNEL_CUSTOM) },
693 { STR(LANG_CHANNEL_LEFT) },
694 { STR(LANG_CHANNEL_RIGHT) },
695 { STR(LANG_CHANNEL_KARAOKE) }
696 };
697#if CONFIG_CODEC == SWCODEC
698 return set_option(str(LANG_CHANNEL), &global_settings.channel_config, INT,
699 names, 6, channels_set);
700#else
701 return set_option(str(LANG_CHANNEL), &global_settings.channel_config, INT,
702 names, 6, sound_set_channels);
703#endif
704}
705
706static bool stereo_width(void)
707{
708 return set_sound(str(LANG_STEREO_WIDTH), &global_settings.stereo_width,
709 SOUND_STEREO_WIDTH);
710}
711
712bool sound_menu(void)
713{
714 int m;
715 bool done = false;
716 int selected;
717 static const struct menu_item items[] = {
718 { ID2P(LANG_VOLUME), volume },
719#ifndef HAVE_TLV320
720 { ID2P(LANG_BASS), bass },
721 { ID2P(LANG_TREBLE), treble },
722#endif
723 { ID2P(LANG_BALANCE), balance },
724 { ID2P(LANG_CHANNEL_MENU), chanconf },
725 { ID2P(LANG_STEREO_WIDTH), stereo_width },
726#if CONFIG_CODEC == SWCODEC
727 { ID2P(LANG_CROSSFEED), crossfeed_menu },
728 { ID2P(LANG_EQUALIZER), eq_menu },
729 { ID2P(LANG_DITHERING), dithering_enable },
730#endif
731#ifdef HAVE_WM8758
732 { ID2P(LANG_EQUALIZER_HARDWARE), eq_hw_menu },
733#endif
734#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
735 { ID2P(LANG_LOUDNESS), loudness },
736 { ID2P(LANG_AUTOVOL), avc },
737 { ID2P(LANG_SUPERBASS), superbass },
738 { ID2P(LANG_MDB_ENABLE), mdb_enable },
739 { ID2P(LANG_MDB_STRENGTH), mdb_strength },
740 { ID2P(LANG_MDB_HARMONICS), mdb_harmonics },
741 { ID2P(LANG_MDB_CENTER), mdb_center },
742 { ID2P(LANG_MDB_SHAPE), mdb_shape },
743#endif
744 };
745
746 m=menu_init( items, sizeof(items) / sizeof(*items), NULL,
747 NULL, NULL, NULL);
748 while (!done)
749 {
750 switch (selected=menu_show(m))
751 {
752 case MENU_SELECTED_EXIT:
753 case MENU_ATTACHED_USB:
754 done = true;
755 break;
756 default:
757#if CONFIG_CODEC == SWCODEC
758 pcmbuf_set_low_latency(true);
759#endif
760 if (items[selected].function &&
761 items[selected].function())
762 done = true;
763
764#if CONFIG_CODEC == SWCODEC
765 pcmbuf_set_low_latency(false);
766#endif
767 gui_syncstatusbar_draw(&statusbars, true);
768 }
769 }
770 menu_exit(m);
771 492
772 return selected == MENU_SELECTED_EXIT ? false : true;
773}
774 493
775#ifdef HAVE_RECORDING 494#ifdef HAVE_RECORDING
776enum trigger_menu_option 495enum trigger_menu_option