summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Zander <riggs@FreeBSD.org>2015-06-14 15:05:09 +0000
committerThomas Zander <riggs@FreeBSD.org>2015-06-14 15:05:09 +0000
commit7fa927df12952ae7524f743d9fc8e9d63d677632 (patch)
tree238a15838fb8a9b03e098961cf0b77f3a7bd4f7c
parent- Upgrade to 0.30. (diff)
Fix support for 24-bit and 32-bit resolution
While on it: - Pet portlint PR: 199558 Submitted by: hselasky@FreeBSD.org
Notes
Notes: svn path=/head/; revision=389640
-rw-r--r--audio/jack/Makefile2
-rw-r--r--audio/jack/files/patch-configure8
-rw-r--r--audio/jack/files/patch-drivers-alsa_memops.c11
-rw-r--r--audio/jack/files/patch-drivers-dummy-dummy_driver.c6
-rw-r--r--audio/jack/files/patch-drivers-dummy-dummy_driver.h6
-rw-r--r--audio/jack/files/patch-drivers-oss-oss_driver.c172
-rw-r--r--audio/jack/files/patch-drivers_alsa_memops.c11
-rw-r--r--audio/jack/files/patch-jack.pc.in8
-rw-r--r--audio/jack/files/patch-jackd_engine.c8
-rw-r--r--audio/jack/files/patch-libjack-client.c34
10 files changed, 216 insertions, 50 deletions
diff --git a/audio/jack/Makefile b/audio/jack/Makefile
index 7ad8a17dde27..4fd6ac1d3105 100644
--- a/audio/jack/Makefile
+++ b/audio/jack/Makefile
@@ -3,7 +3,7 @@
PORTNAME= jackit
PORTVERSION= 0.124.1
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= audio
MASTER_SITES= http://jackaudio.org/downloads/
DISTNAME= jack-audio-connection-kit-${PORTVERSION}
diff --git a/audio/jack/files/patch-configure b/audio/jack/files/patch-configure
index 7f5b5d20e68a..ffbf502f3b2d 100644
--- a/audio/jack/files/patch-configure
+++ b/audio/jack/files/patch-configure
@@ -1,6 +1,7 @@
---- configure 2014-01-22 15:23:47.000000000 -0500
-+++ configure 2014-11-30 13:05:39.000000000 -0500
-@@ -2608,48 +2608,4 @@
+--- configure.orig 2014-01-22 20:23:47 UTC
++++ configure
+@@ -2607,50 +2607,6 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
@@ -49,3 +50,4 @@
-
ac_aux_dir=
for ac_dir in config "$srcdir"/config; do
+ for ac_t in install-sh install.sh shtool; do
diff --git a/audio/jack/files/patch-drivers-alsa_memops.c b/audio/jack/files/patch-drivers-alsa_memops.c
deleted file mode 100644
index 38fc290d9b45..000000000000
--- a/audio/jack/files/patch-drivers-alsa_memops.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- drivers/alsa/memops.c.orig 2010-05-08 20:23:13.000000000 -0300
-+++ drivers/alsa/memops.c 2010-05-08 20:23:24.000000000 -0300
-@@ -30,7 +30,7 @@
- #include <stdlib.h>
- #include <stdint.h>
- #include <limits.h>
--#include <endian.h>
-+#include <sys/endian.h>
-
- #include <jack/memops.h>
-
diff --git a/audio/jack/files/patch-drivers-dummy-dummy_driver.c b/audio/jack/files/patch-drivers-dummy-dummy_driver.c
index 7390b093b411..6289ef2928e6 100644
--- a/audio/jack/files/patch-drivers-dummy-dummy_driver.c
+++ b/audio/jack/files/patch-drivers-dummy-dummy_driver.c
@@ -1,6 +1,6 @@
---- drivers/dummy/dummy_driver.c.orig 2009-02-12 04:44:04.000000000 +0100
-+++ drivers/dummy/dummy_driver.c 2009-02-12 04:44:15.000000000 +0100
-@@ -73,7 +73,7 @@
+--- drivers/dummy/dummy_driver.c.orig 2013-10-04 00:45:25 UTC
++++ drivers/dummy/dummy_driver.c
+@@ -73,7 +73,7 @@ FakeVideoSync( dummy_driver_t *driver )
}
}
diff --git a/audio/jack/files/patch-drivers-dummy-dummy_driver.h b/audio/jack/files/patch-drivers-dummy-dummy_driver.h
index 17561dc3445a..4dd31438c269 100644
--- a/audio/jack/files/patch-drivers-dummy-dummy_driver.h
+++ b/audio/jack/files/patch-drivers-dummy-dummy_driver.h
@@ -1,6 +1,6 @@
---- drivers/dummy/dummy_driver.h.orig 2009-02-12 05:04:38.000000000 +0100
-+++ drivers/dummy/dummy_driver.h 2009-02-12 05:04:44.000000000 +0100
-@@ -44,7 +44,7 @@
+--- drivers/dummy/dummy_driver.h.orig 2013-10-04 00:45:25 UTC
++++ drivers/dummy/dummy_driver.h
+@@ -44,7 +44,7 @@ struct _dummy_driver
jack_nframes_t period_size;
unsigned long wait_time;
diff --git a/audio/jack/files/patch-drivers-oss-oss_driver.c b/audio/jack/files/patch-drivers-oss-oss_driver.c
index 612695654128..0ae2d99a0842 100644
--- a/audio/jack/files/patch-drivers-oss-oss_driver.c
+++ b/audio/jack/files/patch-drivers-oss-oss_driver.c
@@ -1,4 +1,4 @@
---- drivers/oss/oss_driver.c.orig
+--- drivers/oss/oss_driver.c.orig 2013-10-04 00:45:25 UTC
+++ drivers/oss/oss_driver.c
@@ -23,6 +23,7 @@
@@ -8,7 +8,7 @@
#ifdef USE_BARRIER
/*
* POSIX conformance level should be globally defined somewhere, possibly
-@@ -181,7 +182,9 @@ static void set_period_size (oss_driver_
+@@ -183,7 +184,9 @@ static void set_period_size (oss_driver_
((double) driver->period_size /
(double) driver->sample_rate) * 1e6;
driver->last_wait_ust = 0;
@@ -19,7 +19,7 @@
driver->next_periodtime = 0;
driver->iodelay = 0.0F;
}
-@@ -189,7 +192,9 @@ static void set_period_size (oss_driver_
+@@ -191,7 +194,9 @@ static void set_period_size (oss_driver_
static inline void update_times (oss_driver_t *driver)
{
@@ -30,7 +30,85 @@
if (driver->next_periodtime > 0)
{
driver->iodelay = (float)
-@@ -759,7 +764,9 @@ static int oss_driver_start (oss_driver_
+@@ -224,6 +229,7 @@ static void copy_and_convert_in (jack_sa
+ int dstidx;
+ signed short *s16src = (signed short *) src;
+ signed int *s32src = (signed int *) src;
++ unsigned char *s24src = (unsigned char *) src;
+ double *f64src = (double *) src;
+ jack_sample_t scale;
+
+@@ -240,11 +246,14 @@ static void copy_and_convert_in (jack_sa
+ }
+ break;
+ case 24:
+- scale = 1.0f / 0x7fffff;
++ scale = 1.0f / 0x7fffffff;
+ for (dstidx = 0; dstidx < nframes; dstidx++)
+ {
+ dst[dstidx] = (jack_sample_t)
+- s32src[srcidx] * scale;
++ ((signed int)(
++ (s24src[3 * srcidx + 2] << 24) |
++ (s24src[3 * srcidx + 1] << 16) |
++ (s24src[3 * srcidx + 0] << 8))) * scale;
+ srcidx += chcount;
+ }
+ break;
+@@ -274,6 +283,7 @@ static void copy_and_convert_out (void *
+ int srcidx;
+ int dstidx;
+ signed short *s16dst = (signed short *) dst;
++ unsigned char *s24dst = (unsigned char *) dst;
+ signed int *s32dst = (signed int *) dst;
+ double *f64dst = (double *) dst;
+ jack_sample_t scale;
+@@ -293,13 +303,17 @@ static void copy_and_convert_out (void *
+ }
+ break;
+ case 24:
+- scale = 0x7fffff;
++ scale = 0x7fffffff;
+ for (srcidx = 0; srcidx < nframes; srcidx++)
+ {
+- s32dst[dstidx] = (signed int)
+- (src[srcidx] >= 0.0f) ?
+- (src[srcidx] * scale + 0.5f) :
+- (src[srcidx] * scale - 0.5f);
++ signed int sample =
++ (src[srcidx] >= 0.0f) ?
++ (src[srcidx] * scale + 0.5f) :
++ (src[srcidx] * scale - 0.5f) ;
++
++ s24dst[3*dstidx + 2] = sample >> 24;
++ s24dst[3*dstidx + 1] = sample >> 16;
++ s24dst[3*dstidx + 0] = sample >> 8;
+ dstidx += chcount;
+ }
+ break;
+@@ -471,20 +485,7 @@ static int oss_driver_start (oss_driver_
+ const char *indev = driver->indev;
+ const char *outdev = driver->outdev;
+
+- switch (driver->bits)
+- {
+- case 24:
+- case 32:
+- samplesize = sizeof(int);
+- break;
+- case 64:
+- samplesize = sizeof(double);
+- break;
+- case 16:
+- default:
+- samplesize = sizeof(short);
+- break;
+- }
++ samplesize = driver->bits / 8;
+ driver->trigger = 0;
+ if (strcmp(indev, outdev) != 0)
+ {
+@@ -762,7 +763,9 @@ static int oss_driver_start (oss_driver_
if (driver->threads & 1) sem_post(&driver->sem_start);
if (driver->threads & 2) sem_post(&driver->sem_start);
@@ -41,3 +119,89 @@
driver->next_periodtime = 0;
driver->iodelay = 0.0F;
+@@ -1235,7 +1238,24 @@ jack_driver_t * driver_initialize (jack_
+ }
+ pnode = jack_slist_next(pnode);
+ }
+-
++
++ switch (bits)
++ {
++ case 16: /* native-endian 16-bit integer */
++ driver->format = AFMT_S16_NE;
++ break;
++ case 24: /* little-endian 24-bit integer */
++ driver->format = AFMT_S24_LE;
++ break;
++ case 32: /* native-endian 32-bit integer */
++ driver->format = AFMT_S32_NE;
++ break;
++ default:
++ free(driver);
++ jack_error("OSS: invalid number of bits: %d",
++ __FILE__, __LINE__, bits);
++ return NULL;
++ }
+ driver->sample_rate = sample_rate;
+ driver->period_size = period_size;
+ driver->nperiods = nperiods;
+@@ -1254,59 +1274,6 @@ jack_driver_t * driver_initialize (jack_
+ driver->outdev = strdup(OSS_DRIVER_DEF_DEV);
+ driver->infd = -1;
+ driver->outfd = -1;
+- switch (driver->bits)
+- {
+-# ifndef OSS_ENDIAN
+-# ifdef __GNUC__
+-# if (defined(__i386__) || defined(__alpha__) || defined(__arm__) || defined(__x86_64__) || (defined(__sh__) && !defined(__LITTLE_ENDIAN__)))
+-# define OSS_LITTLE_ENDIAN 1234
+-# define OSS_ENDIAN OSS_LITTLE_ENDIAN
+-# else
+-# define OSS_BIG_ENDIAN 4321
+-# define OSS_ENDIAN OSS_BIG_ENDIAN
+-# endif
+-# else /* __GNUC__ */
+-# if (defined(_AIX) || defined(AIX) || defined(sparc) || defined(__hppa) || defined(PPC) || defined(__powerpc__) && !defined(i386) && !defined(__i386) && !defined(__i386__))
+-# define OSS_BIG_ENDIAN 4321
+-# define OSS_ENDIAN OSS_BIG_ENDIAN
+-# else
+-# define OSS_LITTLE_ENDIAN 1234
+-# define OSS_ENDIAN OSS_LITTLE_ENDIAN
+-# endif
+-# endif /* __GNUC__ */
+-# endif /* OSS_ENDIAN */
+-# if (OSS_ENDIAN == 1234)
+- /* little-endian architectures */
+- case 24: /* little-endian LSB aligned 24-bits in 32-bits integer */
+- driver->format = 0x00008000;
+- break;
+- case 32: /* little-endian 32-bit integer */
+- driver->format = 0x00001000;
+- break;
+- case 64: /* native-endian 64-bit float */
+- driver->format = 0x00004000;
+- break;
+- case 16: /* little-endian 16-bit integer */
+- default:
+- driver->format = 0x00000010;
+- break;
+- /* big-endian architectures */
+-# else
+- case 24: /* big-endian LSB aligned 24-bits in 32-bits integer */
+- break;
+- driver->format = 0x00010000;
+- case 32: /* big-endian 32-bit integer */
+- driver->format = 0x00002000;
+- break;
+- case 64: /* native-endian 64-bit float */
+- driver->format = 0x00004000;
+- break;
+- case 16: /* big-endian 16-bit integer */
+- default:
+- driver->format = 0x00000020;
+-# endif
+- }
+-
+ driver->indevbuf = driver->outdevbuf = NULL;
+
+ driver->capture_ports = NULL;
diff --git a/audio/jack/files/patch-drivers_alsa_memops.c b/audio/jack/files/patch-drivers_alsa_memops.c
new file mode 100644
index 000000000000..6f31f947c57c
--- /dev/null
+++ b/audio/jack/files/patch-drivers_alsa_memops.c
@@ -0,0 +1,11 @@
+--- drivers/alsa/memops.c.orig 2013-10-04 00:45:25 UTC
++++ drivers/alsa/memops.c
+@@ -30,7 +30,7 @@
+ #include <stdlib.h>
+ #include <stdint.h>
+ #include <limits.h>
+-#include <endian.h>
++#include <sys/endian.h>
+
+ #include "memops.h"
+
diff --git a/audio/jack/files/patch-jack.pc.in b/audio/jack/files/patch-jack.pc.in
index 7391565bf128..9ee5fd5636de 100644
--- a/audio/jack/files/patch-jack.pc.in
+++ b/audio/jack/files/patch-jack.pc.in
@@ -1,9 +1,9 @@
---- jack.pc.in.orig Thu Jun 5 03:21:36 2003
-+++ jack.pc.in Sun Mar 14 22:49:44 2004
-@@ -6,5 +6,5 @@
+--- jack.pc.in.orig 2013-10-04 00:45:25 UTC
++++ jack.pc.in
+@@ -6,5 +6,5 @@ includedir=@includedir@
Name: jack
Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server
Version: @JACK_VERSION@
--Libs: -L${libdir} -ljack -lpthread -ldl -lrt
+-Libs: -L${libdir} -ljack -lpthread @OS_LDFLAGS@
+Libs: -L${libdir} -ljack -lpthread
Cflags: -I${includedir}
diff --git a/audio/jack/files/patch-jackd_engine.c b/audio/jack/files/patch-jackd_engine.c
index bc15f97194c2..572108ccb3c3 100644
--- a/audio/jack/files/patch-jackd_engine.c
+++ b/audio/jack/files/patch-jackd_engine.c
@@ -1,6 +1,6 @@
---- jackd/engine.c.orig 2008-12-02 17:29:23.000000000 +0100
-+++ jackd/engine.c 2009-02-11 20:38:52.000000000 +0100
-@@ -1383,7 +1383,7 @@
+--- jackd/engine.c.orig 2013-11-30 17:04:00 UTC
++++ jackd/engine.c
+@@ -1415,7 +1415,7 @@ handle_external_client_request (jack_eng
if ((r = read (client->request_fd, &req, sizeof (req)))
< (ssize_t) sizeof (req)) {
if (r == 0) {
@@ -9,7 +9,7 @@
/* poll is implemented using
select (see the macosx/fakepoll
code). When the socket is closed
-@@ -1396,7 +1396,7 @@
+@@ -1428,7 +1428,7 @@ handle_external_client_request (jack_eng
and remove the client.
*/
jack_mark_client_socket_error (engine, fd);
diff --git a/audio/jack/files/patch-libjack-client.c b/audio/jack/files/patch-libjack-client.c
index 26d3324f29b0..b5e7fa9508b3 100644
--- a/audio/jack/files/patch-libjack-client.c
+++ b/audio/jack/files/patch-libjack-client.c
@@ -1,6 +1,6 @@
---- libjack/client.c.orig 2014-10-23 09:09:09.000000000 +0200
-+++ libjack/client.c 2014-10-23 09:20:15.000000000 +0200
-@@ -116,6 +116,30 @@
+--- libjack/client.c.orig 2014-01-21 22:48:10 UTC
++++ libjack/client.c
+@@ -116,6 +116,30 @@ init_cpu ()
char *jack_tmpdir = DEFAULT_TMP_DIR;
@@ -31,7 +31,7 @@
static int
jack_get_tmpdir ()
{
-@@ -248,7 +272,7 @@
+@@ -248,7 +272,7 @@ oop_client_deliver_request (void *ptr, j
int wok, rok;
jack_client_t *client = (jack_client_t*) ptr;
@@ -40,7 +40,7 @@
== sizeof (*req));
/* if necessary, add variable length key data after a PropertyChange request
-@@ -256,7 +280,7 @@
+@@ -256,7 +280,7 @@ oop_client_deliver_request (void *ptr, j
if (req->type == PropertyChangeNotify) {
if (req->x.property.keylen) {
@@ -49,7 +49,7 @@
jack_error ("cannot send property key of length %d to server",
req->x.property.keylen);
req->status = -1;
-@@ -265,7 +289,7 @@
+@@ -265,7 +289,7 @@ oop_client_deliver_request (void *ptr, j
}
}
@@ -58,7 +58,7 @@
== sizeof (*req));
if (wok && rok) { /* everything OK? */
-@@ -822,14 +846,14 @@
+@@ -822,14 +846,14 @@ server_event_connect (jack_client_t *cli
jack_uuid_copy (&req.client_id, client->control->uuid);
@@ -75,7 +75,7 @@
jack_error ("cannot read event connect result from server (%s)",
strerror (errno));
close (fd);
-@@ -1070,14 +1094,14 @@
+@@ -1070,14 +1094,14 @@ jack_request_client (ClientType type,
snprintf (req.object_data, sizeof (req.object_data),
"%s", va->load_init);
@@ -92,7 +92,7 @@
if (errno == 0) {
/* server shut the socket */
-@@ -1456,7 +1480,7 @@
+@@ -1456,7 +1480,7 @@ jack_internal_client_close (const char *
return;
}
@@ -101,7 +101,7 @@
jack_error ("cannot deliver ClientUnload request to JACK "
"server.");
}
-@@ -1582,7 +1606,7 @@
+@@ -1582,7 +1606,7 @@ jack_session_notify (jack_client_t* clie
request.x.session.type = code;
@@ -110,7 +110,7 @@
!= sizeof (request)) ) {
jack_error ("cannot send request type %d to server",
request.type);
-@@ -1592,7 +1616,7 @@
+@@ -1592,7 +1616,7 @@ jack_session_notify (jack_client_t* clie
while( 1 ) {
jack_uuid_t uid;
@@ -119,7 +119,7 @@
jack_error ("cannot read result for request type %d from"
" server (%s)", request.type, strerror (errno));
goto out;
-@@ -1613,19 +1637,19 @@
+@@ -1613,19 +1637,19 @@ jack_session_notify (jack_client_t* clie
break;
}
@@ -142,7 +142,7 @@
!= sizeof(retval[num_replies-1].flags) ) {
jack_error ("cannot read result for request type %d from"
" server (%s)", request.type, strerror (errno));
-@@ -1742,7 +1766,7 @@
+@@ -1742,7 +1766,7 @@ jack_client_process_events (jack_client_
/* server has sent us an event. process the
* event and reply */
@@ -151,7 +151,7 @@
!= sizeof (event)) {
jack_error ("cannot read server event (%s)",
strerror (errno));
-@@ -1751,7 +1775,7 @@
+@@ -1751,7 +1775,7 @@ jack_client_process_events (jack_client_
if (event.type == PropertyChange) {
key = (char *) malloc (event.y.key_size);
@@ -160,7 +160,7 @@
event.y.key_size) {
jack_error ("cannot read property change key (%s)",
strerror (errno));
-@@ -1868,7 +1892,7 @@
+@@ -1868,7 +1892,7 @@ jack_client_process_events (jack_client_
DEBUG ("client has dealt with the event, writing "
"response on event fd");
@@ -169,7 +169,7 @@
!= sizeof (status)) {
jack_error ("cannot send event response to "
"engine (%s)", strerror (errno));
-@@ -1888,7 +1912,7 @@
+@@ -1888,7 +1912,7 @@ jack_wake_next_client (jack_client_t* cl
int pret = 0;
char c = 0;
@@ -178,7 +178,7 @@
!= sizeof (c)) {
DEBUG("cannot write byte to fd %d", client->graph_next_fd);
jack_error ("cannot continue execution of the "
-@@ -1916,7 +1940,7 @@
+@@ -1916,7 +1940,7 @@ jack_wake_next_client (jack_client_t* cl
}
if (pret > 0 && (pfds[0].revents & POLLIN)) {