summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/buffering.c33
-rw-r--r--apps/buffering.h5
-rw-r--r--apps/playback.c5
3 files changed, 24 insertions, 19 deletions
diff --git a/apps/buffering.c b/apps/buffering.c
index b8fd16f870..08726a5582 100644
--- a/apps/buffering.c
+++ b/apps/buffering.c
@@ -1189,8 +1189,23 @@ void buffering_thread(void)
1189 } 1189 }
1190} 1190}
1191 1191
1192void buffering_init(void) {
1193 mutex_init(&llist_mutex);
1194
1195 conf_filechunk = BUFFERING_DEFAULT_FILECHUNK;
1196 conf_watermark = BUFFERING_DEFAULT_WATERMARK;
1197
1198 buffering_thread_p = create_thread( buffering_thread, buffering_stack,
1199 sizeof(buffering_stack), 0,
1200 buffering_thread_name IF_PRIO(, PRIORITY_BUFFERING)
1201 IF_COP(, CPU));
1202
1203 queue_init(&buffering_queue, true);
1204 queue_enable_queue_send(&buffering_queue, &buffering_queue_sender_list);
1205}
1206
1192/* Initialise the buffering subsystem */ 1207/* Initialise the buffering subsystem */
1193bool buffering_init(char *buf, size_t buflen) 1208bool buffering_reset(char *buf, size_t buflen)
1194{ 1209{
1195 if (!buf || !buflen) 1210 if (!buf || !buflen)
1196 return false; 1211 return false;
@@ -1211,27 +1226,11 @@ bool buffering_init(char *buf, size_t buflen)
1211 buffer_callback_count = 0; 1226 buffer_callback_count = 0;
1212 memset(buffer_low_callback_funcs, 0, sizeof(buffer_low_callback_funcs)); 1227 memset(buffer_low_callback_funcs, 0, sizeof(buffer_low_callback_funcs));
1213 1228
1214 mutex_init(&llist_mutex);
1215
1216 conf_filechunk = BUFFERING_DEFAULT_FILECHUNK;
1217 conf_watermark = BUFFERING_DEFAULT_WATERMARK;
1218
1219 /* Set the high watermark as 75% full...or 25% empty :) */ 1229 /* Set the high watermark as 75% full...or 25% empty :) */
1220#if MEM > 8 1230#if MEM > 8
1221 high_watermark = 3*buflen / 4; 1231 high_watermark = 3*buflen / 4;
1222#endif 1232#endif
1223 1233
1224 if (buffering_thread_p == NULL)
1225 {
1226 buffering_thread_p = create_thread( buffering_thread, buffering_stack,
1227 sizeof(buffering_stack), 0,
1228 buffering_thread_name IF_PRIO(, PRIORITY_BUFFERING)
1229 IF_COP(, CPU));
1230
1231 queue_init(&buffering_queue, true);
1232 queue_enable_queue_send(&buffering_queue, &buffering_queue_sender_list);
1233 }
1234
1235 return true; 1234 return true;
1236} 1235}
1237 1236
diff --git a/apps/buffering.h b/apps/buffering.h
index a5ad1e283b..29771adc1a 100644
--- a/apps/buffering.h
+++ b/apps/buffering.h
@@ -37,7 +37,10 @@ enum data_type {
37 37
38 38
39/* Initialise the buffering subsystem */ 39/* Initialise the buffering subsystem */
40bool buffering_init(char *buf, size_t buflen); 40void buffering_init(void);
41
42/* Reset the buffering system */
43bool buffering_reset(char *buf, size_t buflen);
41 44
42 45
43/*************************************************************************** 46/***************************************************************************
diff --git a/apps/playback.c b/apps/playback.c
index c26a39eaa1..27610e01fb 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -3067,7 +3067,7 @@ static void audio_reset_buffer(void)
3067 will already be line aligned */ 3067 will already be line aligned */
3068 filebuflen &= ~3; 3068 filebuflen &= ~3;
3069 3069
3070 buffering_init(filebuf, filebuflen); 3070 buffering_reset(filebuf, filebuflen);
3071 3071
3072 /* Clear any references to the file buffer */ 3072 /* Clear any references to the file buffer */
3073 buffer_state = BUFFER_STATE_INITIALIZED; 3073 buffer_state = BUFFER_STATE_INITIALIZED;
@@ -3361,6 +3361,9 @@ void audio_init(void)
3361 /* Set crossfade setting for next buffer init which should be about... */ 3361 /* Set crossfade setting for next buffer init which should be about... */
3362 pcmbuf_crossfade_enable(global_settings.crossfade); 3362 pcmbuf_crossfade_enable(global_settings.crossfade);
3363 3363
3364 /* initialize the buffering system */
3365
3366 buffering_init();
3364 /* ...now! Set up the buffers */ 3367 /* ...now! Set up the buffers */
3365 audio_reset_buffer(); 3368 audio_reset_buffer();
3366 3369