summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/pcmbuf.c6
-rw-r--r--apps/pcmbuf.h1
-rw-r--r--apps/playback.c2
3 files changed, 8 insertions, 1 deletions
diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c
index 773e97cce0..b32cb4c429 100644
--- a/apps/pcmbuf.c
+++ b/apps/pcmbuf.c
@@ -580,6 +580,12 @@ static void init_buffer_state(void)
580 chunk_transidx = INVALID_BUF_INDEX; 580 chunk_transidx = INVALID_BUF_INDEX;
581} 581}
582 582
583/* call prior to init to get bytes required */
584size_t pcmbuf_size_reqd(void)
585{
586 return get_next_required_pcmbuf_chunks() * PCMBUF_CHUNK_SIZE;
587}
588
583/* Initialize the PCM buffer. The structure looks like this: 589/* Initialize the PCM buffer. The structure looks like this:
584 * ...|---------PCMBUF---------|GUARDBUF|DESCS| */ 590 * ...|---------PCMBUF---------|GUARDBUF|DESCS| */
585size_t pcmbuf_init(void *bufend) 591size_t pcmbuf_init(void *bufend)
diff --git a/apps/pcmbuf.h b/apps/pcmbuf.h
index 33422bbee5..a9daed23cc 100644
--- a/apps/pcmbuf.h
+++ b/apps/pcmbuf.h
@@ -28,6 +28,7 @@ void *pcmbuf_request_buffer(int *count);
28void pcmbuf_write_complete(int count, unsigned long elapsed, off_t offset); 28void pcmbuf_write_complete(int count, unsigned long elapsed, off_t offset);
29 29
30/* Init */ 30/* Init */
31size_t pcmbuf_size_reqd(void);
31size_t pcmbuf_init(void *bufend); 32size_t pcmbuf_init(void *bufend);
32 33
33/* Playback */ 34/* Playback */
diff --git a/apps/playback.c b/apps/playback.c
index 9fe6da6d0e..fb2b6eb1ef 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -1040,7 +1040,7 @@ static void audio_reset_buffer(void)
1040 core_free(audiobuf_handle); 1040 core_free(audiobuf_handle);
1041 audiobuf_handle = 0; 1041 audiobuf_handle = 0;
1042 } 1042 }
1043 if (core_allocatable() < (1 << 10)) 1043 if (core_allocatable() < pcmbuf_size_reqd())
1044 talk_buffer_set_policy(TALK_BUFFER_LOOSE); /* back off voice buffer */ 1044 talk_buffer_set_policy(TALK_BUFFER_LOOSE); /* back off voice buffer */
1045 audiobuf_handle = core_alloc_maximum(&filebuflen, &ops); 1045 audiobuf_handle = core_alloc_maximum(&filebuflen, &ops);
1046 1046