Commit 195430dd authored by Tristan Matthews's avatar Tristan Matthews

* #9779: dropped CELT support

parent c5ec9b7e
......@@ -193,37 +193,6 @@ AC_SEARCH_LIBS([speex_preprocess_run], [speexdsp], [], [
AC_MSG_ERROR([Unable to find speexdsp development files])
])
# check for libcelt
AC_ARG_WITH([celt], [AS_HELP_STRING([--without-celt],
[disable support for celt codec])], [], [with_celt=yes])
AS_IF([test "x$with_celt" != xno],
[PKG_CHECK_MODULES(CELT, celt >= 0.9.1,
[
with_celt_91=yes; AC_MSG_NOTICE([Using celt 0.9.1])
],
[
PKG_CHECK_MODULES(CELT, celt >= 0.7.1,
[
with_celt_71=yes; AC_MSG_NOTICE([Using celt 0.7.1])
],
[
dnl celt071 is how certain distros package celt
PKG_CHECK_MODULES(CELT, celt071 >= 0.7.1,
[
with_celt_071=yes; AC_MSG_NOTICE([Using celt071])
],
[
AC_MSG_FAILURE([libcelt link test failed. You may use --without-celt to compile without celt codec support.])
])
])
])]
)
AM_CONDITIONAL(BUILD_CELT_91, test "x$with_celt_91" = "xyes" )
AM_CONDITIONAL(BUILD_CELT_71, test "x$with_celt_71" = "xyes" )
AM_CONDITIONAL(BUILD_CELT_071, test "x$with_celt_071" = "xyes" )
dnl Check for IAX
AC_ARG_WITH([iax2], [AS_HELP_STRING([--without-iax2],
[disable support for the iax2 protocol])], [], [with_iax2=yes])
......
......@@ -41,34 +41,7 @@ libcodec_speex_ub_so_LDADD = libcodecdescriptor.la
INSTALL_SPEEX_UB_RULE = install-libcodec_speex_ub_so
endif
if BUILD_CELT_91
CELT_LIB = libcodec_celt.so
libcodec_celt_so_SOURCES = celtcodec.cpp
libcodec_celt_so_CXXFLAGS = -fPIC -g -Wall -DBUILD_CELT_91
libcodec_celt_so_LDFLAGS = --shared -lc ${CELT_LIBS}
libcodec_celt_so_LDADD = libcodecdescriptor.la
INSTALL_CELT_RULE = install-libcodec_celt_so
endif
if BUILD_CELT_71
CELT_LIB = libcodec_celt.so
libcodec_celt_so_SOURCES = celtcodec.cpp
libcodec_celt_so_CXXFLAGS = -fPIC -g -Wall -DBUILD_CELT_71
libcodec_celt_so_LDFLAGS = --shared -lc ${CELT_LIBS}
libcodec_celt_so_LDADD = libcodecdescriptor.la
INSTALL_CELT_RULE = install-libcodec_celt_so
endif
if BUILD_CELT_071
CELT_LIB = libcodec_celt.so
libcodec_celt_so_SOURCES = celtcodec.cpp
libcodec_celt_so_CXXFLAGS = -fPIC -g -Wall -DBUILD_CELT_071 -I${top_srcdir}/src
libcodec_celt_so_LDFLAGS = --shared -lc ${CELT_LIBS}
libcodec_celt_so_LDADD = libcodecdescriptor.la
INSTALL_CELT_RULE = install-libcodec_celt_so
endif
noinst_PROGRAMS = libcodec_ulaw.so libcodec_alaw.so libcodec_g722.so $(GSM_LIB) $(SPEEX_NB_LIB) $(SPEEX_WB_LIB) $(SPEEX_UB_LIB) $(CELT_LIB)
noinst_PROGRAMS = libcodec_ulaw.so libcodec_alaw.so libcodec_g722.so $(GSM_LIB) $(SPEEX_NB_LIB) $(SPEEX_WB_LIB) $(SPEEX_UB_LIB)
noinst_HEADERS = audiocodec.h audiocodecfactory.h speexcodec.h g722.h
......@@ -87,8 +60,8 @@ libcodec_g722_so_CXXFLAGS = -fPIC -g -Wall
libcodec_g722_so_LDADD = libcodecdescriptor.la
libcodec_g722_so_LDFLAGS = --shared -lc
install-exec-local: install-libcodec_ulaw_so install-libcodec_alaw_so install-libcodec_g722_so $(INSTALL_GSM_RULE) $(INSTALL_SPEEX_NB_RULE) $(INSTALL_SPEEX_WB_RULE) $(INSTALL_SPEEX_UB_RULE) $(INSTALL_CELT_RULE) $(INSTALL_ILBC_RULE)
uninstall-local: uninstall-libcodec_ulaw_so uninstall-libcodec_alaw_so uninstall-libcodec_g722_so uninstall-libcodec_gsm_so uninstall-libcodec_speex_nb_so uninstall-libcodec_speex_wb_so uninstall-libcodec_speex_ub_so uninstall-libcodec_celt_so
install-exec-local: install-libcodec_ulaw_so install-libcodec_alaw_so install-libcodec_g722_so $(INSTALL_GSM_RULE) $(INSTALL_SPEEX_NB_RULE) $(INSTALL_SPEEX_WB_RULE) $(INSTALL_SPEEX_UB_RULE) $(INSTALL_ILBC_RULE)
uninstall-local: uninstall-libcodec_ulaw_so uninstall-libcodec_alaw_so uninstall-libcodec_g722_so uninstall-libcodec_gsm_so uninstall-libcodec_speex_nb_so uninstall-libcodec_speex_wb_so uninstall-libcodec_speex_ub_so
install-libcodec_ulaw_so: libcodec_ulaw.so
......@@ -112,9 +85,6 @@ install-libcodec_speex_wb_so: libcodec_speex_wb.so
install-libcodec_speex_ub_so: libcodec_speex_ub.so
mkdir -p $(sflcodecdir)
$(INSTALL_PROGRAM) libcodec_speex_ub.so $(sflcodecdir)
install-libcodec_celt_so: libcodec_celt.so
mkdir -p $(sflcodecdir)
$(INSTALL_PROGRAM) libcodec_celt.so $(sflcodecdir)
uninstall-libcodec_ulaw_so:
rm -f $(sflcodecdir)/libcodec_ulaw.so
......@@ -130,7 +100,4 @@ uninstall-libcodec_speex_wb_so:
rm -f $(sflcodecdir)/libcodec_speex_wb.so
uninstall-libcodec_speex_ub_so:
rm -f $(sflcodecdir)/libcodec_speex_ub.so
uninstall-libcodec_celt_so:
rm -f $(sflcodecdir)/libcodec_celt.so
rm -rf $(sflcodecdir)
/*
* Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010, 2011 Savoir-Faire Linux Inc.
* Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* Additional permission under GNU GPL version 3 section 7:
*
* If you modify this program, or any covered work, by linking or
* combining it with the OpenSSL project's OpenSSL library (or a
* modified version of that library), containing parts covered by the
* terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
* grants you additional permission to convey the resulting work.
* Corresponding Source for a non-source form of such a combination
* shall include the source code for the parts of OpenSSL used as well
* as that of the covered work.
*/
#include "audiocodec.h"
#include <cstdio>
#ifdef BUILD_CELT_071
// FIXME: Hack to workaround celt's insufficient pkg-config file
#include <celt071/celt.h>
#else
#include <celt/celt.h>
#endif
#include <stdexcept>
#include "noncopyable.h"
class Celt : public sfl::AudioCodec {
public:
Celt(int payload = 115) : sfl::AudioCodec(payload, "celt"), mode_(0), enc_(0), dec_(0) {
clockRate_ = 32000;
frameSize_ = 320; // fixed frameSize, TODO: support variable size from 64 to 512
channel_ = 1;
bitrate_ = 0;
hasDynamicPayload_ = true;
int error = 0;
mode_ = celt_mode_create(clockRate_, frameSize_, &error);
if (error != CELT_OK) {
switch (error) {
case CELT_BAD_ARG:
throw std::runtime_error("Celt: An (or more) invalid argument (e.g. out of range)\n");
break;
case CELT_INVALID_MODE:
throw std::runtime_error("Celt: The mode struct passed is invalid\n");
break;
case CELT_INTERNAL_ERROR:
throw std::runtime_error("Celt: An internal error was detected\n");
break;
case CELT_CORRUPTED_DATA:
throw std::runtime_error("Celt: The data passed (e.g. compressed data to decoder) is corrupted\n");
break;
case CELT_UNIMPLEMENTED:
throw std::runtime_error("Celt: Invalid/unsupported request numbe\n");
break;
case CELT_INVALID_STATE:
throw std::runtime_error("Celt: An encoder or decoder structure is invalid or already freed\n");
break;
case CELT_ALLOC_FAIL:
throw std::runtime_error("Celt: Memory allocation has failed\n");
break;
default:
throw std::runtime_error("Celt: Unknown error");
}
}
if (mode_ == NULL)
throw std::runtime_error("Celt: Failed to create Celt mode");
enc_ = celt_encoder_create(mode_, channel_, &error);
dec_ = celt_decoder_create(mode_, channel_, &error);
celt_encoder_ctl(enc_, CELT_SET_COMPLEXITY(2));
celt_decoder_ctl(dec_, CELT_SET_COMPLEXITY(2));
celt_encoder_ctl(enc_, CELT_SET_PREDICTION(2));
celt_decoder_ctl(dec_, CELT_SET_PREDICTION(2));
}
NON_COPYABLE(Celt);
~Celt() {
celt_encoder_destroy(enc_);
celt_decoder_destroy(dec_);
celt_mode_destroy(mode_);
}
virtual int decode(short *dst, unsigned char *src, size_t buf_size) {
#ifdef BUILD_CELT_91 // == 91
celt_decode(dec_, src, buf_size, (celt_int16*) dst, frameSize_);
#endif
#ifdef BUILD_CELT_71
celt_decode(dec_, src, buf_size, (celt_int16*) dst);
#endif
return frameSize_;
}
virtual int encode(unsigned char *dst, short *src, size_t buf_size) {
int len = 0;
#ifdef BUILD_CELT_91// == 91
len = celt_encode(enc_, (celt_int16*) src, frameSize_, dst, buf_size);
#endif
#ifdef BUILD_CELT_71
len = celt_encode(enc_, (celt_int16*) src, (celt_int16 *) src, dst, buf_size);
#endif
return len;
}
private:
CELTMode *mode_;
CELTEncoder *enc_;
CELTDecoder *dec_;
};
// the class factories
// cppcheck-suppress unusedFunction
extern "C" sfl::Codec* create()
{
return new Celt(115);
}
// cppcheck-suppress unusedFunction
extern "C" void destroy(sfl::Codec* a)
{
delete a;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment