# This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # audio/jack # audio/jack/pkg-plist # audio/jack/Makefile # audio/jack/distinfo # audio/jack/pkg-descr # audio/jack/files # audio/jack/files/patch-configure.ac # audio/jack/files/patch-drivers_alsa_memops.c # audio/jack/files/jackd.in # audio/jack/files/patch-drivers_oss_oss__driver.c # audio/jack/files/patch-jack.pc.in # audio/jack/files/patch-jackd_engine.c # audio/jack/files/patch-jackd_jackd.c # audio/jack/files/patch-libjack_client.c # audio/jack/pkg-message # echo c - audio/jack mkdir -p audio/jack > /dev/null 2>&1 echo x - audio/jack/pkg-plist sed 's/^X//' >audio/jack/pkg-plist << '7e1ae47051df17683c6196da755a822f' X%%ALSA%%bin/alsa_in X%%ALSA%%bin/alsa_out Xbin/jack_alias Xbin/jack_bufsize Xbin/jack_connect Xbin/jack_disconnect Xbin/jack_evmon Xbin/jack_freewheel Xbin/jack_impulse_grabber Xbin/jack_iodelay Xbin/jack_latent_client Xbin/jack_load Xbin/jack_load_test Xbin/jack_lsp Xbin/jack_metro Xbin/jack_midiseq Xbin/jack_midisine Xbin/jack_midi_dump Xbin/jack_monitor_client Xbin/jack_netsource Xbin/jack_property Xbin/jack_rec Xbin/jack_samplerate Xbin/jack_session_notify Xbin/jack_server_control Xbin/jack_simple_session_client Xbin/jack_showtime Xbin/jack_simple_client X%%READLINE%%bin/jack_transport Xbin/jack_transport_client Xbin/jack_unload Xbin/jack_wait Xbin/jackd Xinclude/jack/control.h Xinclude/jack/intclient.h Xinclude/jack/jack.h Xinclude/jack/jslist.h Xinclude/jack/metadata.h Xinclude/jack/midiport.h Xinclude/jack/ringbuffer.h Xinclude/jack/session.h Xinclude/jack/statistics.h Xinclude/jack/thread.h Xinclude/jack/transport.h Xinclude/jack/types.h Xinclude/jack/uuid.h Xinclude/jack/weakjack.h Xinclude/jack/weakmacros.h Xlib/jack/inprocess.so Xlib/jack/intime.so X%%ALSA%%lib/jack/jack_alsa.so X%%ALSA%%lib/jack/jack_alsa_midi.so Xlib/jack/jack_dummy.so Xlib/jack/jack_net.so Xlib/jack/jack_oss.so X%%SNDIO%%lib/jack/jack_sndio.so Xlib/libjack.so Xlib/libjack.so.0 Xlib/libjack.so.0.0.28 Xlib/libjackserver.so Xlib/libjackserver.so.0 Xlib/libjackserver.so.0.0.28 Xlibdata/pkgconfig/jack.pc Xman/man1/alsa_in.1.gz Xman/man1/alsa_out.1.gz Xman/man1/jack_bufsize.1.gz Xman/man1/jack_connect.1.gz Xman/man1/jack_disconnect.1.gz Xman/man1/jack_freewheel.1.gz Xman/man1/jack_impulse_grabber.1.gz Xman/man1/jack_iodelay.1.gz Xman/man1/jack_load.1.gz Xman/man1/jack_load_test.1.gz Xman/man1/jack_lsp.1.gz Xman/man1/jack_metro.1.gz Xman/man1/jack_monitor_client.1.gz Xman/man1/jack_netsource.1.gz Xman/man1/jack_property.1.gz Xman/man1/jack_samplerate.1.gz Xman/man1/jack_showtime.1.gz Xman/man1/jack_transport.1.gz Xman/man1/jack_unload.1.gz Xman/man1/jack_wait.1.gz Xman/man1/jackd.1.gz Xman/man1/jackrec.1.gz Xman/man1/jackstart.1.gz X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/annotated.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/classes.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/control_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/control_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/deprecated.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/dir_3e6ff996e0a05d442d13220a8cf7408f.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/dir_d611c2c1e1e252f8153c91ce21a161f9.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/doxygen.css X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/doxygen.png X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/files.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/fsm.png X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/functions.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/functions_vars.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_defs.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_e.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_enum.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_eval.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_func.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_i.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_j.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_m.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_o.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_p.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_t.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_type.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_vars.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/globals_w.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ClientCallbacks.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ClientFunctions.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ClientThreads.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ControlAPI.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ErrorOutput.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__JackSessionManagerAPI.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__LatencyFunctions.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__MIDIAPI.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__Metadata.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__NonCallbackAPI.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__PortFunctions.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__PortSearching.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__ServerControl.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__SessionClientFunctions.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__TimeFunctions.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__TransportControl.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/group__WeakLinkage.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/index.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/inprocess_8c.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/intclient_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/intclient_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/jack_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/jack_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/mainpage_8dox.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/metadata_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/metadata_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/midiport_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/midiport_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/modules.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/pages.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/porting-guide.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/porting_8dox.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/ringbuffer_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/ringbuffer_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/session_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/session_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/simple__client_8c.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/statistics_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/statistics_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/struct__jack__latency__range.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/struct__jack__midi__event.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/struct__jack__session__event.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__description__t.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__position__t.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__property__t.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__ringbuffer__data__t.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__ringbuffer__t.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__session__command__t.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structjack__transport__info__t.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/structport__pair__t.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/thread_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/thread_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/transport-design.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/transport_8dox.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/transport_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/transport_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/types_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/types_8h_source.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/unionjackctl__parameter__value.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/weakjack_8h.html X%%DOXYGEN%%share/jack-audio-connection-kit/reference/html/weakjack_8h_source.html 7e1ae47051df17683c6196da755a822f echo x - audio/jack/Makefile sed 's/^X//' >audio/jack/Makefile << '3b9a40a1b7801eaae4123300369b515a' X# Created by: Tilman Linneweh X# $FreeBSD: head/audio/jack/Makefile 444463 2017-06-27 13:46:53Z sunpoet $ X XPORTNAME= jackit XPORTVERSION= 0.125.0 XPORTREVISION= 2 XCATEGORIES= audio X XMAINTAINER= multimedia@FreeBSD.org XCOMMENT= Low latency audio server X XLICENSE= GPLv2 LGPL21 XLICENSE_COMB= multi X XLIB_DEPENDS= libsndfile.so:audio/libsndfile \ X libsamplerate.so:audio/libsamplerate \ X libcelt0.so:audio/celt \ X libuuid.so:misc/e2fsprogs-libuuid X XUSES= autoreconf gmake pathfix pkgconfig libtool localbase bdb XUSE_GITHUB= yes XGH_ACCOUNT= jackaudio XGH_PROJECT= jack1 X#GH_TAGNAME= 90f9dd3 XGH_TAGNAME= 44e2398 XGH_TUPLE= jackaudio:headers:07f1ecf:h/jack XGH_TUPLE+= jackaudio:tools:8d13c31:t/tools XGH_TUPLE+= jackaudio:example-clients:7fa0890:e/example-clients XUSE_LDCONFIG= yes XGNU_CONFIGURE= yes XUSE_RC_SUBR= jackd X XCONFIGURE_ARGS= --disable-portaudio \ X --enable-optimize \ X --enable-force-install \ X --with-default-tmpdir=/tmp X XCFLAGS+= -I${BDB_INCLUDE_DIR} XLIBS+= -L${BDB_LIB_DIR} XINSTALL_TARGET= install-strip X XOPTIONS_DEFINE= ALSA DOXYGEN READLINE SNDIO COOKEDMODE XOPTIONS_DEFINE_i386= DYNSIMD XOPTIONS_DEFINE_amd64= DYNSIMD XOPTIONS_DEFAULT= READLINE COOKEDMODE XOPTIONS_DEFAULT_i386= DYNSIMD XOPTIONS_DEFAULT_amd64= DYNSIMD XOPTIONS_SUB= yes XCOOKEDMODE_DESC= Use OSS COOKEDMODE (OSS driver is broken without it) XDYNSIMD_DESC= Use dynamic SIMD selection (only i386/amd64) X XALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib XALSA_CONFIGURE_ENABLE= alsa X XREADLINE_USES= readline X XDOXYGEN_BUILD_DEPENDS= doxygen:devel/doxygen XDOXYGEN_CONFIGURE_ENV_OFF= ac_cv_prog_HAVE_DOXYGEN="false" X XREADLINE_CONFIGURE_ENV_OFF= ac_cv_lib_readline_readline=no \ X ac_cv_header_readline_chardefs_h=no X XSNDIO_LIB_DEPENDS= libsndio.so:audio/sndio XSNDIO_CONFIGURE_ENABLE= sndio X XCOOKEDMODE_CFLAGS+= -DOPTION_COOKEDMODE X XDYNSIMD_CONFIGURE_ENABLE=dynsimd X Xpost-patch: X @${RM} ${WRKSRC}/doc/reference/html/* X Xpost-build: X @${RM} ${WRKSRC}/doc/reference/html/dir__2F* X X.include 3b9a40a1b7801eaae4123300369b515a echo x - audio/jack/distinfo sed 's/^X//' >audio/jack/distinfo << '29c45088cd5229ba3c74dc3ce71d37fd' XTIMESTAMP = 1500366301 XSHA256 (jackaudio-jack1-0.125.0-44e2398_GH0.tar.gz) = 6e001c79a7b3f527a60948d155b4539ee5216ffbc39466f80081ce02b3a41bd4 XSIZE (jackaudio-jack1-0.125.0-44e2398_GH0.tar.gz) = 390604 XSHA256 (jackaudio-headers-07f1ecf_GH0.tar.gz) = 04a3bb87d278923985ba44045b7a27439c90776cc5d4a6016d062fc7a6aa5023 XSIZE (jackaudio-headers-07f1ecf_GH0.tar.gz) = 36704 XSHA256 (jackaudio-tools-8d13c31_GH0.tar.gz) = 23e6bc60c8cef4283677206f2687a408367203a725c091c923f48554ae6e8cc8 XSIZE (jackaudio-tools-8d13c31_GH0.tar.gz) = 45544 XSHA256 (jackaudio-example-clients-7fa0890_GH0.tar.gz) = 79e2ac1d38d7d77b1afb71aa97414c339e8c00613a5d9b725861232b5c995223 XSIZE (jackaudio-example-clients-7fa0890_GH0.tar.gz) = 16174 29c45088cd5229ba3c74dc3ce71d37fd echo x - audio/jack/pkg-descr sed 's/^X//' >audio/jack/pkg-descr << '63ef46924af8eed505668e962560b664' XJACK is a low latency audio server, written for POSIX-conformant operating Xsystems. It can connect a number of different applications to an audio Xdevice, as well as allowing them to share audio between themselves. Its Xclients can run in their own processes (i.e. as normal applications), or Xcan they can run within the JACK server (i.e. as a "plugin"). X XJACK was designed from the ground up for professional audio work, and its Xdesign focuses on two key areas: synchronous execution of all clients, and Xlow latency operation. X XWWW: http://jackaudio.org/ 63ef46924af8eed505668e962560b664 echo c - audio/jack/files mkdir -p audio/jack/files > /dev/null 2>&1 echo x - audio/jack/files/patch-configure.ac sed 's/^X//' >audio/jack/files/patch-configure.ac << '153296a0449acf8101e45df76271906e' X--- configure.ac.orig 2017-01-10 10:20:51 UTC X+++ configure.ac X@@ -172,6 +172,7 @@ case "${host_os}" in X # barrier code, this may be fixed in 5.3, stay tuned. X USE_BARRIER="no" X USE_MD5SUM=0 X+ JACK_DO_NOT_MLOCK=0 X ;; X openbsd*) X # pthread_barrier* not implemented 153296a0449acf8101e45df76271906e echo x - audio/jack/files/patch-drivers_alsa_memops.c sed 's/^X//' >audio/jack/files/patch-drivers_alsa_memops.c << 'd0c959fa29a1ed308c7d8893ab187e48' X--- drivers/alsa/memops.c.orig 2016-02-23 15:13:53 UTC X+++ drivers/alsa/memops.c X@@ -30,7 +30,7 @@ X #include X #include X #include X-#include X+#include X X #include "memops.h" X d0c959fa29a1ed308c7d8893ab187e48 echo x - audio/jack/files/jackd.in sed 's/^X//' >audio/jack/files/jackd.in << '9581d2c02de31e740a63a0a19fe5d306' X#!/bin/sh X# X# $FreeBSD: head/audio/jack/files/jackd.in 432054 2017-01-21 15:51:08Z riggs $ X# X# PROVIDE: jackd X# REQUIRE: LOGIN X# X# Add the following line to /etc/rc.conf to enable jackd: X# X# jackd_enable="YES" X# X X: ${jackd_enable="NO"} X: ${jackd_user="root"} X: ${jackd_rtprio="NO"} X: ${jackd_args="-r -doss -r44100 -p1024 -n3 -w16"} X X. /etc/rc.subr X Xname=jackd Xrcvar=jackd_enable Xprocname=%%PREFIX%%/bin/jackd Xstart_cmd="start_jackd" X Xstart_jackd() { X echo "Starting ${name}." X if [ $jackd_rtprio = "YES" ]; then X local rt="rtprio 1" X fi X # log the date and parameters X echo -e "\n[`date`] Starting the daemon, user=$jackd_user rtprio=$jackd_rtprio args=\"$jackd_args\"" >> /var/log/${name}.log X # daemon(8) should be able to set the realtime priority, but it isn't X $rt daemon -p /var/run/${name}.pid -o /var/log/${name}.log -u "${jackd_user}" %%PREFIX%%/bin/jackd ${jackd_args} X} X Xload_rc_config ${name} Xrun_rc_command "$1" 9581d2c02de31e740a63a0a19fe5d306 echo x - audio/jack/files/patch-drivers_oss_oss__driver.c sed 's/^X//' >audio/jack/files/patch-drivers_oss_oss__driver.c << '1949e318932e04f3de18f1ff3c32f2ad' X--- drivers/oss/oss_driver.c.orig 2017-01-10 10:20:51 UTC X+++ drivers/oss/oss_driver.c X@@ -23,6 +23,7 @@ X X #include X X+#define __BSD_VISIBLE 1 X #ifdef USE_BARRIER X /* X * POSIX conformance level should be globally defined somewhere, possibly X@@ -172,7 +173,9 @@ static void set_period_size (oss_driver_ X ((double)driver->period_size / X (double)driver->sample_rate) * 1e6; X driver->last_wait_ust = 0; X- driver->last_periodtime = driver->engine->get_microseconds (); X+ driver->last_periodtime = driver->engine ? X+ driver->engine->get_microseconds() : X+ jack_get_microseconds(); X driver->next_periodtime = 0; X driver->iodelay = 0.0F; X } X@@ -180,7 +183,9 @@ static void set_period_size (oss_driver_ X X static inline void update_times (oss_driver_t *driver) X { X- driver->last_periodtime = driver->engine->get_microseconds (); X+ driver->last_periodtime = driver->engine ? X+ driver->engine->get_microseconds() : X+ jack_get_microseconds(); X if (driver->next_periodtime > 0) { X driver->iodelay = (float) X ((long double)driver->last_periodtime - X@@ -211,6 +216,7 @@ static void copy_and_convert_in (jack_sa X int dstidx; X signed short *s16src = (signed short*)src; X signed int *s32src = (signed int*)src; X+ unsigned char *s24src = (unsigned char *) src; X double *f64src = (double*)src; X jack_sample_t scale; X X@@ -225,10 +231,13 @@ static void copy_and_convert_in (jack_sa X } X break; X case 24: X- scale = 1.0f / 0x7fffff; X+ scale = 1.0f / 0x7fffffff; X for (dstidx = 0; dstidx < nframes; dstidx++) { X dst[dstidx] = (jack_sample_t) X- s32src[srcidx] * scale; X+ ((signed int)( X+ (s24src[3 * srcidx + 2] << 24) | X+ (s24src[3 * srcidx + 1] << 16) | X+ (s24src[3 * srcidx + 0] << 8))) * scale; X srcidx += chcount; X } X break; X@@ -256,6 +265,7 @@ static void copy_and_convert_out (void * X int srcidx; X int dstidx; X signed short *s16dst = (signed short*)dst; X+ unsigned char *s24dst = (unsigned char *) dst; X signed int *s32dst = (signed int*)dst; X double *f64dst = (double*)dst; X jack_sample_t scale; X@@ -273,12 +283,15 @@ static void copy_and_convert_out (void * X } X break; X case 24: X- scale = 0x7fffff; X+ scale = 0x7fffffff; X for (srcidx = 0; srcidx < nframes; srcidx++) { X- s32dst[dstidx] = (signed int) X- (src[srcidx] >= 0.0f) ? X- (src[srcidx] * scale + 0.5f) : X- (src[srcidx] * scale - 0.5f); X+ signed int sample = X+ (src[srcidx] >= 0.0f) ? X+ (src[srcidx] * scale + 0.5f) : X+ (src[srcidx] * scale - 0.5f) ; X+ s24dst[3*dstidx + 2] = sample >> 24; X+ s24dst[3*dstidx + 1] = sample >> 16; X+ s24dst[3*dstidx + 0] = sample >> 8; X dstidx += chcount; X } X break; X@@ -429,7 +442,11 @@ static int oss_driver_detach (oss_driver X X static int oss_driver_start (oss_driver_t *driver) X { X- int flags = 0; X+#if defined(OPTION_COOKEDMODE) X+ int cookedmode = 1; X+#else X+ int cookedmode = 0; X+#endif X int format; X int channels; X int samplerate; X@@ -441,19 +458,7 @@ static int oss_driver_start (oss_driver_ X const char *indev = driver->indev; X const char *outdev = driver->outdev; X X- switch (driver->bits) { X- case 24: X- case 32: X- samplesize = sizeof(int); X- break; X- case 64: X- samplesize = sizeof(double); X- break; X- case 16: X- default: X- samplesize = sizeof(short); X- break; X- } X+ samplesize = driver->bits / 8; X driver->trigger = 0; X if (strcmp (indev, outdev) != 0) { X if (driver->capture_channels > 0) { X@@ -464,7 +469,7 @@ static int oss_driver_start (oss_driver_ X indev, __FILE__, __LINE__, errno); X } X #ifndef OSS_NO_COOKED_MODE X- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); X+ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); X #endif X fragsize = driver->period_size * X driver->capture_channels * samplesize; X@@ -479,7 +484,7 @@ static int oss_driver_start (oss_driver_ X outdev, __FILE__, __LINE__, errno); X } X #ifndef OSS_NO_COOKED_MODE X- ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &flags); X+ ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &cookedmode); X #endif X fragsize = driver->period_size * X driver->playback_channels * samplesize; X@@ -497,7 +502,7 @@ static int oss_driver_start (oss_driver_ X return -1; X } X #ifndef OSS_NO_COOKED_MODE X- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); X+ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); X #endif X } else if (driver->capture_channels == 0 && X driver->playback_channels != 0) { X@@ -510,7 +515,7 @@ static int oss_driver_start (oss_driver_ X return -1; X } X #ifndef OSS_NO_COOKED_MODE X- ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &flags); X+ ioctl (outfd, SNDCTL_DSP_COOKEDMODE, &cookedmode); X #endif X } else { X infd = outfd = open (indev, O_RDWR | O_EXCL); X@@ -521,7 +526,7 @@ static int oss_driver_start (oss_driver_ X return -1; X } X #ifndef OSS_NO_COOKED_MODE X- ioctl (infd, SNDCTL_DSP_COOKEDMODE, &flags); X+ ioctl (infd, SNDCTL_DSP_COOKEDMODE, &cookedmode); X #endif X } X if (infd >= 0 && outfd >= 0) { X@@ -705,7 +710,9 @@ static int oss_driver_start (oss_driver_ X sem_post (&driver->sem_start); X } X X- driver->last_periodtime = driver->engine->get_microseconds (); X+ driver->last_periodtime = driver->engine ? X+ driver->engine->get_microseconds() : X+ jack_get_microseconds(); X driver->next_periodtime = 0; X driver->iodelay = 0.0F; X X@@ -1143,6 +1150,23 @@ jack_driver_t * driver_initialize (jack_ X pnode = jack_slist_next (pnode); X } X X+ switch (bits) X+ { X+ case 16: /* native-endian 16-bit integer */ X+ driver->format = AFMT_S16_NE; X+ break; X+ case 24: /* little-endian 24-bit integer */ X+ driver->format = AFMT_S24_LE; X+ break; X+ case 32: /* native-endian 32-bit integer */ X+ driver->format = AFMT_S32_NE; X+ break; X+ default: X+ free(driver); X+ jack_error("OSS: invalid number of bits: %d", X+ __FILE__, __LINE__, bits); X+ return NULL; X+ } X driver->sample_rate = sample_rate; X driver->period_size = period_size; X driver->nperiods = nperiods; X@@ -1163,58 +1187,6 @@ jack_driver_t * driver_initialize (jack_ X } X driver->infd = -1; X driver->outfd = -1; X- switch (driver->bits) { X-# ifndef OSS_ENDIAN X-# ifdef __GNUC__ X-# if (defined(__i386__) || defined(__alpha__) || defined(__arm__) || defined(__x86_64__) || (defined(__sh__) && !defined(__LITTLE_ENDIAN__))) X-# define OSS_LITTLE_ENDIAN 1234 X-# define OSS_ENDIAN OSS_LITTLE_ENDIAN X-# else X-# define OSS_BIG_ENDIAN 4321 X-# define OSS_ENDIAN OSS_BIG_ENDIAN X-# endif X-# else /* __GNUC__ */ X-# if (defined(_AIX) || defined(AIX) || defined(sparc) || defined(__hppa) || defined(PPC) || defined(__powerpc__) && !defined(i386) && !defined(__i386) && !defined(__i386__)) X-# define OSS_BIG_ENDIAN 4321 X-# define OSS_ENDIAN OSS_BIG_ENDIAN X-# else X-# define OSS_LITTLE_ENDIAN 1234 X-# define OSS_ENDIAN OSS_LITTLE_ENDIAN X-# endif X-# endif /* __GNUC__ */ X-# endif /* OSS_ENDIAN */ X-# if (OSS_ENDIAN == 1234) X- /* little-endian architectures */ X- case 24: /* little-endian LSB aligned 24-bits in 32-bits integer */ X- driver->format = 0x00008000; X- break; X- case 32: /* little-endian 32-bit integer */ X- driver->format = 0x00001000; X- break; X- case 64: /* native-endian 64-bit float */ X- driver->format = 0x00004000; X- break; X- case 16: /* little-endian 16-bit integer */ X- default: X- driver->format = 0x00000010; X- break; X- /* big-endian architectures */ X-# else X- case 24: /* big-endian LSB aligned 24-bits in 32-bits integer */ X- break; X- driver->format = 0x00010000; X- case 32: /* big-endian 32-bit integer */ X- driver->format = 0x00002000; X- break; X- case 64: /* native-endian 64-bit float */ X- driver->format = 0x00004000; X- break; X- case 16: /* big-endian 16-bit integer */ X- default: X- driver->format = 0x00000020; X-# endif X- } X- X driver->indevbuf = driver->outdevbuf = NULL; X X driver->capture_ports = NULL; 1949e318932e04f3de18f1ff3c32f2ad echo x - audio/jack/files/patch-jack.pc.in sed 's/^X//' >audio/jack/files/patch-jack.pc.in << 'e5b45db808792715408750a2fe315ca2' X--- jack.pc.in.orig 2013-10-04 00:45:25 UTC X+++ jack.pc.in X@@ -6,5 +6,5 @@ includedir=@includedir@ X Name: jack X Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server X Version: @JACK_VERSION@ X-Libs: -L${libdir} -ljack -lpthread @OS_LDFLAGS@ X+Libs: -L${libdir} -ljack -pthread X Cflags: -I${includedir} e5b45db808792715408750a2fe315ca2 echo x - audio/jack/files/patch-jackd_engine.c sed 's/^X//' >audio/jack/files/patch-jackd_engine.c << 'd3342a088f452a7d40d63695edfe9cd6' X--- jackd/engine.c.orig 2016-09-14 17:41:53 UTC X+++ jackd/engine.c X@@ -1435,7 +1435,7 @@ handle_external_client_request (jack_eng X if ((r = read (client->request_fd, &req, sizeof(req))) X < (ssize_t)sizeof(req)) { X if (r == 0) { X-#if defined(JACK_USE_MACH_THREADS) || defined(__OpenBSD__) X+#if 1 X /* poll is implemented using X select (see the macosx/fakepoll X code). When the socket is closed d3342a088f452a7d40d63695edfe9cd6 echo x - audio/jack/files/patch-jackd_jackd.c sed 's/^X//' >audio/jack/files/patch-jackd_jackd.c << '08dc9c57d1e1bd985d2531d05e719dac' X--- jackd/jackd.c.orig 2017-07-17 17:10:09 UTC X+++ jackd/jackd.c X@@ -521,11 +521,17 @@ jack_drivers_load () X X static void copyright (FILE* file) X { X- fprintf (file, "jackd " VERSION "\n" X+ fprintf (file, "jackd " VERSION " (COOKEDMODE=%s)\n" X "Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.\n" X "jackd comes with ABSOLUTELY NO WARRANTY\n" X "This is free software, and you are welcome to redistribute it\n" X- "under certain conditions; see the file COPYING for details\n\n"); X+ "under certain conditions; see the file COPYING for details\n\n", X+#if defined(OPTION_COOKEDMODE) X+ "on" X+#else X+ "off" X+#endif X+ ); X } X X static void usage (FILE *file) 08dc9c57d1e1bd985d2531d05e719dac echo x - audio/jack/files/patch-libjack_client.c sed 's/^X//' >audio/jack/files/patch-libjack_client.c << '4eb25287571376892c4e40a2f9d0b960' X--- libjack/client.c.orig 2017-01-10 10:20:51 UTC X+++ libjack/client.c X@@ -68,6 +68,30 @@ X static pthread_mutex_t client_lock; X static pthread_cond_t client_ready; X X+/* X+ * The following read/write wrappers handle the case of interruption X+ * by system signals: X+ */ X+static int X+read_retry(int fd, void *dst, int size) X+{ X+ int error; X+ do { X+ error = read(fd, dst, size); X+ } while (error == -1 && errno == EINTR); X+ return (error); X+} X+ X+static int X+write_retry(int fd, const void *src, int size) X+{ X+ int error; X+ do { X+ error = write(fd, src, size); X+ } while (error == -1 && errno == EINTR); X+ return (error); X+} X+ X static int X jack_client_close_aux(jack_client_t *client); X X@@ -251,7 +275,7 @@ oop_client_deliver_request (void *ptr, j X int wok, rok; X jack_client_t *client = (jack_client_t*)ptr; X X- wok = (write (client->request_fd, req, sizeof(*req)) X+ wok = (write_retry (client->request_fd, req, sizeof(*req)) X == sizeof(*req)); X X /* if necessary, add variable length key data after a PropertyChange request X@@ -259,7 +283,7 @@ oop_client_deliver_request (void *ptr, j X X if (req->type == PropertyChangeNotify) { X if (req->x.property.keylen) { X- if (write (client->request_fd, req->x.property.key, req->x.property.keylen) != req->x.property.keylen) { X+ if (write_retry (client->request_fd, req->x.property.key, req->x.property.keylen) != req->x.property.keylen) { X jack_error ("cannot send property key of length %d to server", X req->x.property.keylen); X req->status = -1; X@@ -268,7 +292,7 @@ oop_client_deliver_request (void *ptr, j X } X } X X- rok = (read (client->request_fd, req, sizeof(*req)) X+ rok = (read_retry (client->request_fd, req, sizeof(*req)) X == sizeof(*req)); X X if (wok && rok) { /* everything OK? */ X@@ -837,14 +861,14 @@ server_event_connect (jack_client_t *cli X X jack_uuid_copy (&req.client_id, client->control->uuid); X X- if (write (fd, &req, sizeof(req)) != sizeof(req)) { X- jack_error ("cannot write event connect request to server (%s)", X+ if (write_retry (fd, &req, sizeof(req)) != sizeof(req)) { X+ jack_error ("cannot write_retry event connect request to server (%s)", X strerror (errno)); X close (fd); X return -1; X } X X- if (read (fd, &res, sizeof(res)) != sizeof(res)) { X+ if (read_retry (fd, &res, sizeof(res)) != sizeof(res)) { X jack_error ("cannot read event connect result from server (%s)", X strerror (errno)); X close (fd); X@@ -1109,14 +1133,14 @@ jack_request_client (ClientType type, X snprintf (req.object_data, sizeof(req.object_data), X "%s", va->load_init); X X- if (write (*req_fd, &req, sizeof(req)) != sizeof(req)) { X+ if (write_retry (*req_fd, &req, sizeof(req)) != sizeof(req)) { X jack_error ("cannot send request to jack server (%s)", X strerror (errno)); X *status |= (JackFailure | JackServerError); X goto fail; X } X X- if (read (*req_fd, res, sizeof(*res)) != sizeof(*res)) { X+ if (read_retry (*req_fd, res, sizeof(*res)) != sizeof(*res)) { X X if (errno == 0) { X /* server shut the socket */ X@@ -1512,7 +1536,7 @@ jack_internal_client_close (const char * X return; X } X X- if (write (fd, &req, sizeof(req)) != sizeof(req)) { X+ if (write_retry (fd, &req, sizeof(req)) != sizeof(req)) { X jack_error ("cannot deliver ClientUnload request to JACK " X "server."); X } X@@ -1648,7 +1672,7 @@ jack_session_notify (jack_client_t* clie X X request.x.session.type = code; X X- if ( (write (client->request_fd, &request, sizeof(request)) X+ if ( (write_retry (client->request_fd, &request, sizeof(request)) X != sizeof(request)) ) { X jack_error ("cannot send request type %d to server", X request.type); X@@ -1658,7 +1682,7 @@ jack_session_notify (jack_client_t* clie X while ( 1 ) { X jack_uuid_t uid; X X- if (read (client->request_fd, &uid, sizeof(uid)) != sizeof(uid)) { X+ if (read_retry (client->request_fd, &uid, sizeof(uid)) != sizeof(uid)) { X jack_error ("cannot read result for request type %d from" X " server (%s)", request.type, strerror (errno)); X goto out; X@@ -1680,19 +1704,19 @@ jack_session_notify (jack_client_t* clie X break; X } X X- if (read (client->request_fd, (char*)retval[num_replies - 1].client_name, JACK_CLIENT_NAME_SIZE) X+ if (read_retry (client->request_fd, (char*)retval[num_replies - 1].client_name, JACK_CLIENT_NAME_SIZE) X != JACK_CLIENT_NAME_SIZE) { X jack_error ("cannot read result for request type %d from" X " server (%s)", request.type, strerror (errno)); X goto out; X } X- if (read (client->request_fd, (char*)retval[num_replies - 1].command, JACK_PORT_NAME_SIZE) X+ if (read_retry (client->request_fd, (char*)retval[num_replies - 1].command, JACK_PORT_NAME_SIZE) X != JACK_PORT_NAME_SIZE) { X jack_error ("cannot read result for request type %d from" X " server (%s)", request.type, strerror (errno)); X goto out; X } X- if (read (client->request_fd, &retval[num_replies - 1].flags, sizeof(retval[num_replies - 1].flags) ) X+ if (read_retry (client->request_fd, &retval[num_replies - 1].flags, sizeof(retval[num_replies - 1].flags) ) X != sizeof(retval[num_replies - 1].flags) ) { X jack_error ("cannot read result for request type %d from" X " server (%s)", request.type, strerror (errno)); X@@ -1811,7 +1835,7 @@ jack_client_process_events (jack_client_ X /* server has sent us an event. process the X * event and reply */ X X- if (read (client->event_fd, &event, sizeof(event)) X+ if (read_retry (client->event_fd, &event, sizeof(event)) X != sizeof(event)) { X jack_error ("cannot read server event (%s)", X strerror (errno)); X@@ -1821,7 +1845,7 @@ jack_client_process_events (jack_client_ X if (event.type == PropertyChange) { X if (event.y.key_size) { X key = (char*)malloc (event.y.key_size); X- if (read (client->event_fd, key, event.y.key_size) != X+ if (read_retry (client->event_fd, key, event.y.key_size) != X event.y.key_size) { X jack_error ("cannot read property change key (%s)", X strerror (errno)); X@@ -1940,7 +1964,7 @@ jack_client_process_events (jack_client_ X DEBUG ("client has dealt with the event, writing " X "response on event fd"); X X- if (write (client->event_fd, &status, sizeof(status)) X+ if (write_retry (client->event_fd, &status, sizeof(status)) X != sizeof(status)) { X jack_error ("cannot send event response to " X "engine (%s)", strerror (errno)); X@@ -1960,7 +1984,7 @@ jack_wake_next_client (jack_client_t* cl X int pret = 0; X char c = 0; X X- if (write (client->graph_next_fd, &c, sizeof(c)) X+ if (write_retry (client->graph_next_fd, &c, sizeof(c)) X != sizeof(c)) { X DEBUG ("cannot write byte to fd %d", client->graph_next_fd); X jack_error ("cannot continue execution of the " X@@ -1988,7 +2012,7 @@ jack_wake_next_client (jack_client_t* cl X } X X if (pret > 0 && (pfds[0].revents & POLLIN)) { X- if (read (client->graph_wait_fd, &c, sizeof(c)) X+ if (read_retry (client->graph_wait_fd, &c, sizeof(c)) X != sizeof(c)) { X jack_error ("cannot complete execution of the " X "processing graph (%s)", strerror (errno)); 4eb25287571376892c4e40a2f9d0b960 echo x - audio/jack/pkg-message sed 's/^X//' >audio/jack/pkg-message << 'c76db8369b20d5dcb93d2586aaa09a13' X====================================================================== XIt is recommended to run Jack with real-time priority (-R). X XThe recommended way to start Jack is to add the following Xlines to /etc/rc.conf: X Xjackd_enable="YES" Xjackd_user="{your-jack-user}" Xjackd_rtprio="YES" Xjackd_args="-R -doss -r{sample-rate} -p1024 -n3 -w16 \ X --capture /dev/dsp{N} --playback /dev/dsp{N}" X XWhere: X- your-jack-user: is the user who is going to use jack; currently X only one user is supported X- sample-rate: can be 44100, 48000, etc. X- /dev/dsp{N}: your OSS devices, usually /dev/dsp0 X XPlease note that the port option COOKEDMODE is "on" by default, which Xmakes your system to automatically scale the sample-rate between XJack and audio hardware. One reason COOKEDMODE=on is because XJack's OSS driver doesn't support some sample-rate and hardware Xcombinations when COOKEDMODE=off. To achieve the best sound quality Xplease make sure your hardware natively supports the sample-rate set Xin jackd_args, and set COOKEDMODE=off. X====================================================================== c76db8369b20d5dcb93d2586aaa09a13 exit