diff --git a/configure.ac b/configure.ac index bc256c8..d26f57e 100644 --- a/configure.ac +++ b/configure.ac @@ -711,12 +711,23 @@ fi HAVE_CELT=false PKG_CHECK_MODULES(CELT, celt >= 0.7.0,[HAVE_CELT=true], [true]) if test x$HAVE_CELT = xfalse; then - AC_DEFINE(HAVE_CELT,0,"Whether CELT is available") - AC_MSG_RESULT(no) - AC_MSG_WARN([*** NetJack will not be built with celt support]) + PKG_CHECK_MODULES(CELT, celt >= 0.5.0,[HAVE_CELT=true], [true]) + if test x$HAVE_CELT = xfalse; then + AC_DEFINE(HAVE_CELT,0,"Whether CELT is available") + AC_MSG_RESULT(no) + AC_MSG_WARN([*** NetJack will not be built with celt support]) + else + AC_DEFINE(HAVE_CELT,1,"Whether CELT is available") + AC_DEFINE(HAVE_CELT_API_0_5,1,"Whether CELT API is 0.5 API") + AC_DEFINE(HAVE_CELT_API_0_7,0,"Whether CELT API is 0.7 API") + AC_MSG_RESULT(yes (0.5)) + NETJACK_LIBS="$NETJACK_LIBS $CELT_LIBS" + fi else AC_DEFINE(HAVE_CELT,1,"Whether CELT is available") - AC_MSG_RESULT(yes) + AC_MSG_RESULT(yes (0.7)) + AC_DEFINE(HAVE_CELT_API_0_5,0,"Whether CELT API is 0.5 API") + AC_DEFINE(HAVE_CELT_API_0_7,1,"Whether CELT API is 0.7 API") NETJACK_LIBS="$NETJACK_LIBS $CELT_LIBS" fi diff --git a/drivers/netjack/net_driver.c b/drivers/netjack/net_driver.c index 998ff8b..9360d1b 100644 --- a/drivers/netjack/net_driver.c +++ b/drivers/netjack/net_driver.c @@ -549,13 +549,17 @@ net_driver_attach (net_driver_t *driver) if( driver->bitdepth == 1000 ) { #if HAVE_CELT +#if HAVE_CELT_API_0_7 celt_int32 lookahead; - // XXX: memory leak CELTMode *celt_mode = celt_mode_create( driver->sample_rate, driver->period_size, NULL ); + driver->capture_srcs = jack_slist_append(driver->capture_srcs, celt_decoder_create( celt_mode, 1, NULL ) ); +#else + celt_int32_t lookahead; + CELTMode *celt_mode = celt_mode_create( driver->sample_rate, 1, driver->period_size, NULL ); + driver->capture_srcs = jack_slist_append(driver->capture_srcs, celt_decoder_create( celt_mode ) ); +#endif celt_mode_info( celt_mode, CELT_GET_LOOKAHEAD, &lookahead ); driver->codec_latency = 2*lookahead; - - driver->capture_srcs = jack_slist_append(driver->capture_srcs, celt_decoder_create( celt_mode, 1, NULL ) ); #endif } else { #if HAVE_SAMPLERATE @@ -596,9 +600,13 @@ net_driver_attach (net_driver_t *driver) jack_slist_append (driver->playback_ports, port); if( driver->bitdepth == 1000 ) { #if HAVE_CELT - // XXX: memory leak +#if HAVE_CELT_API_0_7 CELTMode *celt_mode = celt_mode_create( driver->sample_rate, driver->period_size, NULL ); driver->playback_srcs = jack_slist_append(driver->playback_srcs, celt_encoder_create( celt_mode, 1, NULL ) ); +#else + CELTMode *celt_mode = celt_mode_create( driver->sample_rate, 1, driver->period_size, NULL ); + driver->playback_srcs = jack_slist_append(driver->playback_srcs, celt_encoder_create( celt_mode ) ); +#endif #endif } else { #if HAVE_SAMPLERATE diff --git a/tools/netsource.c b/tools/netsource.c index 2c846c0..194dde4 100644 --- a/tools/netsource.c +++ b/tools/netsource.c @@ -123,9 +123,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 @@ -162,9 +166,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