aboutsummaryrefslogtreecommitdiffstats
path: root/codecs
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-08-21 02:11:39 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-08-21 02:11:39 +0000
commit8b0c007ad990aa27d9868da49215fd1076ac77cc (patch)
tree270b9c46c1e644483d6d2a35b509f43218ba3252 /codecs
parenta42edc84034f91932a3e12d503e07f76a6eb498a (diff)
merge new_loader_completion branch, including (at least):
- restructured build tree and makefiles to eliminate recursion problems - support for embedded modules - support for static builds - simpler cross-compilation support - simpler module/loader interface (no exported symbols) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@40722 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'codecs')
-rw-r--r--codecs/Makefile29
-rw-r--r--codecs/codec_a_mu.c24
-rw-r--r--codecs/codec_adpcm.c30
-rw-r--r--codecs/codec_alaw.c30
-rw-r--r--codecs/codec_g726.c37
-rw-r--r--codecs/codec_gsm.c30
-rw-r--r--codecs/codec_ilbc.c26
-rw-r--r--codecs/codec_lpc10.c31
-rw-r--r--codecs/codec_speex.c40
-rw-r--r--codecs/codec_ulaw.c35
-rw-r--r--codecs/codec_zap.c38
-rw-r--r--codecs/gsm/Makefile6
12 files changed, 156 insertions, 200 deletions
diff --git a/codecs/Makefile b/codecs/Makefile
index f476e8a2b..9726979e0 100644
--- a/codecs/Makefile
+++ b/codecs/Makefile
@@ -11,7 +11,7 @@
# the GNU General Public License
#
-ifneq ($(wildcard ../menuselect.makeopts),)
+ifneq ($(wildcard $(ASTTOPDIR)/menuselect.makeopts),)
include ../menuselect.makeopts
include ../menuselect.makedeps
endif
@@ -19,22 +19,25 @@ endif
C_MODS:=$(filter-out $(MENUSELECT_CODECS),$(patsubst %.c,%,$(wildcard codec_*.c)))
CC_MODS:=$(filter-out $(MENUSELECT_CODECS),$(patsubst %.cc,%,$(wildcard codec_*.cc)))
-SELECTED_MODS:=$(C_MODS) $(CC_MODS)
+LOADABLE_MODS:=$(C_MODS) $(CC_MODS)
+
+ifneq ($(findstring codecs,$(MENUSELECT_EMBED)),)
+ EMBEDDED_MODS:=$(LOADABLE_MODS)
+ LOADABLE_MODS:=
+endif
LIBILBC:=ilbc/libilbc.a
LIBLPC10:=lpc10/liblpc10.a
all: _all
-ifeq ($(GSM_LIB),internal)
-GSM_INCLUDE:=-Igsm/inc
-GSM_LIB:=
+include $(ASTTOPDIR)/Makefile.moddir_rules
-codec_gsm.so: gsm/lib/libgsm.a
+ifneq ($(GSM_INTERNAL),)
+GSM_INCLUDE:=-Igsm/inc
+$(codec_gsm): gsm/lib/libgsm.a
endif
-include $(ASTTOPDIR)/Makefile.moddir_rules
-
clean::
$(MAKE) -C gsm clean
$(MAKE) -C lpc10 clean
@@ -42,14 +45,14 @@ clean::
gsm/lib/libgsm.a:
@mkdir -p gsm/lib
- @CFLAGS="$(CFLAGS) -I." $(MAKE) -C gsm lib/libgsm.a
+ @CFLAGS="$(OTHER_SUBDIR_CFLAGS) -I." $(MAKE) -C gsm lib/libgsm.a
$(LIBLPC10):
- @$(MAKE) -C lpc10 all
+ @CFLAGS="$(OTHER_SUBDIR_CFLAGS)" $(MAKE) -C lpc10 all
-codec_lpc10.so: $(LIBLPC10)
+$(codec_lpc10): $(LIBLPC10)
$(LIBILBC):
- @$(MAKE) -C ilbc all
+ @CFLAGS="$(OTHER_SUBDIR_CFLAGS)" $(MAKE) -C ilbc all
-codec_ilbc.so: $(LIBILBC)
+$(codec_ilbc): $(LIBILBC)
diff --git a/codecs/codec_a_mu.c b/codecs/codec_a_mu.c
index c67bdd472..b9c1c4938 100644
--- a/codecs/codec_a_mu.c
+++ b/codecs/codec_a_mu.c
@@ -137,38 +137,32 @@ static struct ast_translator ulawtoalaw = {
/*! \brief standard module glue */
-static int unload_module(void *mod)
+static int unload_module(void)
{
int res;
+
res = ast_unregister_translator(&ulawtoalaw);
res |= ast_unregister_translator(&alawtoulaw);
+
return res;
}
-static int load_module(void *mod)
+static int load_module(void)
{
int res;
int x;
+
for (x=0;x<256;x++) {
mu2a[x] = AST_LIN2A(AST_MULAW(x));
a2mu[x] = AST_LIN2MU(AST_ALAW(x));
}
- res = ast_register_translator(&alawtoulaw, mod);
+ res = ast_register_translator(&alawtoulaw);
if (!res)
- res = ast_register_translator(&ulawtoalaw, mod);
+ res = ast_register_translator(&ulawtoalaw);
else
ast_unregister_translator(&alawtoulaw);
- return res;
-}
-static const char *description(void)
-{
- return "A-law and Mulaw direct Coder/Decoder";
-}
-
-static const char *key(void)
-{
- return ASTERISK_GPL_KEY;
+ return res;
}
-STD_MOD(MOD_1, NULL, NULL, NULL);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "A-law and Mulaw direct Coder/Decoder");
diff --git a/codecs/codec_adpcm.c b/codecs/codec_adpcm.c
index 9ab358ff5..7469f056c 100644
--- a/codecs/codec_adpcm.c
+++ b/codecs/codec_adpcm.c
@@ -367,40 +367,38 @@ static void parse_config(void)
}
/*! \brief standard module glue */
-static int reload(void *mod)
+static int reload(void)
{
parse_config();
return 0;
}
-static int unload_module(void *mod)
+static int unload_module(void)
{
int res;
+
res = ast_unregister_translator(&lintoadpcm);
res |= ast_unregister_translator(&adpcmtolin);
+
return res;
}
-static int load_module(void *mod)
+static int load_module(void)
{
int res;
+
parse_config();
- res = ast_register_translator(&adpcmtolin, mod);
+ res = ast_register_translator(&adpcmtolin);
if (!res)
- res = ast_register_translator(&lintoadpcm, mod);
+ res = ast_register_translator(&lintoadpcm);
else
ast_unregister_translator(&adpcmtolin);
- return res;
-}
-static const char *description(void)
-{
- return "Adaptive Differential PCM Coder/Decoder";
-}
-
-static const char *key(void)
-{
- return ASTERISK_GPL_KEY;
+ return res;
}
-STD_MOD(MOD_1, reload, NULL, NULL);
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Adaptive Differential PCM Coder/Decoder",
+ .load = load_module,
+ .unload = unload_module,
+ .reload = reload,
+ );
diff --git a/codecs/codec_alaw.c b/codecs/codec_alaw.c
index 6def3f723..de1061687 100644
--- a/codecs/codec_alaw.c
+++ b/codecs/codec_alaw.c
@@ -152,40 +152,38 @@ static void parse_config(void)
/*! \brief standard module stuff */
-static int reload(void *mod)
+static int reload(void)
{
parse_config();
return 0;
}
-static int unload_module(void *mod)
+static int unload_module(void)
{
int res;
+
res = ast_unregister_translator(&lintoalaw);
res |= ast_unregister_translator(&alawtolin);
+
return res;
}
-static int load_module(void *mod)
+static int load_module(void)
{
int res;
+
parse_config();
- res = ast_register_translator(&alawtolin, mod);
+ res = ast_register_translator(&alawtolin);
if (!res)
- res = ast_register_translator(&lintoalaw, mod);
+ res = ast_register_translator(&lintoalaw);
else
ast_unregister_translator(&alawtolin);
- return res;
-}
-static const char *description(void)
-{
- return "A-law Coder/Decoder";
-}
-
-static const char *key(void)
-{
- return ASTERISK_GPL_KEY;
+ return res;
}
-STD_MOD(MOD_1, reload, NULL, NULL);
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "A-law Coder/Decoder",
+ .load = load_module,
+ .unload = unload_module,
+ .reload = reload,
+ );
diff --git a/codecs/codec_g726.c b/codecs/codec_g726.c
index 29932ab8a..bfc49ad9c 100644
--- a/codecs/codec_g726.c
+++ b/codecs/codec_g726.c
@@ -912,14 +912,14 @@ static void parse_config(void)
ast_config_destroy(cfg);
}
-static int reload(void *mod)
+static int reload(void)
{
parse_config();
return 0;
}
-static int unload_module (void *mod)
+static int unload_module(void)
{
int res = 0;
@@ -935,35 +935,30 @@ static int unload_module (void *mod)
return res;
}
-static int load_module (void *mod)
+static int load_module(void)
{
int res = 0;
+
parse_config();
- res |= ast_register_translator(&g726tolin, mod);
- res |= ast_register_translator(&lintog726, mod);
+ res |= ast_register_translator(&g726tolin);
+ res |= ast_register_translator(&lintog726);
- res |= ast_register_translator(&g726aal2tolin, mod);
- res |= ast_register_translator(&lintog726aal2, mod);
+ res |= ast_register_translator(&g726aal2tolin);
+ res |= ast_register_translator(&lintog726aal2);
- res |= ast_register_translator(&g726aal2tog726, mod);
- res |= ast_register_translator(&g726tog726aal2, mod);
+ res |= ast_register_translator(&g726aal2tog726);
+ res |= ast_register_translator(&g726tog726aal2);
if (res)
- unload_module(mod);
+ unload_module();
return res;
}
-static const char *description(void)
-{
- return "ITU G.726-32kbps G726 Transcoder";
-}
-
-static const char *key(void)
-{
- return ASTERISK_GPL_KEY;
-}
-
-STD_MOD(MOD_1, reload, NULL, NULL);
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "ITU G.726-32kbps G726 Transcoder",
+ .load = load_module,
+ .unload = unload_module,
+ .reload = reload,
+ );
diff --git a/codecs/codec_gsm.c b/codecs/codec_gsm.c
index 659a3e89a..bc5d9dc4f 100644
--- a/codecs/codec_gsm.c
+++ b/codecs/codec_gsm.c
@@ -246,41 +246,39 @@ static void parse_config(void)
}
/*! \brief standard module glue */
-static int reload(void *mod)
+static int reload(void)
{
parse_config();
return 0;
}
-static int unload_module(void *mod)
+static int unload_module(void)
{
int res;
+
res = ast_unregister_translator(&lintogsm);
if (!res)
res = ast_unregister_translator(&gsmtolin);
+
return res;
}
-static int load_module(void *mod)
+static int load_module(void)
{
int res;
+
parse_config();
- res = ast_register_translator(&gsmtolin, mod);
+ res = ast_register_translator(&gsmtolin);
if (!res)
- res=ast_register_translator(&lintogsm, mod);
+ res=ast_register_translator(&lintogsm);
else
ast_unregister_translator(&gsmtolin);
- return res;
-}
-static const char *description(void)
-{
- return "GSM/PCM16 (signed linear) Codec Translator";
-}
-
-static const char *key(void)
-{
- return ASTERISK_GPL_KEY;
+ return res;
}
-STD_MOD(MOD_1, reload, NULL, NULL);
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "GSM Coder/Decoder",
+ .load = load_module,
+ .unload = unload_module,
+ .reload = reload,
+ );
diff --git a/codecs/codec_ilbc.c b/codecs/codec_ilbc.c
index 98b5a1470..98d410e38 100644
--- a/codecs/codec_ilbc.c
+++ b/codecs/codec_ilbc.c
@@ -58,8 +58,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#define ILBC_SAMPLES 240 /* 30ms at 8000 hz */
#define BUFFER_SAMPLES 8000
-static char *tdesc = "iLBC/PCM16 (signed linear) Codec Translator";
-
struct ilbc_coder_pvt {
iLBC_Enc_Inst_t enc;
iLBC_Dec_Inst_t dec;
@@ -215,33 +213,27 @@ static struct ast_translator lintoilbc = {
.buf_size = (BUFFER_SAMPLES * ILBC_FRAME_LEN + ILBC_SAMPLES - 1) / ILBC_SAMPLES,
};
-static int unload_module(void *mod)
+static int unload_module(void)
{
int res;
+
res = ast_unregister_translator(&lintoilbc);
res |= ast_unregister_translator(&ilbctolin);
+
return res;
}
-static int load_module(void *mod)
+static int load_module(void)
{
int res;
- res = ast_register_translator(&ilbctolin, mod);
+
+ res = ast_register_translator(&ilbctolin);
if (!res)
- res=ast_register_translator(&lintoilbc, mod);
+ res=ast_register_translator(&lintoilbc);
else
ast_unregister_translator(&ilbctolin);
- return res;
-}
-static const char *description(void)
-{
- return tdesc;
-}
-
-static const char *key(void)
-{
- return ASTERISK_GPL_KEY;
+ return res;
}
-STD_MOD(MOD_1, NULL, NULL, NULL);
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "iLBC Coder/Decoder");
diff --git a/codecs/codec_lpc10.c b/codecs/codec_lpc10.c
index 03b7351c0..7985a11d6 100644
--- a/codecs/codec_lpc10.c
+++ b/codecs/codec_lpc10.c
@@ -281,41 +281,40 @@ static void parse_config(void)
ast_config_destroy(cfg);
}
-static int reload(void *mod)
+static int reload(void)
{
parse_config();
+
return 0;
}
-static int unload_module(void *mod)
+static int unload_module(void)
{
int res;
+
res = ast_unregister_translator(&lintolpc10);
res |= ast_unregister_translator(&lpc10tolin);
+
return res;
}
-static int load_module(void *mod)
+static int load_module(void)
{
int res;
+
parse_config();
- res=ast_register_translator(&lpc10tolin, mod);
+ res=ast_register_translator(&lpc10tolin);
if (!res)
- res=ast_register_translator(&lintolpc10, mod);
+ res=ast_register_translator(&lintolpc10);
else
ast_unregister_translator(&lpc10tolin);
- return res;
-}
-static const char *description(void)
-{
- return "LPC10 2.4kbps (signed linear) Voice Coder";
-}
-
-static const char *key(void)
-{
- return ASTERISK_GPL_KEY;
+ return res;
}
-STD_MOD(MOD_1, reload, NULL, NULL);
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "LPC10 2.4kbps Coder/Decoder",
+ .load = load_module,
+ .unload = unload_module,
+ .reload = reload,
+ );
diff --git a/codecs/codec_speex.c b/codecs/codec_speex.c
index fec92520d..06c23e4f0 100644
--- a/codecs/codec_speex.c
+++ b/codecs/codec_speex.c
@@ -479,49 +479,39 @@ static void parse_config(void)
ast_config_destroy(cfg);
}
-static int reload(void *mod)
+static int reload(void)
{
- /*
- * XXX reloading while there are active sessions is
- * somewhat silly because the old state presumably
- * wouldn't work anymore...
- * maybe we shuld do a standard hangup localusers ?
- */
- ast_mutex_lock(&__mod_desc->lock);
parse_config();
- ast_mutex_lock(&__mod_desc->lock);
+
return 0;
}
-static int unload_module(void *mod)
+static int unload_module(void)
{
int res;
+
res = ast_unregister_translator(&lintospeex);
res |= ast_unregister_translator(&speextolin);
+
return res;
}
-static int load_module(void *mod)
+static int load_module(void)
{
int res;
+
parse_config();
- res=ast_register_translator(&speextolin, mod);
+ res=ast_register_translator(&speextolin);
if (!res)
- res=ast_register_translator(&lintospeex, mod);
+ res=ast_register_translator(&lintospeex);
else
ast_unregister_translator(&speextolin);
- return res;
-}
-static const char *description(void)
-{
- return "Speex/PCM16 (signed linear) Codec Translator";
-}
-
-static const char *key(void)
-{
- return ASTERISK_GPL_KEY;
+ return res;
}
-STD_MOD(MOD_1, reload, NULL, NULL);
-
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Speex Coder/Decoder",
+ .load = load_module,
+ .unload = unload_module,
+ .reload = reload,
+ );
diff --git a/codecs/codec_ulaw.c b/codecs/codec_ulaw.c
index 7544cdf17..334f8d9ad 100644
--- a/codecs/codec_ulaw.c
+++ b/codecs/codec_ulaw.c
@@ -163,44 +163,39 @@ static void parse_config(void)
ast_config_destroy(cfg);
}
-static int reload(void *mod)
+static int reload(void)
{
parse_config();
+
return 0;
}
-static int unload_module(void *mod)
+static int unload_module(void)
{
int res;
+
res = ast_unregister_translator(&lintoulaw);
res |= ast_unregister_translator(&ulawtolin);
+
return res;
}
-static int load_module(void *mod)
+static int load_module(void)
{
int res;
+
parse_config();
- res = ast_register_translator(&ulawtolin, mod);
+ res = ast_register_translator(&ulawtolin);
if (!res)
- res = ast_register_translator(&lintoulaw, mod);
+ res = ast_register_translator(&lintoulaw);
else
ast_unregister_translator(&ulawtolin);
- return res;
-}
-
-/*
- * Return a description of this module.
- */
-static const char *description(void)
-{
- return "Mu-law Coder/Decoder";
-}
-
-static const char *key(void)
-{
- return ASTERISK_GPL_KEY;
+ return res;
}
-STD_MOD(MOD_1, reload, NULL, NULL);
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "mu-Law Coder/Decoder",
+ .load = load_module,
+ .unload = unload_module,
+ .reload = reload,
+ );
diff --git a/codecs/codec_zap.c b/codecs/codec_zap.c
index ee9b94a4a..696a1b899 100644
--- a/codecs/codec_zap.c
+++ b/codecs/codec_zap.c
@@ -222,7 +222,7 @@ static struct ast_frame *fakesrc_sample(void)
return &f;
}
-static int register_translator(int dst, int src, void *mod)
+static int register_translator(int dst, int src)
{
struct translator *zt;
int res;
@@ -242,7 +242,7 @@ static int register_translator(int dst, int src, void *mod)
zt->t.useplc = global_useplc;
zt->t.buf_size = BUFFER_SAMPLES * 2;
zt->t.desc_size = sizeof(struct pvt);
- if ((res = ast_register_translator(&zt->t, mod))) {
+ if ((res = ast_register_translator(&zt->t))) {
free(zt);
return -1;
}
@@ -310,7 +310,7 @@ static void parse_config(void)
ast_config_destroy(cfg);
}
-static void build_translators(void *mod, struct format_map *map, unsigned int dstfmts, unsigned int srcfmts)
+static void build_translators(struct format_map *map, unsigned int dstfmts, unsigned int srcfmts)
{
unsigned int src, dst;
@@ -325,13 +325,13 @@ static void build_translators(void *mod, struct format_map *map, unsigned int ds
if (global_format_map.map[dst][src])
continue;
- if (!register_translator(dst, src, mod))
+ if (!register_translator(dst, src))
map->map[dst][src] = 1;
}
}
}
-static int find_transcoders(void *mod)
+static int find_transcoders(void)
{
struct zt_transcode_info info = { 0, };
struct format_map map = { { { 0 } } };
@@ -346,7 +346,7 @@ static int find_transcoders(void *mod)
for (info.tcnum = 0; !(res = ioctl(fd, ZT_TRANSCODE_OP, &info)); info.tcnum++) {
if (option_verbose > 1)
ast_verbose(VERBOSE_PREFIX_2 "Found transcoder '%s'.\n", info.name);
- build_translators(mod, &map, info.dstfmts, info.srcfmts);
+ build_translators(&map, info.dstfmts, info.srcfmts);
}
close(fd);
@@ -363,12 +363,12 @@ static int find_transcoders(void *mod)
return 0;
}
-static int reload(void *mod)
+static int reload(void)
{
struct translator *cur;
parse_config();
- find_transcoders(mod);
+ find_transcoders();
AST_LIST_LOCK(&translators);
AST_LIST_TRAVERSE(&translators, cur, entry)
@@ -378,29 +378,23 @@ static int reload(void *mod)
return 0;
}
-static int unload_module(void *mod)
+static int unload_module(void)
{
unregister_translators();
return 0;
}
-static int load_module(void *mod)
+static int load_module(void)
{
parse_config();
- find_transcoders(mod);
+ find_transcoders();
return 0;
}
-static const char *description(void)
-{
- return "Generic Zaptel Transcoder Codec Translator";
-}
-
-static const char *key(void)
-{
- return ASTERISK_GPL_KEY;
-}
-
-STD_MOD(MOD_1, reload, NULL, NULL);
+AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "Generic Zaptel Transcoder Codec Translator",
+ .load = load_module,
+ .unload = unload_module,
+ .reload = reload,
+ );
diff --git a/codecs/gsm/Makefile b/codecs/gsm/Makefile
index 483875cb6..9437c9ff9 100644
--- a/codecs/gsm/Makefile
+++ b/codecs/gsm/Makefile
@@ -38,7 +38,7 @@ WAV49 = -DWAV49
######### probably require gcc.
ifeq (, $(findstring $(OSARCH) , Darwin SunOS ))
-ifeq (, $(findstring $(PROC) , x86_64 amd64 ultrasparc sparc64 arm ppc ppc64 ia64 s390))
+ifeq (, $(findstring $(PROC) , x86_64 amd64 ultrasparc sparc64 arm ppc ppc64 ia64 s390 bfin ))
ifeq (, $(findstring $(shell uname -m) , ppc ppc64 alpha armv4l s390 ))
OPTIMIZE+=-march=$(PROC)
endif
@@ -210,7 +210,7 @@ GSM_SOURCES = $(SRC)/add.c \
# XXX should merge with GSM_OBJECTS
ifeq (${OSARCH},Linux)
ifeq (,$(findstring $(shell uname -m) , x86_64 amd64 ppc ppc64 alpha armv4l sparc64 parisc s390 ))
-ifeq (,$(findstring ${PROC} , arm ia64 s390 ))
+ifeq (,$(findstring ${PROC} , arm ia64 s390 bfin ))
GSM_SOURCES+= $(SRC)/k6opt.s
endif
endif
@@ -262,7 +262,7 @@ GSM_OBJECTS = $(SRC)/add.o \
ifeq (${OSARCH},Linux)
ifeq (,$(findstring $(shell uname -m) , x86_64 amd64 ppc ppc64 alpha armv4l sparc64 parisc ))
-ifeq (,$(findstring ${PROC} , arm ia64 ))
+ifeq (,$(findstring ${PROC} , arm ia64 bfin ))
GSM_OBJECTS+= $(SRC)/k6opt.o
endif
endif