diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/buffering.c | 33 | ||||
-rw-r--r-- | apps/buffering.h | 5 | ||||
-rw-r--r-- | apps/playback.c | 5 |
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 | ||
1192 | void 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 */ |
1193 | bool buffering_init(char *buf, size_t buflen) | 1208 | bool 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 */ |
40 | bool buffering_init(char *buf, size_t buflen); | 40 | void buffering_init(void); |
41 | |||
42 | /* Reset the buffering system */ | ||
43 | bool 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 | ||