diff options
Diffstat (limited to 'apps/settings_list.c')
-rw-r--r-- | apps/settings_list.c | 44 |
1 files changed, 35 insertions, 9 deletions
diff --git a/apps/settings_list.c b/apps/settings_list.c index 32b1e38999..59719f2e08 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include "kernel.h" | 41 | #include "kernel.h" |
42 | #include "open_plugin.h" | 42 | #include "open_plugin.h" |
43 | #include "misc.h" | 43 | #include "misc.h" |
44 | #include "playback.h" | ||
44 | #ifdef HAVE_REMOTE_LCD | 45 | #ifdef HAVE_REMOTE_LCD |
45 | #include "lcd-remote.h" | 46 | #include "lcd-remote.h" |
46 | #endif | 47 | #endif |
@@ -387,7 +388,7 @@ static const char* list_pad_formatter(char *buffer, size_t buffer_size, | |||
387 | { | 388 | { |
388 | switch (val) | 389 | switch (val) |
389 | { | 390 | { |
390 | case -1: return str(LANG_AUTOMATIC); | 391 | case -1: return str(LANG_AUTO); |
391 | case 0: return str(LANG_OFF); | 392 | case 0: return str(LANG_OFF); |
392 | default: break; | 393 | default: break; |
393 | } | 394 | } |
@@ -399,7 +400,7 @@ static int32_t list_pad_getlang(int value, int unit) | |||
399 | { | 400 | { |
400 | switch (value) | 401 | switch (value) |
401 | { | 402 | { |
402 | case -1: return LANG_AUTOMATIC; | 403 | case -1: return LANG_AUTO; |
403 | case 0: return LANG_OFF; | 404 | case 0: return LANG_OFF; |
404 | default: return TALK_ID(value, unit); | 405 | default: return TALK_ID(value, unit); |
405 | } | 406 | } |
@@ -619,6 +620,30 @@ static void eq_set_default(void* setting, void* defaultval) | |||
619 | memcpy(setting, defaultval, sizeof(struct eq_band_setting)); | 620 | memcpy(setting, defaultval, sizeof(struct eq_band_setting)); |
620 | } | 621 | } |
621 | 622 | ||
623 | #ifdef HAVE_PLAY_FREQ | ||
624 | static const char* formatter_freq_unit_0_is_auto(char *buffer, size_t buffer_size, | ||
625 | int value, const char *unit) | ||
626 | { | ||
627 | if (value == 0) | ||
628 | return str(LANG_AUTO); | ||
629 | else | ||
630 | return db_format(buffer, buffer_size, value / 100, unit); | ||
631 | } | ||
632 | |||
633 | static int32_t getlang_freq_unit_0_is_auto(int value, int unit) | ||
634 | { | ||
635 | if (value == 0) | ||
636 | return LANG_AUTO; | ||
637 | else | ||
638 | return talk_value_decimal(value, unit, 3, false); | ||
639 | } | ||
640 | |||
641 | static void playback_frequency_callback(int sample_rate_hz) | ||
642 | { | ||
643 | audio_set_playback_frequency(sample_rate_hz); | ||
644 | } | ||
645 | #endif /* HAVE_PLAY_FREQ */ | ||
646 | |||
622 | /* perform shuffle/unshuffle of the current playlist based on the boolean provided */ | 647 | /* perform shuffle/unshuffle of the current playlist based on the boolean provided */ |
623 | static void shuffle_playlist_callback(bool shuffle) | 648 | static void shuffle_playlist_callback(bool shuffle) |
624 | { | 649 | { |
@@ -954,16 +979,17 @@ const struct settings_list settings[] = { | |||
954 | #endif | 979 | #endif |
955 | ), /* CHOICE_SETTING( repeat_mode ) */ | 980 | ), /* CHOICE_SETTING( repeat_mode ) */ |
956 | #ifdef HAVE_PLAY_FREQ | 981 | #ifdef HAVE_PLAY_FREQ |
957 | STRINGCHOICE_SETTING(0, play_frequency, LANG_FREQUENCY, 0, | 982 | TABLE_SETTING(F_SOUNDSETTING|F_CB_ON_SELECT_ONLY|F_CB_ONLY_IF_CHANGED, |
983 | play_frequency, LANG_FREQUENCY, 0, "playback frequency", "auto", | ||
984 | UNIT_KHZ, formatter_freq_unit_0_is_auto, | ||
985 | getlang_freq_unit_0_is_auto, | ||
986 | playback_frequency_callback, | ||
958 | #if HAVE_PLAY_FREQ >= 192 | 987 | #if HAVE_PLAY_FREQ >= 192 |
959 | "playback frequency", "auto,44.1 kHz,48 kHz,88.2 kHz,96 kHz,176.4 kHz,192 kHz", NULL, 7, | 988 | 7,0,SAMPR_44,SAMPR_48,SAMPR_88,SAMPR_96,SAMPR_176,SAMPR_192), |
960 | LANG_AUTOMATIC, TALK_ID_DECIMAL(441, 1, UNIT_KHZ), TALK_ID(48, UNIT_KHZ), TALK_ID_DECIMAL(882, 1, UNIT_KHZ), TALK_ID(96, UNIT_KHZ), TALK_ID_DECIMAL(1764, 1, UNIT_KHZ), TALK_ID(192, UNIT_KHZ)), | ||
961 | #elif HAVE_PLAY_FREQ >= 96 | 989 | #elif HAVE_PLAY_FREQ >= 96 |
962 | "playback frequency", "auto,44.1 kHz,48 kHz,88.2 kHz,96 kHz", NULL, 5, | 990 | 5,0,SAMPR_44,SAMPR_48,SAMPR_88,SAMPR_96), |
963 | LANG_AUTOMATIC, TALK_ID_DECIMAL(441, 1, UNIT_KHZ), TALK_ID(48, UNIT_KHZ), TALK_ID_DECIMAL(882, 1, UNIT_KHZ), TALK_ID(96, UNIT_KHZ)), | ||
964 | #elif HAVE_PLAY_FREQ >= 48 | 991 | #elif HAVE_PLAY_FREQ >= 48 |
965 | "playback frequency", "auto,44.1 kHz,48 kHz", NULL, 3, | 992 | 3,0,SAMPR_44,SAMPR_48), |
966 | LANG_AUTOMATIC, TALK_ID_DECIMAL(441, 1, UNIT_KHZ), TALK_ID(48, UNIT_KHZ)), | ||
967 | #else | 993 | #else |
968 | #error "HAVE_PLAY_FREQ < 48???" | 994 | #error "HAVE_PLAY_FREQ < 48???" |
969 | #endif | 995 | #endif |