Browse Source

[netjack] support building without libsamplerate

git-svn-id: svn+ssh://jackaudio.org/trunk/jack@3196 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.116.2
torben 17 years ago
parent
commit
9643ffbb40
7 changed files with 53 additions and 9 deletions
  1. +2
    -0
      configure.ac
  2. +0
    -3
      drivers/netjack/Makefile.am
  3. +16
    -2
      drivers/netjack/net_driver.c
  4. +0
    -1
      drivers/netjack/net_driver.h
  5. +27
    -1
      drivers/netjack/netjack_packet.c
  6. +2
    -2
      tools/Makefile.am
  7. +6
    -0
      tools/netsource.c

+ 2
- 0
configure.ac View File

@@ -655,9 +655,11 @@ HAVE_SAMPLERATE=false
PKG_CHECK_MODULES(SAMPLERATE, samplerate >= 0.1.2,[HAVE_SAMPLERATE=true], [true]) PKG_CHECK_MODULES(SAMPLERATE, samplerate >= 0.1.2,[HAVE_SAMPLERATE=true], [true])
if test x$HAVE_SAMPLERATE = xfalse; then if test x$HAVE_SAMPLERATE = xfalse; then
AC_MSG_WARN([*** the NetJack backend and internal client will not be built]) AC_MSG_WARN([*** the NetJack backend and internal client will not be built])
AC_DEFINE(HAVE_SAMPLERATE,0,"Whether libsamplerate is available")
else else
CFLAGS="$CFLAGS $SAMPLERATE_CFLAGS" CFLAGS="$CFLAGS $SAMPLERATE_CFLAGS"
LIBS="$LIBS $SAMPLERATE_LIBS" LIBS="$LIBS $SAMPLERATE_LIBS"
AC_DEFINE(HAVE_SAMPLERATE,1,"Whether libsamplerate is available")
fi fi


# Celt low-latency audio codec. netjack transmission via internet. # Celt low-latency audio codec. netjack transmission via internet.


+ 0
- 3
drivers/netjack/Makefile.am View File

@@ -2,17 +2,14 @@ MAINTAINCLEANFILES = Makefile.in


AM_CFLAGS = $(JACK_CFLAGS) AM_CFLAGS = $(JACK_CFLAGS)


if HAVE_SAMPLERATE


plugindir = $(ADDON_DIR) plugindir = $(ADDON_DIR)


plugin_LTLIBRARIES = jack_net.la plugin_LTLIBRARIES = jack_net.la


jack_net_la_LIBADD = -lsamplerate


jack_net_la_LDFLAGS = -module -avoid-version jack_net_la_LDFLAGS = -module -avoid-version
jack_net_la_SOURCES = net_driver.c netjack_packet.c jack_net_la_SOURCES = net_driver.c netjack_packet.c


noinst_HEADERS = net_driver.h netjack_packet.h noinst_HEADERS = net_driver.h netjack_packet.h


endif # HAVE_SAMPLERATE

+ 16
- 2
drivers/netjack/net_driver.c View File

@@ -43,7 +43,9 @@ $Id: net_driver.c,v 1.17 2006/04/16 20:16:10 torbenh Exp $


#include "config.h" #include "config.h"


#if HAVE_SAMPLERATE
#include <samplerate.h> #include <samplerate.h>
#endif


#if HAVE_CELT #if HAVE_CELT
#include <celt/celt.h> #include <celt/celt.h>
@@ -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 ) ); driver->capture_srcs = jack_slist_append(driver->capture_srcs, celt_decoder_create( celt_mode ) );
#endif #endif
} else { } else {
#if HAVE_SAMPLERATE
driver->capture_srcs = jack_slist_append(driver->capture_srcs, src_new(SRC_LINEAR, 1, NULL)); 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++) { 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 = driver->capture_ports =
jack_slist_append (driver->capture_ports, port); 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; 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 ) ); driver->playback_srcs = jack_slist_append(driver->playback_srcs, celt_encoder_create( celt_mode ) );
#endif #endif
} else { } else {
#if HAVE_SAMPLERATE
driver->playback_srcs = jack_slist_append(driver->playback_srcs, src_new(SRC_LINEAR, 1, NULL)); 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++) { 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 = driver->playback_ports =
jack_slist_append (driver->playback_ports, port); 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); jack_activate (driver->client);
@@ -1059,11 +1063,21 @@ driver_initialize (jack_client_t *client, const JSList * params)
break; break;


case 'f': case 'f':
#if HAVE_SAMPLERATE
resample_factor = param->value.ui; resample_factor = param->value.ui;
#else
printf( "not built with libsamplerate support\n" );
exit(10);
#endif
break; break;


case 'u': case 'u':
#if HAVE_SAMPLERATE
resample_factor_up = param->value.ui; resample_factor_up = param->value.ui;
#else
printf( "not built with libsamplerate support\n" );
exit(10);
#endif
break; break;


case 'b': case 'b':


+ 0
- 1
drivers/netjack/net_driver.h View File

@@ -28,7 +28,6 @@
#include <jack/transport.h> #include <jack/transport.h>


#include <netinet/in.h> #include <netinet/in.h>
#include <samplerate.h>


typedef struct _net_driver net_driver_t; typedef struct _net_driver net_driver_t;




+ 27
- 1
drivers/netjack/netjack_packet.c View File

@@ -51,7 +51,9 @@
#include <errno.h> #include <errno.h>
#include <signal.h> #include <signal.h>


#if HAVE_SAMPLERATE
#include <samplerate.h> #include <samplerate.h>
#endif


#if HAVE_CELT #if HAVE_CELT
#include <celt/celt.h> #include <celt/celt.h>
@@ -856,7 +858,9 @@ render_payload_to_jack_ports_float ( void *packet_payload, jack_nframes_t net_pe
{ {
int i; int i;
int_float_t val; int_float_t val;
#if HAVE_SAMPLERATE
SRC_DATA src; SRC_DATA src;
#endif


jack_port_t *port = (jack_port_t *) node->data; jack_port_t *port = (jack_port_t *) node->data;
jack_default_audio_sample_t* buf = jack_port_get_buffer (port, nframes); 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 (strncmp (porttype, JACK_DEFAULT_AUDIO_TYPE, jack_port_type_size()) == 0)
{ {
#if HAVE_SAMPLERATE
// audio port, resample if necessary // audio port, resample if necessary
if (net_period_down != nframes) 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); src_node = jack_slist_next (src_node);
} }
else else
#endif
{ {
for (i = 0; i < net_period_down; i++) 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) while (node != NULL)
{ {
#if HAVE_SAMPLERATE
SRC_DATA src; SRC_DATA src;
#endif
int i; int i;
int_float_t val; int_float_t val;
jack_port_t *port = (jack_port_t *) node->data; 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 // audio port, resample if necessary
#if HAVE_SAMPLERATE
if (net_period_up != nframes) { if (net_period_up != nframes) {
SRC_STATE *src_state = src_node->data; SRC_STATE *src_state = src_node->data;
src.data_in = buf; 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); src_node = jack_slist_next (src_node);
} }
else else
#endif
{ {
for (i = 0; i < net_period_up; i++) 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; int i;
//uint32_t val; //uint32_t val;
#if HAVE_SAMPLERATE
SRC_DATA src; SRC_DATA src;
#endif


jack_port_t *port = (jack_port_t *) node->data; jack_port_t *port = (jack_port_t *) node->data;
jack_default_audio_sample_t* buf = jack_port_get_buffer (port, nframes); 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 // audio port, resample if necessary
#if HAVE_SAMPLERATE
if (net_period_down != nframes) if (net_period_down != nframes)
{ {
SRC_STATE *src_state = src_node->data; 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); src_node = jack_slist_next (src_node);
} }
else else
#endif
for (i = 0; i < net_period_down; i++) for (i = 0; i < net_period_down; i++)
buf[i] = ((float) ntohs (packet_bufX[i])) / 32768.0 - 1.0; 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) while (node != NULL)
{ {
#if HAVE_SAMPLERATE
SRC_DATA src; SRC_DATA src;
#endif
int i; int i;
jack_port_t *port = (jack_port_t *) node->data; jack_port_t *port = (jack_port_t *) node->data;
jack_default_audio_sample_t* buf = jack_port_get_buffer (port, nframes); 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 // audio port, resample if necessary
#if HAVE_SAMPLERATE
if (net_period_up != nframes) if (net_period_up != nframes)
{ {
SRC_STATE *src_state = src_node->data; 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); src_node = jack_slist_next (src_node);
} }
else else
#endif
for (i = 0; i < net_period_up; i++) for (i = 0; i < net_period_up; i++)
packet_bufX[i] = htons(((uint16_t)((buf[i] + 1.0) * 32767.0))); 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; int i;
//uint32_t val; //uint32_t val;
#if HAVE_SAMPLERATE
SRC_DATA src; SRC_DATA src;
#endif


jack_port_t *port = (jack_port_t *) node->data; jack_port_t *port = (jack_port_t *) node->data;
jack_default_audio_sample_t* buf = jack_port_get_buffer (port, nframes); 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 (strncmp (portname, JACK_DEFAULT_AUDIO_TYPE, jack_port_type_size()) == 0)
{ {
#if HAVE_SAMPLERATE
// audio port, resample if necessary // audio port, resample if necessary
if (net_period_down != nframes) if (net_period_down != nframes)
{ {
SRC_STATE *src_state = src_node->data; 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); src_node = jack_slist_next (src_node);
} }
else else
#endif
for (i = 0; i < net_period_down; i++) for (i = 0; i < net_period_down; i++)
buf[i] = ((float) packet_bufX[i]) / 127.0; 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) while (node != NULL)
{ {
#if HAVE_SAMPLERATE
SRC_DATA src; SRC_DATA src;
#endif
int i; int i;
jack_port_t *port = (jack_port_t *) node->data; 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 (strncmp (portname, JACK_DEFAULT_AUDIO_TYPE, jack_port_type_size()) == 0)
{ {
#if HAVE_SAMPLERATE
// audio port, resample if necessary // audio port, resample if necessary
if (net_period_up != nframes) if (net_period_up != nframes)
{ {

SRC_STATE *src_state = src_node->data; SRC_STATE *src_state = src_node->data;
float *floatbuf = alloca (sizeof (float) * net_period_up); 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); src_node = jack_slist_next (src_node);
} }
else else
#endif
for (i = 0; i < net_period_up; i++) for (i = 0; i < net_period_up; i++)
packet_bufX[i] = buf[i] * 127.0; packet_bufX[i] = buf[i] * 127.0;
} }


+ 2
- 2
tools/Makefile.am View File

@@ -121,12 +121,12 @@ jack_unload_LDADD = $(top_builddir)/libjack/libjack.la
# #
# Netjack slave tools # Netjack slave tools
# #
if HAVE_SAMPLERATE
jack_netsource_SOURCES = netsource.c $(top_builddir)/drivers/netjack/netjack_packet.c jack_netsource_SOURCES = netsource.c $(top_builddir)/drivers/netjack/netjack_packet.c
jack_netsource_CFLAGS = -I$(top_srcdir)/drivers/netjack 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 jack_netsource_LDADD = $(top_builddir)/libjack/libjack.la


if HAVE_SAMPLERATE
if HAVE_ALSA if HAVE_ALSA
alsa_in_SOURCES = alsa_in.c time_smoother.c alsa_in_SOURCES = alsa_in.c time_smoother.c
alsa_in_LDFLAGS = -lasound -lsamplerate @OS_LDFLAGS@ alsa_in_LDFLAGS = -lasound -lsamplerate @OS_LDFLAGS@


+ 6
- 0
tools/netsource.c View File

@@ -49,7 +49,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


#include <net_driver.h> #include <net_driver.h>
#include <netjack_packet.h> #include <netjack_packet.h>
#if HAVE_SAMPLERATE
#include <samplerate.h> #include <samplerate.h>
#endif


#if HAVE_CELT #if HAVE_CELT
#include <celt/celt.h> #include <celt/celt.h>
@@ -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 ) ); capture_srcs = jack_slist_append(capture_srcs, celt_decoder_create( celt_mode ) );
#endif #endif
} else { } else {
#if HAVE_SAMPLERATE
capture_srcs = jack_slist_append (capture_srcs, src_new (SRC_LINEAR, 1, NULL)); capture_srcs = jack_slist_append (capture_srcs, src_new (SRC_LINEAR, 1, NULL));
#endif
} }
capture_ports = jack_slist_append (capture_ports, port); 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 ) ); playback_srcs = jack_slist_append(playback_srcs, celt_encoder_create( celt_mode ) );
#endif #endif
} else { } else {
#if HAVE_SAMPLERATE
playback_srcs = jack_slist_append (playback_srcs, src_new (SRC_LINEAR, 1, NULL)); playback_srcs = jack_slist_append (playback_srcs, src_new (SRC_LINEAR, 1, NULL));
#endif
} }
playback_ports = jack_slist_append (playback_ports, port); playback_ports = jack_slist_append (playback_ports, port);
} }


Loading…
Cancel
Save