diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | ext/Makefile.am | 1 | ||||
-rw-r--r-- | ext/jack/gstjackaudiosink.c | 10 |
3 files changed, 17 insertions, 4 deletions
@@ -1,5 +1,15 @@ 2006-11-30 Wim Taymans <wim@fluendo.com> + * 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. + +2006-11-30 Wim Taymans <wim@fluendo.com> + * configure.ac: * ext/Makefile.am: * ext/jack/Makefile.am: diff --git a/ext/Makefile.am b/ext/Makefile.am index 0511c9ad..252a06f3 100644 --- a/ext/Makefile.am +++ b/ext/Makefile.am @@ -291,6 +291,7 @@ DIST_SUBDIRS= \ faad \ gsm \ ivorbis \ + jack \ libmms \ dts \ divx \ 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)); } |