diff --git a/configure.ac b/configure.ac index 7f1f0c3..f9b012b 100644 --- a/configure.ac +++ b/configure.ac @@ -655,9 +655,11 @@ HAVE_SAMPLERATE=false PKG_CHECK_MODULES(SAMPLERATE, samplerate >= 0.1.2,[HAVE_SAMPLERATE=true], [true]) if test x$HAVE_SAMPLERATE = xfalse; then AC_MSG_WARN([*** the NetJack backend and internal client will not be built]) + AC_DEFINE(HAVE_SAMPLERATE,0,"Whether libsamplerate is available") else CFLAGS="$CFLAGS $SAMPLERATE_CFLAGS" LIBS="$LIBS $SAMPLERATE_LIBS" + AC_DEFINE(HAVE_SAMPLERATE,1,"Whether libsamplerate is available") fi # Celt low-latency audio codec. netjack transmission via internet. diff --git a/drivers/netjack/Makefile.am b/drivers/netjack/Makefile.am index 9936655..96b5019 100644 --- a/drivers/netjack/Makefile.am +++ b/drivers/netjack/Makefile.am @@ -2,17 +2,14 @@ MAINTAINCLEANFILES = Makefile.in AM_CFLAGS = $(JACK_CFLAGS) -if HAVE_SAMPLERATE plugindir = $(ADDON_DIR) plugin_LTLIBRARIES = jack_net.la -jack_net_la_LIBADD = -lsamplerate jack_net_la_LDFLAGS = -module -avoid-version jack_net_la_SOURCES = net_driver.c netjack_packet.c noinst_HEADERS = net_driver.h netjack_packet.h -endif # HAVE_SAMPLERATE diff --git a/drivers/netjack/net_driver.c b/drivers/netjack/net_driver.c index 0748857..fb3013f 100644 --- a/drivers/netjack/net_driver.c +++ b/drivers/netjack/net_driver.c @@ -43,7 +43,9 @@ $Id: net_driver.c,v 1.17 2006/04/16 20:16:10 torbenh Exp $ #include "config.h" +#if HAVE_SAMPLERATE #include +#endif #if HAVE_CELT #include @@ -549,7 +551,9 @@ net_driver_attach (net_driver_t *driver) driver->capture_srcs = jack_slist_append(driver->capture_srcs, celt_decoder_create( celt_mode ) ); #endif } else { +#if HAVE_SAMPLERATE driver->capture_srcs = jack_slist_append(driver->capture_srcs, src_new(SRC_LINEAR, 1, NULL)); +#endif } } for (chn = driver->capture_channels_audio; chn < driver->capture_channels; chn++) { @@ -565,7 +569,6 @@ net_driver_attach (net_driver_t *driver) driver->capture_ports = jack_slist_append (driver->capture_ports, port); - //driver->capture_srcs = jack_slist_append(driver->capture_srcs, src_new(SRC_LINEAR, 1, NULL)); } port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal; @@ -591,7 +594,9 @@ net_driver_attach (net_driver_t *driver) driver->playback_srcs = jack_slist_append(driver->playback_srcs, celt_encoder_create( celt_mode ) ); #endif } else { +#if HAVE_SAMPLERATE driver->playback_srcs = jack_slist_append(driver->playback_srcs, src_new(SRC_LINEAR, 1, NULL)); +#endif } } for (chn = driver->playback_channels_audio; chn < driver->playback_channels; chn++) { @@ -608,7 +613,6 @@ net_driver_attach (net_driver_t *driver) driver->playback_ports = jack_slist_append (driver->playback_ports, port); - //driver->playback_srcs = jack_slist_append(driver->playback_srcs, src_new(SRC_LINEAR, 1, NULL)); } jack_activate (driver->client); @@ -1059,11 +1063,21 @@ driver_initialize (jack_client_t *client, const JSList * params) break; case 'f': +#if HAVE_SAMPLERATE resample_factor = param->value.ui; +#else + printf( "not built with libsamplerate support\n" ); + exit(10); +#endif break; case 'u': +#if HAVE_SAMPLERATE resample_factor_up = param->value.ui; +#else + printf( "not built with libsamplerate support\n" ); + exit(10); +#endif break; case 'b': diff --git a/drivers/netjack/net_driver.h b/drivers/netjack/net_driver.h index 9ff22c6..33ce6d7 100644 --- a/drivers/netjack/net_driver.h +++ b/drivers/netjack/net_driver.h @@ -28,7 +28,6 @@ #include #include -#include typedef struct _net_driver net_driver_t; diff --git a/drivers/netjack/netjack_packet.c b/drivers/netjack/netjack_packet.c index 052f346..4be553f 100644 --- a/drivers/netjack/netjack_packet.c +++ b/drivers/netjack/netjack_packet.c @@ -51,7 +51,9 @@ #include #include +#if HAVE_SAMPLERATE #include +#endif #if HAVE_CELT #include @@ -856,7 +858,9 @@ render_payload_to_jack_ports_float ( void *packet_payload, jack_nframes_t net_pe { int i; int_float_t val; +#if HAVE_SAMPLERATE SRC_DATA src; +#endif jack_port_t *port = (jack_port_t *) node->data; jack_default_audio_sample_t* buf = jack_port_get_buffer (port, nframes); @@ -865,6 +869,7 @@ render_payload_to_jack_ports_float ( void *packet_payload, jack_nframes_t net_pe if (strncmp (porttype, JACK_DEFAULT_AUDIO_TYPE, jack_port_type_size()) == 0) { +#if HAVE_SAMPLERATE // audio port, resample if necessary if (net_period_down != nframes) { @@ -888,6 +893,7 @@ render_payload_to_jack_ports_float ( void *packet_payload, jack_nframes_t net_pe src_node = jack_slist_next (src_node); } else +#endif { for (i = 0; i < net_period_down; i++) { @@ -922,7 +928,9 @@ render_jack_ports_to_payload_float (JSList *playback_ports, JSList *playback_src while (node != NULL) { +#if HAVE_SAMPLERATE SRC_DATA src; +#endif int i; int_float_t val; jack_port_t *port = (jack_port_t *) node->data; @@ -934,6 +942,7 @@ render_jack_ports_to_payload_float (JSList *playback_ports, JSList *playback_src { // audio port, resample if necessary +#if HAVE_SAMPLERATE if (net_period_up != nframes) { SRC_STATE *src_state = src_node->data; src.data_in = buf; @@ -955,6 +964,7 @@ render_jack_ports_to_payload_float (JSList *playback_ports, JSList *playback_src src_node = jack_slist_next (src_node); } else +#endif { for (i = 0; i < net_period_up; i++) { @@ -995,7 +1005,9 @@ render_payload_to_jack_ports_16bit (void *packet_payload, jack_nframes_t net_per { int i; //uint32_t val; +#if HAVE_SAMPLERATE SRC_DATA src; +#endif jack_port_t *port = (jack_port_t *) node->data; jack_default_audio_sample_t* buf = jack_port_get_buffer (port, nframes); @@ -1007,6 +1019,7 @@ render_payload_to_jack_ports_16bit (void *packet_payload, jack_nframes_t net_per { // audio port, resample if necessary +#if HAVE_SAMPLERATE if (net_period_down != nframes) { SRC_STATE *src_state = src_node->data; @@ -1029,6 +1042,7 @@ render_payload_to_jack_ports_16bit (void *packet_payload, jack_nframes_t net_per src_node = jack_slist_next (src_node); } else +#endif for (i = 0; i < net_period_down; i++) buf[i] = ((float) ntohs (packet_bufX[i])) / 32768.0 - 1.0; } @@ -1057,7 +1071,9 @@ render_jack_ports_to_payload_16bit (JSList *playback_ports, JSList *playback_src while (node != NULL) { +#if HAVE_SAMPLERATE SRC_DATA src; +#endif int i; jack_port_t *port = (jack_port_t *) node->data; jack_default_audio_sample_t* buf = jack_port_get_buffer (port, nframes); @@ -1067,6 +1083,7 @@ render_jack_ports_to_payload_16bit (JSList *playback_ports, JSList *playback_src { // audio port, resample if necessary +#if HAVE_SAMPLERATE if (net_period_up != nframes) { SRC_STATE *src_state = src_node->data; @@ -1092,6 +1109,7 @@ render_jack_ports_to_payload_16bit (JSList *playback_ports, JSList *playback_src src_node = jack_slist_next (src_node); } else +#endif for (i = 0; i < net_period_up; i++) packet_bufX[i] = htons(((uint16_t)((buf[i] + 1.0) * 32767.0))); } @@ -1126,7 +1144,9 @@ render_payload_to_jack_ports_8bit (void *packet_payload, jack_nframes_t net_peri { int i; //uint32_t val; +#if HAVE_SAMPLERATE SRC_DATA src; +#endif jack_port_t *port = (jack_port_t *) node->data; jack_default_audio_sample_t* buf = jack_port_get_buffer (port, nframes); @@ -1136,8 +1156,8 @@ render_payload_to_jack_ports_8bit (void *packet_payload, jack_nframes_t net_peri if (strncmp (portname, JACK_DEFAULT_AUDIO_TYPE, jack_port_type_size()) == 0) { +#if HAVE_SAMPLERATE // audio port, resample if necessary - if (net_period_down != nframes) { SRC_STATE *src_state = src_node->data; @@ -1158,6 +1178,7 @@ render_payload_to_jack_ports_8bit (void *packet_payload, jack_nframes_t net_peri src_node = jack_slist_next (src_node); } else +#endif for (i = 0; i < net_period_down; i++) buf[i] = ((float) packet_bufX[i]) / 127.0; } @@ -1186,7 +1207,9 @@ render_jack_ports_to_payload_8bit (JSList *playback_ports, JSList *playback_srcs while (node != NULL) { +#if HAVE_SAMPLERATE SRC_DATA src; +#endif int i; jack_port_t *port = (jack_port_t *) node->data; @@ -1195,9 +1218,11 @@ render_jack_ports_to_payload_8bit (JSList *playback_ports, JSList *playback_srcs if (strncmp (portname, JACK_DEFAULT_AUDIO_TYPE, jack_port_type_size()) == 0) { +#if HAVE_SAMPLERATE // audio port, resample if necessary if (net_period_up != nframes) { + SRC_STATE *src_state = src_node->data; float *floatbuf = alloca (sizeof (float) * net_period_up); @@ -1219,6 +1244,7 @@ render_jack_ports_to_payload_8bit (JSList *playback_ports, JSList *playback_srcs src_node = jack_slist_next (src_node); } else +#endif for (i = 0; i < net_period_up; i++) packet_bufX[i] = buf[i] * 127.0; } diff --git a/tools/Makefile.am b/tools/Makefile.am index ef7dee8..d637c9b 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -121,12 +121,12 @@ jack_unload_LDADD = $(top_builddir)/libjack/libjack.la # # Netjack slave tools # -if HAVE_SAMPLERATE jack_netsource_SOURCES = netsource.c $(top_builddir)/drivers/netjack/netjack_packet.c jack_netsource_CFLAGS = -I$(top_srcdir)/drivers/netjack -jack_netsource_LDFLAGS = -lsamplerate @OS_LDFLAGS@ +jack_netsource_LDFLAGS = @OS_LDFLAGS@ jack_netsource_LDADD = $(top_builddir)/libjack/libjack.la +if HAVE_SAMPLERATE if HAVE_ALSA alsa_in_SOURCES = alsa_in.c time_smoother.c alsa_in_LDFLAGS = -lasound -lsamplerate @OS_LDFLAGS@ diff --git a/tools/netsource.c b/tools/netsource.c index deecb2d..ac9b8fe 100644 --- a/tools/netsource.c +++ b/tools/netsource.c @@ -49,7 +49,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include #include +#if HAVE_SAMPLERATE #include +#endif #if HAVE_CELT #include @@ -125,7 +127,9 @@ alloc_ports (int n_capture_audio, int n_playback_audio, int n_capture_midi, int capture_srcs = jack_slist_append(capture_srcs, celt_decoder_create( celt_mode ) ); #endif } else { +#if HAVE_SAMPLERATE capture_srcs = jack_slist_append (capture_srcs, src_new (SRC_LINEAR, 1, NULL)); +#endif } capture_ports = jack_slist_append (capture_ports, port); } @@ -162,7 +166,9 @@ alloc_ports (int n_capture_audio, int n_playback_audio, int n_capture_midi, int playback_srcs = jack_slist_append(playback_srcs, celt_encoder_create( celt_mode ) ); #endif } else { +#if HAVE_SAMPLERATE playback_srcs = jack_slist_append (playback_srcs, src_new (SRC_LINEAR, 1, NULL)); +#endif } playback_ports = jack_slist_append (playback_ports, port); }