diff options
Diffstat (limited to 'apps/sound_menu.c')
-rw-r--r-- | apps/sound_menu.c | 281 |
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 | ||
64 | static bool volume(void) | ||
65 | { | ||
66 | return set_sound(str(LANG_VOLUME), &global_settings.volume, SOUND_VOLUME); | ||
67 | } | ||
68 | |||
69 | static bool balance(void) | ||
70 | { | ||
71 | return set_sound(str(LANG_BALANCE), &global_settings.balance, | ||
72 | SOUND_BALANCE); | ||
73 | } | ||
74 | |||
75 | #ifndef HAVE_TLV320 | ||
76 | static bool bass(void) | ||
77 | { | ||
78 | return set_sound(str(LANG_BASS), &global_settings.bass, SOUND_BASS); | ||
79 | } | ||
80 | |||
81 | static 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 | ||
88 | static 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 | |||
95 | static 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 | |||
108 | static 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 | |||
115 | static 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 | |||
122 | static 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 | |||
129 | static 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 | |||
136 | static 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 | |||
143 | static 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 | |||
149 | static 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 | |||
156 | static 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 | |||
176 | static 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) | ||
187 | static bool loudness(void) | ||
188 | { | ||
189 | return set_sound(str(LANG_LOUDNESS), &global_settings.loudness, | ||
190 | SOUND_LOUDNESS); | ||
191 | } | ||
192 | |||
193 | static bool mdb_strength(void) | ||
194 | { | ||
195 | return set_sound(str(LANG_MDB_STRENGTH), &global_settings.mdb_strength, | ||
196 | SOUND_MDB_STRENGTH); | ||
197 | } | ||
198 | |||
199 | static bool mdb_harmonics(void) | ||
200 | { | ||
201 | return set_sound(str(LANG_MDB_HARMONICS), &global_settings.mdb_harmonics, | ||
202 | SOUND_MDB_HARMONICS); | ||
203 | } | ||
204 | |||
205 | static bool mdb_center(void) | ||
206 | { | ||
207 | return set_sound(str(LANG_MDB_CENTER), &global_settings.mdb_center, | ||
208 | SOUND_MDB_CENTER); | ||
209 | } | ||
210 | |||
211 | static bool mdb_shape(void) | ||
212 | { | ||
213 | return set_sound(str(LANG_MDB_SHAPE), &global_settings.mdb_shape, | ||
214 | SOUND_MDB_SHAPE); | ||
215 | } | ||
216 | |||
217 | static void set_mdb_enable(bool value) | ||
218 | { | ||
219 | sound_set_mdb_enable((int)value); | ||
220 | } | ||
221 | |||
222 | static 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 | |||
231 | static void set_superbass(bool value) | ||
232 | { | ||
233 | sound_set_superbass((int)value); | ||
234 | } | ||
235 | |||
236 | static 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 | |||
245 | static 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 |
260 | static bool recsource(void) | 65 | static 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 | ||
687 | static 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 | |||
706 | static bool stereo_width(void) | ||
707 | { | ||
708 | return set_sound(str(LANG_STEREO_WIDTH), &global_settings.stereo_width, | ||
709 | SOUND_STEREO_WIDTH); | ||
710 | } | ||
711 | |||
712 | bool 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 |
776 | enum trigger_menu_option | 495 | enum trigger_menu_option |