diff -u ./Makefile.am /usr/src/PLAYER/JACK/jack/Makefile.am --- ./Makefile.am Mon Nov 12 05:08:38 2001 +++ /usr/src/PLAYER/JACK/jack/Makefile.am Tue Nov 13 01:20:59 2001 @@ -10,6 +10,10 @@ bin_PROGRAMS = jackd jack_simple_client jack_monitor_client @XTRA@ +EXTRA_CFLAGS = -DADDON_DIR=\"$(ADDON_DIR)\" @GLIB_CFLAGS@ + +CFLAGS += $(EXTRA_CFLAGS) + jackd_SOURCES = jackd.c jackd_LDFLAGS = -L. -ljack -lltdl -lpthread diff -u ./alsa_driver.c /usr/src/PLAYER/JACK/jack/alsa_driver.c --- ./alsa_driver.c Mon Nov 12 05:08:50 2001 +++ /usr/src/PLAYER/JACK/jack/alsa_driver.c Tue Nov 13 03:47:31 2001 @@ -209,7 +209,7 @@ return -1; } } - + if ((err = snd_pcm_hw_params_set_format (handle, hw_params, SND_PCM_FORMAT_S32_LE)) < 0) { if ((err = snd_pcm_hw_params_set_format (handle, hw_params, SND_PCM_FORMAT_S16_LE)) < 0) { jack_error ("Sorry. The audio interface \"%s\"" @@ -225,22 +225,25 @@ } *nchns = snd_pcm_hw_params_get_channels_max (hw_params); - + if (*nchns > 1024) { /* Check for ridiculous results */ + *nchns = 2; /* or ALSA trident driver bugs?! */ + } + printf("max channels = %u\n", *nchns); if ((err = snd_pcm_hw_params_set_channels (handle, hw_params, *nchns)) < 0) { jack_error ("ALSA: cannot set channel count to %u for %s", *nchns, stream_name); return -1; } - - if ((err = snd_pcm_hw_params_set_periods (handle, hw_params, 2, 0)) < 0) { - jack_error ("ALSA: cannot set fragment count minimum to 2 for %s", stream_name); + + if ((err = snd_pcm_hw_params_set_period_size (handle, hw_params, driver->frames_per_cycle, 0)) < 0) { + jack_error ("ALSA: cannot set fragment length to %u for %s", driver->frames_per_cycle, stream_name); return -1; } - if ((err = snd_pcm_hw_params_set_period_size (handle, hw_params, driver->frames_per_cycle, 0)) < 0) { - jack_error ("ALSA: cannot set fragment length to %u for %s", stream_name); + if ((err = snd_pcm_hw_params_set_periods (handle, hw_params, 2, 0)) < 0) { + jack_error ("ALSA: cannot set fragment count minimum to 2 for %s", stream_name); return -1; } - + if ((err = snd_pcm_hw_params_set_buffer_size (handle, hw_params, 2 * driver->frames_per_cycle)) < 0) { jack_error ("ALSA: cannot set buffer length to %u for %s", 2 * driver->frames_per_cycle, stream_name); return -1; @@ -300,7 +303,7 @@ driver->frame_rate = rate; driver->frames_per_cycle = frames_per_cycle; - + if (alsa_driver_configure_stream (driver, "capture", driver->capture_handle, driver->capture_hw_params, @@ -309,7 +312,7 @@ jack_error ("ALSA-MCD: cannot configure capture channel"); return -1; } - + if (alsa_driver_configure_stream (driver, "playback", driver->playback_handle, driver->playback_hw_params, diff -u ./configure.in /usr/src/PLAYER/JACK/jack/configure.in --- ./configure.in Mon Nov 12 05:21:46 2001 +++ /usr/src/PLAYER/JACK/jack/configure.in Tue Nov 13 01:12:52 2001 @@ -54,6 +54,10 @@ AC_PROG_LD AM_PROG_LIBTOOL +ADDON_DIR=${libdir} + +AC_SUBST(ADDON_DIR) + dnl check for the libraries we need AC_OUTPUT(Makefile diff -u ./jackd.c /usr/src/PLAYER/JACK/jack/jackd.c --- ./jackd.c Mon Nov 12 05:08:24 2001 +++ /usr/src/PLAYER/JACK/jack/jackd.c Tue Nov 13 01:27:50 2001 @@ -138,7 +138,7 @@ return 1; } - if ((driver = jack_driver_load ("/usr/local/lib/jack_alsa.so", alsa_pcm_name, frames_per_interrupt, srate)) == 0) { + if ((driver = jack_driver_load (ADDON_DIR "/jack_alsa.so", alsa_pcm_name, frames_per_interrupt, srate)) == 0) { fprintf (stderr, "cannot load ALSA driver module\n"); return 1; }