From e2546f8275307662723114359907ba32b22a783d Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 30 Nov 2006 11:59:04 +0000 Subject: [PATCH] ext/Makefile.am: Fix build. Original commit message from CVS: * ext/Makefile.am: Fix build. * ext/jack/gstjackaudiosink.c: (jack_process_cb), (jack_sample_rate_cb), (jack_buffer_size_cb), (jack_shutdown_cb), (gst_jack_ring_buffer_acquire): Small cleanups. --- ext/jack/gstjackaudiosink.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ext/jack/gstjackaudiosink.c b/ext/jack/gstjackaudiosink.c index 5a0cadf8be..c2c5e65671 100644 --- a/ext/jack/gstjackaudiosink.c +++ b/ext/jack/gstjackaudiosink.c @@ -196,28 +196,30 @@ jack_process_cb (jack_nframes_t nframes, void *arg) if (gst_ring_buffer_prepare_read (buf, &readseg, &readptr, &len)) { flen = len / channels; + /* the number of samples must be exactly the segment size */ if (nframes * sizeof (sample_t) != flen) goto wrong_size; - /* copy samples */ GST_DEBUG ("copy %d frames: %p, %d bytes, %d channels", nframes, readptr, flen, channels); data = (sample_t *) readptr; - /* copy and interleave into target buffers */ + /* the samples in the ringbuffer have the channels interleaved, we need to + * deinterleave into the jack target buffers */ for (i = 0; i < nframes; i++) { for (j = 0; j < channels; j++) { buffers[j][i] = *data++; } } - /* clear written samples */ + /* clear written samples in the ringbuffer */ gst_ring_buffer_clear (buf, readseg); /* we wrote one segment */ gst_ring_buffer_advance (buf, 1); } else { - /* write silence to all buffers */ + /* We are not allowed to read from the ringbuffer, write silence to all + * jack output buffers */ for (i = 0; i < channels; i++) { memset (buffers[i], 0, nframes * sizeof (sample_t)); }