[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 1/7] audio/jack: fix invalid minimum buffer size check
From: |
Gerd Hoffmann |
Subject: |
[PULL 1/7] audio/jack: fix invalid minimum buffer size check |
Date: |
Fri, 19 Jun 2020 15:17:35 +0200 |
From: Geoffrey McRae <geoff@hostfission.com>
JACK does not provide us with the configured buffer size until after
activiation which was overriding this minimum value. JACK itself doesn't
have this minimum limitation, but the QEMU virtual hardware and as such
it must be enforced, failure to do so results in audio discontinuities.
Signed-off-by: Geoffrey McRae <geoff@hostfission.com>
Message-id: 20200613040518.38172-2-geoff@hostfission.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
audio/jackaudio.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/audio/jackaudio.c b/audio/jackaudio.c
index 722ddb1dfe43..d0b6f748f26c 100644
--- a/audio/jackaudio.c
+++ b/audio/jackaudio.c
@@ -434,17 +434,6 @@ static int qjack_client_init(QJackClient *c)
jack_set_xrun_callback(c->client, qjack_xrun, c);
jack_on_shutdown(c->client, qjack_shutdown, c);
- /*
- * ensure the buffersize is no smaller then 512 samples, some (all?) qemu
- * virtual devices do not work correctly otherwise
- */
- if (c->buffersize < 512) {
- c->buffersize = 512;
- }
-
- /* create a 2 period buffer */
- qjack_buffer_create(&c->fifo, c->nchannels, c->buffersize * 2);
-
/* allocate and register the ports */
c->port = g_malloc(sizeof(jack_port_t *) * c->nchannels);
for (int i = 0; i < c->nchannels; ++i) {
@@ -468,6 +457,17 @@ static int qjack_client_init(QJackClient *c)
jack_activate(c->client);
c->buffersize = jack_get_buffer_size(c->client);
+ /*
+ * ensure the buffersize is no smaller then 512 samples, some (all?) qemu
+ * virtual devices do not work correctly otherwise
+ */
+ if (c->buffersize < 512) {
+ c->buffersize = 512;
+ }
+
+ /* create a 2 period buffer */
+ qjack_buffer_create(&c->fifo, c->nchannels, c->buffersize * 2);
+
qjack_client_connect_ports(c);
c->state = QJACK_STATE_RUNNING;
return 0;
--
2.18.4
- [PULL 0/7] Audio 20200619 patches, Gerd Hoffmann, 2020/06/19
- [PULL 3/7] audio/jack: remove invalid set of input support bool, Gerd Hoffmann, 2020/06/19
- [PULL 4/7] audio/jack: do not remove ports when finishing, Gerd Hoffmann, 2020/06/19
- [PULL 6/7] audio/jack: simplify the re-init code path, Gerd Hoffmann, 2020/06/19
- [PULL 2/7] audio/jack: remove unused stopped state, Gerd Hoffmann, 2020/06/19
- [PULL 1/7] audio/jack: fix invalid minimum buffer size check,
Gerd Hoffmann <=
- [PULL 7/7] hw/audio/gus: Fix registers 32-bit access, Gerd Hoffmann, 2020/06/19
- [PULL 5/7] audio/jack: honour the enable state of the audio device, Gerd Hoffmann, 2020/06/19
- Re: [PULL 0/7] Audio 20200619 patches, no-reply, 2020/06/19
- Re: [PULL 0/7] Audio 20200619 patches, no-reply, 2020/06/19
- Re: [PULL 0/7] Audio 20200619 patches, Peter Maydell, 2020/06/22