summaryrefslogtreecommitdiff
path: root/apps/playback.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playback.c')
-rw-r--r--apps/playback.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 24c268f..8b498f2 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -2028,8 +2028,11 @@ static int audio_fill_file_buffer(void)
/* Must reset the buffer before use if trashed or voice only - voice
file size shouldn't have changed so we can go straight from
AUDIOBUF_STATE_VOICED_ONLY to AUDIOBUF_STATE_INITIALIZED */
- if (buffer_state != AUDIOBUF_STATE_INITIALIZED)
+ if (buffer_state != AUDIOBUF_STATE_INITIALIZED ||
+ !pcmbuf_is_same_size())
+ {
audio_reset_buffer(AUDIOBUF_STATE_INITIALIZED);
+ }
logf("Starting buffer fill");
@@ -2510,6 +2513,11 @@ static void audio_start_playback(size_t offset, unsigned int flags)
#ifndef PLATFORM_HAS_VOLUME_CHANGE
sound_set_volume(global_settings.volume);
#endif
+#ifdef HAVE_PLAY_FREQ
+ settings_apply_play_freq(global_settings.play_frequency, true);
+#endif
+ pcmbuf_update_frequency();
+
/* Be sure channel is audible */
pcmbuf_fade(false, true);
@@ -3755,6 +3763,7 @@ void INIT_ATTR playback_init(void)
mutex_init(&id3_mutex);
track_list_init();
buffering_init();
+ pcmbuf_update_frequency();
add_event(PLAYBACK_EVENT_VOICE_PLAYING, false, playback_voice_event);
#ifdef HAVE_CROSSFADE
/* Set crossfade setting for next buffer init which should be about... */