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.
This commit is contained in:
Wim Taymans 2006-11-30 11:59:04 +00:00
parent 76c1316131
commit 1001e1d1e0
3 changed files with 17 additions and 4 deletions

View file

@ -1,3 +1,13 @@
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> 2006-11-30 Wim Taymans <wim@fluendo.com>
* configure.ac: * configure.ac:

View file

@ -291,6 +291,7 @@ DIST_SUBDIRS= \
faad \ faad \
gsm \ gsm \
ivorbis \ ivorbis \
jack \
libmms \ libmms \
dts \ dts \
divx \ divx \

View file

@ -196,28 +196,30 @@ jack_process_cb (jack_nframes_t nframes, void *arg)
if (gst_ring_buffer_prepare_read (buf, &readseg, &readptr, &len)) { if (gst_ring_buffer_prepare_read (buf, &readseg, &readptr, &len)) {
flen = len / channels; flen = len / channels;
/* the number of samples must be exactly the segment size */
if (nframes * sizeof (sample_t) != flen) if (nframes * sizeof (sample_t) != flen)
goto wrong_size; goto wrong_size;
/* copy samples */
GST_DEBUG ("copy %d frames: %p, %d bytes, %d channels", nframes, readptr, GST_DEBUG ("copy %d frames: %p, %d bytes, %d channels", nframes, readptr,
flen, channels); flen, channels);
data = (sample_t *) readptr; 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 (i = 0; i < nframes; i++) {
for (j = 0; j < channels; j++) { for (j = 0; j < channels; j++) {
buffers[j][i] = *data++; buffers[j][i] = *data++;
} }
} }
/* clear written samples */ /* clear written samples in the ringbuffer */
gst_ring_buffer_clear (buf, readseg); gst_ring_buffer_clear (buf, readseg);
/* we wrote one segment */ /* we wrote one segment */
gst_ring_buffer_advance (buf, 1); gst_ring_buffer_advance (buf, 1);
} else { } 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++) { for (i = 0; i < channels; i++) {
memset (buffers[i], 0, nframes * sizeof (sample_t)); memset (buffers[i], 0, nframes * sizeof (sample_t));
} }