diff options
Diffstat (limited to 'apps/playback.c')
| -rw-r--r-- | apps/playback.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/apps/playback.c b/apps/playback.c index c74c606..fe9bd57 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -738,7 +738,7 @@ static void audio_reset_buffer(void) { /* * Layout audio buffer as follows: - * [[|TALK]|SCRATCH|BUFFERING|PCM|] + * [[|TALK]|SCRATCH|BUFFERING|PCM|[VOICE|]] */ /* see audio_get_recording_buffer if this is modified */ @@ -755,6 +755,18 @@ static void audio_reset_buffer(void) ALIGN_BUFFER(filebuf, filebuflen, sizeof (intptr_t)); + if (talk_voice_required()) + { + /* Need a space for voice PCM output */ + allocsize = voicebuf_init(filebuf + filebuflen); + + allocsize = ALIGN_UP(allocsize, sizeof (intptr_t)); + if (allocsize > filebuflen) + goto bufpanic; + + filebuflen -= allocsize; + } + /* Subtract whatever the pcm buffer says it used plus the guard buffer */ allocsize = pcmbuf_init(filebuf + filebuflen); @@ -3475,7 +3487,7 @@ unsigned char * audio_get_buffer(bool talk_buf, size_t *buffer_size) swap space */ logf("get buffer: audio"); buf = audiobuf + talk_get_bufsize(); - end = audiobufend - pcmbuf_init(audiobufend); + end = audiobufend - voicebuf_init(audiobufend); buffer_state = AUDIOBUF_STATE_VOICED_ONLY; } |