diff options
Diffstat (limited to 'apps/settings.c')
-rw-r--r-- | apps/settings.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/apps/settings.c b/apps/settings.c index adc53cd14b..cf51b0793c 100644 --- a/apps/settings.c +++ b/apps/settings.c | |||
@@ -85,6 +85,11 @@ struct system_status global_status; | |||
85 | #ifdef HAVE_RECORDING | 85 | #ifdef HAVE_RECORDING |
86 | #include "enc_config.h" | 86 | #include "enc_config.h" |
87 | #endif | 87 | #endif |
88 | #include "pcm_sampr.h" | ||
89 | #ifdef HAVE_PLAY_FREQ | ||
90 | #include "pcm_mixer.h" | ||
91 | #include "dsp_core.h" | ||
92 | #endif | ||
88 | #endif /* CONFIG_CODEC == SWCODEC */ | 93 | #endif /* CONFIG_CODEC == SWCODEC */ |
89 | 94 | ||
90 | #define NVRAM_BLOCK_SIZE 44 | 95 | #define NVRAM_BLOCK_SIZE 44 |
@@ -720,6 +725,36 @@ void settings_apply_pm_range(void) | |||
720 | } | 725 | } |
721 | #endif /* HAVE_LCD_BITMAP */ | 726 | #endif /* HAVE_LCD_BITMAP */ |
722 | 727 | ||
728 | #ifdef HAVE_PLAY_FREQ | ||
729 | void settings_apply_play_freq(int value, bool playback) | ||
730 | { | ||
731 | static const unsigned long play_sampr[] = { SAMPR_44, SAMPR_48 }; | ||
732 | static int prev_setting = 0; | ||
733 | |||
734 | if ((unsigned)value >= ARRAYLEN(play_sampr)) | ||
735 | value = 0; | ||
736 | |||
737 | bool changed = value != prev_setting; | ||
738 | prev_setting = value; | ||
739 | |||
740 | long offset = 0; | ||
741 | bool playing = changed && !playback && | ||
742 | audio_status() == AUDIO_STATUS_PLAY; | ||
743 | |||
744 | if (playing) | ||
745 | offset = audio_current_track()->offset; | ||
746 | |||
747 | if (changed && !playback) | ||
748 | audio_hard_stop(); | ||
749 | |||
750 | /* Other sub-areas of playback pick it up from the mixer */ | ||
751 | mixer_set_frequency(play_sampr[value]); | ||
752 | |||
753 | if (playing) | ||
754 | audio_play(offset); | ||
755 | } | ||
756 | #endif /* HAVE_PLAY_FREQ */ | ||
757 | |||
723 | void sound_settings_apply(void) | 758 | void sound_settings_apply(void) |
724 | { | 759 | { |
725 | #ifdef AUDIOHW_HAVE_BASS | 760 | #ifdef AUDIOHW_HAVE_BASS |
@@ -976,6 +1011,9 @@ void settings_apply(bool read_disk) | |||
976 | set_codepage(global_settings.default_codepage); | 1011 | set_codepage(global_settings.default_codepage); |
977 | CHART("<set_codepage"); | 1012 | CHART("<set_codepage"); |
978 | 1013 | ||
1014 | #ifdef HAVE_PLAY_FREQ | ||
1015 | settings_apply_play_freq(global_settings.play_frequency, false); | ||
1016 | #endif | ||
979 | #if CONFIG_CODEC == SWCODEC | 1017 | #if CONFIG_CODEC == SWCODEC |
980 | #ifdef HAVE_CROSSFADE | 1018 | #ifdef HAVE_CROSSFADE |
981 | audio_set_crossfade(global_settings.crossfade); | 1019 | audio_set_crossfade(global_settings.crossfade); |