From 954fe3114015adb370af29bbaf4c849263a00318 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 27 Jan 2006 00:48:15 +0000 Subject: [PATCH] initial bits of ilbc codec mod. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@452 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- libs/codec/ilbc/Makefile | 10 +- libs/codec/ilbc/Makefile.am | 25 +++ libs/codec/ilbc/configure.in | 34 ++++ libs/codec/ilbc/{ => src}/FrameClassify.c | 0 libs/codec/ilbc/{ => src}/FrameClassify.h | 0 libs/codec/ilbc/{ => src}/LPCdecode.c | 0 libs/codec/ilbc/{ => src}/LPCdecode.h | 0 libs/codec/ilbc/{ => src}/LPCencode.c | 0 libs/codec/ilbc/{ => src}/LPCencode.h | 0 libs/codec/ilbc/{ => src}/StateConstructW.c | 0 libs/codec/ilbc/{ => src}/StateConstructW.h | 0 libs/codec/ilbc/{ => src}/StateSearchW.c | 0 libs/codec/ilbc/{ => src}/StateSearchW.h | 0 libs/codec/ilbc/{ => src}/anaFilter.c | 0 libs/codec/ilbc/{ => src}/anaFilter.h | 0 libs/codec/ilbc/{ => src}/constants.c | 0 libs/codec/ilbc/{ => src}/constants.h | 0 libs/codec/ilbc/{ => src}/createCB.c | 0 libs/codec/ilbc/{ => src}/createCB.h | 0 libs/codec/ilbc/{ => src}/doCPLC.c | 0 libs/codec/ilbc/{ => src}/doCPLC.h | 0 libs/codec/ilbc/{ => src}/enhancer.c | 0 libs/codec/ilbc/{ => src}/enhancer.h | 0 libs/codec/ilbc/{ => src}/extract-cfile.awk | 0 libs/codec/ilbc/{ => src}/filter.c | 0 libs/codec/ilbc/{ => src}/filter.h | 0 libs/codec/ilbc/{ => src}/gainquant.c | 0 libs/codec/ilbc/{ => src}/gainquant.h | 0 libs/codec/ilbc/{ => src}/getCBvec.c | 0 libs/codec/ilbc/{ => src}/getCBvec.h | 0 libs/codec/ilbc/{ => src}/helpfun.c | 0 libs/codec/ilbc/{ => src}/helpfun.h | 0 libs/codec/ilbc/{ => src}/hpInput.c | 0 libs/codec/ilbc/{ => src}/hpInput.h | 0 libs/codec/ilbc/{ => src}/hpOutput.c | 0 libs/codec/ilbc/{ => src}/hpOutput.h | 0 libs/codec/ilbc/{ => src}/iCBConstruct.c | 0 libs/codec/ilbc/{ => src}/iCBConstruct.h | 0 libs/codec/ilbc/{ => src}/iCBSearch.c | 0 libs/codec/ilbc/{ => src}/iCBSearch.h | 0 libs/codec/ilbc/{ => src}/iLBC_decode.c | 0 libs/codec/ilbc/{ => src}/iLBC_decode.h | 0 libs/codec/ilbc/{ => src}/iLBC_define.h | 0 libs/codec/ilbc/{ => src}/iLBC_encode.c | 0 libs/codec/ilbc/{ => src}/iLBC_encode.h | 0 libs/codec/ilbc/{ => src}/lsf.c | 0 libs/codec/ilbc/{ => src}/lsf.h | 0 libs/codec/ilbc/{ => src}/packing.c | 0 libs/codec/ilbc/{ => src}/packing.h | 0 libs/codec/ilbc/{ => src}/syntFilter.c | 0 libs/codec/ilbc/{ => src}/syntFilter.h | 0 src/mod/codecs/mod_ilbc/Makefile | 16 ++ src/mod/codecs/mod_ilbc/mod_ilbc.c | 175 ++++++++++++++++ src/mod/codecs/mod_ilbc/mod_ilbc.vcproj | 212 ++++++++++++++++++++ 54 files changed, 467 insertions(+), 5 deletions(-) create mode 100644 libs/codec/ilbc/Makefile.am create mode 100644 libs/codec/ilbc/configure.in rename libs/codec/ilbc/{ => src}/FrameClassify.c (100%) rename libs/codec/ilbc/{ => src}/FrameClassify.h (100%) rename libs/codec/ilbc/{ => src}/LPCdecode.c (100%) rename libs/codec/ilbc/{ => src}/LPCdecode.h (100%) rename libs/codec/ilbc/{ => src}/LPCencode.c (100%) rename libs/codec/ilbc/{ => src}/LPCencode.h (100%) rename libs/codec/ilbc/{ => src}/StateConstructW.c (100%) rename libs/codec/ilbc/{ => src}/StateConstructW.h (100%) rename libs/codec/ilbc/{ => src}/StateSearchW.c (100%) rename libs/codec/ilbc/{ => src}/StateSearchW.h (100%) rename libs/codec/ilbc/{ => src}/anaFilter.c (100%) rename libs/codec/ilbc/{ => src}/anaFilter.h (100%) rename libs/codec/ilbc/{ => src}/constants.c (100%) rename libs/codec/ilbc/{ => src}/constants.h (100%) rename libs/codec/ilbc/{ => src}/createCB.c (100%) rename libs/codec/ilbc/{ => src}/createCB.h (100%) rename libs/codec/ilbc/{ => src}/doCPLC.c (100%) rename libs/codec/ilbc/{ => src}/doCPLC.h (100%) rename libs/codec/ilbc/{ => src}/enhancer.c (100%) rename libs/codec/ilbc/{ => src}/enhancer.h (100%) rename libs/codec/ilbc/{ => src}/extract-cfile.awk (100%) rename libs/codec/ilbc/{ => src}/filter.c (100%) rename libs/codec/ilbc/{ => src}/filter.h (100%) rename libs/codec/ilbc/{ => src}/gainquant.c (100%) rename libs/codec/ilbc/{ => src}/gainquant.h (100%) rename libs/codec/ilbc/{ => src}/getCBvec.c (100%) rename libs/codec/ilbc/{ => src}/getCBvec.h (100%) rename libs/codec/ilbc/{ => src}/helpfun.c (100%) rename libs/codec/ilbc/{ => src}/helpfun.h (100%) rename libs/codec/ilbc/{ => src}/hpInput.c (100%) rename libs/codec/ilbc/{ => src}/hpInput.h (100%) rename libs/codec/ilbc/{ => src}/hpOutput.c (100%) rename libs/codec/ilbc/{ => src}/hpOutput.h (100%) rename libs/codec/ilbc/{ => src}/iCBConstruct.c (100%) rename libs/codec/ilbc/{ => src}/iCBConstruct.h (100%) rename libs/codec/ilbc/{ => src}/iCBSearch.c (100%) rename libs/codec/ilbc/{ => src}/iCBSearch.h (100%) rename libs/codec/ilbc/{ => src}/iLBC_decode.c (100%) rename libs/codec/ilbc/{ => src}/iLBC_decode.h (100%) rename libs/codec/ilbc/{ => src}/iLBC_define.h (100%) rename libs/codec/ilbc/{ => src}/iLBC_encode.c (100%) rename libs/codec/ilbc/{ => src}/iLBC_encode.h (100%) rename libs/codec/ilbc/{ => src}/lsf.c (100%) rename libs/codec/ilbc/{ => src}/lsf.h (100%) rename libs/codec/ilbc/{ => src}/packing.c (100%) rename libs/codec/ilbc/{ => src}/packing.h (100%) rename libs/codec/ilbc/{ => src}/syntFilter.c (100%) rename libs/codec/ilbc/{ => src}/syntFilter.h (100%) create mode 100644 src/mod/codecs/mod_ilbc/Makefile create mode 100644 src/mod/codecs/mod_ilbc/mod_ilbc.c create mode 100644 src/mod/codecs/mod_ilbc/mod_ilbc.vcproj diff --git a/libs/codec/ilbc/Makefile b/libs/codec/ilbc/Makefile index 5ef581ebe7..78fda418f9 100644 --- a/libs/codec/ilbc/Makefile +++ b/libs/codec/ilbc/Makefile @@ -5,11 +5,11 @@ CFLAGS += -fPIC endif LIB=libilbc.a -OBJS= anaFilter.o iCBSearch.o packing.o \ - constants.o gainquant.o iLBC_decode.o StateConstructW.o \ - createCB.o getCBvec.o iLBC_encode.o StateSearchW.o doCPLC.o \ - helpfun.o syntFilter.o enhancer.o hpInput.o LPCdecode.o \ - filter.o hpOutput.o LPCencode.o FrameClassify.o iCBConstruct.o lsf.o +OBJS= src/anaFilter.o src/iCBSearch.o src/packing.o \ + src/constants.o src/gainquant.o src/iLBC_decode.o src/StateConstructW.o \ + src/createCB.o src/getCBvec.o src/iLBC_encode.o src/StateSearchW.o src/doCPLC.o \ + src/helpfun.o src/syntFilter.o src/enhancer.o src/hpInput.o src/LPCdecode.o \ + src/filter.o src/hpOutput.o src/LPCencode.o src/FrameClassify.o src/iCBConstruct.o src/lsf.o all: $(LIB) diff --git a/libs/codec/ilbc/Makefile.am b/libs/codec/ilbc/Makefile.am new file mode 100644 index 0000000000..3c00211557 --- /dev/null +++ b/libs/codec/ilbc/Makefile.am @@ -0,0 +1,25 @@ +EXTRA_DIST = +SUBDIRS = +AUTOMAKE_OPTS= gnu +MAKE=gmake +NAME=libilbc + +AM_CC=gcc +AM_CFLAGS = -Wall -O3 -funroll-loops +AM_CPPFLAGS = $(AM_CFLAGS) + +lib_LTLIBRARIES = libilbc.la +libgsm_la_SOURCES = src/anaFilter.o src/iCBSearch.o src/packing.o \ + src/constants.o src/gainquant.o src/iLBC_decode.o src/StateConstructW.o \ + src/createCB.o src/getCBvec.o src/iLBC_encode.o src/StateSearchW.o src/doCPLC.o \ + src/helpfun.o src/syntFilter.o src/enhancer.o src/hpInput.o src/LPCdecode.o \ + src/filter.o src/hpOutput.o src/LPCencode.o src/FrameClassify.o src/iCBConstruct.o src/lsf.o + +libgsm_la_CFLAGS = $(AM_CFLAGS) +libgsm_la_LDFLAGS = + + + + + + diff --git a/libs/codec/ilbc/configure.in b/libs/codec/ilbc/configure.in new file mode 100644 index 0000000000..1af6dbe769 --- /dev/null +++ b/libs/codec/ilbc/configure.in @@ -0,0 +1,34 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.59) +AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) +AM_INIT_AUTOMAKE(libilbc,0.1) +AC_CONFIG_SRCDIR([src]) + +# Checks for programs. +AC_PROG_CC +AC_PROG_MAKE_SET +AC_PROG_LIBTOOL +AC_PROG_INSTALL + +# Checks for header files. +AC_HEADER_DIRENT +AC_HEADER_STDC + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +AC_TYPE_SIZE_T +AC_HEADER_TIME +AC_STRUCT_TM + +# Checks for library functions. +AC_PROG_GCC_TRADITIONAL +AC_FUNC_MALLOC +AC_TYPE_SIGNAL +AC_FUNC_STRFTIME + +AC_CONFIG_FILES([Makefile]) + +AC_OUTPUT diff --git a/libs/codec/ilbc/FrameClassify.c b/libs/codec/ilbc/src/FrameClassify.c similarity index 100% rename from libs/codec/ilbc/FrameClassify.c rename to libs/codec/ilbc/src/FrameClassify.c diff --git a/libs/codec/ilbc/FrameClassify.h b/libs/codec/ilbc/src/FrameClassify.h similarity index 100% rename from libs/codec/ilbc/FrameClassify.h rename to libs/codec/ilbc/src/FrameClassify.h diff --git a/libs/codec/ilbc/LPCdecode.c b/libs/codec/ilbc/src/LPCdecode.c similarity index 100% rename from libs/codec/ilbc/LPCdecode.c rename to libs/codec/ilbc/src/LPCdecode.c diff --git a/libs/codec/ilbc/LPCdecode.h b/libs/codec/ilbc/src/LPCdecode.h similarity index 100% rename from libs/codec/ilbc/LPCdecode.h rename to libs/codec/ilbc/src/LPCdecode.h diff --git a/libs/codec/ilbc/LPCencode.c b/libs/codec/ilbc/src/LPCencode.c similarity index 100% rename from libs/codec/ilbc/LPCencode.c rename to libs/codec/ilbc/src/LPCencode.c diff --git a/libs/codec/ilbc/LPCencode.h b/libs/codec/ilbc/src/LPCencode.h similarity index 100% rename from libs/codec/ilbc/LPCencode.h rename to libs/codec/ilbc/src/LPCencode.h diff --git a/libs/codec/ilbc/StateConstructW.c b/libs/codec/ilbc/src/StateConstructW.c similarity index 100% rename from libs/codec/ilbc/StateConstructW.c rename to libs/codec/ilbc/src/StateConstructW.c diff --git a/libs/codec/ilbc/StateConstructW.h b/libs/codec/ilbc/src/StateConstructW.h similarity index 100% rename from libs/codec/ilbc/StateConstructW.h rename to libs/codec/ilbc/src/StateConstructW.h diff --git a/libs/codec/ilbc/StateSearchW.c b/libs/codec/ilbc/src/StateSearchW.c similarity index 100% rename from libs/codec/ilbc/StateSearchW.c rename to libs/codec/ilbc/src/StateSearchW.c diff --git a/libs/codec/ilbc/StateSearchW.h b/libs/codec/ilbc/src/StateSearchW.h similarity index 100% rename from libs/codec/ilbc/StateSearchW.h rename to libs/codec/ilbc/src/StateSearchW.h diff --git a/libs/codec/ilbc/anaFilter.c b/libs/codec/ilbc/src/anaFilter.c similarity index 100% rename from libs/codec/ilbc/anaFilter.c rename to libs/codec/ilbc/src/anaFilter.c diff --git a/libs/codec/ilbc/anaFilter.h b/libs/codec/ilbc/src/anaFilter.h similarity index 100% rename from libs/codec/ilbc/anaFilter.h rename to libs/codec/ilbc/src/anaFilter.h diff --git a/libs/codec/ilbc/constants.c b/libs/codec/ilbc/src/constants.c similarity index 100% rename from libs/codec/ilbc/constants.c rename to libs/codec/ilbc/src/constants.c diff --git a/libs/codec/ilbc/constants.h b/libs/codec/ilbc/src/constants.h similarity index 100% rename from libs/codec/ilbc/constants.h rename to libs/codec/ilbc/src/constants.h diff --git a/libs/codec/ilbc/createCB.c b/libs/codec/ilbc/src/createCB.c similarity index 100% rename from libs/codec/ilbc/createCB.c rename to libs/codec/ilbc/src/createCB.c diff --git a/libs/codec/ilbc/createCB.h b/libs/codec/ilbc/src/createCB.h similarity index 100% rename from libs/codec/ilbc/createCB.h rename to libs/codec/ilbc/src/createCB.h diff --git a/libs/codec/ilbc/doCPLC.c b/libs/codec/ilbc/src/doCPLC.c similarity index 100% rename from libs/codec/ilbc/doCPLC.c rename to libs/codec/ilbc/src/doCPLC.c diff --git a/libs/codec/ilbc/doCPLC.h b/libs/codec/ilbc/src/doCPLC.h similarity index 100% rename from libs/codec/ilbc/doCPLC.h rename to libs/codec/ilbc/src/doCPLC.h diff --git a/libs/codec/ilbc/enhancer.c b/libs/codec/ilbc/src/enhancer.c similarity index 100% rename from libs/codec/ilbc/enhancer.c rename to libs/codec/ilbc/src/enhancer.c diff --git a/libs/codec/ilbc/enhancer.h b/libs/codec/ilbc/src/enhancer.h similarity index 100% rename from libs/codec/ilbc/enhancer.h rename to libs/codec/ilbc/src/enhancer.h diff --git a/libs/codec/ilbc/extract-cfile.awk b/libs/codec/ilbc/src/extract-cfile.awk similarity index 100% rename from libs/codec/ilbc/extract-cfile.awk rename to libs/codec/ilbc/src/extract-cfile.awk diff --git a/libs/codec/ilbc/filter.c b/libs/codec/ilbc/src/filter.c similarity index 100% rename from libs/codec/ilbc/filter.c rename to libs/codec/ilbc/src/filter.c diff --git a/libs/codec/ilbc/filter.h b/libs/codec/ilbc/src/filter.h similarity index 100% rename from libs/codec/ilbc/filter.h rename to libs/codec/ilbc/src/filter.h diff --git a/libs/codec/ilbc/gainquant.c b/libs/codec/ilbc/src/gainquant.c similarity index 100% rename from libs/codec/ilbc/gainquant.c rename to libs/codec/ilbc/src/gainquant.c diff --git a/libs/codec/ilbc/gainquant.h b/libs/codec/ilbc/src/gainquant.h similarity index 100% rename from libs/codec/ilbc/gainquant.h rename to libs/codec/ilbc/src/gainquant.h diff --git a/libs/codec/ilbc/getCBvec.c b/libs/codec/ilbc/src/getCBvec.c similarity index 100% rename from libs/codec/ilbc/getCBvec.c rename to libs/codec/ilbc/src/getCBvec.c diff --git a/libs/codec/ilbc/getCBvec.h b/libs/codec/ilbc/src/getCBvec.h similarity index 100% rename from libs/codec/ilbc/getCBvec.h rename to libs/codec/ilbc/src/getCBvec.h diff --git a/libs/codec/ilbc/helpfun.c b/libs/codec/ilbc/src/helpfun.c similarity index 100% rename from libs/codec/ilbc/helpfun.c rename to libs/codec/ilbc/src/helpfun.c diff --git a/libs/codec/ilbc/helpfun.h b/libs/codec/ilbc/src/helpfun.h similarity index 100% rename from libs/codec/ilbc/helpfun.h rename to libs/codec/ilbc/src/helpfun.h diff --git a/libs/codec/ilbc/hpInput.c b/libs/codec/ilbc/src/hpInput.c similarity index 100% rename from libs/codec/ilbc/hpInput.c rename to libs/codec/ilbc/src/hpInput.c diff --git a/libs/codec/ilbc/hpInput.h b/libs/codec/ilbc/src/hpInput.h similarity index 100% rename from libs/codec/ilbc/hpInput.h rename to libs/codec/ilbc/src/hpInput.h diff --git a/libs/codec/ilbc/hpOutput.c b/libs/codec/ilbc/src/hpOutput.c similarity index 100% rename from libs/codec/ilbc/hpOutput.c rename to libs/codec/ilbc/src/hpOutput.c diff --git a/libs/codec/ilbc/hpOutput.h b/libs/codec/ilbc/src/hpOutput.h similarity index 100% rename from libs/codec/ilbc/hpOutput.h rename to libs/codec/ilbc/src/hpOutput.h diff --git a/libs/codec/ilbc/iCBConstruct.c b/libs/codec/ilbc/src/iCBConstruct.c similarity index 100% rename from libs/codec/ilbc/iCBConstruct.c rename to libs/codec/ilbc/src/iCBConstruct.c diff --git a/libs/codec/ilbc/iCBConstruct.h b/libs/codec/ilbc/src/iCBConstruct.h similarity index 100% rename from libs/codec/ilbc/iCBConstruct.h rename to libs/codec/ilbc/src/iCBConstruct.h diff --git a/libs/codec/ilbc/iCBSearch.c b/libs/codec/ilbc/src/iCBSearch.c similarity index 100% rename from libs/codec/ilbc/iCBSearch.c rename to libs/codec/ilbc/src/iCBSearch.c diff --git a/libs/codec/ilbc/iCBSearch.h b/libs/codec/ilbc/src/iCBSearch.h similarity index 100% rename from libs/codec/ilbc/iCBSearch.h rename to libs/codec/ilbc/src/iCBSearch.h diff --git a/libs/codec/ilbc/iLBC_decode.c b/libs/codec/ilbc/src/iLBC_decode.c similarity index 100% rename from libs/codec/ilbc/iLBC_decode.c rename to libs/codec/ilbc/src/iLBC_decode.c diff --git a/libs/codec/ilbc/iLBC_decode.h b/libs/codec/ilbc/src/iLBC_decode.h similarity index 100% rename from libs/codec/ilbc/iLBC_decode.h rename to libs/codec/ilbc/src/iLBC_decode.h diff --git a/libs/codec/ilbc/iLBC_define.h b/libs/codec/ilbc/src/iLBC_define.h similarity index 100% rename from libs/codec/ilbc/iLBC_define.h rename to libs/codec/ilbc/src/iLBC_define.h diff --git a/libs/codec/ilbc/iLBC_encode.c b/libs/codec/ilbc/src/iLBC_encode.c similarity index 100% rename from libs/codec/ilbc/iLBC_encode.c rename to libs/codec/ilbc/src/iLBC_encode.c diff --git a/libs/codec/ilbc/iLBC_encode.h b/libs/codec/ilbc/src/iLBC_encode.h similarity index 100% rename from libs/codec/ilbc/iLBC_encode.h rename to libs/codec/ilbc/src/iLBC_encode.h diff --git a/libs/codec/ilbc/lsf.c b/libs/codec/ilbc/src/lsf.c similarity index 100% rename from libs/codec/ilbc/lsf.c rename to libs/codec/ilbc/src/lsf.c diff --git a/libs/codec/ilbc/lsf.h b/libs/codec/ilbc/src/lsf.h similarity index 100% rename from libs/codec/ilbc/lsf.h rename to libs/codec/ilbc/src/lsf.h diff --git a/libs/codec/ilbc/packing.c b/libs/codec/ilbc/src/packing.c similarity index 100% rename from libs/codec/ilbc/packing.c rename to libs/codec/ilbc/src/packing.c diff --git a/libs/codec/ilbc/packing.h b/libs/codec/ilbc/src/packing.h similarity index 100% rename from libs/codec/ilbc/packing.h rename to libs/codec/ilbc/src/packing.h diff --git a/libs/codec/ilbc/syntFilter.c b/libs/codec/ilbc/src/syntFilter.c similarity index 100% rename from libs/codec/ilbc/syntFilter.c rename to libs/codec/ilbc/src/syntFilter.c diff --git a/libs/codec/ilbc/syntFilter.h b/libs/codec/ilbc/src/syntFilter.h similarity index 100% rename from libs/codec/ilbc/syntFilter.h rename to libs/codec/ilbc/src/syntFilter.h diff --git a/src/mod/codecs/mod_ilbc/Makefile b/src/mod/codecs/mod_ilbc/Makefile new file mode 100644 index 0000000000..d989760f1a --- /dev/null +++ b/src/mod/codecs/mod_ilbc/Makefile @@ -0,0 +1,16 @@ +LDFLAGS +=-lilbc + +all: depends $(MODNAME).so + +depends: + $(BASE)/buildlib.sh $(BASE) install codec/ilbc --prefix=$(PREFIX) + +$(MODNAME).so: $(MODNAME).c + $(CC) $(CFLAGS) -fPIC -c $(MODNAME).c -o $(MODNAME).o + $(CC) $(SOLINK) $(MODNAME).o -o $(MODNAME).so $(LDFLAGS) + +clean: + rm -fr *.so *.o *~ + +install: + cp -f $(MODNAME).so $(PREFIX)/mod diff --git a/src/mod/codecs/mod_ilbc/mod_ilbc.c b/src/mod/codecs/mod_ilbc/mod_ilbc.c new file mode 100644 index 0000000000..8e5b819213 --- /dev/null +++ b/src/mod/codecs/mod_ilbc/mod_ilbc.c @@ -0,0 +1,175 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005/2006, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Anthony Minessale II + * Michael Jerris + * + * mod_codec_gsm.c -- gsm Codec Module + * + */ +#include "switch.h" +#include "gsm.h" + static const char modname[] = "mod_codec_gsm"; + struct gsm_context { + gsm encoder; + gsm decoder; + }; + static switch_status switch_gsm_init(switch_codec *codec, switch_codec_flag flags, + const struct switch_codec_settings *codec_settings) +{ + struct gsm_context *context; + int encoding, decoding; + encoding = (flags & SWITCH_CODEC_FLAG_ENCODE); + decoding = (flags & SWITCH_CODEC_FLAG_DECODE); + if (!(encoding || decoding)) { + return SWITCH_STATUS_FALSE; + } else { + context = switch_core_alloc(codec->memory_pool, sizeof(*context)); + if (encoding) + context->encoder = gsm_create(); + if (decoding) + context->decoder = gsm_create(); + } + codec->private = context; + return SWITCH_STATUS_SUCCESS; + } + static switch_status switch_gsm_destroy(switch_codec *codec) +{ + struct gsm_context *context = codec->private; + int encoding = (codec->flags & SWITCH_CODEC_FLAG_ENCODE); + int decoding = (codec->flags & SWITCH_CODEC_FLAG_DECODE); + if (encoding) + gsm_destroy(context->encoder); + if (decoding) + gsm_destroy(context->decoder); + codec->private = NULL; + return SWITCH_STATUS_SUCCESS; + } + static switch_status switch_gsm_encode(switch_codec *codec, switch_codec *other_codec, void *decoded_data, + size_t decoded_data_len, int decoded_rate, void *encoded_data, + size_t *encoded_data_len, int *encoded_rate, unsigned int *flag) +{ + struct gsm_context *context = codec->private; + int cbret = 0; + if (!context) { + return SWITCH_STATUS_FALSE; + } + if (decoded_data_len % 320 == 0) { + unsigned int new_len = 0; + gsm_signal * ddp = decoded_data; + gsm_byte * edp = encoded_data; + int x; + int loops = (int) decoded_data_len / 320; + for (x = 0; x < loops && new_len < *encoded_data_len; x++) { + gsm_encode(context->encoder, ddp, edp); + edp += 33; + ddp += 160; + new_len += 33; + } + if (new_len <= *encoded_data_len) { + *encoded_data_len = new_len; + } else { + switch_console_printf(SWITCH_CHANNEL_CONSOLE, "buffer overflow!!! %u >= %u\n", new_len, *encoded_data_len); + return SWITCH_STATUS_FALSE; + } + } + return SWITCH_STATUS_SUCCESS; + } + static switch_status switch_gsm_decode(switch_codec *codec, switch_codec *other_codec, void *encoded_data, + size_t encoded_data_len, int encoded_rate, void *decoded_data, + size_t *decoded_data_len, int *decoded_rate, unsigned int *flag) +{ + struct gsm_context *context = codec->private; + if (!context) { + return SWITCH_STATUS_FALSE; + } + if (encoded_data_len % 33 == 0) { + int loops = (int) encoded_data_len / 33; + gsm_byte * edp = encoded_data; + gsm_signal * ddp = decoded_data; + int x; + unsigned int new_len = 0; + for (x = 0; x < loops && new_len < *decoded_data_len; x++) { + gsm_decode(context->decoder, edp, ddp); + ddp += 160; + edp += 33; + new_len += 320; + } + if (new_len <= *decoded_data_len) { + *decoded_data_len = new_len; + } else { + switch_console_printf(SWITCH_CHANNEL_CONSOLE, "buffer overflow!!!\n"); + return SWITCH_STATUS_FALSE; + } + } else { + switch_console_printf(SWITCH_CHANNEL_CONSOLE, "yo this frame is an odd size [%d]\n", encoded_data_len); + } + return SWITCH_STATUS_SUCCESS; + } + + +/* Registration */ + static const switch_codec_implementation gsm_8k_implementation = { + /*.samples_per_second */ 8000, + /*.bits_per_second */ 13200, + /*.microseconds_per_frame */ 20000, + /*.samples_per_frame */ 160, + /*.bytes_per_frame */ 320, + /*.encoded_bytes_per_frame */ 33, + /*.number_of_channels */ 1, + /*.pref_frames_per_packet */ 1, + /*.max_frames_per_packet */ 1, + /*.init */ switch_gsm_init, + /*.encode */ switch_gsm_encode, + /*.decode */ switch_gsm_decode, + /*.destroy */ switch_gsm_destroy, +}; + static const switch_codec_interface gsm_codec_interface = { + /*.interface_name */ "gsm", + /*.codec_type */ SWITCH_CODEC_TYPE_AUDIO, + /*.ianacode */ 3, + /*.iananame */ "gsm", + /*.implementations */ &gsm_8k_implementation, +}; + static switch_loadable_module_interface gsm_module_interface = { + /*.module_name */ modname, + /*.endpoint_interface */ NULL, + /*.timer_interface */ NULL, + /*.dialplan_interface */ NULL, + /*.codec_interface */ &gsm_codec_interface, + /*.application_interface */ NULL +}; + SWITCH_MOD_DECLARE(switch_status) switch_module_load(const switch_loadable_module_interface **interface, + char *filename) +{ + + /* connect my internal structure to the blank pointer passed to me */ + *interface = &gsm_module_interface; + + /* indicate that the module should continue to be loaded */ + return SWITCH_STATUS_SUCCESS; + } + + diff --git a/src/mod/codecs/mod_ilbc/mod_ilbc.vcproj b/src/mod/codecs/mod_ilbc/mod_ilbc.vcproj new file mode 100644 index 0000000000..f59cb1a393 --- /dev/null +++ b/src/mod/codecs/mod_ilbc/mod_ilbc.vcproj @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +