[SCM] jack-audio-connection-kit/upstream: Imported Upstream version 0.121.0+svn4538
adiknoth-guest at users.alioth.debian.org
adiknoth-guest at users.alioth.debian.org
Tue Sep 6 15:17:56 UTC 2011
The following commit has been merged in the upstream branch:
commit c207acc0b82045c2985086bc5993d96681bbdb34
Author: Adrian Knoth <adi at drcomp.erfurt.thur.de>
Date: Tue Sep 6 16:40:03 2011 +0200
Imported Upstream version 0.121.0+svn4538
diff --git a/Makefile.am b/Makefile.am
index 91c05e6..c526540 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -13,13 +13,13 @@ dist-check-doxygen:
@false
endif
-SUBDIRS = jack libjack jackd drivers example-clients tools config $(DOC_DIR) man
-DIST_SUBDIRS = config jack libjack jackd drivers example-clients tools doc man
+SUBDIRS = jack libjack jackd drivers example-clients tools config $(DOC_DIR) man python
+DIST_SUBDIRS = config jack libjack jackd drivers example-clients tools doc man python
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = jack.pc
-EXTRA_DIST = COPYING COPYING.GPL COPYING.LGPL libjack/simd.c jack.spec python/*.py python/*.pyc
+EXTRA_DIST = COPYING COPYING.GPL COPYING.LGPL libjack/simd.c jack.spec
AUTOMAKE_OPTIONS = foreign
diff --git a/config/os/gnu-linux/time.c b/config/os/gnu-linux/time.c
index 0fc6ae6..7301200 100644
--- a/config/os/gnu-linux/time.c
+++ b/config/os/gnu-linux/time.c
@@ -157,6 +157,8 @@ jack_get_mhz (void)
ret = sscanf(buf, "Clocking: %" SCNu64, &mhz);
#elif defined( __s390__ )
ret = sscanf(buf, "bogomips per cpu: %" SCNu64, &mhz);
+#elif defined( __sh__ )
+ ret = sscanf(buf, "bogomips : %" SCNu64, &mhz);
#else /* MIPS, ARM, alpha */
ret = sscanf(buf, "BogoMIPS : %" SCNu64, &mhz);
#endif
diff --git a/configure.ac b/configure.ac
index 0a7e6bc..5441bbd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-dnl $Id: configure.ac 4467 2011-06-23 15:10:03Z paul $
+dnl $Id: configure.ac 4475 2011-06-29 01:50:54Z paul $
AC_INIT(jackd/jackd.c)
@@ -62,7 +62,7 @@ dnl changes are made
dnl ---
JACK_MAJOR_VERSION=0
JACK_MINOR_VERSION=121
-JACK_MICRO_VERSION=0
+JACK_MICRO_VERSION=2
dnl ---
dnl HOWTO: updating the jack protocol version
@@ -967,6 +967,7 @@ jack/version.h
jackd/Makefile
jackd/jackd.1
libjack/Makefile
+python/Makefile
)
dnl
diff --git a/drivers/oss/oss_driver.c b/drivers/oss/oss_driver.c
index 9726249..06394a9 100644
--- a/drivers/oss/oss_driver.c
+++ b/drivers/oss/oss_driver.c
@@ -367,6 +367,7 @@ static int oss_driver_attach (oss_driver_t *driver, jack_engine_t *engine)
jack_latency_range_t range;
driver->engine = engine;
+ set_period_size(driver, driver->period_size);
if (engine->set_buffer_size(engine, driver->period_size)) {
jack_error ("OSS: cannot set engine buffer size to %d (check MIDI)", driver->period_size);
@@ -1171,6 +1172,7 @@ jack_driver_t * driver_initialize (jack_client_t *client,
__FILE__, __LINE__, errno);
return NULL;
}
+ memset(driver, 0x00, sizeof(oss_driver_t));
jack_driver_init((jack_driver_t *) driver);
driver->attach = (JackDriverAttachFunction) oss_driver_attach;
@@ -1240,9 +1242,8 @@ jack_driver_t * driver_initialize (jack_client_t *client,
driver->playback_channels = playback_channels;
driver->sys_in_latency = in_latency;
driver->sys_out_latency = out_latency;
+ /* setting driver->period_usecs & co is delayed until attach */
- set_period_size(driver, period_size);
-
driver->finish = driver_finish;
if (driver->indev == NULL)
@@ -1255,7 +1256,7 @@ jack_driver_t * driver_initialize (jack_client_t *client,
{
# ifndef OSS_ENDIAN
# ifdef __GNUC__
-# if (defined(__i386__) || defined(__alpha__) || defined(__arm__) || defined(__x86_64__))
+# 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
diff --git a/jack/Makefile.am b/jack/Makefile.am
index 8da1399..403eca4 100644
--- a/jack/Makefile.am
+++ b/jack/Makefile.am
@@ -11,10 +11,11 @@ libjackinclude_HEADERS = \
thread.h \
timestamps.h \
transport.h \
- types.h \
- midiport.h \
- weakmacros.h \
- weakjack.h
+ types.h \
+ midiport.h \
+ weakmacros.h \
+ weakjack.h \
+ control.h
noinst_HEADERS = \
atomicity.h \
diff --git a/libjack/client.c b/libjack/client.c
index fa7c006..6afcd90 100644
--- a/libjack/client.c
+++ b/libjack/client.c
@@ -90,11 +90,11 @@ init_cpu ()
{
cpu_type = ((have_3dnow() << 8) | have_sse());
if (ARCH_X86_HAVE_3DNOW(cpu_type))
- jack_info("Enhanced3DNow! detected");
+ jack_log("Enhanced3DNow! detected");
if (ARCH_X86_HAVE_SSE2(cpu_type))
- jack_info("SSE2 detected");
+ jack_log("SSE2 detected");
if ((!ARCH_X86_HAVE_3DNOW(cpu_type)) && (!ARCH_X86_HAVE_SSE2(cpu_type)))
- jack_info("No supported SIMD instruction sets detected");
+ jack_log("No supported SIMD instruction sets detected");
jack_port_set_funcs();
}
diff --git a/python/Makefile.am b/python/Makefile.am
new file mode 100644
index 0000000..19238bc
--- /dev/null
+++ b/python/Makefile.am
@@ -0,0 +1,3 @@
+noinst_SCRIPTS = jackd.py
+EXTRA_DIST = jackd.py jackctl.pyc mygetopt.pyc reserve_audio.py
+
diff --git a/python/jackctl.py b/python/jackctl.py
index c13b9b0..c56c9b0 100644
--- a/python/jackctl.py
+++ b/python/jackctl.py
@@ -54,6 +54,8 @@ class JSIter:
return cast( retval, self.typ )
+DeviceAcquireFunc = CFUNCTYPE( c_int, c_char_p )
+DeviceReleaseFunc = CFUNCTYPE( None, c_char_p )
jackctl_server_start = libjs.jackctl_server_start
jackctl_server_start.argtypes = [ POINTER(jackctl_server_t), POINTER(jackctl_driver_t) ]
@@ -64,7 +66,7 @@ jackctl_server_stop.argtypes = [ POINTER(jackctl_server_t) ]
jackctl_server_stop.restype = c_bool
jackctl_server_create = libjs.jackctl_server_create
-jackctl_server_create.argtypes = [ POINTER(jackctl_server_t), POINTER(jackctl_driver_t) ]
+jackctl_server_create.argtypes = [ DeviceAcquireFunc, DeviceReleaseFunc ]
jackctl_server_create.restype = POINTER(jackctl_server_t)
jackctl_server_get_drivers_list = libjs.jackctl_server_get_drivers_list
@@ -191,9 +193,15 @@ class Driver(object):
name = property( get_name )
+
class Server(object):
def __init__( self ):
- self.srv_ptr = jackctl_server_create( None, None )
+ self.dacqd = DeviceAcquireFunc(self.acquire_card)
+ self.reled = DeviceReleaseFunc(self.release_card)
+ self.srv_ptr = jackctl_server_create( self.dacqd, self.reled )
+
+ self.acquire_card_cb = None
+ self.release_card_cb = None
driver_jslist = jackctl_server_get_drivers_list( self.srv_ptr )
@@ -218,3 +226,17 @@ class Server(object):
def stop( self ):
return jackctl_server_stop( self.srv_ptr )
+
+
+ def acquire_card( self, cardname ):
+ if self.acquire_card_cb:
+ return self.acquire_card_cb(cardname)
+ else:
+ return True
+
+ def release_card( self, cardname ):
+ if self.release_card_cb:
+ self.release_card_cb(cardname)
+
+
+
diff --git a/python/jackd.py b/python/jackd.py
old mode 100644
new mode 100755
index 594c3bd..02d9413
--- a/python/jackd.py
+++ b/python/jackd.py
@@ -1,10 +1,12 @@
#!/usr/bin/env python
import sys
-from mygetopt import my_getopt
-import jackctl
+from pyjackd.mygetopt import my_getopt
+from pyjackd import jackctl
import readline
+import time
+import reserve_audio
argv = sys.argv[1:]
@@ -75,8 +77,18 @@ def driver_parse_args( drv, argv ):
else:
p.value = optarg
+def acquire_dev(cardname):
+ reserve_audio.reserve_dev(cardname,20,None)
+ time.sleep(0.1)
+ return True
+
+def release_dev(cardname):
+ reserve_audio.rr.unreserve()
+ reserve_audio.rr = None
srv = jackctl.Server()
+srv.acquire_card_cb = acquire_dev
+srv.release_card_cb = release_dev
drv, argv = server_parse_ags( srv, argv )
driver_parse_args( drv, argv )
@@ -90,7 +102,16 @@ driver_parse_args( drv, argv )
#for p in drv.params.values():
# print p.name, "-> ", p.value
-srv.start( drv )
+started = srv.start( drv )
+
+if not started:
+ print "failed to start with driver " + drv.name
+ print "trying to start with dummy driver, switch to the right master yourself"
+
+ started = srv.start( srv.drivers["dummy"] )
+
+ if not started:
+ sys.exit(20)
quit = False
while not quit:
diff --git a/python/reserve_audio.py b/python/reserve_audio.py
index 5096600..d664d4c 100644
--- a/python/reserve_audio.py
+++ b/python/reserve_audio.py
@@ -31,6 +31,10 @@ class reservation_t( dbus.service.Object ):
return False
+ def unreserve (self):
+ self.connection.release_name( 'org.freedesktop.ReserveDevice1.' + self.dev_name )
+ rr.remove_from_connection()
+
def reserve_dev( dev_name, prio, override_cb ):
global rr
@@ -43,6 +47,7 @@ def reserve_dev( dev_name, prio, override_cb ):
r_proxy = session_bus.get_object( "org.freedesktop.ReserveDevice1." + dev_name, "/org/freedesktop/ReserveDevice1/" + dev_name )
r_iface = dbus.Interface( r_proxy, "org.freedesktop.ReserveDevice1" )
except Exception:
+ print "no other reservation exists. taking the name"
rr = reservation_t( dev_name, prio, override_cb )
return
diff --git a/tools/iodelay.c b/tools/iodelay.c
index fe56180..dd8a6ea 100644
--- a/tools/iodelay.c
+++ b/tools/iodelay.c
@@ -237,12 +237,17 @@ int main (int ac, char *av [])
if (mtdm_resolve (mtdm) < 0) printf ("Signal below threshold...\n");
else
{
+ jack_nframes_t systemic_latency;
+
if (mtdm->_err > 0.3)
{
mtdm_invert ( mtdm );
mtdm_resolve ( mtdm );
}
- printf ("%10.3lf frames %10.3lf ms", mtdm->_del, mtdm->_del * t);
+ systemic_latency = (jack_nframes_t) floor (mtdm->_del - (capture_latency.max + playback_latency.max));
+
+ printf ("%10.3lf frames %10.3lf ms total roundtrip latency\n\textra loopback latency: %u frames\n\tuse %u for the backend arguments -I and -O", mtdm->_del, mtdm->_del * t,
+ systemic_latency, systemic_latency/2);
if (mtdm->_err > 0.2) printf (" ??");
if (mtdm->_inv) printf (" Inv");
printf ("\n");
--
Debian packaging for jack-audio-connection-kit
More information about the pkg-multimedia-commits
mailing list