diff options
author | Andrew Ryabinin <ryabinin.a.a@gmail.com> | 2013-05-12 23:23:45 +0400 |
---|---|---|
committer | Andrew Ryabinin <ryabinin.a.a@gmail.com> | 2013-05-24 11:18:16 +0400 |
commit | 0519f7e5ab6d17f90257caffad85862187bffed6 (patch) | |
tree | 775bf5d5dff034919521d646fe6b01ef5eda8d24 | |
parent | f6e179bd8eeb417e0428b8290df4ca058782e8b3 (diff) | |
download | rockbox-0519f7e5ab6d17f90257caffad85862187bffed6.tar.gz rockbox-0519f7e5ab6d17f90257caffad85862187bffed6.zip |
Add DAC's oversampling filter roll-off selection to sound settings.
Change-Id: I1258ba50dd9308f49d97965562f3a423c9bfb785
-rw-r--r-- | apps/lang/english.lang | 42 | ||||
-rw-r--r-- | apps/menus/sound_menu.c | 7 | ||||
-rw-r--r-- | apps/settings.c | 3 | ||||
-rw-r--r-- | apps/settings.h | 4 | ||||
-rw-r--r-- | apps/settings_list.c | 7 | ||||
-rw-r--r-- | firmware/export/audiohw.h | 16 | ||||
-rw-r--r-- | firmware/export/audiohw_settings.h | 3 | ||||
-rw-r--r-- | firmware/export/sound.h | 4 | ||||
-rw-r--r-- | firmware/sound.c | 10 |
9 files changed, 96 insertions, 0 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 26c0051b58..dbd0baa18a 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang | |||
@@ -13114,3 +13114,45 @@ | |||
13114 | *: "Select directories to scan" | 13114 | *: "Select directories to scan" |
13115 | </voice> | 13115 | </voice> |
13116 | </phrase> | 13116 | </phrase> |
13117 | <phrase> | ||
13118 | id: LANG_FILTER_ROLL_OFF | ||
13119 | desc: in sound settings | ||
13120 | user: core | ||
13121 | <source> | ||
13122 | *: "DAC's filter roll-off" | ||
13123 | </source> | ||
13124 | <dest> | ||
13125 | *: "DAC's filter roll-off" | ||
13126 | </dest> | ||
13127 | <voice> | ||
13128 | *: "DAC's filter roll-off" | ||
13129 | </voice> | ||
13130 | </phrase> | ||
13131 | <phrase> | ||
13132 | id: LANG_FILTER_SHARP | ||
13133 | desc: in sound settings | ||
13134 | user: core | ||
13135 | <source> | ||
13136 | *: "Sharp" | ||
13137 | </source> | ||
13138 | <dest> | ||
13139 | *: "Sharp" | ||
13140 | </dest> | ||
13141 | <voice> | ||
13142 | *: "Sharp" | ||
13143 | </voice> | ||
13144 | </phrase> | ||
13145 | <phrase> | ||
13146 | id: LANG_FILTER_SLOW | ||
13147 | desc: in sound settings | ||
13148 | user: core | ||
13149 | <source> | ||
13150 | *: "Slow" | ||
13151 | </source> | ||
13152 | <dest> | ||
13153 | *: "Slow" | ||
13154 | </dest> | ||
13155 | <voice> | ||
13156 | *: "Slow" | ||
13157 | </voice> | ||
13158 | </phrase> | ||
diff --git a/apps/menus/sound_menu.c b/apps/menus/sound_menu.c index d24a9cd695..fd192cb661 100644 --- a/apps/menus/sound_menu.c +++ b/apps/menus/sound_menu.c | |||
@@ -88,6 +88,10 @@ MENUITEM_SETTING(stereo_width, &global_settings.stereo_width, | |||
88 | MENUITEM_SETTING(depth_3d, &global_settings.depth_3d, NULL); | 88 | MENUITEM_SETTING(depth_3d, &global_settings.depth_3d, NULL); |
89 | #endif | 89 | #endif |
90 | 90 | ||
91 | #ifdef AUDIOHW_HAVE_FILTER_ROLL_OFF | ||
92 | MENUITEM_SETTING(roll_off, &global_settings.roll_off, NULL); | ||
93 | #endif | ||
94 | |||
91 | #if CONFIG_CODEC == SWCODEC | 95 | #if CONFIG_CODEC == SWCODEC |
92 | /* Crossfeed Submenu */ | 96 | /* Crossfeed Submenu */ |
93 | MENUITEM_SETTING(crossfeed, &global_settings.crossfeed, lowlatency_callback); | 97 | MENUITEM_SETTING(crossfeed, &global_settings.crossfeed, lowlatency_callback); |
@@ -183,6 +187,9 @@ MAKE_MENU(sound_settings, ID2P(LANG_SOUND_SETTINGS), NULL, Icon_Audio, | |||
183 | #ifdef AUDIOHW_HAVE_DEPTH_3D | 187 | #ifdef AUDIOHW_HAVE_DEPTH_3D |
184 | ,&depth_3d | 188 | ,&depth_3d |
185 | #endif | 189 | #endif |
190 | #ifdef AUDIOHW_HAVE_FILTER_ROLL_OFF | ||
191 | ,&roll_off | ||
192 | #endif | ||
186 | #if CONFIG_CODEC == SWCODEC | 193 | #if CONFIG_CODEC == SWCODEC |
187 | ,&crossfeed_menu, &equalizer_menu, &dithering_enabled | 194 | ,&crossfeed_menu, &equalizer_menu, &dithering_enabled |
188 | #ifdef HAVE_PITCHCONTROL | 195 | #ifdef HAVE_PITCHCONTROL |
diff --git a/apps/settings.c b/apps/settings.c index b04b91cc66..adc53cd14b 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -753,6 +753,9 @@ void sound_settings_apply(void) | |||
753 | #ifdef AUDIOHW_HAVE_DEPTH_3D | 753 | #ifdef AUDIOHW_HAVE_DEPTH_3D |
754 | sound_set(SOUND_DEPTH_3D, global_settings.depth_3d); | 754 | sound_set(SOUND_DEPTH_3D, global_settings.depth_3d); |
755 | #endif | 755 | #endif |
756 | #ifdef AUDIOHW_HAVE_FILTER_ROLL_OFF | ||
757 | sound_set(SOUND_FILTER_ROLL_OFF, global_settings.roll_off); | ||
758 | #endif | ||
756 | #ifdef AUDIOHW_HAVE_EQ | 759 | #ifdef AUDIOHW_HAVE_EQ |
757 | int b; | 760 | int b; |
758 | 761 | ||
diff --git a/apps/settings.h b/apps/settings.h index 53ad70b24f..1aec931798 100644 --- a/apps/settings.h +++ b/apps/settings.h | |||
@@ -790,6 +790,10 @@ struct user_settings | |||
790 | int depth_3d; | 790 | int depth_3d; |
791 | #endif | 791 | #endif |
792 | 792 | ||
793 | #ifdef AUDIOHW_HAVE_FILTER_ROLL_OFF | ||
794 | int roll_off; | ||
795 | #endif | ||
796 | |||
793 | #ifdef AUDIOHW_HAVE_EQ | 797 | #ifdef AUDIOHW_HAVE_EQ |
794 | /** Hardware EQ tone controls **/ | 798 | /** Hardware EQ tone controls **/ |
795 | struct hw_eq_band | 799 | struct hw_eq_band |
diff --git a/apps/settings_list.c b/apps/settings_list.c index ec34a96dc5..c1b40a64b6 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -778,6 +778,13 @@ const struct settings_list settings[] = { | |||
778 | SOUND_SETTING(0,depth_3d, LANG_DEPTH_3D, "3-d enhancement", | 778 | SOUND_SETTING(0,depth_3d, LANG_DEPTH_3D, "3-d enhancement", |
779 | SOUND_DEPTH_3D), | 779 | SOUND_DEPTH_3D), |
780 | #endif | 780 | #endif |
781 | |||
782 | #ifdef AUDIOHW_HAVE_FILTER_ROLL_OFF | ||
783 | CHOICE_SETTING(F_SOUNDSETTING, roll_off, LANG_FILTER_ROLL_OFF, 0, | ||
784 | "roll_off", "sharp,slow", sound_set_filter_roll_off, | ||
785 | 2, ID2P(LANG_FILTER_SHARP), ID2P(LANG_FILTER_SLOW)), | ||
786 | #endif | ||
787 | |||
781 | /* playback */ | 788 | /* playback */ |
782 | OFFON_SETTING(0, playlist_shuffle, LANG_SHUFFLE, false, "shuffle", NULL), | 789 | OFFON_SETTING(0, playlist_shuffle, LANG_SHUFFLE, false, "shuffle", NULL), |
783 | SYSTEM_SETTING(NVRAM(4), resume_index, -1), | 790 | SYSTEM_SETTING(NVRAM(4), resume_index, -1), |
diff --git a/firmware/export/audiohw.h b/firmware/export/audiohw.h index d1579b5b93..1cabf6f782 100644 --- a/firmware/export/audiohw.h +++ b/firmware/export/audiohw.h | |||
@@ -40,6 +40,7 @@ | |||
40 | #define MONO_VOL_CAP (1 << 10) | 40 | #define MONO_VOL_CAP (1 << 10) |
41 | #define LIN_GAIN_CAP (1 << 11) | 41 | #define LIN_GAIN_CAP (1 << 11) |
42 | #define MIC_GAIN_CAP (1 << 12) | 42 | #define MIC_GAIN_CAP (1 << 12) |
43 | #define FILTER_ROLL_OFF_CAP (1 << 13) | ||
43 | 44 | ||
44 | /* Used by every driver to export its min/max/default values for its audio | 45 | /* Used by every driver to export its min/max/default values for its audio |
45 | settings. */ | 46 | settings. */ |
@@ -269,6 +270,11 @@ enum AUDIOHW_EQ_SETTINGS | |||
269 | #define AUDIOHW_HAVE_MIC_GAIN | 270 | #define AUDIOHW_HAVE_MIC_GAIN |
270 | #endif | 271 | #endif |
271 | #endif /* HAVE_RECORDING */ | 272 | #endif /* HAVE_RECORDING */ |
273 | |||
274 | #if (AUDIOHW_CAPS & FILTER_ROLL_OFF_CAP) | ||
275 | #define AUDIOHW_HAVE_FILTER_ROLL_OFF | ||
276 | #endif | ||
277 | |||
272 | #endif /* AUDIOHW_CAPS */ | 278 | #endif /* AUDIOHW_CAPS */ |
273 | 279 | ||
274 | #ifdef HAVE_SW_TONE_CONTROLS | 280 | #ifdef HAVE_SW_TONE_CONTROLS |
@@ -454,6 +460,16 @@ void audiohw_set_eq_band_width(unsigned int band, int val); | |||
454 | void audiohw_set_depth_3d(int val); | 460 | void audiohw_set_depth_3d(int val); |
455 | #endif | 461 | #endif |
456 | 462 | ||
463 | #ifdef AUDIOHW_HAVE_FILTER_ROLL_OFF | ||
464 | /** | ||
465 | * Set DAC's oversampling filter roll-off. | ||
466 | * @param val 0 - sharp roll-off, 1 - slow roll-off. | ||
467 | * NOTE: AUDIOHW_CAPS need to contain | ||
468 | * FILTER_ROLL_OFF_CAP | ||
469 | */ | ||
470 | void audiohw_set_filter_roll_off(int val); | ||
471 | #endif | ||
472 | |||
457 | 473 | ||
458 | void audiohw_set_frequency(int fsel); | 474 | void audiohw_set_frequency(int fsel); |
459 | 475 | ||
diff --git a/firmware/export/audiohw_settings.h b/firmware/export/audiohw_settings.h index f934c96302..675ec59a7b 100644 --- a/firmware/export/audiohw_settings.h +++ b/firmware/export/audiohw_settings.h | |||
@@ -110,6 +110,9 @@ AUDIOHW_SETTINGS( | |||
110 | #if defined(AUDIOHW_HAVE_DEPTH_3D) | 110 | #if defined(AUDIOHW_HAVE_DEPTH_3D) |
111 | AUDIOHW_SETTING_ENT(DEPTH_3D, sound_set_depth_3d) | 111 | AUDIOHW_SETTING_ENT(DEPTH_3D, sound_set_depth_3d) |
112 | #endif | 112 | #endif |
113 | #if defined(AUDIOHW_HAVE_FILTER_ROLL_OFF) | ||
114 | AUDIOHW_SETTING_ENT(FILTER_ROLL_OFF, sound_set_filter_roll_off) | ||
115 | #endif | ||
113 | /* Hardware EQ tone controls */ | 116 | /* Hardware EQ tone controls */ |
114 | #if defined(AUDIOHW_HAVE_EQ) | 117 | #if defined(AUDIOHW_HAVE_EQ) |
115 | AUDIOHW_SETTING_ENT(EQ_BAND1_GAIN, sound_set_hw_eq_band1_gain) | 118 | AUDIOHW_SETTING_ENT(EQ_BAND1_GAIN, sound_set_hw_eq_band1_gain) |
diff --git a/firmware/export/sound.h b/firmware/export/sound.h index fa76c67b1f..501c6a48a1 100644 --- a/firmware/export/sound.h +++ b/firmware/export/sound.h | |||
@@ -51,6 +51,10 @@ void sound_set_treble_cutoff(int value); | |||
51 | void sound_set_depth_3d(int value); | 51 | void sound_set_depth_3d(int value); |
52 | #endif | 52 | #endif |
53 | 53 | ||
54 | #if defined(AUDIOHW_HAVE_FILTER_ROLL_OFF) | ||
55 | void sound_set_filter_roll_off(int value); | ||
56 | #endif | ||
57 | |||
54 | #ifdef AUDIOHW_HAVE_EQ | 58 | #ifdef AUDIOHW_HAVE_EQ |
55 | /* | 59 | /* |
56 | * band = SOUND_EQ_BANDb | 60 | * band = SOUND_EQ_BANDb |
diff --git a/firmware/sound.c b/firmware/sound.c index 336fe90c25..a19cc15c41 100644 --- a/firmware/sound.c +++ b/firmware/sound.c | |||
@@ -314,6 +314,16 @@ void sound_set_depth_3d(int value) | |||
314 | } | 314 | } |
315 | #endif /* AUDIOHW_HAVE_DEPTH_3D */ | 315 | #endif /* AUDIOHW_HAVE_DEPTH_3D */ |
316 | 316 | ||
317 | #if defined(AUDIOHW_HAVE_FILTER_ROLL_OFF) | ||
318 | void sound_set_filter_roll_off(int value) | ||
319 | { | ||
320 | if (!audio_is_initialized) | ||
321 | return; | ||
322 | |||
323 | audiohw_set_filter_roll_off(value); | ||
324 | } | ||
325 | #endif | ||
326 | |||
317 | #if defined(AUDIOHW_HAVE_EQ) | 327 | #if defined(AUDIOHW_HAVE_EQ) |
318 | int sound_enum_hw_eq_band_setting(unsigned int band, | 328 | int sound_enum_hw_eq_band_setting(unsigned int band, |
319 | unsigned int band_setting) | 329 | unsigned int band_setting) |