From 698a5d28f3f8b9357a154cca193fa647fb99eb52 Mon Sep 17 00:00:00 2001 From: Torben Hohn Date: Thu, 5 Nov 2009 14:51:03 +0100 Subject: [PATCH] make celt api version flexible. Conflicts: example-clients/wscript --- common/netjack.c | 18 ++++++++++++------ common/wscript | 2 -- example-clients/netsource.c | 15 ++++++++++----- example-clients/wscript | 5 +++++ linux/wscript | 5 +++++ wscript | 9 +++++++++ 6 files changed, 41 insertions(+), 13 deletions(-) diff --git a/common/netjack.c b/common/netjack.c index 6cb48d2e..6bee2c4c 100644 --- a/common/netjack.c +++ b/common/netjack.c @@ -25,8 +25,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. $Id: net_driver.c,v 1.17 2006/04/16 20:16:10 torbenh Exp $ */ -#define HAVE_CELT 1 - #include #include @@ -357,13 +355,17 @@ void netjack_attach( netjack_driver_state_t *netj ) if( netj->bitdepth == CELT_MODE ) { #if HAVE_CELT +#if HAVE_CELT_API_0_7 + celt_int32 lookahead; + CELTMode *celt_mode = celt_mode_create( netj->sample_rate, netj->period_size, NULL ); + netj->capture_srcs = jack_slist_append(netj->capture_srcs, celt_decoder_create( celt_mode, 1, NULL ) ); +#else celt_int32_t lookahead; - // XXX: memory leak CELTMode *celt_mode = celt_mode_create( netj->sample_rate, 1, netj->period_size, NULL ); + netj->capture_srcs = jack_slist_append(netj->capture_srcs, celt_decoder_create( celt_mode ) ); +#endif celt_mode_info( celt_mode, CELT_GET_LOOKAHEAD, &lookahead ); netj->codec_latency = 2*lookahead; - - netj->capture_srcs = jack_slist_append(netj->capture_srcs, celt_decoder_create( celt_mode ) ); #endif } else { #if HAVE_SAMPLERATE @@ -404,9 +406,13 @@ void netjack_attach( netjack_driver_state_t *netj ) jack_slist_append (netj->playback_ports, port); if( netj->bitdepth == CELT_MODE ) { #if HAVE_CELT - // XXX: memory leak +#if HAVE_CELT_API_0_7 + CELTMode *celt_mode = celt_mode_create( netj->sample_rate, netj->period_size, NULL ); + netj->playback_srcs = jack_slist_append(netj->playback_srcs, celt_encoder_create( celt_mode, 1, NULL ) ); +#else CELTMode *celt_mode = celt_mode_create( netj->sample_rate, 1, netj->period_size, NULL ); netj->playback_srcs = jack_slist_append(netj->playback_srcs, celt_encoder_create( celt_mode ) ); +#endif #endif } else { #if HAVE_SAMPLERATE diff --git a/common/wscript b/common/wscript index 46d7b12b..6089ff81 100644 --- a/common/wscript +++ b/common/wscript @@ -11,8 +11,6 @@ def configure(conf): if conf.is_defined('HAVE_SAMPLERATE'): conf.env['LIB_SAMPLERATE'] = ['samplerate'] - conf.check_cfg(package='celt', atleast_version='0.5.0', args='--cflags --libs') - conf.env['BUILD_ADAPTER'] = conf.is_defined('HAVE_SAMPLERATE') def create_jack_process_obj(bld, target, sources, uselib = None): diff --git a/example-clients/netsource.c b/example-clients/netsource.c index afc29ff2..f79ac8da 100644 --- a/example-clients/netsource.c +++ b/example-clients/netsource.c @@ -26,9 +26,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * @brief This client connects a remote slave JACK to a local JACK server assumed to be the master */ -//#include "config.h" -#define HAVE_CELT 1 - #include #include @@ -137,9 +134,13 @@ alloc_ports (int n_capture_audio, int n_playback_audio, int n_capture_midi, int } if( bitdepth == 1000 ) { #if HAVE_CELT - // XXX: memory leak +#if HAVE_CELT_API_0_7 + CELTMode *celt_mode = celt_mode_create( jack_get_sample_rate( client ), jack_get_buffer_size(client), NULL ); + capture_srcs = jack_slist_append(capture_srcs, celt_decoder_create( celt_mode, 1, NULL ) ); +#else CELTMode *celt_mode = celt_mode_create( jack_get_sample_rate( client ), 1, jack_get_buffer_size(client), NULL ); capture_srcs = jack_slist_append(capture_srcs, celt_decoder_create( celt_mode ) ); +#endif #endif } else { #if HAVE_SAMPLERATE @@ -176,9 +177,13 @@ alloc_ports (int n_capture_audio, int n_playback_audio, int n_capture_midi, int } if( bitdepth == 1000 ) { #if HAVE_CELT - // XXX: memory leak +#if HAVE_CELT_API_0_7 + CELTMode *celt_mode = celt_mode_create( jack_get_sample_rate (client), jack_get_buffer_size(client), NULL ); + playback_srcs = jack_slist_append(playback_srcs, celt_encoder_create( celt_mode, 1, NULL ) ); +#else CELTMode *celt_mode = celt_mode_create( jack_get_sample_rate (client), 1, jack_get_buffer_size(client), NULL ); playback_srcs = jack_slist_append(playback_srcs, celt_encoder_create( celt_mode ) ); +#endif #endif } else { #if HAVE_SAMPLERATE diff --git a/example-clients/wscript b/example-clients/wscript index 6fda348a..34e750ad 100644 --- a/example-clients/wscript +++ b/example-clients/wscript @@ -116,6 +116,11 @@ def build(bld): prog.includes = os_incdir + ['../common/jack', '../common'] prog.source = ['netsource.c', '../common/netjack_packet.c'] prog.env.append_value("CCFLAGS", "-DNO_JACK_ERROR") + if bld.env['HAVE_CELT']: + if bld.env['HAVE_CELT_API_0_5']: + prog.defines = ['HAVE_CELT', 'HAVE_CELT_API_0_5'] + elif bld.env['HAVE_CELT_API_0_7']: + prog.defines = ['HAVE_CELT', 'HAVE_CELT_API_0_7'] prog.uselib = 'CELT SAMPLERATE' prog.uselib_local = 'clientlib' diff --git a/linux/wscript b/linux/wscript index adc3478b..fc06fd3f 100644 --- a/linux/wscript +++ b/linux/wscript @@ -16,6 +16,11 @@ def create_jack_driver_obj(bld, target, sources, uselib = None): driver.features.append('cc') driver.env['shlib_PATTERN'] = 'jack_%s.so' driver.defines = ['HAVE_CONFIG_H','SERVER_SIDE', 'HAVE_PPOLL'] + if bld.env['HAVE_CELT']: + if bld.env['HAVE_CELT_API_0_5']: + driver.defines += ['HAVE_CELT', 'HAVE_CELT_API_0_5'] + elif bld.env['HAVE_CELT_API_0_7']: + driver.defines += ['HAVE_CELT', 'HAVE_CELT_API_0_7'] driver.includes = ['.', '../linux', '../posix', '../common', '../common/jack', '../dbus'] driver.target = target driver.source = sources diff --git a/wscript b/wscript index 6fb5c88c..eec01dc3 100644 --- a/wscript +++ b/wscript @@ -224,6 +224,15 @@ def configure(conf): else: conf.env['LIBDIR'] = conf.env['PREFIX'] + '/lib32' + if conf.check_cfg(package='celt', atleast_version='0.7.0', args='--cflags --libs'): + conf.env['HAVE_CELT'] = True + conf.env['HAVE_CELT_API_0_7'] = True + elif conf.check_cfg(package='celt', atleast_version='0.5.0', args='--cflags --libs', required=True): + conf.env['HAVE_CELT'] = True + conf.env['HAVE_CELT_API_0_5'] = True + else: + conf.env['HAVE_CELT'] = False + def build(bld): print ("make[1]: Entering directory `" + os.getcwd() + "/" + blddir + "'" ) if not os.access('svnversion.h', os.R_OK):