summaryrefslogtreecommitdiffstats
path: root/ext/jack
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2006-11-30 11:59:04 +0000
committerWim Taymans <wim.taymans@gmail.com>2006-11-30 11:59:04 +0000
commit1001e1d1e0d497ed57622defb19827ac6b6a6cff (patch)
tree8c01749976fdfe0ccdfb1e64ca0f5968ac43b0ad /ext/jack
parent76c1316131f03bc89de8dee086199d3c86ff2e4e (diff)
downloadgst-plugins-bad-1001e1d1e0d497ed57622defb19827ac6b6a6cff.tar.gz
gst-plugins-bad-1001e1d1e0d497ed57622defb19827ac6b6a6cff.tar.bz2
gst-plugins-bad-1001e1d1e0d497ed57622defb19827ac6b6a6cff.zip
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.
Diffstat (limited to 'ext/jack')
-rw-r--r--ext/jack/gstjackaudiosink.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/ext/jack/gstjackaudiosink.c b/ext/jack/gstjackaudiosink.c
index 5a0cadf8..c2c5e656 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));
}