summaryrefslogtreecommitdiff
path: root/apps/playback.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playback.c')
-rw-r--r--apps/playback.c16
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;
}