summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/playback.c9
-rw-r--r--firmware/export/pcm_playback.h1
2 files changed, 7 insertions, 3 deletions
diff --git a/apps/playback.c b/apps/playback.c
index dccf632dc9..55829a0031 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -986,7 +986,9 @@ void audio_update_trackinfo(void)
986 if (buf_ridx >= codecbuflen) 986 if (buf_ridx >= codecbuflen)
987 buf_ridx -= codecbuflen; 987 buf_ridx -= codecbuflen;
988 988
989 pcm_crossfade_init(); 989 if (!pcm_crossfade_init())
990 pcm_flush_audio();
991
990 if (!filling) 992 if (!filling)
991 pcm_set_boost_mode(false); 993 pcm_set_boost_mode(false);
992 } else { 994 } else {
@@ -1140,7 +1142,8 @@ void audio_thread(void)
1140 ci.stop_codec = true; 1142 ci.stop_codec = true;
1141 ci.reload_codec = false; 1143 ci.reload_codec = false;
1142 ci.seek_time = 0; 1144 ci.seek_time = 0;
1143 pcm_flush_audio(); 1145 if (!pcm_crossfade_init())
1146 pcm_flush_audio();
1144 audio_play_start((int)ev.data); 1147 audio_play_start((int)ev.data);
1145 break ; 1148 break ;
1146 1149
@@ -1349,7 +1352,7 @@ static void initiate_track_change(int peek_index)
1349 } 1352 }
1350 1353
1351 else if (!pcm_crossfade_init()) { 1354 else if (!pcm_crossfade_init()) {
1352 //pcm_play_stop(); 1355 pcm_flush_audio();
1353 } 1356 }
1354} 1357}
1355 1358
diff --git a/firmware/export/pcm_playback.h b/firmware/export/pcm_playback.h
index 554e975354..eb952d3a25 100644
--- a/firmware/export/pcm_playback.h
+++ b/firmware/export/pcm_playback.h
@@ -46,6 +46,7 @@ void pcm_play_set_watermark(int numbytes, void (*callback)(int bytes_left));
46 46
47void pcm_set_boost_mode(bool state); 47void pcm_set_boost_mode(bool state);
48bool pcm_is_lowdata(void); 48bool pcm_is_lowdata(void);
49void pcm_flush_audio(void);
49void pcm_flush_buffer(long length); 50void pcm_flush_buffer(long length);
50bool pcm_crossfade_init(void); 51bool pcm_crossfade_init(void);
51void audiobuffer_add_event(void (*event_handler)(void)); 52void audiobuffer_add_event(void (*event_handler)(void));