diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-08-21 02:11:39 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-08-21 02:11:39 +0000 |
commit | 8b0c007ad990aa27d9868da49215fd1076ac77cc (patch) | |
tree | 270b9c46c1e644483d6d2a35b509f43218ba3252 /codecs | |
parent | a42edc84034f91932a3e12d503e07f76a6eb498a (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/Makefile | 29 | ||||
-rw-r--r-- | codecs/codec_a_mu.c | 24 | ||||
-rw-r--r-- | codecs/codec_adpcm.c | 30 | ||||
-rw-r--r-- | codecs/codec_alaw.c | 30 | ||||
-rw-r--r-- | codecs/codec_g726.c | 37 | ||||
-rw-r--r-- | codecs/codec_gsm.c | 30 | ||||
-rw-r--r-- | codecs/codec_ilbc.c | 26 | ||||
-rw-r--r-- | codecs/codec_lpc10.c | 31 | ||||
-rw-r--r-- | codecs/codec_speex.c | 40 | ||||
-rw-r--r-- | codecs/codec_ulaw.c | 35 | ||||
-rw-r--r-- | codecs/codec_zap.c | 38 | ||||
-rw-r--r-- | codecs/gsm/Makefile | 6 |
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 |