diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/pcmbuf.c | 6 | ||||
-rw-r--r-- | apps/pcmbuf.h | 1 | ||||
-rw-r--r-- | apps/playback.c | 2 |
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 */ | ||
584 | size_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| */ |
585 | size_t pcmbuf_init(void *bufend) | 591 | size_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); | |||
28 | void pcmbuf_write_complete(int count, unsigned long elapsed, off_t offset); | 28 | void pcmbuf_write_complete(int count, unsigned long elapsed, off_t offset); |
29 | 29 | ||
30 | /* Init */ | 30 | /* Init */ |
31 | size_t pcmbuf_size_reqd(void); | ||
31 | size_t pcmbuf_init(void *bufend); | 32 | size_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 | ||