[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 11/15] paaudio: reduce effective playback buffer size
From: |
Volker Rümelin |
Subject: |
[PATCH v2 11/15] paaudio: reduce effective playback buffer size |
Date: |
Sat, 22 Jan 2022 13:57:41 +0100 |
Add the buffer_get_free pcm_ops function to reduce the effective
playback buffer size. All intermediate audio playback buffers
become temporary buffers.
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
---
audio/paaudio.c | 33 ++++++++++++++++++++++++---------
1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/audio/paaudio.c b/audio/paaudio.c
index 9df1e69c08..d94f858ec7 100644
--- a/audio/paaudio.c
+++ b/audio/paaudio.c
@@ -201,13 +201,11 @@ unlock_and_fail:
return 0;
}
-static void *qpa_get_buffer_out(HWVoiceOut *hw, size_t *size)
+static size_t qpa_buffer_get_free(HWVoiceOut *hw)
{
- PAVoiceOut *p = (PAVoiceOut *) hw;
+ PAVoiceOut *p = (PAVoiceOut *)hw;
PAConnection *c = p->g->conn;
- void *ret;
size_t l;
- int r;
pa_threaded_mainloop_lock(c->mainloop);
@@ -216,7 +214,6 @@ static void *qpa_get_buffer_out(HWVoiceOut *hw, size_t
*size)
if (pa_stream_get_state(p->stream) != PA_STREAM_READY) {
/* wait for stream to become ready */
l = 0;
- ret = NULL;
goto unlock;
}
@@ -224,16 +221,33 @@ static void *qpa_get_buffer_out(HWVoiceOut *hw, size_t
*size)
CHECK_SUCCESS_GOTO(c, l != (size_t) -1, unlock_and_fail,
"pa_stream_writable_size failed\n");
+unlock:
+ pa_threaded_mainloop_unlock(c->mainloop);
+ return l;
+
+unlock_and_fail:
+ pa_threaded_mainloop_unlock(c->mainloop);
+ return 0;
+}
+
+static void *qpa_get_buffer_out(HWVoiceOut *hw, size_t *size)
+{
+ PAVoiceOut *p = (PAVoiceOut *)hw;
+ PAConnection *c = p->g->conn;
+ void *ret;
+ int r;
+
+ pa_threaded_mainloop_lock(c->mainloop);
+
+ CHECK_DEAD_GOTO(c, p->stream, unlock_and_fail,
+ "pa_threaded_mainloop_lock failed\n");
+
*size = -1;
r = pa_stream_begin_write(p->stream, &ret, size);
CHECK_SUCCESS_GOTO(c, r >= 0, unlock_and_fail,
"pa_stream_begin_write failed\n");
-unlock:
pa_threaded_mainloop_unlock(c->mainloop);
- if (*size > l) {
- *size = l;
- }
return ret;
unlock_and_fail:
@@ -901,6 +915,7 @@ static struct audio_pcm_ops qpa_pcm_ops = {
.init_out = qpa_init_out,
.fini_out = qpa_fini_out,
.write = qpa_write,
+ .buffer_get_free = qpa_buffer_get_free,
.get_buffer_out = qpa_get_buffer_out,
.put_buffer_out = qpa_put_buffer_out,
.volume_out = qpa_volume_out,
--
2.31.1
- [PATCH v2 07/15] audio: copy playback stream in sequential order, (continued)
- [PATCH v2 07/15] audio: copy playback stream in sequential order, Volker Rümelin, 2022/01/22
- [PATCH v2 06/15] jackaudio: use more jack audio buffers, Volker Rümelin, 2022/01/22
- [PATCH v2 08/15] audio: add pcm_ops function table for capture backend, Volker Rümelin, 2022/01/22
- [PATCH v2 10/15] audio: restore mixing-engine playback buffer size, Volker Rümelin, 2022/01/22
- [PATCH v2 05/15] paaudio: increase default latency to 46ms, Volker Rümelin, 2022/01/22
- [PATCH v2 09/15] Revert "audio: fix wavcapture segfault", Volker Rümelin, 2022/01/22
- [PATCH v2 15/15] sdlaudio: fix samples vs. frames mix-up, Volker Rümelin, 2022/01/22
- [PATCH v2 14/15] paaudio: fix samples vs. frames mix-up, Volker Rümelin, 2022/01/22
- [PATCH v2 12/15] dsoundaudio: reduce effective playback buffer size, Volker Rümelin, 2022/01/22
- [PATCH v2 11/15] paaudio: reduce effective playback buffer size,
Volker Rümelin <=
- [PATCH v2 13/15] ossaudio: reduce effective playback buffer size, Volker Rümelin, 2022/01/22